public void LoadMap(MapData _MapData) { m_Walls = new List <I_Tile>(); m_Floors = new List <I_Tile>(); m_Tiles = new Dictionary <Vector2Int, I_Tile>(); if (_MapData != null) { m_MapSize = new Vector2Int(_MapData.MapSizeX, _MapData.MapSizeZ); m_Rooms = new List <Room>(); List <RoomData> roomsToLoad = _MapData.Rooms; for (int i = 0; i < roomsToLoad.Count; i++) { m_Rooms.Add(new Room(new Vector2Int(roomsToLoad[i].m_PosX, roomsToLoad[i].m_PosZ), new Vector2Int(roomsToLoad[i].m_SizeX, roomsToLoad[i].m_SizeZ))); } List <TileData> tilesToLoad = _MapData.Tiles; for (int i = 0; i < tilesToLoad.Count; i++) { Room room = null; if (tilesToLoad[i].m_RoomIndex >= 0) { room = m_Rooms[tilesToLoad[i].m_RoomIndex]; } GenerateTile("Tiles/TileEmpty", tilesToLoad[i].m_PosX, tilesToLoad[i].m_PosZ, room); } m_StairsPosition = new Vector2Int(_MapData.StairsPositionX, _MapData.StairsPositionZ); m_StairsTriggerPosition = new Vector2Int(_MapData.StairsTriggerPositionX, _MapData.StairsTriggerPositionZ); I_Tile stairs = GenerateTile("Tiles/TileStairs", _MapData.StairsPositionX, _MapData.StairsPositionZ, null); I_Tile stairsTrigger = GenerateTile("Tiles/TileShakeBell", _MapData.StairsTriggerPositionX, _MapData.StairsTriggerPositionZ, null); Tile trucMoche = stairsTrigger as Tile; TileEventShake trucEncorePlusMoche = trucMoche.GetComponent <TileEventShake>(); Tile trucSuperMoche = stairs as Tile; I_Activable trucSuperPlusMoche = trucSuperMoche.GetComponent <I_Activable>(); trucEncorePlusMoche.SetTileToActivate(trucSuperPlusMoche); for (int x = -1; x <= m_MapSize.x + 1; x++) { for (int z = -1; z <= m_MapSize.y + 1; z++) { I_Tile tile; if (!m_Tiles.TryGetValue(new Vector2Int(x, z), out tile)) { tile = GenerateTile("Tiles/TileWall", x, z, null); } tile.SetMap(this); } } SmoothMap(); } }
private Room GenerateSpecialRoom(Vector2Int _MapSize) { Vector2Int bottomLeftCorner = new Vector2Int(Random.Range(1, _MapSize.x - 10), Random.Range(1, _MapSize.y - 10)); Vector2Int size = new Vector2Int(6, 6); Room room = new Room(bottomLeftCorner, size); I_Tile stairs = GenerateTile("Tiles/TileStairs", bottomLeftCorner.x + 3, bottomLeftCorner.y + 3, room); m_StairsPosition = new Vector2Int(bottomLeftCorner.x + 3, bottomLeftCorner.y + 3); I_Tile activator = null; m_StairsTriggerPosition = new Vector2Int(); int rand = Random.Range(0, 4); if (rand == 0) { m_StairsTriggerPosition = new Vector2Int(bottomLeftCorner.x + 1, bottomLeftCorner.y + Random.Range(1, 6)); } else if (rand == 1) { m_StairsTriggerPosition = new Vector2Int(bottomLeftCorner.x + 5, bottomLeftCorner.y + Random.Range(1, 6)); } else if (rand == 2) { m_StairsTriggerPosition = new Vector2Int(bottomLeftCorner.x + Random.Range(1, 6), bottomLeftCorner.y + 1); } else if (rand == 3) { m_StairsTriggerPosition = new Vector2Int(bottomLeftCorner.x + Random.Range(1, 6), bottomLeftCorner.y + 5); } activator = GenerateTile("Tiles/TileShakeBell", m_StairsTriggerPosition.x, m_StairsTriggerPosition.y, room); Tile trucMoche = activator as Tile; TileEventShake trucEncorePlusMoche = trucMoche.GetComponent <TileEventShake>(); Tile trucSuperMoche = stairs as Tile; I_Activable trucSuperPlusMoche = trucSuperMoche.GetComponent <I_Activable>(); trucEncorePlusMoche.SetTileToActivate(trucSuperPlusMoche); return(room); }