]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Cleanup: Make separate event for the equip/unequip target (#37333)
authorWinkarst <74284083+Winkarst-cpu@users.noreply.github.com>
Mon, 12 May 2025 03:14:32 +0000 (06:14 +0300)
committerGitHub <noreply@github.com>
Mon, 12 May 2025 03:14:32 +0000 (23:14 -0400)
* Cleanup

* Update

Content.Shared/Inventory/Events/EquipAttemptEvents.cs
Content.Shared/Inventory/Events/UnequipAttemptEvent.cs
Content.Shared/Inventory/InventorySystem.Equip.cs

index c75c3d1418c717d91c8b50d63e72e7cfe8c525f6..af0961e0755aa6c28eb21a07621cca240f171cc9 100644 (file)
@@ -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
 {
     /// <summary>
     /// The entity performing the action. NOT necessarily the one actually "receiving" the equipment.
     /// </summary>
-    public readonly EntityUid Equipee;
+    public readonly EntityUid Equipee = equipee;
 
     /// <summary>
     /// The entity being equipped to.
     /// </summary>
-    public readonly EntityUid EquipTarget;
+    public readonly EntityUid EquipTarget = equipTarget;
 
     /// <summary>
     /// The entity to be equipped.
     /// </summary>
-    public readonly EntityUid Equipment;
+    public readonly EntityUid Equipment = equipment;
 
     /// <summary>
     /// The slotFlags of the slot to equip the entity into.
     /// </summary>
-    public readonly SlotFlags SlotFlags;
+    public readonly SlotFlags SlotFlags = slotDefinition.SlotFlags;
 
     /// <summary>
     /// The slot the entity is being equipped to.
     /// </summary>
-    public readonly string Slot;
+    public readonly string Slot = slotDefinition.Name;
 
     /// <summary>
     /// If cancelling and wanting to provide a custom reason, use this field. Not that this expects a loc-id.
     /// </summary>
     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)
-    {
-    }
-}
+/// <summary>
+/// Raised on the item that is being equipped.
+/// </summary>
+public sealed class BeingEquippedAttemptEvent(EntityUid equipee, EntityUid equipTarget, EntityUid equipment,
+    SlotDefinition slotDefinition) : EquipAttemptBase(equipee, equipTarget, equipment, slotDefinition);
+
+/// <summary>
+/// Raised on the entity that is equipping an item.
+/// </summary>
+public sealed class IsEquippingAttemptEvent(EntityUid equipee, EntityUid equipTarget, EntityUid equipment,
+    SlotDefinition slotDefinition) : EquipAttemptBase(equipee, equipTarget, equipment, slotDefinition);
+
+/// <summary>
+/// Raised on the entity on who item is being equipped.
+/// </summary>
+public sealed class IsEquippingTargetAttemptEvent(EntityUid equipee, EntityUid equipTarget, EntityUid equipment,
+    SlotDefinition slotDefinition) : EquipAttemptBase(equipee, equipTarget, equipment, slotDefinition);
index b647ee8e92b58a89fd7310dfa89f8adf1adc8814..4824556753fb175b1baa69de7aa07ef534457eef 100644 (file)
@@ -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
 {
     /// <summary>
     /// The entity performing the action. NOT necessarily the same as the entity whose equipment is being removed..
     /// </summary>
-    public readonly EntityUid Unequipee;
+    public readonly EntityUid Unequipee = unequipee;
 
     /// <summary>
     /// The entity being unequipped from.
     /// </summary>
-    public readonly EntityUid UnEquipTarget;
+    public readonly EntityUid UnEquipTarget = unEquipTarget;
 
     /// <summary>
     /// The entity to be unequipped.
     /// </summary>
-    public readonly EntityUid Equipment;
+    public readonly EntityUid Equipment = equipment;
 
     /// <summary>
     /// The slotFlags of the slot this item is being removed from.
     /// </summary>
-    public readonly SlotFlags SlotFlags;
+    public readonly SlotFlags SlotFlags = slotDefinition.SlotFlags;
 
     /// <summary>
     /// The slot the entity is being unequipped from.
     /// </summary>
-    public readonly string Slot;
+    public readonly string Slot = slotDefinition.Name;
 
     /// <summary>
     /// If cancelling and wanting to provide a custom reason, use this field. Not that this expects a loc-id.
     /// </summary>
     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)
-    {
-    }
-}
+/// <summary>
+/// Raised on the item that is being unequipped.
+/// </summary>
+public sealed class BeingUnequippedAttemptEvent(EntityUid unequipee, EntityUid unEquipTarget, EntityUid equipment,
+    SlotDefinition slotDefinition) : UnequipAttemptEventBase(unequipee, unEquipTarget, equipment, slotDefinition);
+
+/// <summary>
+/// Raised on the entity that is unequipping an item.
+/// </summary>
+public sealed class IsUnequippingAttemptEvent(EntityUid unequipee, EntityUid unEquipTarget, EntityUid equipment,
+    SlotDefinition slotDefinition) : UnequipAttemptEventBase(unequipee, unEquipTarget, equipment, slotDefinition);
+
+/// <summary>
+/// Raised on the entity from who item is being unequipped.
+/// </summary>
+public sealed class IsUnequippingTargetAttemptEvent(EntityUid unequipee, EntityUid unEquipTarget, EntityUid equipment,
+    SlotDefinition slotDefinition) : UnequipAttemptEventBase(unequipee, unEquipTarget, equipment, slotDefinition);
index 5271e22542e07138a36945454ffa7b94c27a6c24..f2fb3987b793d491dfc2f11449dd937bf63c6550 100644 (file)
@@ -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);