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); }
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; }
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); } } } } } }
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); }