示例#1
0
 private IEnumerable <AIResearchFramework.TechBeat> AIGetTechBeats(
     IEnumerable <Tech> techs,
     List <AIResearchModes> rhythm,
     List <PlayerTechInfo> desiredTech = null)
 {
     foreach (Tech tech1 in techs)
     {
         Tech tech = tech1;
         for (int beat = 0; beat < rhythm.Count; ++beat)
         {
             if (AIResearchFramework.AIContainsTech(new AIResearchModes?(rhythm[beat]), new TechFamilies?(), tech))
             {
                 if (desiredTech != null)
                 {
                     desiredTech.Any <PlayerTechInfo>((Func <PlayerTechInfo, bool>)(x => x.TechFileID == tech.Id));
                 }
                 yield return(new AIResearchFramework.TechBeat()
                 {
                     Tech = tech,
                     Beat = beat
                 });
             }
         }
     }
 }
示例#2
0
 private static List <Tech> AISelectAvailableTechs(
     StrategicAI ai,
     AIResearchModes?mode,
     TechFamilies?family)
 {
     return(ai.Game.GameDatabase.GetPlayerTechInfos(ai.Player.ID).Where <PlayerTechInfo>((Func <PlayerTechInfo, bool>)(x => AIResearchFramework.AIIsTechAvailable(x.State))).Select <PlayerTechInfo, Tech>((Func <PlayerTechInfo, Tech>)(y => ai.Game.AssetDatabase.MasterTechTree.Technologies.First <Tech>((Func <Tech, bool>)(z => y.TechFileID == z.Id)))).Where <Tech>((Func <Tech, bool>)(x => AIResearchFramework.AIContainsTech(mode, family, x))).ToList <Tech>());
 }