void SpawnRooms(Dictionary <Vector2Int, Room> room_dict) { positions_to_rooms = new Dictionary <Vector2Int, Room>(); foreach (Vector2Int v in room_dict.Keys) { Room new_room = Instantiate(room_dict[v], new Vector3(v.x * room_width, v.y * room_height, 0), Quaternion.identity); new_room.grid_position = v; new_room.SetSize(room_width, room_height); adjacent_rooms.Add(new_room, new List <Room>()); foreach (Vector2Int pos in new_room.template.GetCoordinateList()) { positions_to_rooms.Add(pos + v, new_room); new_room.template.GetBlock(pos).DisablePathway(); } new_room.LoadTileSet(ts); new_room.SpawnRandomRoomset(); if (new_room as BossRoom != null) { boss_room = new_room as BossRoom; } else { rooms.Add(new_room); } } item_pool.Shuffle(); List <Room> can_spawn_item = new List <Room>(rooms); int target_items = 3; while (can_spawn_item.Count > 0 && target_items > 0) { can_spawn_item.Shuffle(); ItemSpawner item_spawn = can_spawn_item[0].GetComponentInChildren <ItemSpawner>(); if (item_spawn == null) { can_spawn_item.RemoveAt(0); } else { item_spawn.SpawnItemChest().SetSpawnItem(item_pool[0]); item_pool.RemoveAt(0); target_items--; can_spawn_item.RemoveAt(0); } } if (boss_room.reward) { boss_room.reward.SpawnItemChest().SetSpawnItem(item_pool[0]); item_pool.RemoveAt(0); } foreach (Room r in rooms) { foreach (ItemSpawner ispawn in r.GetComponentsInChildren <ItemSpawner>()) { Destroy(ispawn.gameObject); } } }