public static void RegisterTowerInInventory(ShopTowerDetailsModel details, string insertBefore, List <TowerDetailsModel> allTowersInTheGame) { // get the tower details for the tower insertBefore and insert the new tower into the index towerBefore is at, shifting everything after it by 1 TowerDetailsModel towerAfter = allTowersInTheGame.ToArray().FirstOrDefault(tower => tower.towerId == insertBefore); allTowersInTheGame.Insert(allTowersInTheGame.IndexOf(towerAfter), details); }
public static bool Prefix(ref List <TowerDetailsModel> allTowersInTheGame) { for (int i = 0; i < Constants.powers.Length; i++) { ShopTowerDetailsModel powerDetails = new ShopTowerDetailsModel(Constants.powers[i], allTowersInTheGame.ToArray().FirstOrDefault(tower => tower.name.Contains("EngineerMonkey")).towerIndex, 0, 0, 0, -1, -1, null); Utils.RegisterTowerInInventory(powerDetails, "EngineerMonkey", allTowersInTheGame); } for (int i = 0; i < Constants.otherTowers.Length; i++) { ShopTowerDetailsModel otherTowerDetails = new ShopTowerDetailsModel(Constants.otherTowers[i], -1, 0, 0, 0, -1, -1, null); string insertBefore = "EngineerMonkey"; // support had the most occurrences, so have it default to mortar to eliminate the conditional for military if (Constants.otherTowerTowersets[i] == "Military") { insertBefore = "MortarMonkey"; // military towers } if (Constants.otherTowerTowersets[i] == "Magic") { insertBefore = "Druid"; // magic towers } otherTowerDetails.towerIndex = allTowersInTheGame.ToArray().FirstOrDefault(tower => tower.name.Contains(insertBefore)).towerIndex; Utils.RegisterTowerInInventory(otherTowerDetails, insertBefore, allTowersInTheGame); } Console.WriteLine("Registered tower models in tower inventory"); return(true); }
public static bool Prefix(ref List <TowerDetailsModel> allTowersInTheGame) { ShopTowerDetailsModel powerDetails = new ShopTowerDetailsModel("TechBot", 1, 0, 0, 0, -1, 0, null); allTowersInTheGame.Add(powerDetails); return(true); }
public static bool Prefix(ref List <TowerDetailsModel> allTowersInTheGame) { ShopTowerDetailsModel towerDetails = new ShopTowerDetailsModel("SentryCrushing", 1, 0, 0, 0, -1, 0, null); allTowersInTheGame.Add(towerDetails); return(true); }
internal override void PostRegister() { foreach (var towerModel in towerModels) { ModTowerHelper.FinalizeTowerModel(this, towerModel); } Game.instance.GetLocalizationManager().textTable[Id] = DisplayName; Game.instance.GetLocalizationManager().textTable[Id + "s"] = DisplayNamePlural; Game.instance.GetLocalizationManager().textTable[Id + " Description"] = Description; if (!DontAddToShop) { try { var index = GetTowerIndex(Game.instance.model.towerSet.ToList()); if (index >= 0) { var shopTowerDetailsModel = new ShopTowerDetailsModel(Id, index, 5, 5, 5, -1, 0, null); Game.instance.model.AddTowerDetails(shopTowerDetailsModel, index); } } catch (Exception) { MelonLogger.Error($"Failed to add ModTower {Name} to the shop"); throw; } } ModTowerSet?.towers.Add(this); }
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); }