public static double GetStandardFormulaValue(string formulaName, Dictionary <string, string> variables) { switch (formulaName) { case "Node": return(MathParsing.ParseMath("KCT_NODE", KCT_PresetManager.Instance.ActivePreset.formulaSettings.NodeFormula, variables)); case "UpgradeFunds": return(MathParsing.ParseMath("KCT_UPGRADE_FUNDS", KCT_PresetManager.Instance.ActivePreset.formulaSettings.UpgradeFundsFormula, variables)); case "UpgradeScience": return(MathParsing.ParseMath("KCT_UPGRADE_SCIENCE", KCT_PresetManager.Instance.ActivePreset.formulaSettings.UpgradeScienceFormula, variables)); case "Research": return(MathParsing.ParseMath("KCT_RESEARCH", KCT_PresetManager.Instance.ActivePreset.formulaSettings.ResearchFormula, variables)); case "EffectivePart": return(MathParsing.ParseMath("KCT_EFFECTIVE_PART", KCT_PresetManager.Instance.ActivePreset.formulaSettings.EffectivePartFormula, variables)); case "ProceduralPart": return(MathParsing.ParseMath("KCT_PROCEDURAL_PART", KCT_PresetManager.Instance.ActivePreset.formulaSettings.ProceduralPartFormula, variables)); case "BP": return(MathParsing.ParseMath("KCT_BP", KCT_PresetManager.Instance.ActivePreset.formulaSettings.BPFormula, variables)); case "KSCUpgrade": return(MathParsing.ParseMath("KCT_KSC_UPGRADE", KCT_PresetManager.Instance.ActivePreset.formulaSettings.KSCUpgradeFormula, variables)); case "Reconditioning": return(MathParsing.ParseMath("KCT_RECONDITIONING", KCT_PresetManager.Instance.ActivePreset.formulaSettings.ReconditioningFormula, variables)); case "BuildRate": return(MathParsing.ParseMath("KCT_BUILD_RATE", KCT_PresetManager.Instance.ActivePreset.formulaSettings.BuildRateFormula, variables)); case "UpgradeReset": return(MathParsing.ParseMath("KCT_UPGRADE_RESET", KCT_PresetManager.Instance.ActivePreset.formulaSettings.UpgradeResetFormula, variables)); case "InventorySales": return(MathParsing.ParseMath("KCT_INVENTORY_SALES", KCT_PresetManager.Instance.ActivePreset.formulaSettings.InventorySaleFormula, variables)); case "RolloutCost": return(MathParsing.ParseMath("KCT_ROLLOUT_COST", KCT_PresetManager.Instance.ActivePreset.formulaSettings.RolloutCostFormula, variables)); case "NewLaunchPadCost": return(MathParsing.ParseMath("KCT_NEW_LAUNCHPAD_COST", KCT_PresetManager.Instance.ActivePreset.formulaSettings.NewLaunchPadCostFormula, variables)); default: return(0); } }
public double CalculateCost(Dictionary <string, string> addlVariables = null) { if (addlVariables != null) { foreach (KeyValuePair <string, string> kvp in addlVariables) { Variables[kvp.Key] = kvp.Value; } } if (Teacher != null) { Variables["TeachLvl"] = Teacher.experienceLevel.ToString(); // Variables.Add("TeachLvl", Teacher.experienceLevel.ToString()); int classID = -1; if (Teacher.trait == "Pilot") { classID = 0; } else if (Teacher.trait == "Engineer") { classID = 1; } else if (Teacher.trait == "Scientist") { classID = 2; } Variables["TeachClass"] = classID.ToString(); //Variables.Add("TeachClass", classID.ToString()); } Variables["FilledSeats"] = Students.Count.ToString(); // UnityEngine.Debug.Log("FilledSeats: " + Variables["FilledSeats"]); //Variables.Add("FilledSeats", Students.Count.ToString()); // UnityEngine.Debug.Log(ConfigNodeExtensions.GetValueOrDefault(sourceNode, "costBase", "0")); //recalculate the baseCost, seatCost, and teacherCost costBase = MathParsing.ParseMath("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(sourceNode, "costBase", "0"), Variables); costSeat = MathParsing.ParseMath("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(sourceNode, "costSeat", "0"), Variables); if (Teacher != null) { costTeacher = 0; } else { costTeacher = MathParsing.ParseMath("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(sourceNode, "costTeacher", "0"), Variables); } double cost = costBase + costTeacher + (costSeat * Students.Count); // UnityEngine.Debug.Log("Course cost: " + cost); return(Math.Max(cost, 0.0)); }
public static void ReplaceValuesInNode(ConfigNode source, Dictionary <string, string> variables) { foreach (ConfigNode.Value val in source.values) { val.value = MathParsing.ReplaceMathVariables("FlightSchool", val.value, variables); } for (int i = 0; i < source.nodes.Count; i++) { ReplaceValuesInNode(source.nodes[i], variables); //recurse through all attached nodes } }
public static double GetStandardFormulaValue(string formulaName, Dictionary <string, string> variables) { KCT_Preset_Formula formulaSettings = PresetManager.Instance.ActivePreset.FormulaSettings; switch (formulaName) { case "Node": return(MathParsing.ParseMath("KCT_NODE", formulaSettings.NodeFormula, variables)); case "UpgradeFunds": return(MathParsing.ParseMath("KCT_UPGRADE_FUNDS", formulaSettings.UpgradeFundsFormula, variables)); case "UpgradesForScience": return(MathParsing.ParseMath("KCT_UPGRADES_FOR_SCIENCE", formulaSettings.UpgradesForScience, variables)); case "Research": return(MathParsing.ParseMath("KCT_RESEARCH", formulaSettings.ResearchFormula, variables)); case "EffectivePart": return(MathParsing.ParseMath("KCT_EFFECTIVE_PART", formulaSettings.EffectivePartFormula, variables)); case "ProceduralPart": return(MathParsing.ParseMath("KCT_PROCEDURAL_PART", formulaSettings.ProceduralPartFormula, variables)); case "BP": return(MathParsing.ParseMath("KCT_BP", formulaSettings.BPFormula, variables)); case "KSCUpgrade": return(MathParsing.ParseMath("KCT_KSC_UPGRADE", formulaSettings.KSCUpgradeFormula, variables)); case "Reconditioning": return(MathParsing.ParseMath("KCT_RECONDITIONING", formulaSettings.ReconditioningFormula, variables)); case "BuildRate": return(MathParsing.ParseMath("KCT_BUILD_RATE", formulaSettings.BuildRateFormula, variables)); case "UpgradeReset": return(MathParsing.ParseMath("KCT_UPGRADE_RESET", formulaSettings.UpgradeResetFormula, variables)); case "InventorySales": return(MathParsing.ParseMath("KCT_INVENTORY_SALES", formulaSettings.InventorySaleFormula, variables)); case "IntegrationTime": return(MathParsing.ParseMath("KCT_INTEGRATION_TIME", formulaSettings.IntegrationTimeFormula, variables)); case "IntegrationCost": return(MathParsing.ParseMath("KCT_INTEGRATION_COST", formulaSettings.IntegrationCostFormula, variables)); case "RolloutCost": return(MathParsing.ParseMath("KCT_ROLLOUT_COST", formulaSettings.RolloutCostFormula, variables)); case "NewLaunchPadCost": return(MathParsing.ParseMath("KCT_NEW_LAUNCHPAD_COST", formulaSettings.NewLaunchPadCostFormula, variables)); case "RushCost": return(MathParsing.ParseMath("KCT_RUSH_COST", formulaSettings.RushCostFormula, variables)); case "AirlaunchCost": return(MathParsing.ParseMath("KCT_AIRLAUNCH_COST", formulaSettings.AirlaunchCostFormula, variables)); case "AirlaunchTime": return(MathParsing.ParseMath("KCT_AIRLAUNCH_TIME", formulaSettings.AirlaunchTimeFormula, variables)); case "EngineRefurb": return(MathParsing.ParseMath("KCT_ENGINE_REFURB", formulaSettings.EngineRefurbFormula, variables)); default: return(0); } }
public static double GetStandardFormulaValue(string formulaName, Dictionary <string, string> variables) { switch (formulaName) { case "Node": return(MathParsing.ParseMath(KCT_PresetManager.Instance.ActivePreset.formulaSettings.NodeFormula, variables)); case "UpgradeFunds": return(MathParsing.ParseMath(KCT_PresetManager.Instance.ActivePreset.formulaSettings.UpgradeFundsFormula, variables)); case "UpgradeScience": return(MathParsing.ParseMath(KCT_PresetManager.Instance.ActivePreset.formulaSettings.UpgradeScienceFormula, variables)); case "Research": return(MathParsing.ParseMath(KCT_PresetManager.Instance.ActivePreset.formulaSettings.ResearchFormula, variables)); case "EffectivePart": return(MathParsing.ParseMath(KCT_PresetManager.Instance.ActivePreset.formulaSettings.EffectivePartFormula, variables)); case "ProceduralPart": return(MathParsing.ParseMath(KCT_PresetManager.Instance.ActivePreset.formulaSettings.ProceduralPartFormula, variables)); case "BP": return(MathParsing.ParseMath(KCT_PresetManager.Instance.ActivePreset.formulaSettings.BPFormula, variables)); case "KSCUpgrade": return(MathParsing.ParseMath(KCT_PresetManager.Instance.ActivePreset.formulaSettings.KSCUpgradeFormula, variables)); case "Reconditioning": return(MathParsing.ParseMath(KCT_PresetManager.Instance.ActivePreset.formulaSettings.ReconditioningFormula, variables)); case "BuildRate": return(MathParsing.ParseMath(KCT_PresetManager.Instance.ActivePreset.formulaSettings.BuildRateFormula, variables)); case "SimCost": return(MathParsing.ParseMath(KCT_PresetManager.Instance.ActivePreset.formulaSettings.SimCostFormula, variables)); case "KerbinSimCost": return(MathParsing.ParseMath(KCT_PresetManager.Instance.ActivePreset.formulaSettings.KerbinSimCostFormula, variables)); case "UpgradeReset": return(MathParsing.ParseMath(KCT_PresetManager.Instance.ActivePreset.formulaSettings.UpgradeResetFormula, variables)); case "InventorySales": return(MathParsing.ParseMath(KCT_PresetManager.Instance.ActivePreset.formulaSettings.InventorySaleFormula, variables)); case "RolloutCost": return(MathParsing.ParseMath(KCT_PresetManager.Instance.ActivePreset.formulaSettings.RolloutCostFormula, variables)); case "NewLaunchPadCost": return(MathParsing.ParseMath(KCT_PresetManager.Instance.ActivePreset.formulaSettings.NewLaunchPadCostFormula, variables)); default: return(0); } }
/// <summary> /// Populates all fields from the provided ConfigNode, parsing all formulas /// </summary> /// <param name="variables"></param> public void PopulateFromSourceNode(Dictionary <string, string> variables, ConfigNode source = null) { if (source == null) { source = sourceNode; } Variables = variables; id = MathParsing.ReplaceMathVariables("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(source, "id"), variables); name = MathParsing.ReplaceMathVariables("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(source, "name"), variables); description = MathParsing.ReplaceMathVariables("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(source, "description"), variables); bool.TryParse(MathParsing.ReplaceMathVariables("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(source, "Available", "True"), variables), out Available); List <string> tmpList = MathParsing.ReplaceMathVariables("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(source, "activePreReqs"), variables).Split(',').ToList(); tmpList.ForEach((s) => s.Trim()); if (!tmpList.TrueForAll(s => s == "")) { activePreReqs = tmpList.ToArray(); } else { activePreReqs = new string[] { } }; //activePreReqs = tmpList.ToArray(); tmpList = MathParsing.ReplaceMathVariables("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(source, "preReqs"), variables).Split(',').ToList(); tmpList.ForEach((s) => s.Trim()); if (!tmpList.TrueForAll(s => s == "")) { preReqs = tmpList.ToArray(); } else { preReqs = new string[] { } }; tmpList = MathParsing.ReplaceMathVariables("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(source, "conflicts"), variables).Split(',').ToList(); tmpList.ForEach((s) => s.Trim()); //conflicts = tmpList.ToArray(); if (!tmpList.TrueForAll(s => s == "")) { conflicts = tmpList.ToArray(); } else { conflicts = new string[] { } }; time = MathParsing.ParseMath("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(source, "time", "0"), variables); bool.TryParse(MathParsing.ReplaceMathVariables("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(source, "required", "false"), variables), out required); string repeatStr = MathParsing.ReplaceMathVariables("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(source, "required", "false"), variables).Trim(); switch (repeatStr) { case "NEVER": repeatable = RepeatMode.NEVER; break; case "EXPIRED": repeatable = RepeatMode.EXPIRED; break; case "ALWAYS": repeatable = RepeatMode.ALWAYS; break; default: repeatable = RepeatMode.NEVER; break; } tmpList = MathParsing.ReplaceMathVariables("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(source, "classes"), variables).Split(',').ToList(); tmpList.ForEach((s) => s.Trim()); //classes = tmpList.ToArray(); if (!tmpList.TrueForAll(s => s == "")) { classes = tmpList.ToArray(); } else { classes = new string[] { } }; minLevel = (int)(MathParsing.ParseMath("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(source, "minLevel", "0"), variables)); maxLevel = (int)(MathParsing.ParseMath("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(source, "maxLevel", "5"), variables)); seatMax = (int)(MathParsing.ParseMath("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(source, "seatMax", "-1"), variables)); seatMin = (int)(MathParsing.ParseMath("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(source, "seatMin", "0"), variables)); costBase = MathParsing.ParseMath("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(source, "costBase", "0"), variables); costSeat = MathParsing.ParseMath("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(source, "costSeat", "0"), variables); costTeacher = MathParsing.ParseMath("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(source, "costTeacher", "0"), variables); tmpList = MathParsing.ReplaceMathVariables("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(source, "teachClasses"), variables).Split(',').ToList(); tmpList.ForEach((s) => s.Trim()); if (!tmpList.TrueForAll(s => s == "")) { teachClasses = tmpList.ToArray(); } else { teachClasses = new string[] { } }; teachMinLevel = (int)(MathParsing.ParseMath("FlightSchool", ConfigNodeExtensions.GetValueOrDefault(source, "teachMinLevel", "0"), variables)); //get the REWARD nodes and replace any variables in there too ConfigNode r = source.GetNode("REWARD"); if (r != null) { ReplaceValuesInNode(r, variables); RewardLog = r.GetNode("FLIGHTLOG"); r.TryGetValue("XPAmt", ref rewardXP); } /* Expiry = source.GetNodes("EXPIRY"); * foreach (ConfigNode node in Expiry) * ConfigNodeExtensions.ReplaceValuesInNode(node, variables);*/ /*string logStr = "Course created"; * logStr += "\nID: " + id; * logStr += "\nName: " + name; * logStr += "\nAvailable: " + Available; * logStr += "\nprereqs: " + preReqs.Length; * logStr += "\ntime: " + time; * logStr += "\nrepeatable: " + repeatable; * logStr += "\nteachMin: " + teachMinLevel; * logStr += "\nXP: " + rewardXP; * logStr += "\nLog: "; * if (RewardLog != null) * foreach (ConfigNode.Value v in RewardLog.values) * logStr += "\n" + v.value; * * UnityEngine.Debug.Log(logStr);*/ }