public List <CharacterController> GetAdjacentCharacters(CharacterSearchType characterSearchType) { var grid = TileGridController.Instance.GetGrid(); var adjacentCharacterIds = new List <string>(); var currentGridPosition = grid.GetValue(transform.position); //Right if (!string.IsNullOrEmpty(grid.GetValue(currentGridPosition.GridX + 1, currentGridPosition.GridY)?.CharacterControllerId)) { adjacentCharacterIds.Add(grid.GetValue(currentGridPosition.GridX + 1, currentGridPosition.GridY).CharacterControllerId); } //Left if (!string.IsNullOrEmpty(grid.GetValue(currentGridPosition.GridX - 1, currentGridPosition.GridY)?.CharacterControllerId)) { adjacentCharacterIds.Add(grid.GetValue(currentGridPosition.GridX - 1, currentGridPosition.GridY).CharacterControllerId); } //Up if (!string.IsNullOrEmpty(grid.GetValue(currentGridPosition.GridX, currentGridPosition.GridY + 1)?.CharacterControllerId)) { adjacentCharacterIds.Add(grid.GetValue(currentGridPosition.GridX, currentGridPosition.GridY + 1).CharacterControllerId); } //Down if (!string.IsNullOrEmpty(grid.GetValue(currentGridPosition.GridX, currentGridPosition.GridY - 1)?.CharacterControllerId)) { adjacentCharacterIds.Add(grid.GetValue(currentGridPosition.GridX, currentGridPosition.GridY - 1).CharacterControllerId); } return(TurnSystemManager.Instance.GetCharacterWithIds(adjacentCharacterIds, characterSearchType)); }
public List <CharacterController> GetCharacterWithIds(List <string> ids, CharacterSearchType characterSearchType) { var characters = new List <CharacterController>(); if (characterSearchType == CharacterSearchType.Player || characterSearchType == CharacterSearchType.Both) { characters = characters.Concat(PlayerController.PlayerCharacters).ToList(); } if (characterSearchType == CharacterSearchType.Enemy || characterSearchType == CharacterSearchType.Both) { characters = characters.Concat(AIManager.AICharacters).ToList(); } return(characters.Where(character => ids.Contains(character.Id)).ToList()); }