public void Rotate(Player player, bool reverse) { PlaySelectSoundEffect(); if (player.rotationsAreFree || _gameSceneManager.numberOfMoves > 0) { if (!player.rotationsAreFree) { _onPlayer.Movement(player); } var playersCurrentDir = _playerSpriteRenderer.GetDirection(player); if (reverse) { if (playersCurrentDir == Direction.West) { _playerSpriteRenderer.RenderDirection(player, Direction.South); } else if (playersCurrentDir == Direction.North) { _playerSpriteRenderer.RenderDirection(player, Direction.West); } else if (playersCurrentDir == Direction.East) { _playerSpriteRenderer.RenderDirection(player, Direction.North); } else { _playerSpriteRenderer.RenderDirection(player, Direction.East); } } else { if (playersCurrentDir == Direction.West) { _playerSpriteRenderer.RenderDirection(player, Direction.North); } else if (playersCurrentDir == Direction.North) { _playerSpriteRenderer.RenderDirection(player, Direction.East); } else if (playersCurrentDir == Direction.East) { _playerSpriteRenderer.RenderDirection(player, Direction.South); } else { _playerSpriteRenderer.RenderDirection(player, Direction.West); } } } }
public List <Vector3> GetValidAttackPositions(Player player) { var validPositions = new List <Vector3>(); var direction = _playerSpriteRenderer.GetDirection(player); var westFound = false; var eastFound = false; var northFound = false; var southFound = false; for (int i = 1; i < player.numberOfAttackSpacesPerTurn + 1; i++) { var west = new Vector3( player.transform.position.x - i, player.transform.position.y, player.transform.position.z ); var east = new Vector3( player.transform.position.x + i, player.transform.position.y, player.transform.position.z ); var north = new Vector3( player.transform.position.x, player.transform.position.y - i, player.transform.position.z ); var south = new Vector3( player.transform.position.x, player.transform.position.y + i, player.transform.position.z ); if (direction == Direction.North || direction == Direction.South) { if (!westFound) { validPositions.Add(west); } if (!_playerCollisions.CanMoveToSpace(west) && !westFound) { validPositions.Add(west); westFound = true; } if (!eastFound) { validPositions.Add(east); } if (!_playerCollisions.CanMoveToSpace(east) && !eastFound) { validPositions.Add(east); eastFound = true; } } if (direction == Direction.West || direction == Direction.East) { if (!northFound) { validPositions.Add(north); } if (!_playerCollisions.CanMoveToSpace(north) && !northFound) { validPositions.Add(north); northFound = true; } if (!southFound) { validPositions.Add(south); } if (!_playerCollisions.CanMoveToSpace(south) && !southFound) { validPositions.Add(south); southFound = true; } } } return(validPositions); }