示例#1
0
 void ResetRunData()
 {
     InvadersAvailable.Clear();
     InvadersAvailable.AddRange(Enumerable.Range(0, 30));
     InvadersUsed.Clear();
     BossCategoriesUsed.Clear();
     MapsAvailable.Clear();
     MapsAvailable.AddRange(Maps.MapList.Where(map => - 2 <= map.Rating && map.Rating <= 2));
     MapsVisited.Clear();
     MapLabels.Clear();
 }
示例#2
0
        void LoadExistingRun()
        {
            // Load data from game flags about a run that is already underway.
            ResetRunData();
            List <Label> allLabels = new List <Label>(Enum.GetValues(typeof(Label)).Cast <Label>());

            {
                foreach (Map map in Maps.MapList)
                {
                    if (GetFlag(map.IsVisitedFlag))
                    {
                        MapsAvailable.Remove(map);
                        MapsVisited.Add(map);
                    }
                    MapLabels[map] = new List <Label>(allLabels.Where(label => GetFlag(map.HasLabelFlagBase + (int)label)));
                    if (GetFlag(map.InMapFlag))
                    {
                        CurrentMap = map;
                    }
                }
                int maxBossCategory = EnemyGenerator.LastBossCategory;
                for (int category = 0; category <= maxBossCategory; category++)
                {
                    if (GetFlag(GameFlag.BossCategoryUsedBaseFlag + category))
                    {
                        BossCategoriesUsed.Add(category);
                    }
                }
            }

            foreach (int invader in InvadersAvailable.ToArray())
            {
                if (GetFlag(GameFlag.InvaderUsedBaseFlag + invader))
                {
                    InvadersAvailable.Remove(invader);
                    InvadersUsed.Add(invader);
                }
            }
        }