public static void RerollTowers() { if (towerNames.Length == 0) { SetTowerNames(); } if (towerButtons == null || towerButtons.Length == 0 || currentInventory != InGame.instance.GetTowerInventory()) { towerButtons = ShopMenu.instance.towerButtons.GetComponentsInChildren <TowerPurchaseButton>(); currentInventory = InGame.instance.GetTowerInventory(); } int numberOfRandomTowers = MelonPreferences.GetEntryValue <int>(preferencesCategoryIdentifier, "NumberOfRandomTowers"); Il2CppStringArray enabledTowers = new Il2CppStringArray(towerNames.OrderBy(x => random.Next()).Take(Math.Max(Math.Min(numberOfRandomTowers, towerNames.Length), 0)).ToArray()); foreach (var purchaseButton in Main.towerButtons) { if (enabledTowers.Contains(purchaseButton.baseTowerModel.name)) { purchaseButton.transform.parent.gameObject.SetActive(true); } else { purchaseButton.transform.parent.gameObject.SetActive(false); } } }
internal static void Postfix(TowerInventory __instance, ref List <TowerDetailsModel> allTowersInTheGame) { towerInventory = __instance; allTowers = allTowersInTheGame; if (SessionData.CurrentSession.IsCheating) { return; } var unlockedHeros = Game.instance.GetProfileModel().unlockedHeroes; for (int i = 0; i < allTowersInTheGame.Count; i++) { var tower = allTowersInTheGame[i]; var heroDetailsModel = tower.TryCast <HeroDetailsModel>(); var isHero = heroDetailsModel != null; if (!isHero) { continue; } bool hasHero = unlockedHeros.Contains(tower.towerId); if (!hasHero) { continue; } allTowersInTheGame[i].towerCount = -1; } return; }
internal static bool Prefix(TowerInventory __instance, ref List <TowerDetailsModel> allTowersInTheGame) { towerInventory = __instance; allTowers = allTowersInTheGame; realSelectedHero = InGame.instance.SelectedHero; return(true); }
public static bool Prefix(TowerInventory __instance, ref List <TowerDetailsModel> allTowersInTheGame) { int i = 22; foreach (var power in Powers.Keys) { if (Powers[power] < 0) { continue; } ShopTowerDetailsModel powerDetails = new ShopTowerDetailsModel(power, i++, 0, 0, 0, -1, 0, null); allTowersInTheGame.Add(powerDetails); } allTowers = allTowersInTheGame; towerInventory = __instance; TSMThemeEnergisingTotem_Selected.lastOpened = false; //UI is reset, so we have to as well return(true); }
/// <summary> /// Called when the TowerInventory is initialized for a game /// </summary> /// <param name="towerInventory"></param> /// <param name="allTowersInTheGame"></param> public virtual void OnTowerInventoryInitialized(TowerInventory towerInventory, List <TowerDetailsModel> allTowersInTheGame) { }