bool ConstructFirstRoom(JAreaConfig areaConfig) { JAreaConfig.JRoomConfig room = null; switch (m_LevelData.levelType) { case LevelType.Normal: room = GetRoomConfig(RoomType.StartRoom); break; case LevelType.Practice: room = GetRoomConfig(RoomType.PracticeRoom); break; case LevelType.PreCombat: room = GetRoomConfig(RoomType.PreCombatRoom); break; } if (room == null) { Debug.LogError("找不到开始的房间"); return false; } else { AddRoomConstructorData(0, room, true); return true; } }
void GenerateRoomsFromRoomType(JAreaConfig.JRandomRoomTypeConfig[] roomTypeConfigs, System.Random random) { if (roomTypeConfigs != null) { bool firstTime = true; while (true) { foreach (JAreaConfig.JRandomRoomTypeConfig config in roomTypeConfigs) { int count = 1; if (config.count != null) { count = config.count.GetValue(random); } for (int i = 0; i < count; i++) { JAreaConfig.JRoomConfig roomConfig = JAreaConfig.JRoomConfig.CreateFromType(config, random); m_TempRoomConfig.Add(roomConfig); //保证总房间的数量不能小于总深度 if (!firstTime && m_TempRoomConfig.Count >= deep) { break; } } } firstTime = false; if (m_TempRoomConfig.Count >= deep) { break; } } } }
void Initialize(int index, int deep, JAreaConfig.JRoomConfig config) { this.index = index; this.deep = deep; roomType = config.roomType; contentName = config.content; }
public static RoomData Create(int index, int deep, JAreaConfig.JRoomConfig config) { RoomData data = new RoomData(); data.Initialize(index, deep, config); return(data); }
void AddRoomConstructorData(int deep, JAreaConfig.JRoomConfig roomConfig, bool removeConfig) { RoomData roomData = RoomData.Create(m_IndexCounter++, deep, roomConfig); roomDatas.Add(roomData); if (removeConfig) { m_TempRoomConfig.Remove(roomConfig); } }
bool ConstructLastRoom(JAreaConfig areaConfig) { if (m_LevelData.levelType == LevelType.Normal) { JAreaConfig.JRoomConfig roomConfig = GetRoomConfig(RoomType.BossRoom); if (roomConfig == null) { Debug.LogError("找不到boss房间"); return false; } else { AddRoomConstructorData(deep, roomConfig, true); return true; } } else { return true; } }
bool ConstructRoom(JAreaConfig areaConfig) { if (ConstructFirstRoom(areaConfig) && ConstructLastRoom(areaConfig)) { if (m_TempRoomConfig.Count > 0) { List<int> roomIndexList = Untility.Tool.CreateRandomList(0, m_TempRoomConfig.Count - 1); int curDeep = 1; foreach (int index in roomIndexList) { JAreaConfig.JRoomConfig roomConfig = m_TempRoomConfig[index]; AddRoomConstructorData(curDeep++, roomConfig, false); curDeep = curDeep > deep - 1 ? 1 : curDeep; } m_TempRoomConfig.Clear(); } return true; } else { return false; } }