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); }
public GameRoundState StartMovementSate(GameRoundEvent gameRoundEvent) { if (gameRoundEvent.Type == GameRoundEventType.MovingModeStarted && _selectedSoldier != null) { return(GameRoundState.SoldierMovement); } return(GameRoundState.Idle); }
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(); } }
public GameRoundState StartShootingState(GameRoundEvent gameRoundEvent) { if (_selectedSoldier == null) { return(GameRoundState.Idle); } InitSoldierShootingMapFor(_selectedSoldier); if (SoldierShootingCountMap[_selectedSoldier] >= _selectedSoldier.MaxShootingsCount) { return(GameRoundState.SoldierSelected); } return(GameRoundState.SoldierAttack); }
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); }
public GameRoundState FinishMovement(GameRoundEvent gameRoundEvent) { _selectedSoldier = null; return(GameRoundState.Idle); }