Пример #1
0
        private List <AITechStyleInfo> AISelectTechStylesCore(
            int playerId,
            Random random,
            string factionName)
        {
            this.PrepareLog();
            List <AITechStyleInfo> aiTechStyleInfoList = new List <AITechStyleInfo>();

            foreach (AIResearchFramework.AITechStyleGroup styleGroup in this._styleGroups)
            {
                float num1 = 0.0f;
                List <Weighted <AIResearchFramework.AITechStyleRow> > weightedList = new List <Weighted <AIResearchFramework.AITechStyleRow> >();
                foreach (AIResearchFramework.AITechStyleRow style in styleGroup.Styles)
                {
                    float num2 = style.SelectionChances.Faction(factionName);
                    num1 += num2;
                    weightedList.Add(new Weighted <AIResearchFramework.AITechStyleRow>(style, (int)((double)num2 * 1000.0)));
                }
                float num3 = 100f - num1;
                if ((double)num3 >= 1.0 / 1000.0)
                {
                    weightedList.Add(new Weighted <AIResearchFramework.AITechStyleRow>((AIResearchFramework.AITechStyleRow)null, (int)((double)num3 * 1000.0)));
                }
                AIResearchFramework.AITechStyleRow aiTechStyleRow = WeightedChoices.Choose <AIResearchFramework.AITechStyleRow>(random, (IEnumerable <Weighted <AIResearchFramework.AITechStyleRow> >)weightedList);
                if (aiTechStyleRow != null)
                {
                    aiTechStyleInfoList.AddRange(aiTechStyleRow.ToTechStyleInfos(playerId, factionName));
                }
            }
            return(aiTechStyleInfoList);
        }
Пример #2
0
 public static void Write(AIResearchFramework.AITechStyleRow value, BinaryWriter w)
 {
     w.Write(value.Families.Length);
     foreach (TechFamilies family in value.Families)
     {
         w.Write(family.ToString());
     }
     w.Write(value.CostFactor);
     AIResearchFramework.AITechStyleRow.WriteChances(value.SelectionChances, w);
 }