示例#1
0
    public Tile[] GetNeighbours(Tile t)
    {
        int x = -t.Position.x;
        int z = t.Position.y;

        //Debug.Log("x: " + x + " and z: " + z);
        List <Tile> tiles = new List <Tile>();

        if (x >= 1)
        {
            tiles.Add(PresentLevelTiles[x - 1, z]);
        }

        if (z < PresentLevelTiles.GetLength(1) - 2)
        {
            tiles.Add(PresentLevelTiles[x, z + 1]);
        }

        if (x < PresentLevelTiles.GetLength(0) - 2)
        {
            tiles.Add(PresentLevelTiles[x + 1, z]);
        }

        if (z >= 1)
        {
            tiles.Add(PresentLevelTiles[x, z - 1]);
        }

        return(tiles.ToArray());
    }
示例#2
0
    /// <summary>
    /// Projde vsechny Tily v rozmezi width a height od vstupniho tilu a vrati je
    /// jako list
    /// </summary>
    /// <param name="centerTile">Tile kolem ktereho zjistujeme Tily</param>
    /// <param name="width">Vzdalenost v Z-tove ose</param>
    /// <param name="height">(Nepovinne) Vzdalenost v X-ove ose. Pokud neni uvedeno, je hodnota natavena na 0
    /// => bude pouzita stejna hodnota jako width => ctvercova oblast kolem Tilu.</param>
    /// <returns></returns>
    public List <Tile> GetAllTilesAtDistance(Tile centerTile, int width, int height = 0)
    {
        List <Tile> l = new List <Tile>();

        if (height == 0)
        {
            height = width;
        }

        int ZLeftLimit  = (int)centerTile.Position.y - width;
        int ZRightLimit = (int)centerTile.Position.y + width;

        if (ZLeftLimit < 0)
        {
            ZLeftLimit = 0;
        }

        if (ZRightLimit > PresentLevelTiles.GetLength(1) - 1)
        {
            ZRightLimit = PresentLevelTiles.GetLength(1) - 1;
        }

        int XBottomLimit = (int)centerTile.Position.x * (-1) - width;
        int XTopLimit    = (int)centerTile.Position.x * (-1) + width;

        if (XBottomLimit < 0)
        {
            XBottomLimit = 0;
        }

        if (XTopLimit > PresentLevelTiles.GetLength(0) - 1)
        {
            XTopLimit = PresentLevelTiles.GetLength(0) - 1;
        }


        Debug.Log("LIMITS: X:(" + XBottomLimit + "," + XTopLimit + ") Z(" + ZLeftLimit + "," + ZRightLimit + ")");

        for (int i = XBottomLimit; i <= XTopLimit; i++)
        {
            for (int j = ZLeftLimit; j <= ZRightLimit; j++)
            {
                //Debug.Log(i + " " + j);
                Tile[] a = GetTile(new Vector3(i * -1, 0, j));
                //a.SetTileToHighlited();
                l.Add(a[0]);
                l.Add(a[1]);
                //Debug.Log("Tile added");
            }
        }

        return(l);
    }