private static void ProcessArea(AreaData area, AreaMode?mode = null) { RandoConfigFile config = RandoConfigFile.Load(area); if (config == null) { return; } for (int i = 0; i < area.Mode.Length; i++) { if (area.Mode[i] == null) { continue; } if (mode != null && mode != (AreaMode?)i) { continue; } var mapConfig = config.GetRoomMapping((AreaMode)i); if (mapConfig == null) { continue; } RandoLogic.AllRooms.AddRange(RandoLogic.ProcessMap(area.Mode[i].MapData, mapConfig)); RandoLogic.AvailableAreas.Add(new AreaKey(area.ID, (AreaMode)i)); } }
private static void ProcessArea(AreaData area, AreaMode?mode = null) { RandoConfigFile config = RandoConfigFile.Load(area); if (config == null) { return; } for (int i = 0; i < area.Mode.Length; i++) { if (area.Mode[i] == null) { continue; } if (mode != null && mode != (AreaMode?)i) { continue; } var mapConfig = config.GetRoomMapping((AreaMode)i); if (mapConfig == null) { continue; } RandoLogic.AllRooms.AddRange(RandoLogic.ProcessMap(area.Mode[i].MapData, mapConfig)); // Use SID (minus level name) for levelsets to avoid collisions AreaKey key = new AreaKey(area.ID, (AreaMode)i); string SID = key.GetSID(); string levelSetID = SID.Substring(0, SID.LastIndexOf('/')); if (RandoLogic.LevelSets.TryGetValue(levelSetID, out var keyList)) { keyList.Add(key); } else { RandoLogic.LevelSets.Add(levelSetID, new List <AreaKey> { key }); } } }