public CommandPhase OnUpdate(LinkedListNode <UIActionType> input)
        {
            switch (input.Value)
            {
            case UIActionType.SubmitUICommand:
                // what if this a multi-target action?
                commandData.ExecuteCommand();
                return(CommandPhase.WaitingForInput);

            case UIActionType.CancelUICommand:
                // return to command panel
                commandData.ShowCommandPanels();
                commandData.HidePointer();
                return(CommandPhase.SelectingCommand);

            case UIActionType.Down:
            /* @TODO: expected behaviour:
             *	select the closest enemy that is below current selection, regardless of x-axis
             */
            case UIActionType.Left:
            /* @TODO: expected behaviour:
             *	select the closest enemy that is left of current selection, regardless of y-axis.
             */
            case UIActionType.Right:
            /* @TODO: expected behaviour:
             *	select the closest enemy that is right of current selection, regardless of y-axis.
             *		if no enemy, select a pc character
             */
            case UIActionType.Up:
                /* @TODO: expected behaviour:
                 *	select the closest enemy that is above current selection, regardless of x-axis
                 */
                commandData.ChangeTarget(input.Value);
                break;
            }

            commandData.UpdateTargetPointer();
            return(CommandPhase.SelectingTarget);
        }
 public void OnEnter()
 {
     commandData.battleManager.PauseRequested(BattleTimer.PauseRequestType.Unpause, commandData.playerController);
     commandData.ClearPanels();
     commandData.HidePointer();
 }