private void SetPriorities(int n) { if (n < 0 || n >= map.mapPawns.FreeColonistsSpawnedCount) { Logger.Message(string.Format("could not find pawn {0}: only {1} free colonists spawned on this map", n, map.mapPawns.FreeColonistsSpawnedCount)); return; } Pawn pawn = map.mapPawns.FreeColonistsSpawned[n]; string pawnKey = pawn.GetUniqueLoadID(); try { if (pawnFree == null) { pawnFree = new Dictionary <string, bool>(); } if (!pawnFree.ContainsKey(pawnKey)) { pawnFree[pawnKey] = true; } Logger.Debug("setting priorities for " + pawn.Name); Dictionary <WorkTypeDef, Priority> pawnPriorities = new Dictionary <WorkTypeDef, Priority>(); YouDoYou_Settings settings = YouDoYou_WorldComponent.Settings; if (settings == null) { Logger.Message("could not find You Do You settings"); return; } foreach (WorkTypeDef workTypeDef in DefDatabase <WorkTypeDef> .AllDefsListForReading) { bool isFree = pawnFree[pawnKey]; pawnPriorities[workTypeDef] = new Priority(pawn, workTypeDef, settings, isFree); if (isFree) { try { pawnPriorities[workTypeDef].ApplyPriorityToGame(); } catch { Logger.Message(string.Format("could not set priority: {0}: {1}", pawn.Name, workTypeDef.defName)); // marking them as not free pawnFree[pawnKey] = false; } } } if (priorities == null) { priorities = new Dictionary <Pawn, Dictionary <WorkTypeDef, Priority> >(); } // cache the priorities until the next update priorities[pawn] = pawnPriorities; } catch { Logger.Message("could not set priorities for pawn: " + pawn.Name); // marking them as not free pawnFree[pawnKey] = false; } }
public Priority(Pawn pawn, WorkTypeDef workTypeDef, YouDoYou_Settings settings, bool freePawn) { this.pawn = pawn; this.workTypeDef = workTypeDef; this.adjustmentStrings = new List <string> { }; this.mapComp = pawn.Map.GetComponent <YouDoYou_MapComponent>(); this.worldComp = Find.World.GetComponent <YouDoYou_WorldComponent>(); if (freePawn) { this.set(0.2f, "YouDoYouPriorityGlobalDefault".Translate()).compute(); } else { int p = pawn.workSettings.GetPriority(workTypeDef); if (p == 0) { this.set(0.0f, "YouDoYouPriorityNoFreeWill".Translate()); } else { this.set((100f - onePriorityWidth * (p - 1)) / 100f, "YouDoYouPriorityNoFreeWill".Translate()); } } }
public override void DoSettingsWindowContents(Rect inRect) { YouDoYou_Settings.DoSettingsWindowContents(inRect); base.DoSettingsWindowContents(inRect); }
private void PrepForSettingPriorities() { settings = LoadedModManager.GetMod <YouDoYou_Mod>().GetSettings <YouDoYou_Settings>(); }