public void FacilityUpgradedEvent(Upgradeables.UpgradeableFacility facility, int lvl) { if (KCT_GUI.PrimarilyDisabled) { bool isLaunchpad = facility.id.ToLower().Contains("launchpad"); if (!isLaunchpad) return; //is a launch pad KCT_GameStates.ActiveKSC.ActiveLPInstance.Upgrade(lvl); } if (!(allowedToUpgrade || !KCT_PresetManager.Instance.ActivePreset.generalSettings.KSCUpgradeTimes)) { KCT_UpgradingBuilding upgrading = new KCT_UpgradingBuilding(facility, lvl, lvl - 1, facility.id.Split('/').Last()); upgrading.isLaunchpad = facility.id.ToLower().Contains("launchpad"); if (upgrading.isLaunchpad) { upgrading.launchpadID = KCT_GameStates.ActiveKSC.ActiveLaunchPadID; if (upgrading.launchpadID > 0) upgrading.commonName += KCT_GameStates.ActiveKSC.ActiveLPInstance.name;//" " + (upgrading.launchpadID+1); } if (!upgrading.AlreadyInProgress()) { KCT_GameStates.ActiveKSC.KSCTech.Add(upgrading); upgrading.Downgrade(); double cost = facility.GetUpgradeCost(); upgrading.SetBP(cost); upgrading.cost = cost; ScreenMessages.PostScreenMessage("Facility upgrade requested!", 4.0f, ScreenMessageStyle.UPPER_CENTER); KCTDebug.Log("Facility " + facility.id + " upgrade requested to lvl " + lvl + " for " + cost + " funds, resulting in a BP of " + upgrading.BP); } else if (lvl != upgrading.currentLevel) { // KCT_UpgradingBuilding listBuilding = upgrading.KSC.KSCTech.Find(b => b.id == upgrading.id); if (upgrading.isLaunchpad) listBuilding = upgrading.KSC.KSCTech.Find(b => b.isLaunchpad && b.launchpadID == upgrading.launchpadID); listBuilding.Downgrade(); KCT_Utilities.AddFunds(listBuilding.cost, TransactionReasons.None); ScreenMessages.PostScreenMessage("Facility is already being upgraded!", 4.0f, ScreenMessageStyle.UPPER_CENTER); KCTDebug.Log("Facility " + facility.id + " tried to upgrade to lvl " + lvl + " but already in list!"); } } else { KCTDebug.Log("Facility " + facility.id + " upgraded to lvl " + lvl); if (facility.id.ToLower().Contains("launchpad")) { if (!allowedToUpgrade) KCT_GameStates.ActiveKSC.ActiveLPInstance.Upgrade(lvl); //also repairs the launchpad else KCT_GameStates.ActiveKSC.ActiveLPInstance.level = lvl; } allowedToUpgrade = false; foreach (KCT_KSC ksc in KCT_GameStates.KSCs) { ksc.RecalculateBuildRates(); ksc.RecalculateUpgradedBuildRates(); } foreach (KCT_TechItem tech in KCT_GameStates.TechList) { tech.UpdateBuildRate(KCT_GameStates.TechList.IndexOf(tech)); } } /* if (lvl <= lastLvl) { lastLvl = -1; return; } facility.SetLevel(lvl - 1); lastLvl = lvl; double cost = facility.GetUpgradeCost(); double BP = Math.Sqrt(cost) * 2000 * KCT_GameStates.timeSettings.OverallMultiplier;*/ // KCTDebug.Log(facility.GetNormLevel()); }
public void FacilityUpgradedEvent(Upgradeables.UpgradeableFacility facility, int lvl) { if (KCT_GUI.PrimarilyDisabled) return; if (!(allowedToUpgrade || KCT_GameStates.settings.InstantKSCUpgrades)) { KCT_UpgradingBuilding upgrading = new KCT_UpgradingBuilding(facility, lvl, lvl - 1, facility.id.Split('/').Last()); if (!upgrading.AlreadyInProgress()) { upgrading.Downgrade(); double cost = facility.GetUpgradeCost(); upgrading.SetBP(cost); upgrading.cost = cost; KCT_GameStates.ActiveKSC.KSCTech.Add(upgrading); ScreenMessages.PostScreenMessage("Facility upgrade requested!", 4.0f, ScreenMessageStyle.UPPER_CENTER); KCTDebug.Log("Facility " + facility.id + " upgrade requested to lvl " + lvl + " for " + cost + " funds, resulting in a BP of " + upgrading.BP); } else if (lvl != upgrading.currentLevel) { // KCT_UpgradingBuilding listBuilding = upgrading.KSC.KSCTech.Find(b => b.id == upgrading.id); listBuilding.Downgrade(); KCT_Utilities.AddFunds(listBuilding.cost, TransactionReasons.None); ScreenMessages.PostScreenMessage("Facility is already being upgraded!", 4.0f, ScreenMessageStyle.UPPER_CENTER); KCTDebug.Log("Facility " + facility.id + " tried to upgrade to lvl " + lvl + " but already in list!"); } } else { KCTDebug.Log("Facility " + facility.id + " upgraded to lvl " + lvl); allowedToUpgrade = false; foreach (KCT_KSC ksc in KCT_GameStates.KSCs) { ksc.RecalculateBuildRates(); ksc.RecalculateUpgradedBuildRates(); } foreach (KCT_TechItem tech in KCT_GameStates.TechList) { tech.UpdateBuildRate(); } } /* if (lvl <= lastLvl) { lastLvl = -1; return; } facility.SetLevel(lvl - 1); lastLvl = lvl; double cost = facility.GetUpgradeCost(); double BP = Math.Sqrt(cost) * 2000 * KCT_GameStates.timeSettings.OverallMultiplier;*/ // KCTDebug.Log(facility.GetNormLevel()); }