public static FloorInstance PlaceFloor(RoomInstance roomPrefab, FloorSettings floorSettings) { FloorInstance instance = new GameObject().AddComponent <FloorInstance>(); instance.gameObject.name = "Floor"; instance.m_FloorSettings = floorSettings; instance.m_RoomPrefab = roomPrefab; List <PlacedRoomInfo> roomInfos = new List <PlacedRoomInfo>(); int roomCount = Random.Range(floorSettings.m_MinRoomCount, floorSettings.m_MaxRoomCount); for (int i = 0; i < roomCount; ++i) { roomInfos.Add(instance.NewRoomInfo(roomInfos, roomCount)); } foreach (PlacedRoomInfo info in roomInfos) { instance.CreateRoom(info); } return(instance); }
public static RoomInstance PlaceRoom(RoomInstance prefab, bool isBossRoom, FloorSettings floorSettings, RoomSettings roomSettings, Vector3Int location, Vector3Int extents, RoomConnections connection) { RoomInstance instance = Instantiate(prefab, location, Quaternion.identity); instance.m_Connections = connection; instance.m_IsBossRoom = isBossRoom; instance.m_RoomSettings = roomSettings; instance.m_FloorSettings = floorSettings; RoomGeneratorHelper generator = new RoomGeneratorHelper(roomSettings, extents, connection); instance.SetupRoom(generator, extents); return(instance); }
public void NextLevel() { m_FloorIndex++; Debug.Log("Level " + m_FloorIndex); if (m_CurrentFloor != null) { m_CurrentFloor.Cleanup(); } FloorSettings floorSettings = m_Floors[Mathf.Min(m_FloorIndex, m_Floors.Length - 1)]; m_CurrentFloor = FloorInstance.PlaceFloor(m_RoomPrefab, floorSettings); SpawnPlayer(); StageNamePopup.Main.DisplayText(floorSettings.m_StageName, m_FloorIndex); }
public void LoadAlgorithmSettings() { FloorSettings.Clear(); TileLayers.Clear(); TileData.Clear(); Items.Clear(); Npcs.Clear(); Rooms.Clear(); if (Algorithm > -1) { FloorAlgorithm settingsGuide = GameData.FloorAlgorithmDex[Algorithm]; for (int i = 0; i < settingsGuide.FloorSettings.Count; i++) { FloorSettings.Add(settingsGuide.FloorSettings[i].Item1, 0); } for (int i = 0; i < settingsGuide.LayerSettings.Count; i++) { TileLayers.Add(settingsGuide.LayerSettings[i], new List <Maps.TileAnim>()); } for (int i = 0; i < settingsGuide.TileSettings.Count; i++) { TileData.Add(settingsGuide.TileSettings[i], new List <Maps.TileData>()); } for (int i = 0; i < settingsGuide.ItemGroups.Count; i++) { Items.Add(settingsGuide.ItemGroups[i], new List <Tuple <ItemPreset, int> >()); } for (int i = 0; i < settingsGuide.NpcGroups.Count; i++) { Npcs.Add(settingsGuide.NpcGroups[i], new List <Tuple <NpcPreset, int> >()); } for (int i = 0; i < settingsGuide.RoomGroups.Count; i++) { Rooms.Add(settingsGuide.RoomGroups[i], new List <Tuple <int, int> >()); } } }
public void Load(int rdungeonNum, int floorNum) { using (XmlReader reader = XmlReader.Create(Paths.DataPath + "RDungeon\\" + rdungeonNum.ToString() + "\\" + floorNum + ".xml")) { while (reader.Read()) { if (reader.IsStartElement()) { switch (reader.Name) { case "Algorithm": { Algorithm = reader.ReadString().ToInt(); LoadAlgorithmSettings(); break; } case "FloorSettings": { XmlReader settingsReader = reader.ReadSubtree(); while (settingsReader.Read()) { if (settingsReader.IsStartElement() && FloorSettings.ContainsKey(settingsReader.Name)) { FloorSettings[settingsReader.Name] = settingsReader.ReadString().ToInt(); } } break; } case "TileLayers": { XmlReader settingsReader = reader.ReadSubtree(); while (settingsReader.Read()) { if (settingsReader.IsStartElement() && FloorSettings.ContainsKey(settingsReader.Name)) { string settingName = settingsReader.Name; if (settingsReader.Read()) { List <Maps.TileAnim> layerList = new List <Maps.TileAnim>(); while (settingsReader.Read()) { int tileNumX = settingsReader.ReadElementString("TextureX").ToInt(); int tileNumY = settingsReader.ReadElementString("TextureY").ToInt(); int tileSheet = settingsReader.ReadElementString("Sheet").ToInt(); layerList.Add(new Maps.TileAnim(new Maps.Loc2D(tileNumX, tileNumY), tileSheet)); } TileLayers[settingName] = layerList; } } } break; } case "TileData": { XmlReader settingsReader = reader.ReadSubtree(); while (settingsReader.Read()) { if (settingsReader.IsStartElement() && FloorSettings.ContainsKey(settingsReader.Name)) { string settingName = settingsReader.Name; if (settingsReader.Read()) { List <Maps.TileData> tileDataList = new List <Maps.TileData>(); while (settingsReader.Read()) { Enums.TileType type = settingsReader.ReadString().ToEnum <Enums.TileType>(); int data1 = settingsReader.ReadElementString("Data1").ToInt(); int data2 = settingsReader.ReadElementString("Data2").ToInt(); int data3 = settingsReader.ReadElementString("Data3").ToInt(); string tileString = settingsReader.ReadElementString("String"); tileDataList.Add(new Maps.TileData(type, data1, data2, data3, tileString, "", "")); } TileData[settingName] = tileDataList; } } } break; } case "Weather": { FloorWeather.Add(reader.ReadString().ToEnum <Enums.Weather>(), reader.ReadString().ToInt()); break; } case "Darkness": { Darkness = reader.ReadString().ToInt(); break; } case "Music": { Music = reader.ReadString(); break; } case "NpcSpawnTime": { NpcSpawnTime = reader.ReadString().ToInt(); break; } case "NpcMin": { NpcMin = reader.ReadString().ToInt(); break; } case "NpcMax": { NpcMax = reader.ReadString().ToInt(); break; } case "Items": { XmlReader settingsReader = reader.ReadSubtree(); while (settingsReader.Read()) { if (settingsReader.IsStartElement()) { string settingName = settingsReader.Name; settingsReader.Read(); if (settingsReader.Read()) { List <Tuple <ItemPreset, int> > itemList = new List <Tuple <ItemPreset, int> >(); while (settingsReader.Read()) { if (settingsReader.IsStartElement() && settingsReader.Name == "Element") { settingsReader.Read(); ItemPreset preset = new ItemPreset(); preset.ItemNum = settingsReader.ReadElementString("ItemNum").ToInt(); preset.MinAmount = settingsReader.ReadElementString("MinAmount").ToInt(); preset.MaxAmount = settingsReader.ReadElementString("MaxAmount").ToInt(); int appearanceRate = settingsReader.ReadElementString("AppearanceRate").ToInt(); preset.StickyRate = settingsReader.ReadElementString("StickyRate").ToInt(); preset.Tag = settingsReader.ReadElementString("Tag"); preset.Hidden = settingsReader.ReadElementString("Hidden").ToBool(); preset.OnGround = settingsReader.ReadElementString("Ground").ToBool(); preset.OnWater = settingsReader.ReadElementString("Water").ToBool(); preset.OnWall = settingsReader.ReadElementString("Wall").ToBool(); itemList.Add(new Tuple <ItemPreset, int>(preset, appearanceRate)); } } Items[settingName] = itemList; } } } break; } case "Npcs": { XmlReader settingsReader = reader.ReadSubtree(); while (settingsReader.Read()) { if (settingsReader.IsStartElement()) { string settingName = settingsReader.Name; settingsReader.Read(); if (settingsReader.Read()) { List <Tuple <NpcPreset, int> > npcList = new List <Tuple <NpcPreset, int> >(); while (settingsReader.Read()) { if (settingsReader.IsStartElement() && settingsReader.Name == "Element") { settingsReader.Read(); NpcPreset preset = new NpcPreset(); preset.NpcNum = settingsReader.ReadElementString("NpcNum").ToInt(); preset.SpawnX = settingsReader.ReadElementString("SpawnX").ToInt(); preset.SpawnY = settingsReader.ReadElementString("SpawnY").ToInt(); preset.MinLevel = settingsReader.ReadElementString("MinLevel").ToInt(); preset.MaxLevel = settingsReader.ReadElementString("MaxLevel").ToInt(); int appearanceRate = settingsReader.ReadElementString("AppearanceRate").ToInt(); npcList.Add(new Tuple <NpcPreset, int>(preset, appearanceRate)); } } Npcs[settingName] = npcList; } } } break; } case "Rooms": { XmlReader settingsReader = reader.ReadSubtree(); while (settingsReader.Read()) { if (settingsReader.IsStartElement()) { string settingName = settingsReader.Name; settingsReader.Read(); if (settingsReader.Read()) { List <Tuple <int, int> > roomList = new List <Tuple <int, int> >(); while (settingsReader.Read()) { if (settingsReader.IsStartElement() && settingsReader.Name == "Element") { settingsReader.Read(); int num = settingsReader.ReadElementString("RoomNum").ToInt(); int appearanceRate = settingsReader.ReadElementString("AppearanceRate").ToInt(); roomList.Add(new Tuple <int, int>(num, appearanceRate)); } } Rooms[settingName] = roomList; } } } break; } } } } } }
public void Load(int algorithmNum) { Num = algorithmNum; using (XmlReader reader = XmlReader.Create(Paths.DataPath + "FloorAlgorithm\\" + algorithmNum + ".xml")) { while (reader.Read()) { if (reader.IsStartElement()) { switch (reader.Name) { case "Name": { Name = reader.ReadString(); break; } case "FloorSetting": { if (reader.Read()) { string settingName = reader.ReadElementString("FloorInt"); bool settingBool = reader.ReadElementString("FloorIntBool").ToBool(); FloorSettings.Add(new Tuple <string, bool>(settingName, settingBool)); } } break; case "LayerSetting": { LayerSettings.Add(reader.ReadString()); } break; case "TileSetting": { TileSettings.Add(reader.ReadString()); } break; case "FoliageSetting": { FoliageSettings.Add(reader.ReadString()); } break; case "CoverSetting": { CoverSettings.Add(reader.ReadString()); } break; case "ItemGroup": { ItemGroups.Add(reader.ReadString()); } break; case "NpcGroup": { NpcGroups.Add(reader.ReadString()); } break; case "RoomGroup": { RoomGroups.Add(reader.ReadString()); } break; } } } } }
private void CreateFloor(FloorSettings floor) { m_CurrentFloor = FloorInstance.PlaceFloor(m_RoomPrefab, floor); }