Example #1
0
        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;
        }
Example #3
0
 internal static bool Prefix(TowerInventory __instance, ref List <TowerDetailsModel> allTowersInTheGame)
 {
     towerInventory   = __instance;
     allTowers        = allTowersInTheGame;
     realSelectedHero = InGame.instance.SelectedHero;
     return(true);
 }
Example #4
0
            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);
            }
Example #5
0
 /// <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)
 {
 }