コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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
                    });
                }
            }
        }