Exemple #1
0
        public void UpdateState()
        {
            // Back button hit: Go to the EndTurn state
            if (Input.GetMouseButtonDown(1))
            {
                _gameBattle.AddInputState(_inputStateFactory.ResolveEndTurnWindowState());
                return;
            }

            if (Input.GetMouseButtonDown(0))
            {
                var result = _gameMap.GetUnitAtCursor(out var unit);
                if (!result)
                {
                    return;
                }

                if (_gameBattle.IsUnitsPhase(unit) && unit.CanTakeTurn())
                {
                    var nextInputState = _inputStateFactory.ResolveMoveUnitState(unit);
                    _gameBattle.AddInputState(nextInputState);
                }
                else
                {
                    var nextInputState = _inputStateFactory.ResolvePreviewMoveUnitState(unit);
                    _gameBattle.AddInputState(nextInputState);
                }
            }

            if (Input.GetMouseButtonDown(2))
            {
                var result = _gameMap.GetUnitAtCursor(out var unit);
                if (!result)
                {
                    return;
                }

                var nextInputState = _inputStateFactory.ResolveViewUnitDetailsState(unit);
                _gameBattle.AddInputState(nextInputState);
            }
        }