示例#1
0
        internal static void Postfix(TowerSelectionMenu __instance, int path, ref bool __result)
        {
            var tower = __instance.selectedTower.tower;

            if (tower.GetUpgrade(path)?.GetModUpgrade() is ModUpgrade modUpgrade && modUpgrade.RestrictUpgrading(tower))
            {
                __result = true;
            }
        }
示例#2
0
 public static void Postfix(TowerSelectionMenu __instance)
 {
     if (__instance.upgradeButtons != null && __instance.selectedTower?.tower?.towerModel?.baseId == TowerType.SuperMonkey)
     {
         if (SacrificesOff)
         {
             foreach (var instanceUpgradeButton in __instance.upgradeButtons)
             {
                 var upgradeModel = instanceUpgradeButton.upgradeButton.GetUpgradeModel();
                 if (upgradeModel == null)
                 {
                     continue;
                 }
                 if (upgradeModel.name == "Sun Temple")
                 {
                     Utils.ModifyTemple(upgradeModel);
                 }
                 else if (upgradeModel.name == "True Sun God")
                 {
                     Utils.ModifyGod(upgradeModel);
                 }
                 else
                 {
                     continue;
                 }
                 instanceUpgradeButton.UpdateCost();
                 instanceUpgradeButton.UpdateVisuals(0, false);
             }
         }
         else
         {
             foreach (var instanceUpgradeButton in __instance.upgradeButtons)
             {
                 var upgradeModel = instanceUpgradeButton.upgradeButton.GetUpgradeModel();
                 if (upgradeModel == null)
                 {
                     continue;
                 }
                 if (upgradeModel.name == "Sun Temple")
                 {
                     Utils.DefaultTemple(upgradeModel);
                 }
                 else if (upgradeModel.name == "True Sun God")
                 {
                     Utils.DefaultGod(upgradeModel);
                 }
                 else
                 {
                     continue;
                 }
                 instanceUpgradeButton.UpdateCost();
                 instanceUpgradeButton.UpdateVisuals(0, false);
             }
         }
     }
 }
示例#3
0
        public void AddToTowerSelctionMenu()
        {
            string towerSelFilePath = TowerSelectFiles[TowerSelPos];

            if (!File.Exists(towerSelFilePath))
            {
                ConsoleHandler.append_Force("Unable to find the Tower Selection file!");
                return;
            }

            string text = CheckJSONFromFile(towerSelFilePath);

            if (!Guard.IsStringValid(text))
            {
                FileInfo file = new FileInfo(towerSelFilePath);
                ConsoleHandler.append_Force("The Tower Select File  " + file.Name + "  has has invalid text/JSON. Unable to add tower to TowerSelectionMenu");
                return;
            }

            ConsoleHandler.append("Creating new tower entry in TowerSelectionMenu");
            TowerSelectionMenu menu    = TowerSelectionMenu.FromJson(text);
            TowerSelectItem    newItem = new TowerSelectItem();
            bool foundBaseTower        = false;

            if (UseBaseTower)
            {
                newItem = TowerSelMenu_DupBaseTower();
                if (!Guard.IsStringValid(newItem.ToString()))
                {
                    foundBaseTower = false;
                    ConsoleHandler.append("Unable to find chosen base tower in tower selection menu files. Using blank values instead.");
                }
                else
                {
                    foundBaseTower = true;
                }
            }

            if (!UseBaseTower || !foundBaseTower)
            {
                newItem = TowerSelMenu_EmptyTower(newItem);
            }

            if (newItem == null)
            {
                return;
            }
            if (menu == null)
            {
                return;
            }

            AddTowerToSelMenu(newItem, menu);
        }
示例#4
0
        private void AddTowerToSelMenu(TowerSelectItem newItem, TowerSelectionMenu menu)
        {
            menu.Items.Add(newItem);
            string text = menu.ToJson();

            StreamWriter serialize = new StreamWriter(TowerSelectFiles[TowerSelPos], false);

            serialize.Write(text);
            serialize.Close();

            ConsoleHandler.append("Tower added to " + TowerSelectFiles[TowerSelPos].Replace(CurrentProjectVariables.PathToProjectFiles, ""));
        }
示例#5
0
        private TowerSelectItem TowerSelMenu_DupBaseTower()
        {
            FileInfo        baseTower = new FileInfo(BaseTowerFile);
            TowerSelectItem newItem   = new TowerSelectItem();

            ConsoleHandler.append("Duplicating base TowerSelectMenu entry");
            foreach (var a in TowerSelectFiles)
            {
                string tempText = CheckJSONFromFile(a.Value);

                if (!Guard.IsStringValid(tempText))
                {
                    continue;
                }

                TowerSelectionMenu tempMenu = TowerSelectionMenu.FromJson(tempText);
                if (tempMenu == null)
                {
                    continue;
                }

                foreach (TowerSelectItem item in tempMenu.Items)
                {
                    if (item.FactoryName == baseTower.Name.Replace(".tower", ""))
                    {
                        ConsoleHandler.append("Found base tower's TowerSelect entry in: " + a.Value.Replace(CurrentProjectVariables.PathToProjectFiles, ""));
                        newItem.FactoryName      = TowerName;
                        newItem.Icon             = item.Icon;
                        newItem.KeyboardShortcut = item.KeyboardShortcut;
                        newItem.ObjectType       = item.ObjectType;
                        break;
                    }
                }
            }

            return(newItem);
        }
 internal static void Postfix(TowerSelectionMenu __instance)
 {
     __instance.InitUpgradeButtons();
 }