示例#1
0
    private void findNeighbors()
    {
        for (int y = 0; y < height; y++)
        {
            int maxWidth    = width - (y % 2);
            int maxWidthAdj = width - ((y + 1) % 2);

            for (int x = 0; x < maxWidth; x++)
            {
                HexTile tile = GetTile(x, y);

                if (tile.isOccluded || tile.type == HexTileType.Disabled)
                {
                    continue;
                }

                if (x > 0)
                {
                    tile.AddPath(GetTile(x - 1, y));
                }

                if (x < maxWidth - 1)
                {
                    tile.AddPath(GetTile(x + 1, y));
                }

                if (y > 0 && x < maxWidthAdj)
                {
                    tile.AddPath(GetTile(x, y - 1));
                }

                if (y < height - 1 && x < maxWidthAdj)
                {
                    tile.AddPath(GetTile(x, y + 1));
                }

                if (y % 2 == 0)
                {
                    if (y > 0 && x > 0)
                    {
                        tile.AddPath(GetTile(x - 1, y - 1));
                    }

                    if (y < height - 1 && x > 0)
                    {
                        tile.AddPath(GetTile(x - 1, y + 1));
                    }
                }
                else
                {
                    if (y > 0 && x < maxWidthAdj - 1)
                    {
                        tile.AddPath(GetTile(x + 1, y - 1));
                    }

                    if (y < height - 1 && x < maxWidthAdj - 1)
                    {
                        tile.AddPath(GetTile(x + 1, y + 1));
                    }
                }
            }
        }
    }