Example #1
0
    public bool ShowRangeForAttack(Character c)
    {
        var startTile    = Tiles.FirstOrDefault(t => t.Coordinate == c.Coordinate);
        var tilesInRange = Tiles.Where(t => ((t.Coordinate.x <= c.Coordinate.x + c.Weapon.Range) && (t.Coordinate.x >= c.Coordinate.x - c.Weapon.Range)) &&
                                       ((t.Coordinate.y <= c.Coordinate.y + c.Weapon.Range) && (t.Coordinate.y >= c.Coordinate.y - c.Weapon.Range))).ToList();

        var dijks = Dijsktra.GetDistancesWithoutCost(tilesInRange, startTile);

        foreach (var dijk in dijks)
        {
            if (dijk.Distance > c.Weapon.Range)
            {
                continue;
            }
            if (dijk.t.Coordinate == c.Coordinate)
            {
                continue;
            }
            //if (!Personajes.Where(p => p.Team != c.Team).Any(p => p.Coordinate == tile.Coordinate))
            //        continue;
            GameObject newObject = GameObject.Instantiate(MovementTile) as GameObject;
            newObject.transform.position = dijk.t.Coordinate;
            newObject.GetComponent <SpriteRenderer>().color = Color.red;
            tilesForAttack.Add(newObject);
            lastDijkstraSearchForAttack.Add(dijk);
        }
        return(true);
    }