// Fill out a TileDungeon using RawDungeon data public void ParseDungeonData(RawDungeonData rawDungeon) { m_Tiles = MakeEmptyTileMap(rawDungeon); // Tiles for Rooms for (int i = 0; i < rawDungeon.Rooms.Length; i++) //itterate clusters { for (int j = 0; j < rawDungeon.Rooms[i].Length; j++) //itterate rooms { for (int y = (int)rawDungeon.Rooms[i][j].min.y; y < rawDungeon.Rooms[i][j].max.y; y++) { for (int x = (int)rawDungeon.Rooms[i][j].min.x; x < rawDungeon.Rooms[i][j].max.x; x++) { // The tiles on the edge or a room are walls if (x == rawDungeon.Rooms[i][j].xMin || y == rawDungeon.Rooms[i][j].yMin || x == rawDungeon.Rooms[i][j].xMax - 1 || y == rawDungeon.Rooms[i][j].yMax - 1) { //tiles[x, y] = EDungeonTile.Wall; } else { m_Tiles[x, y] = EDungeonTile.Floor; } } } JoinPoints(rawDungeon.Rooms[i][j].center, rawDungeon.Path[i]); } if (i < rawDungeon.Rooms.Length - 1) { JoinPoints(rawDungeon.Path[i + 1], rawDungeon.Path[i]); } } m_Tiles[(int)rawDungeon.GetExitPosition().x, (int)rawDungeon.GetExitPosition().y] = EDungeonTile.DownStairs; #if Debug // Tiles for paths for (int i = 0; i < rawDungeon.Rooms.Length; i++) { var cluster = rawDungeon.Rooms[i]; Color debugColor = Color.HSVToRGB((float)i / rawDungeon.Rooms.Length, 1, 1); for (int j = 1; j < cluster.Length; j++) { Debug.DrawLine(cluster[j - 1].center + rawDungeon.GetWorldOffset(), cluster[j].center + rawDungeon.GetWorldOffset(), debugColor, 100); } if (i < rawDungeon.Rooms.Length - 1) { Debug.DrawLine(rawDungeon.Path[i] + rawDungeon.GetWorldOffset(), rawDungeon.Path[i + 1] + rawDungeon.GetWorldOffset(), Color.white, 100); } } #endif }
private EDungeonTile[,] MakeEmptyTileMap(RawDungeonData dungeon) { EDungeonTile[,] tiles = new EDungeonTile[dungeon.Width, dungeon.Height]; for (int y = 0; y < dungeon.Height; y++) { for (int x = 0; x < dungeon.Width; x++) { tiles[x, y] = EDungeonTile.Wall; } } return(tiles); }