コード例 #1
0
        private List <AIResearchFramework.TechBeat> AIGetCulledProspects(
            StrategicAI ai,
            IEnumerable <AIResearchFramework.TechBeat> sorted)
        {
            int    num1 = 0;
            double num2 = 0.0;
            List <AIResearchFramework.TechBeat> techBeatList = new List <AIResearchFramework.TechBeat>();

            foreach (AIResearchFramework.TechBeat techBeat in sorted)
            {
                techBeatList.Add(techBeat);
                if (num1 == 0)
                {
                    techBeatList.Add(techBeat);
                    techBeatList.Add(techBeat);
                    num2 = (double)AIResearchFramework.AICalcTechCost(ai, techBeat.Tech);
                }
                if ((double)AIResearchFramework.AICalcTechCost(ai, techBeat.Tech) == num2)
                {
                    ++num1;
                }
                else
                {
                    break;
                }
            }
            return(techBeatList);
        }
コード例 #2
0
        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)]);
        }
コード例 #3
0
        private Tech AISelectDefaultTechPass(
            StrategicAI ai,
            AIResearchModes?mode,
            TechFamilies?family)
        {
            List <Tech> list = AIResearchFramework.AISelectAvailableTechs(ai, mode, family).OrderBy <Tech, int>((Func <Tech, int>)(x => AIResearchFramework.AICalcTechCost(ai, x))).ToList <Tech>();

            if (list.Count > 0)
            {
                list.Insert(0, list[0]);
            }
            if (this._log != null)
            {
                this._log.Print(string.Format(" {0} prospects: ", mode.HasValue ? (object)string.Format("{0}/{1}", (object)AIResearchFramework.AIGetResearchModeSymbol(mode.Value), (object)ai.Game.GameDatabase.GetAIInfo(ai.Player.ID).Stance.ToString()) : (object)"ALL"));
                foreach (Tech tech in list)
                {
                    int num = AIResearchFramework.AICalcTechCost(ai, tech);
                    this._log.Print(string.Format("{0} ({1}); ", (object)tech.Id, (object)num));
                }
            }
            return(AIResearchFramework.AISelectFavoriteTech(ai, (IList <Tech>)list));
        }
コード例 #4
0
 private void LogProspects(
     StrategicAI ai,
     IList <AIResearchModes> phasedRhythm,
     IEnumerable <AIResearchFramework.TechBeat> prospects)
 {
     if (this._log == null)
     {
         return;
     }
     foreach (AIResearchFramework.TechBeat prospect in prospects)
     {
         this._log.Print(string.Format("{0}/{1} ({2}{3}); ", (object)AIResearchFramework.AIGetResearchModeSymbol(phasedRhythm[prospect.Beat]), (object)prospect.Tech.Id, (object)AIResearchFramework.AICalcTechCost(ai, prospect.Tech), this.AIIsShortTermTech(ai, prospect.Tech) ? (object)"" : (object)"*"));
     }
 }
コード例 #5
0
 private IEnumerable <AIResearchFramework.TechBeat> AIGetProspects(
     StrategicAI ai,
     IEnumerable <AIResearchFramework.TechBeat> techs)
 {
     return((IEnumerable <AIResearchFramework.TechBeat>)techs.OrderBy <AIResearchFramework.TechBeat, int>((Func <AIResearchFramework.TechBeat, int>)(x => !this.AIIsShortTermTech(ai, x.Tech) ? 1 : 0)).ThenBy <AIResearchFramework.TechBeat, int>((Func <AIResearchFramework.TechBeat, int>)(y => y.Beat)).ThenBy <AIResearchFramework.TechBeat, int>((Func <AIResearchFramework.TechBeat, int>)(z => AIResearchFramework.AICalcTechCost(ai, z.Tech))));
 }
コード例 #6
0
 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)));
 }