示例#1
0
        private bool AIHaveReplacementForTech(StrategicAI ai, Tech tech)
        {
            bool flag = false;

            foreach (AIResearchFramework.AITechReplacementRow replacement in this._replacements)
            {
                if (tech == replacement.Old)
                {
                    PlayerTechInfo playerTechInfo = AIResearchFramework.AIGetPlayerTechInfo(ai, replacement.New);
                    if (playerTechInfo != null)
                    {
                        switch (replacement.Contexts)
                        {
                        case AIResearchFramework.AITechReplacementContexts.Available:
                            flag = AIResearchFramework.AIIsTechAvailable(playerTechInfo.State) || AIResearchFramework.AIHaveTech(playerTechInfo.State);
                            break;

                        case AIResearchFramework.AITechReplacementContexts.Researched:
                            flag = AIResearchFramework.AIHaveTech(playerTechInfo.State);
                            break;
                        }
                        if (flag)
                        {
                            break;
                        }
                    }
                }
            }
            return(flag);
        }
示例#2
0
 private IEnumerable <Tech> AIGetAvailableTechs(StrategicAI ai)
 {
     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)))));
 }
示例#3
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>());
 }