private static Tech AISelectFavoriteTech(StrategicAI ai, IList <Tech> techs)
        {
            if (techs.Count == 0)
            {
                return((Tech)null);
            }
            List <Tech> techList = new List <Tech>();
            int         num      = AIResearchFramework.AICalcTechCost(ai, techs[0]);

            foreach (Tech tech in (IEnumerable <Tech>)techs)
            {
                if (num == AIResearchFramework.AICalcTechCost(ai, tech))
                {
                    techList.Add(tech);
                }
                else
                {
                    if (AIResearchFramework.AIGetTurnsToComplete(ai, tech) <= 15)
                    {
                        techList.Add(tech);
                        break;
                    }
                    break;
                }
            }
            return(techList[ai.Random.Next(techList.Count)]);
        }
        private static bool AICanSelectBinaryResponseTech(StrategicAI ai)
        {
            Tech researchingTech = AIResearchFramework.AIGetResearchingTech(ai);

            if (researchingTech != null)
            {
                return(AIResearchFramework.AIGetTurnsToComplete(ai, researchingTech) > 5);
            }
            return(true);
        }
 private bool AIIsShortTermTech(StrategicAI ai, Tech tech)
 {
     return(AIResearchFramework.AIGetTurnsToComplete(ai, tech) < 15);
 }
 private static int AICalcTechCost(StrategicAI ai, Tech tech)
 {
     return(AIResearchFramework.AICalcTechCost(AIResearchFramework.AICalcCombinedTechStyleCost(ai, tech), (double)tech.AICostFactors.Faction(ai.Player.Faction.Name), (double)AIResearchFramework.AIGetTurnsToComplete(ai, tech)));
 }