From: Winkarst <74284083+Winkarst-cpu@users.noreply.github.com> Date: Mon, 12 May 2025 03:14:32 +0000 (+0300) Subject: Cleanup: Make separate event for the equip/unequip target (#37333) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=63b04c4769dcf78760c87c95db60e99316088987;p=space-station-14.git Cleanup: Make separate event for the equip/unequip target (#37333) * Cleanup * Update --- 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);