Exemple #1
0
        public static string GetBackstoryUniqueKey(WorkTags workDisables)
        {
            //string log = "UNIQUE KEY";

            string baseBackstoryDefName = BackstoryDefNameIdentifier + BackstoryDefNameIdentifierDisabled;
            string ukey = baseBackstoryDefName + workDisables.ToString().Replace(", ", "_");

            //log = log + Environment.NewLine + ukey;

            //Log.Error(log);
            return(ukey);
        }
Exemple #2
0
        public static void PawnWorkDisablesSampled()
        {
            IOrderedEnumerable <PawnKindDef> orderedEnumerable = from k in DefDatabase <PawnKindDef> .AllDefs
                                                                 where k.RaceProps.Humanlike
                                                                 orderby k.combatPower
                                                                 select k;
            List <FloatMenuOption> list = new List <FloatMenuOption>();

            foreach (PawnKindDef item2 in orderedEnumerable)
            {
                PawnKindDef     kind = item2;
                Faction         fac  = FactionUtility.DefaultFactionFrom(kind.defaultFactionType);
                FloatMenuOption item = new FloatMenuOption(kind.defName + " (" + kind.combatPower + ")", delegate
                {
                    Dictionary <WorkTags, int> dictionary = new Dictionary <WorkTags, int>();
                    for (int i = 0; i < 1000; i++)
                    {
                        Pawn pawn = PawnGenerator.GeneratePawn(kind, fac);
                        WorkTags combinedDisabledWorkTags = pawn.story.CombinedDisabledWorkTags;
                        IEnumerator enumerator2           = Enum.GetValues(typeof(WorkTags)).GetEnumerator();
                        try
                        {
                            while (enumerator2.MoveNext())
                            {
                                WorkTags workTags = (WorkTags)enumerator2.Current;
                                if (!dictionary.ContainsKey(workTags))
                                {
                                    dictionary.Add(workTags, 0);
                                }
                                if ((combinedDisabledWorkTags & workTags) != 0)
                                {
                                    Dictionary <WorkTags, int> dictionary2;
                                    WorkTags key;
                                    (dictionary2 = dictionary)[key = workTags] = dictionary2[key] + 1;
                                }
                            }
                        }
                        finally
                        {
                            IDisposable disposable;
                            if ((disposable = (enumerator2 as IDisposable)) != null)
                            {
                                disposable.Dispose();
                            }
                        }
                        pawn.Destroy();
                    }
                    StringBuilder stringBuilder = new StringBuilder();
                    stringBuilder.AppendLine("Sampled " + 1000 + "x " + kind.defName + ":");
                    stringBuilder.AppendLine("Worktags disabled");
                    IEnumerator enumerator3 = Enum.GetValues(typeof(WorkTags)).GetEnumerator();
                    try
                    {
                        while (enumerator3.MoveNext())
                        {
                            WorkTags key2 = (WorkTags)enumerator3.Current;
                            int num       = dictionary[key2];
                            stringBuilder.AppendLine("  " + key2.ToString() + "    " + num + " (" + ((float)num / 1000f).ToStringPercent() + ")");
                        }
                    }
                    finally
                    {
                        IDisposable disposable2;
                        if ((disposable2 = (enumerator3 as IDisposable)) != null)
                        {
                            disposable2.Dispose();
                        }
                    }
                    Log.Message(stringBuilder.ToString().TrimEndNewlines());
                });
                list.Add(item);
            }
            Find.WindowStack.Add(new FloatMenu(list));
        }