public static IEnumerable <WorkTypeDef> RequiredWorkTypesDisabledForEveryone()
        {
            List <WorkTypeDef> workTypes = DefDatabase <WorkTypeDef> .AllDefsListForReading;

            for (int i = 0; i < workTypes.Count; i++)
            {
                WorkTypeDef workTypeDef = workTypes[i];
                if (!workTypeDef.requireCapableColonist)
                {
                    continue;
                }
                bool        flag = false;
                List <Pawn> startingAndOptionalPawns = StartingAndOptionalPawns;
                for (int j = 0; j < Find.GameInitData.startingPawnCount; j++)
                {
                    if (!startingAndOptionalPawns[j].WorkTypeIsDisabled(workTypeDef))
                    {
                        flag = true;
                        break;
                    }
                }
                if (!flag)
                {
                    yield return(workTypeDef);
                }
            }
        }
        public static bool WorkTypeRequirementsSatisfied()
        {
            if (StartingAndOptionalPawns.Count == 0)
            {
                return(false);
            }
            List <WorkTypeDef> allDefsListForReading = DefDatabase <WorkTypeDef> .AllDefsListForReading;

            for (int i = 0; i < allDefsListForReading.Count; i++)
            {
                WorkTypeDef workTypeDef = allDefsListForReading[i];
                if (!workTypeDef.requireCapableColonist)
                {
                    continue;
                }
                bool flag = false;
                for (int j = 0; j < Find.GameInitData.startingPawnCount; j++)
                {
                    if (!StartingAndOptionalPawns[j].WorkTypeIsDisabled(workTypeDef))
                    {
                        flag = true;
                        break;
                    }
                }
                if (!flag)
                {
                    return(false);
                }
            }
            if (TutorSystem.TutorialMode && StartingAndOptionalPawns.Take(Find.GameInitData.startingPawnCount).Any((Pawn p) => p.WorkTagIsDisabled(WorkTags.Violent)))
            {
                return(false);
            }
            return(true);
        }
Esempio n. 3
0
        public static IEnumerable <WorkTypeDef> RequiredWorkTypesDisabledForEveryone()
        {
            List <WorkTypeDef> workTypes = DefDatabase <WorkTypeDef> .AllDefsListForReading;

            for (int i = 0; i < workTypes.Count; i++)
            {
                WorkTypeDef wt = workTypes[i];
                if (wt.requireCapableColonist)
                {
                    bool        oneCanDoWt    = false;
                    List <Pawn> startingPawns = StartingPawnUtility.StartingAndOptionalPawns;
                    for (int j = 0; j < Find.GameInitData.startingPawnCount; j++)
                    {
                        if (!startingPawns[j].story.WorkTypeIsDisabled(wt))
                        {
                            oneCanDoWt = true;
                            break;
                        }
                    }
                    if (!oneCanDoWt)
                    {
                        yield return(wt);
                    }
                }
            }
            yield break;
        }
Esempio n. 4
0
        public void PrepForMapGen()
        {
            while (this.startingAndOptionalPawns.Count > this.startingPawnCount)
            {
                PawnComponentsUtility.RemoveComponentsOnDespawned(this.startingAndOptionalPawns[this.startingPawnCount]);
                Find.WorldPawns.PassToWorld(this.startingAndOptionalPawns[this.startingPawnCount], PawnDiscardDecideMode.KeepForever);
                this.startingAndOptionalPawns.RemoveAt(this.startingPawnCount);
            }
            List <Pawn> list = this.startingAndOptionalPawns;

            foreach (Pawn pawn in list)
            {
                pawn.SetFactionDirect(Faction.OfPlayer);
                PawnComponentsUtility.AddAndRemoveDynamicComponents(pawn, false);
            }
            foreach (Pawn pawn2 in list)
            {
                pawn2.workSettings.DisableAll();
            }
            using (IEnumerator <WorkTypeDef> enumerator3 = DefDatabase <WorkTypeDef> .AllDefs.GetEnumerator())
            {
                while (enumerator3.MoveNext())
                {
                    WorkTypeDef w = enumerator3.Current;
                    if (w.alwaysStartActive)
                    {
                        foreach (Pawn pawn3 in from col in list
                                 where !col.story.WorkTypeIsDisabled(w)
                                 select col)
                        {
                            pawn3.workSettings.SetPriority(w, 3);
                        }
                    }
                    else
                    {
                        bool flag = false;
                        foreach (Pawn pawn4 in list)
                        {
                            if (!pawn4.story.WorkTypeIsDisabled(w) && pawn4.skills.AverageOfRelevantSkillsFor(w) >= 6f)
                            {
                                pawn4.workSettings.SetPriority(w, 3);
                                flag = true;
                            }
                        }
                        if (!flag)
                        {
                            IEnumerable <Pawn> source = from col in list
                                                        where !col.story.WorkTypeIsDisabled(w)
                                                        select col;
                            if (source.Any <Pawn>())
                            {
                                Pawn pawn5 = source.InRandomOrder(null).MaxBy((Pawn c) => c.skills.AverageOfRelevantSkillsFor(w));
                                pawn5.workSettings.SetPriority(w, 3);
                            }
                        }
                    }
                }
            }
        }
Esempio n. 5
0
        public static bool OverlapsWithOnAnyWorkType(this WorkTags a, WorkTags b)
        {
            List <WorkTypeDef> allDefsListForReading = DefDatabase <WorkTypeDef> .AllDefsListForReading;

            for (int i = 0; i < allDefsListForReading.Count; i++)
            {
                WorkTypeDef workTypeDef = allDefsListForReading[i];
                if ((workTypeDef.workTags & a) != 0 && (workTypeDef.workTags & b) != 0)
                {
                    return(true);
                }
            }
            return(false);
        }
        public static bool WorkTypeRequirementsSatisfied()
        {
            if (StartingPawnUtility.StartingPawns.Count == 0)
            {
                return(false);
            }
            List <WorkTypeDef> allDefsListForReading = DefDatabase <WorkTypeDef> .AllDefsListForReading;

            for (int i = 0; i < allDefsListForReading.Count; i++)
            {
                WorkTypeDef workTypeDef = allDefsListForReading[i];
                if (workTypeDef.requireCapableColonist)
                {
                    bool flag = false;
                    for (int j = 0; j < StartingPawnUtility.StartingPawns.Count; j++)
                    {
                        if (!StartingPawnUtility.StartingPawns[j].story.WorkTypeIsDisabled(workTypeDef))
                        {
                            flag = true;
                            break;
                        }
                    }
                    if (!flag)
                    {
                        return(false);
                    }
                }
            }
            if (TutorSystem.TutorialMode)
            {
                if (StartingPawnUtility.StartingPawns.Any((Pawn p) => p.story.WorkTagIsDisabled(WorkTags.Violent)))
                {
                    return(false);
                }
            }
            return(true);
        }
 public void Clear()
 {
     this.prioritizedCell     = IntVec3.Invalid;
     this.prioritizedWorkType = null;
     this.prioritizeTick      = 0;
 }
 public void Set(IntVec3 prioritizedCell, WorkTypeDef prioritizedWorkType)
 {
     this.prioritizedCell     = prioritizedCell;
     this.prioritizedWorkType = prioritizedWorkType;
     this.prioritizeTick      = Find.TickManager.TicksGame;
 }
 private static int <get_WorkTypeDefsInPriorityOrder> m__0(WorkTypeDef wt)
 {
     return(wt.naturalPriority);
 }