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; } }
bool Initialize(int index, JAreaConfig areaConfig, System.Random random) { m_IndexCounter = 0; this.index = index; deep = areaConfig.deep.GetValue(random); name = areaConfig.name; GenerateRooms(areaConfig.roomConfigs, random); GenerateRoomsFromRoomPool(areaConfig.roomPoolConfigs, random); GenerateRoomsFromRoomType(areaConfig.roomTypeConfigs, random); return ConstructRoom(areaConfig); }
public static AreaData Create(LevelData levelData, int index, JAreaConfig areaConfig, System.Random random) { AreaData data = new AreaData(levelData); if (data.Initialize(index, areaConfig, random)) { return data; } else { return null; } }
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; } }