Exemplo n.º 1
0
        public GameRoundState MoveSoldier(GameRoundEvent gameRoundEvent)
        {
            if (_selectedSoldier == null)
            {
                return(GameRoundState.Idle);
            }

            if (gameRoundEvent.Type == GameRoundEventType.FieldSelected)
            {
                var position       = (Vector2)gameRoundEvent.Payload;
                var targetPosition = new Vector2Int(
                    (int)position.x,
                    (int)position.y
                    );

                var targetPath = GetTargetPathToPosition(targetPosition);
                if (targetPath == null)
                {
                    return(GameRoundState.SoldierSelected);
                }

                // Keep the Battlefield objects up to date
                var oldPosition = _selectedSoldier.transform.position;
                Battlefield[(int)position.x, (int)position.y]       = Battlefield[(int)oldPosition.x, (int)oldPosition.y];
                Battlefield[(int)oldPosition.x, (int)oldPosition.y] = null;


                _selectedSoldier.MovementManager.MoveToPositionUsingPath(targetPosition, targetPath);
                return(_selectedSoldier.MovementManager.IsMoving ? GameRoundState.SoldierMoving : GameRoundState.Idle);
            }

            return(GameRoundState.Idle);
        }
Exemplo n.º 2
0
 public GameRoundState StartMovementSate(GameRoundEvent gameRoundEvent)
 {
     if (gameRoundEvent.Type == GameRoundEventType.MovingModeStarted && _selectedSoldier != null)
     {
         return(GameRoundState.SoldierMovement);
     }
     return(GameRoundState.Idle);
 }
Exemplo n.º 3
0
        public void Idling(GameRoundEvent _event)
        {
            if (_selectedSoldier == null)
            {
                return;
            }

            _selectedSoldier.IsSelected = false;
        }
        public void HandleEvent(GameRoundEvent gameEvent)
        {
            GameRoundStateMachine.HandleEvent(gameEvent);

            if (GameRoundStateMachine.RoundState == GameRoundState.Finished)
            {
                SwapState();
                CreateNewGameRoundStateMachine();
            }
        }
Exemplo n.º 5
0
        public GameRoundState StartShootingState(GameRoundEvent gameRoundEvent)
        {
            if (_selectedSoldier == null)
            {
                return(GameRoundState.Idle);
            }

            InitSoldierShootingMapFor(_selectedSoldier);
            if (SoldierShootingCountMap[_selectedSoldier] >= _selectedSoldier.MaxShootingsCount)
            {
                return(GameRoundState.SoldierSelected);
            }


            return(GameRoundState.SoldierAttack);
        }
Exemplo n.º 6
0
        public GameRoundState ShootEnemy(GameRoundEvent gameRoundEvent)
        {
            if (gameRoundEvent.Type != GameRoundEventType.FieldSelected)
            {
                return(GameRoundState.Idle);
            }

            var soldier = _selectedSoldier;

            if (!soldier)
            {
                return(GameRoundState.Idle);
            }

            soldier.ShootToPoint((Vector2)gameRoundEvent.Payload);

            InitSoldierShootingMapFor(soldier);
            SoldierShootingCountMap[_selectedSoldier]++;

            return(GameRoundState.Idle);
        }
Exemplo n.º 7
0
 public GameRoundState FinishMovement(GameRoundEvent gameRoundEvent)
 {
     _selectedSoldier = null;
     return(GameRoundState.Idle);
 }