private void SetUnlocksForMission(int mission) { drawAliens.Clear(); projImgs.Clear(); projRects.Clear(); otherUnlockImgs.Clear(); otherUnlockRects.Clear(); unlocks.Clear(); unlockPositions.Clear(); // Check and add any aliens for the level first if (GameInfo.AlienVisibilityLvls.ContainsKey(mission)) { List <Aliens> aliens = GameInfo.AlienVisibilityLvls .Where(x => x.Key == mission) .Select(kvp => kvp.Value) .ToList(); for (int i = 0; i < aliens.Count; i++) { Alien newAlien = GameInfo.CreateAlien(aliens[i], false, 1000, 1000, ALIEN_WIDTH, ALIEN_HEIGHT, null); newAlien.ShowHealthbar = false; drawAliens.Add(newAlien); unlocks.Add(Language.Translate("New Alien") + ": " + Language.Translate(GameInfo.ToText(aliens[i]))); unlockPositions.Add(new Vector2()); } } // Now check and add projectiles if (GameInfo.ProjVisibilityLvls.ContainsValue(mission)) { List <ProjectileType> projs = GameInfo.ProjVisibilityLvls .Where(x => x.Value == mission) .Select(kvp => kvp.Key) .ToList(); for (int i = 0; i < projs.Count; i++) { projImgs.Add(Utilities.GetIconOf(projs[i])); projRects.Add(new Rectangle(0, 0, ITEM_SIZE, ITEM_SIZE)); unlocks.Add(Language.Translate("New Projectile") + ": " + Language.Translate(projs[i].ToString().AddSpaces())); unlockPositions.Add(new Vector2()); } } // Finally, check for special features added in levels (such as shields or cannon upgrades) if (mission == GameInfo.SHIELD_LVL) { otherUnlockImgs.Add(Utilities.AlienShieldImg); otherUnlockRects.Add(new Rectangle(0, 0, ITEM_SIZE, ITEM_SIZE)); unlocks.Add(Language.Translate("Alien Shields")); unlockPositions.Add(new Vector2()); } }