Cleanup: Make separate event for the equip/unequip target (#37333)

* Cleanup

* Update
This commit is contained in:
Winkarst
2025-05-12 06:14:32 +03:00
committed by GitHub
parent 92d0ea3128
commit 63b04c4769
3 changed files with 62 additions and 80 deletions

View 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)
{
}
}
/// <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);
public sealed class IsEquippingAttemptEvent : EquipAttemptBase
{
public IsEquippingAttemptEvent(EntityUid equipee, EntityUid equipTarget, EntityUid equipment,
SlotDefinition slotDefinition) : base(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);

View 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)
{
}
}
/// <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);
public sealed class IsUnequippingAttemptEvent : UnequipAttemptEventBase
{
public IsUnequippingAttemptEvent(EntityUid unequipee, EntityUid unEquipTarget, EntityUid equipment,
SlotDefinition slotDefinition) : base(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);

View 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);