Beispiel #1
0
        public IP_BattleMapState Update(P_BattleMap battlemap, MyInput input)
        {
            switch (input)
            {
            case MyInput.Confirm:
            {
                if (IsMovementValid(battlemap, _ValidMoveIndex, _CursorIndex))
                {
                    battlemap.MoveActor(_Actor, _CursorIndex);
                    _Actor.TurnStatus = EntityCharacterTurnStatus.Moved;
                    if (_Actor.MyLocation.TileFeatureList.Count > 0)
                    {
                        if (_Actor.MyLocation.TileFeatureList[0].Name == "Objective")
                        {
                            this.Exit(battlemap);
                            return(new P_BMSMapEnd(battlemap));
                        }
                    }
                    if (battlemap.IsFactionTurnOver())
                    {
                        battlemap.SetFactionActorsToNotMyTurn();
                        battlemap.RotateFactionTurn();
                        battlemap.GiveFactionActorsATurn();
                        this.Exit(battlemap);
                        return(new P_BMSPlayerSelectingTile(battlemap));
                    }
                    this.Exit(battlemap);
                    return(new P_BMSPlayerSelectingTile(battlemap));
                }
                break;
            }

            case MyInput.DownLeft:
            case MyInput.DownRight:
            case MyInput.Left:
            case MyInput.Right:
            case MyInput.UpLeft:
            case MyInput.UpRight:
                P_BMS.MoveTileCursor(battlemap, P_BMS.InputToDirection(input), _Cursor, ref _CursorIndex);
                break;

            case MyInput.Deny:
                this.Exit(battlemap);
                return(new P_BMSPlayerSelectingTile(battlemap));
            }
            P_BMS.CursorOffScreen(battlemap, _Cursor);
            return(this);
        }