Exemple #1
0
    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());
    }