public AIResearchFramework() { this._replacements = new AIResearchFramework.AITechReplacementRow[0]; XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml("<stylegroups><!-- Race value format = Human/Hiver/Tark/Liir/Zuul/Morrigi (% chance) --><!-- style, group, priority, % chance --><!--{ {EnergyWeapons}, 1, 0.50, 40,10,30,90,20,70 },--><!--{ {BallisticWeapons}, 1, 0.50, 40,80,60,10,70,20 },--><group><style costmul='0.5'><families><family value='EnergyWeapons'/></families><chances><chance faction='human' value='50'/><chance faction='hiver' value='10'/><chance faction='tarkas' value='30'/><chance faction='liir_zuul' value='90'/><chance faction='zuul' value='50'/><chance faction='morrigi' value='90'/><chance faction='loa' value='90'/></chances></style><style costmul='0.5'><families><family value='BallisticWeapons'/></families><chances><chance faction='human' value='50'/><chance faction='hiver' value='90'/><chance faction='tarkas' value='90'/><chance faction='liir_zuul' value='10'/><chance faction='zuul' value='50'/><chance faction='morrigi' value='10'/><chance faction='loa' value='10'/></chances></style></group><!--{ {ShieldTechnology}, 2, 0.50, 40,10,30,70,10,60 },--><!--{ {IndustrialTechnology}, 2, 0.50, 40,90,70,20,80,20 },--><group><style costmul='0.5'><families><family value='ShieldTechnology'/></families><chances><chance faction='human' value='80'/><chance faction='hiver' value='10'/><chance faction='tarkas' value='50'/><chance faction='liir_zuul' value='40'/><chance faction='zuul' value='20'/><chance faction='morrigi' value='50'/><chance faction='loa' value='40'/></chances></style><style costmul='0.5'><families><family value='IndustrialTechnology'/></families><chances><chance faction='human' value='50'/><chance faction='hiver' value='50'/><chance faction='tarkas' value='50'/><chance faction='liir_zuul' value='50'/><chance faction='zuul' value='50'/><chance faction='morrigi' value='50'/><chance faction='loa' value='50'/></chances></style></group><!--{ {Torpedos,EnergyWeapons}, 3, 0.50, 60,55,70,30,50,70 },--><!--{ {BioTechnology}, 3, 0.50, 20,15,20,60, 0,20 },--><group><style costmul='0.5'><families><family value='Torpedos'/><family value='EnergyWeapons'/></families><chances><chance faction='human' value='70'/><chance faction='hiver' value='10'/><chance faction='tarkas' value='20'/><chance faction='liir_zuul' value='50'/><chance faction='zuul' value='50'/><chance faction='morrigi' value='50'/><chance faction='loa' value='40'/></chances></style><style costmul='0.5'><families><family value='BioTechnology'/></families><chances><chance faction='human' value='30'/><chance faction='hiver' value='30'/><chance faction='tarkas' value='30'/><chance faction='liir_zuul' value='30'/><chance faction='zuul' value='30'/><chance faction='morrigi' value='30'/><chance faction='loa' value='30'/></chances></style></group><!--{ {RiderTechnology,Psionics}, 4, 0.50, 40,35,30,90,50,70 },--><!--{ {WarheadTechnology}, 4, 0.50, 40,45,50,10,40,20 },--><group><style costmul='0.5'><families><family value='RiderTechnology'/><family value='Psionics'/></families><chances><chance faction='human' value='10'/><chance faction='hiver' value='10'/><chance faction='tarkas' value='10'/><chance faction='liir_zuul' value='30'/><chance faction='zuul' value='10'/><chance faction='morrigi' value='10'/><chance faction='loa' value='10'/></chances></style><style costmul='0.5'><families><family value='WarheadTechnology'/></families><chances><chance faction='human' value='10'/><chance faction='hiver' value='50'/><chance faction='tarkas' value='40'/><chance faction='liir_zuul' value='10'/><chance faction='zuul' value='20'/><chance faction='morrigi' value='10'/><chance faction='loa' value='10'/></chances></style></group></stylegroups>"); this._styleGroups = new List <AIResearchFramework.AITechStyleGroup>(xmlDocument["stylegroups"].OfType <XmlElement>().Where <XmlElement>((Func <XmlElement, bool>)(x => x.Name == "group")).Select <XmlElement, AIResearchFramework.AITechStyleGroup>((Func <XmlElement, AIResearchFramework.AITechStyleGroup>)(y => AIResearchFramework.AITechStyleGroup.Parse(y)))); this._rhythms = new Dictionary <AIStance, AIResearchFramework.AIResearchRhythm>(); Dictionary <AIStance, AIResearchFramework.AIResearchRhythm> rhythms1 = this._rhythms; AIStance aiStance1 = AIStance.ARMING; AIResearchFramework.AIResearchRhythm aiResearchRhythm1 = new AIResearchFramework.AIResearchRhythm(); aiResearchRhythm1.Beats = new AIResearchModes[8] { AIResearchModes.Weapon, AIResearchModes.Engine, AIResearchModes.Weapon, AIResearchModes.Expansion, AIResearchModes.Empire, AIResearchModes.Weapon, AIResearchModes.Engine, AIResearchModes.Empire }; int num1 = (int)aiStance1; AIResearchFramework.AIResearchRhythm aiResearchRhythm2 = aiResearchRhythm1; rhythms1[(AIStance)num1] = aiResearchRhythm2; this._rhythms[AIStance.CONQUERING] = new AIResearchFramework.AIResearchRhythm() { Beats = new AIResearchModes[7] { AIResearchModes.Weapon, AIResearchModes.Engine, AIResearchModes.Weapon, AIResearchModes.Weapon, AIResearchModes.Empire, AIResearchModes.Weapon, AIResearchModes.Engine } }; this._rhythms[AIStance.DEFENDING] = new AIResearchFramework.AIResearchRhythm() { Beats = new AIResearchModes[7] { AIResearchModes.Weapon, AIResearchModes.Empire, AIResearchModes.Weapon, AIResearchModes.Weapon, AIResearchModes.Empire, AIResearchModes.Weapon, AIResearchModes.Engine } }; this._rhythms[AIStance.DESTROYING] = new AIResearchFramework.AIResearchRhythm() { Beats = new AIResearchModes[7] { AIResearchModes.Weapon, AIResearchModes.Engine, AIResearchModes.Weapon, AIResearchModes.Weapon, AIResearchModes.Empire, AIResearchModes.Weapon, AIResearchModes.Engine } }; this._rhythms[AIStance.EXPANDING] = new AIResearchFramework.AIResearchRhythm() { Beats = new AIResearchModes[9] { AIResearchModes.Expansion, AIResearchModes.Weapon, AIResearchModes.Empire, AIResearchModes.Weapon, AIResearchModes.Expansion, AIResearchModes.Engine, AIResearchModes.Weapon, AIResearchModes.Empire, AIResearchModes.Expansion } }; Dictionary <AIStance, AIResearchFramework.AIResearchRhythm> rhythms2 = this._rhythms; AIStance aiStance2 = AIStance.HUNKERING; AIResearchFramework.AIResearchRhythm aiResearchRhythm3 = new AIResearchFramework.AIResearchRhythm(); aiResearchRhythm3.Beats = new AIResearchModes[8] { AIResearchModes.Empire, AIResearchModes.Weapon, AIResearchModes.Empire, AIResearchModes.Weapon, AIResearchModes.Expansion, AIResearchModes.Weapon, AIResearchModes.Engine, AIResearchModes.Empire }; int num2 = (int)aiStance2; AIResearchFramework.AIResearchRhythm aiResearchRhythm4 = aiResearchRhythm3; rhythms2[(AIStance)num2] = aiResearchRhythm4; }
private static AIResearchModes AIGetResearchMode( AIResearchFramework.AIResearchRhythm rhythm, int age) { return(rhythm.Beats[age % rhythm.Beats.Length]); }