using System; using VOID.Generic.Objects.Unit.Actions; using VOID.Generic.Player.Util; using VOID.UserInterface.Game; using VOID.ScriptableObjects.Abilities; namespace VOID.Generic.Player.CursorOperation { public class OnAbilityCursorOperation : AbstractCursorOperation { public override Type ForType() => typeof(BasicAbility); public override bool Check(SelectUtilResult select) { return select.selectAbility; } public override void DoDefault(SelectUtilResult select, bool isAlternate) { if (isAlternate) return; var selectAbility = select.selectAbility; var activeUnit = PlayerController.current.activeUnit; activeUnit.OrderStop(); activeUnit.Order(new CastingAction(activeUnit, selectAbility)); } public override void DoContext(SelectUtilResult select) { var activeUnit = PlayerController.current.activeUnit; ContextMenuUI.current.Prepare(); ContextMenuUI.current.AddBeforeClick(() => activeUnit.OrderStop()); ContextMenuUI.current.AddOption("Use Ability", () => { activeUnit.Order(new CastingAction(activeUnit, select.selectAbility)); }); ContextMenuUI.current.Open(); } } }