Beispiel #1
0
        /// <summary>
        /// Applies the researched tech to the faction. Can be used when tech is gifted, stolen, researched...
        /// Increases the specific TechSD by one level for the given faction.
        /// </summary>
        /// <param name="factionAbilities"></param>
        /// <param name="factionTechs"></param>
        /// <param name="research"></param>
        public static void ApplyTech(FactionTechDB factionTechs, TechSD research)
        {
            if (factionTechs.ResearchedTechs.ContainsKey(research.ID))
            {
                factionTechs.ResearchedTechs[research.ID] += 1;
            }
            else
            {
                factionTechs.ResearchedTechs.Add(research.ID, 0);
            }


            if (factionTechs.LevelforTech(research) >= research.MaxLevel)
            {
                factionTechs.ResearchableTechs.Remove(research);
            }
            else if (!factionTechs.ResearchableTechs.ContainsKey(research))
            {
                factionTechs.ResearchableTechs.Add(research, 0);
            }

            if (factionTechs.UnavailableTechs[research] >= research.MaxLevel)
            {
                factionTechs.UnavailableTechs.Remove(research); //if we've reached the max value for this tech remove it from the unavailbile list
            }
            else                                                //else if we've not reached max value, increase the level.
            {
                factionTechs.UnavailableTechs[research] += 1;
            }

            //check if it's opened up other reasearch.
            //MakeResearchable(factionTechs);
        }
Beispiel #2
0
        public static Expression DataExpression(FactionTechDB factionTechs, TechSD tech)
        {
            string stringExpression = tech.DataFormula;

            Expression expression = new Expression(stringExpression);

            expression.Parameters.Add("Level", (double)factionTechs.LevelforTech(tech));
            return(expression);
        }
Beispiel #3
0
        public static int CostFormula(FactionTechDB factionTechs, TechSD tech)
        {
            string stringExpression = tech.CostFormula;

            Expression expression = new Expression(stringExpression);

            expression.Parameters.Add("Level", factionTechs.LevelforTech(tech));
            int result = (int)expression.Evaluate();

            return(result);
        }
Beispiel #4
0
        public static double DataFormula(FactionTechDB factionTechs, TechSD tech)
        {
            string stringExpression = tech.DataFormula;

            Expression expression = new Expression(stringExpression);

            expression.Parameters.Add("Level", (double)factionTechs.LevelforTech(tech));
            object result = expression.Evaluate();

            if (result is int)
            {
                return((double)(int)result);
            }
            return((double)result);
        }