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(); }
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); } } }