public override void OnLoad(ConfigNode node) { base.OnLoad(node); EntryCostDatabase.Load(node.GetNode("Unlocks")); EntryCostDatabase.UpdatePartEntryCosts(); if (HighLogic.CurrentGame.Mode == Game.Modes.CAREER) { foreach (ConfigNode n in node.GetNodes("TLUpgrade")) { TLUpgrade tU = null; if (n.HasValue("name")) { string tlName = n.GetValue("name"); if (techLevelUpgrades.TryGetValue(tlName, out tU)) { tU.Load(n); } else { tU = new TLUpgrade(n); techLevelUpgrades[tlName] = tU; } } } } }
public bool PurchaseConfig(string cfgName) { if (ConfigUnlocked(cfgName)) { return(false); } double cfgCost = ConfigEntryCost(cfgName); if (!HighLogic.CurrentGame.Parameters.Difficulty.BypassEntryPurchaseAfterResearch) { if (Funding.Instance.Funds < cfgCost) { return(false); } Funding.Instance.AddFunds(-cfgCost, TransactionReasons.RnDPartPurchase); } EntryCostDatabase.SetUnlocked(cfgName); EntryCostDatabase.UpdatePartEntryCosts(); return(true); }
public void Start() { EntryCostManager.FillUpgrades(); EntryCostDatabase.Initialize(); EntryCostDatabase.UpdatePartEntryCosts(); }
public static void UpdateEntryCost(AvailablePart ap) { string name = GetPartName(ap); EntryCostDatabase.ClearTracker(); PartEntryCostHolder h; if (holders.TryGetValue(name, out h)) { ap.SetEntryCost(h.GetCost()); } }
public override void OnSave(ConfigNode node) { base.OnSave(node); if (HighLogic.CurrentGame.Mode == Game.Modes.CAREER) { foreach (TLUpgrade tU in techLevelUpgrades.Values) { tU.Save(node.AddNode("TLUpgrade")); } EntryCostDatabase.Save(node.AddNode("Unlocks")); } }
public int GetCost() { if (EntryCostDatabase.IsUnlocked(name)) { return(0); } int c = cost; foreach (string s in children) { c += EntryCostDatabase.GetCost(s); } return(c); }
public override void OnAwake() { base.OnAwake(); if (_instance != null) { Object.Destroy(this); return; } _instance = this; if (configUpgrades == null) // just in case { FillUpgrades(); } EntryCostDatabase.Initialize(); // should not be needed though. GameEvents.OnPartPurchased.Add(new EventData <AvailablePart> .OnEvent(onPartPurchased)); }
public void onPartPurchased(AvailablePart ap) { EntryCostDatabase.SetUnlocked(ap); StartCoroutine(updatePartEntryCosts()); Part part = ap.partPrefab; if (part != null) { for (int i = part.Modules.Count - 1; i >= 0; --i) { PartModule m = part.Modules[i]; if (m is ModuleEngineConfigs) { ModuleEngineConfigs mec = m as ModuleEngineConfigs; mec.CheckConfigs(); for (int j = mec.configs.Count - 1; j >= 0; --j) { ConfigNode cfg = mec.configs[j]; if (cfg.HasValue("name")) { string cfgName = cfg.GetValue("name"); // TL upgrades if (mec.techLevel >= 0) { string tUName = Utilities.GetPartName(ap) + cfgName; SetTLUnlocked(tUName, mec.techLevel); } } } } } } }
public double ConfigEntryCost(string cfgName) { EntryCostDatabase.ClearTracker(); return(EntryCostDatabase.GetCost(cfgName)); }
public bool ConfigUnlocked(string cfgName) { return(EntryCostDatabase.IsUnlocked(cfgName)); }
protected IEnumerator updatePartEntryCosts() { yield return(new WaitForEndOfFrame()); EntryCostDatabase.UpdatePartEntryCosts(); }