From 63b04c4769dcf78760c87c95db60e99316088987 Mon Sep 17 00:00:00 2001
From: Winkarst <74284083+Winkarst-cpu@users.noreply.github.com>
Date: Mon, 12 May 2025 06:14:32 +0300
Subject: [PATCH] Cleanup: Make separate event for the equip/unequip target
(#37333)
* Cleanup
* Update
---
.../Inventory/Events/EquipAttemptEvents.cs | 55 ++++++++-----------
.../Inventory/Events/UnequipAttemptEvent.cs | 55 ++++++++-----------
.../Inventory/InventorySystem.Equip.cs | 36 ++++++------
3 files changed, 64 insertions(+), 82 deletions(-)
diff --git a/Content.Shared/Inventory/Events/EquipAttemptEvents.cs b/Content.Shared/Inventory/Events/EquipAttemptEvents.cs
index c75c3d1418..af0961e075 100644
--- a/Content.Shared/Inventory/Events/EquipAttemptEvents.cs
+++ b/Content.Shared/Inventory/Events/EquipAttemptEvents.cs
@@ -1,60 +1,53 @@
namespace Content.Shared.Inventory.Events;
-public abstract class EquipAttemptBase : CancellableEntityEventArgs
+public abstract class EquipAttemptBase(EntityUid equipee, EntityUid equipTarget, EntityUid equipment,
+ SlotDefinition slotDefinition) : CancellableEntityEventArgs
{
///
/// The entity performing the action. NOT necessarily the one actually "receiving" the equipment.
///
- public readonly EntityUid Equipee;
+ public readonly EntityUid Equipee = equipee;
///
/// The entity being equipped to.
///
- public readonly EntityUid EquipTarget;
+ public readonly EntityUid EquipTarget = equipTarget;
///
/// The entity to be equipped.
///
- public readonly EntityUid Equipment;
+ public readonly EntityUid Equipment = equipment;
///
/// The slotFlags of the slot to equip the entity into.
///
- public readonly SlotFlags SlotFlags;
+ public readonly SlotFlags SlotFlags = slotDefinition.SlotFlags;
///
/// The slot the entity is being equipped to.
///
- public readonly string Slot;
+ public readonly string Slot = slotDefinition.Name;
///
/// If cancelling and wanting to provide a custom reason, use this field. Not that this expects a loc-id.
///
public string? Reason;
-
- public EquipAttemptBase(EntityUid equipee, EntityUid equipTarget, EntityUid equipment,
- SlotDefinition slotDefinition)
- {
- EquipTarget = equipTarget;
- Equipment = equipment;
- Equipee = equipee;
- SlotFlags = slotDefinition.SlotFlags;
- Slot = slotDefinition.Name;
- }
-}
-
-public sealed class BeingEquippedAttemptEvent : EquipAttemptBase
-{
- public BeingEquippedAttemptEvent(EntityUid equipee, EntityUid equipTarget, EntityUid equipment,
- SlotDefinition slotDefinition) : base(equipee, equipTarget, equipment, slotDefinition)
- {
- }
}
-public sealed class IsEquippingAttemptEvent : EquipAttemptBase
-{
- public IsEquippingAttemptEvent(EntityUid equipee, EntityUid equipTarget, EntityUid equipment,
- SlotDefinition slotDefinition) : base(equipee, equipTarget, equipment, slotDefinition)
- {
- }
-}
+///
+/// Raised on the item that is being equipped.
+///
+public sealed class BeingEquippedAttemptEvent(EntityUid equipee, EntityUid equipTarget, EntityUid equipment,
+ SlotDefinition slotDefinition) : EquipAttemptBase(equipee, equipTarget, equipment, slotDefinition);
+
+///
+/// Raised on the entity that is equipping an item.
+///
+public sealed class IsEquippingAttemptEvent(EntityUid equipee, EntityUid equipTarget, EntityUid equipment,
+ SlotDefinition slotDefinition) : EquipAttemptBase(equipee, equipTarget, equipment, slotDefinition);
+
+///
+/// Raised on the entity on who item is being equipped.
+///
+public sealed class IsEquippingTargetAttemptEvent(EntityUid equipee, EntityUid equipTarget, EntityUid equipment,
+ SlotDefinition slotDefinition) : EquipAttemptBase(equipee, equipTarget, equipment, slotDefinition);
diff --git a/Content.Shared/Inventory/Events/UnequipAttemptEvent.cs b/Content.Shared/Inventory/Events/UnequipAttemptEvent.cs
index b647ee8e92..4824556753 100644
--- a/Content.Shared/Inventory/Events/UnequipAttemptEvent.cs
+++ b/Content.Shared/Inventory/Events/UnequipAttemptEvent.cs
@@ -1,60 +1,53 @@
namespace Content.Shared.Inventory.Events;
-public abstract class UnequipAttemptEventBase : CancellableEntityEventArgs
+public abstract class UnequipAttemptEventBase(EntityUid unequipee, EntityUid unEquipTarget, EntityUid equipment,
+ SlotDefinition slotDefinition) : CancellableEntityEventArgs
{
///
/// The entity performing the action. NOT necessarily the same as the entity whose equipment is being removed..
///
- public readonly EntityUid Unequipee;
+ public readonly EntityUid Unequipee = unequipee;
///
/// The entity being unequipped from.
///
- public readonly EntityUid UnEquipTarget;
+ public readonly EntityUid UnEquipTarget = unEquipTarget;
///
/// The entity to be unequipped.
///
- public readonly EntityUid Equipment;
+ public readonly EntityUid Equipment = equipment;
///
/// The slotFlags of the slot this item is being removed from.
///
- public readonly SlotFlags SlotFlags;
+ public readonly SlotFlags SlotFlags = slotDefinition.SlotFlags;
///
/// The slot the entity is being unequipped from.
///
- public readonly string Slot;
+ public readonly string Slot = slotDefinition.Name;
///
/// If cancelling and wanting to provide a custom reason, use this field. Not that this expects a loc-id.
///
public string? Reason;
-
- public UnequipAttemptEventBase(EntityUid unequipee, EntityUid unEquipTarget, EntityUid equipment,
- SlotDefinition slotDefinition)
- {
- UnEquipTarget = unEquipTarget;
- Equipment = equipment;
- Unequipee = unequipee;
- SlotFlags = slotDefinition.SlotFlags;
- Slot = slotDefinition.Name;
- }
-}
-
-public sealed class BeingUnequippedAttemptEvent : UnequipAttemptEventBase
-{
- public BeingUnequippedAttemptEvent(EntityUid unequipee, EntityUid unEquipTarget, EntityUid equipment,
- SlotDefinition slotDefinition) : base(unequipee, unEquipTarget, equipment, slotDefinition)
- {
- }
}
-public sealed class IsUnequippingAttemptEvent : UnequipAttemptEventBase
-{
- public IsUnequippingAttemptEvent(EntityUid unequipee, EntityUid unEquipTarget, EntityUid equipment,
- SlotDefinition slotDefinition) : base(unequipee, unEquipTarget, equipment, slotDefinition)
- {
- }
-}
+///
+/// Raised on the item that is being unequipped.
+///
+public sealed class BeingUnequippedAttemptEvent(EntityUid unequipee, EntityUid unEquipTarget, EntityUid equipment,
+ SlotDefinition slotDefinition) : UnequipAttemptEventBase(unequipee, unEquipTarget, equipment, slotDefinition);
+
+///
+/// Raised on the entity that is unequipping an item.
+///
+public sealed class IsUnequippingAttemptEvent(EntityUid unequipee, EntityUid unEquipTarget, EntityUid equipment,
+ SlotDefinition slotDefinition) : UnequipAttemptEventBase(unequipee, unEquipTarget, equipment, slotDefinition);
+
+///
+/// Raised on the entity from who item is being unequipped.
+///
+public sealed class IsUnequippingTargetAttemptEvent(EntityUid unequipee, EntityUid unEquipTarget, EntityUid equipment,
+ SlotDefinition slotDefinition) : UnequipAttemptEventBase(unequipee, unEquipTarget, equipment, slotDefinition);
diff --git a/Content.Shared/Inventory/InventorySystem.Equip.cs b/Content.Shared/Inventory/InventorySystem.Equip.cs
index 5271e22542..f2fb3987b7 100644
--- a/Content.Shared/Inventory/InventorySystem.Equip.cs
+++ b/Content.Shared/Inventory/InventorySystem.Equip.cs
@@ -286,23 +286,21 @@ public abstract partial class InventorySystem
}
var attemptEvent = new IsEquippingAttemptEvent(actor, target, itemUid, slotDefinition);
- RaiseLocalEvent(target, attemptEvent, true);
+ RaiseLocalEvent(actor, attemptEvent, true);
+
if (attemptEvent.Cancelled)
{
reason = attemptEvent.Reason ?? reason;
return false;
}
- if (actor != target)
+ var targetAttemptEvent = new IsEquippingTargetAttemptEvent(actor, target, itemUid, slotDefinition);
+ RaiseLocalEvent(target, targetAttemptEvent, true);
+
+ if (targetAttemptEvent.Cancelled)
{
- //reuse the event. this is gucci, right?
- attemptEvent.Reason = null;
- RaiseLocalEvent(actor, attemptEvent, true);
- if (attemptEvent.Cancelled)
- {
- reason = attemptEvent.Reason ?? reason;
- return false;
- }
+ reason = targetAttemptEvent.Reason ?? reason;
+ return false;
}
var itemAttemptEvent = new BeingEquippedAttemptEvent(actor, target, itemUid, slotDefinition);
@@ -524,23 +522,21 @@ public abstract partial class InventorySystem
}
var attemptEvent = new IsUnequippingAttemptEvent(actor, target, itemUid, slotDefinition);
- RaiseLocalEvent(target, attemptEvent, true);
+ RaiseLocalEvent(actor, attemptEvent, true);
+
if (attemptEvent.Cancelled)
{
reason = attemptEvent.Reason ?? reason;
return false;
}
- if (actor != target)
+ var targetAttemptEvent = new IsUnequippingTargetAttemptEvent(actor, target, itemUid, slotDefinition);
+ RaiseLocalEvent(target, targetAttemptEvent, true);
+
+ if (targetAttemptEvent.Cancelled)
{
- //reuse the event. this is gucci, right?
- attemptEvent.Reason = null;
- RaiseLocalEvent(actor, attemptEvent, true);
- if (attemptEvent.Cancelled)
- {
- reason = attemptEvent.Reason ?? reason;
- return false;
- }
+ reason = targetAttemptEvent.Reason ?? reason;
+ return false;
}
var itemAttemptEvent = new BeingUnequippedAttemptEvent(actor, target, itemUid, slotDefinition);
--
2.51.2