Files
TheVVaS-Assets/RPGCore.BackpackEquipment/Runtime/ObjectModules/UnitEquipment/Actions/EquipAction.cs
T

43 lines
1.5 KiB
C#

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<UnitEquipmentModule>().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<ContentModule>();
var equipment = unit.GetComponent<UnitEquipmentModule>();
content.TransferTo(equipment, _wearable, _index);
}
protected override void OnEndIt() { }
protected override void OnCancelIt() { }
}
}