Example #1
0
 private static List <DebugMenuOption> GetList(Dialog_DebugOptionListLister __instance)
 {
     return(__instance.options.Where(x => __instance.FilterAllows(x.label)).ToList());
 }
 public static void PawnGroupsMade()
 {
     Dialog_DebugOptionListLister.ShowSimpleDebugMenu <Faction>(from fac in Find.FactionManager.AllFactions
                                                                where !fac.def.pawnGroupMakers.NullOrEmpty <PawnGroupMaker>()
                                                                select fac, (Faction fac) => fac.Name + " (" + fac.def.defName + ")", delegate(Faction fac)
     {
         StringBuilder sb = new StringBuilder();
         sb.AppendLine(string.Concat(new object[]
         {
             "FACTION: ",
             fac.Name,
             " (",
             fac.def.defName,
             ") min=",
             fac.def.MinPointsToGeneratePawnGroup(PawnGroupKindDefOf.Combat)
         }));
         Action <float> action = delegate(float points)
         {
             if (points < fac.def.MinPointsToGeneratePawnGroup(PawnGroupKindDefOf.Combat))
             {
                 return;
             }
             PawnGroupMakerParms pawnGroupMakerParms = new PawnGroupMakerParms();
             pawnGroupMakerParms.groupKind           = PawnGroupKindDefOf.Combat;
             pawnGroupMakerParms.tile    = Find.CurrentMap.Tile;
             pawnGroupMakerParms.points  = points;
             pawnGroupMakerParms.faction = fac;
             sb.AppendLine(string.Concat(new object[]
             {
                 "Group with ",
                 pawnGroupMakerParms.points,
                 " points (max option cost: ",
                 PawnGroupMakerUtility.MaxPawnCost(fac, points, RaidStrategyDefOf.ImmediateAttack, PawnGroupKindDefOf.Combat),
                 ")"
             }));
             float num2 = 0f;
             foreach (Pawn pawn in PawnGroupMakerUtility.GeneratePawns(pawnGroupMakerParms, false).OrderBy((Pawn pa) => pa.kindDef.combatPower))
             {
                 string text;
                 if (pawn.equipment.Primary != null)
                 {
                     text = pawn.equipment.Primary.Label;
                 }
                 else
                 {
                     text = "no-equipment";
                 }
                 Apparel apparel = pawn.apparel.FirstApparelOnBodyPartGroup(BodyPartGroupDefOf.Torso);
                 string text2;
                 if (apparel != null)
                 {
                     text2 = apparel.LabelCap;
                 }
                 else
                 {
                     text2 = "shirtless";
                 }
                 sb.AppendLine(string.Concat(new string[]
                 {
                     "  ",
                     pawn.kindDef.combatPower.ToString("F0").PadRight(6),
                     pawn.kindDef.defName,
                     ", ",
                     text,
                     ", ",
                     text2
                 }));
                 num2 += pawn.kindDef.combatPower;
             }
             sb.AppendLine("         totalCost " + num2);
             sb.AppendLine();
         };
         foreach (float num in Dialog_DebugActionsMenu.PointsOptions(false))
         {
             float obj = num;
             action(obj);
         }
         Log.Message(sb.ToString(), false);
     });
 }
        public static void FlareRaidPawnGroupsMadeToXml()
        {
            Dialog_DebugOptionListLister.ShowSimpleDebugMenu(
                elements: new List <int>
            {
                11,
                12,
                13,
                14,
                21,
                22,
                23,
                24,
                31,
                32,
                33,
                34,
                41,
                42,
                43,
                44
            },
                label : i => $"Points x{i / 10} | MaxPawn x{i % 10}",
                chosen : delegate(int multi)
            {
                var trialData = new pawnGenTrial();
                SolarRaidGroupMaker.PointMultiplier       = multi / 10;
                SolarRaidGroupMaker.MaxPawnCostMultiplier = multi % 10;

                trialData.pointMultiplier       = SolarRaidGroupMaker.PointMultiplier;
                trialData.maxPawnCostMultiplier = SolarRaidGroupMaker.MaxPawnCostMultiplier;
                trialData.trialID = $"{multi}PawnGenTrial{Rand.Int}";

                var factions = Find.FactionManager.AllFactions.Where(
                    fac => !fac.def.pawnGroupMakers.NullOrEmpty() && fac.def.humanlikeFaction && fac.def.techLevel >= TechLevel.Industrial
                    ).ToList();

                int numTrials   = factions.Count;
                trialData.trial = new pawnGenTrialTrial[numTrials];

                for (var ind = 0; ind < factions.Count; ind++)
                {
                    Faction fac             = factions[ind];
                    pawnGenTrialTrial trial = new pawnGenTrialTrial
                    {
                        factionName = fac.def.LabelCap,
                        minPointsToGenCombatGroup =
                            fac.def.MinPointsToGeneratePawnGroup(groupKind: PawnGroupKindDefOf.Combat)
                    };


                    List <float> floats  = DebugActionsUtility.PointsOptions(extended: false).ToList();
                    trial.groupGenerated = new pawnGenTrialTrialGroupGenerated[floats.Count];

                    for (var index = 0; index < floats.Count; index++)
                    {
                        float num = floats[index];
                        float obj = num;
                        trial.groupGenerated[index] = groupGenerated(fac: fac, obj);
                    }

                    trialData.trial[ind] = trial;
                }

                XmlSerializer mySerializer = new
                                             XmlSerializer(typeof(pawnGenTrial));

                using (var writer = new StreamWriter("pawnGenData" + Rand.Int + ".xml"))
                {
                    mySerializer.Serialize(writer, trialData);
                }
            }
                );
        }