Exemplo n.º 1
0
        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;
            }
        }
Exemplo n.º 2
0
 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>();
 }