Пример #1
0
        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);
            }
        }
Пример #2
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));
        }
Пример #3
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
            }
        }
Пример #4
0
        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);
            }
        }
Пример #5
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);
            }
        }
Пример #6
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);*/
        }