using RPGCore.BackpackEquipment.ObjectModules.Content; using RPGCore.BackpackEquipment.ObjectModules.UnitEquipment.Events; using RPGCore.BackpackEquipment.ObjectModules.UnitEquipment.Objects; using RPGCore.ObjectModules.ActionObjectModule; namespace RPGCore.BackpackEquipment.ObjectModules.UnitEquipment.Actions { public class EquipAction : BaseAction { private readonly WearableObject _wearable; private readonly int _index; public EquipAction(WearableObject wearable, int index = -1) { _wearable = wearable; _index = index; } public override void CanDoIt() { Check( unit.GetComponent().CanAdd(_wearable, _index), "This unit can't equip that" ); } protected override void OnDoIt() { var takeEvent = new ActionEquipEvent { unit = unit, wearable = _wearable }; unit.events.InvokeBefore(takeEvent); Check(!takeEvent.isPrevented, string.Format(ActionWasPreventedMessage, nameof(EquipAction))); unit.events.InvokeAfter(takeEvent); var content = unit.GetComponent(); var equipment = unit.GetComponent(); content.TransferTo(equipment, _wearable, _index); } protected override void OnEndIt() { } protected override void OnCancelIt() { } } }