43 lines
1.5 KiB
C#
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() { }
|
|
}
|
|
} |