diff --git a/About/About.xml b/About/About.xml
index 97f293b..3a94071 100644
--- a/About/About.xml
+++ b/About/About.xml
@@ -3,7 +3,7 @@
Numbers
koisama
https://ludeon.com/forums/index.php?topic=16558.0
- 0.16.1393
+ 0.17.1532
Adds a customizable general overview tab, allowing you to see any stats on all your colonists or prisoners in a single window.
diff --git a/Defs/MainTabDefs/kNumbers.xml b/Defs/MainTabDefs/kNumbers.xml
index fc0d168..b793b59 100644
--- a/Defs/MainTabDefs/kNumbers.xml
+++ b/Defs/MainTabDefs/kNumbers.xml
@@ -1,12 +1,12 @@
-
+
-
+
kNumbersOverviewTab
See every possible stat on every colonist or prisoner in a single table.
- kNumbers.MainTabWindow_Numbers
+ kNumbers.MainTabWindow_Numbers
20
-
+
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/Source/kNumbers/KListObject.cs b/Source/kNumbers/KListObject.cs
index c936ca9..4cae665 100644
--- a/Source/kNumbers/KListObject.cs
+++ b/Source/kNumbers/KListObject.cs
@@ -63,33 +63,33 @@ public enum objectType
public void ExposeData()
{
- Scribe_Values.LookValue(ref oType, "oType");
- Scribe_Values.LookValue(ref minWidthDesired, "minWidthDesired");
- Scribe_Values.LookValue(ref this.label, "label");
+ Scribe_Values.Look(ref oType, "oType");
+ Scribe_Values.Look(ref minWidthDesired, "minWidthDesired");
+ Scribe_Values.Look(ref this.label, "label");
switch (oType)
{
case objectType.Stat:
StatDef tempObjectS = (StatDef)displayObject;
- Scribe_Defs.LookDef(ref tempObjectS, "displayObject");
+ Scribe_Defs.Look(ref tempObjectS, "displayObject");
displayObject = tempObjectS;
break;
case objectType.Skill:
SkillDef tempObjectK = (SkillDef)displayObject;
- Scribe_Defs.LookDef(ref tempObjectK, "displayObject");
+ Scribe_Defs.Look(ref tempObjectK, "displayObject");
displayObject = tempObjectK;
break;
case objectType.Need:
NeedDef tempObjectN = (NeedDef)displayObject;
- Scribe_Defs.LookDef(ref tempObjectN, "displayObject");
+ Scribe_Defs.Look(ref tempObjectN, "displayObject");
displayObject = tempObjectN;
break;
case objectType.Capacity:
PawnCapacityDef tempObjectCap = (PawnCapacityDef)displayObject;
- Scribe_Defs.LookDef(ref tempObjectCap, "displayObject");
+ Scribe_Defs.Look(ref tempObjectCap, "displayObject");
displayObject = tempObjectCap;
break;
@@ -249,7 +249,7 @@ private void DrawGear(Rect rect, ThingWithComps ownerPawn)
Pawn p1 = (ownerPawn is Pawn) ? (ownerPawn as Pawn) : (ownerPawn as Corpse).InnerPawn;
if (p1.RaceProps.Animal) return;
if (p1.equipment != null)
- foreach(ThingWithComps thing in p1.equipment.AllEquipment)
+ foreach(ThingWithComps thing in p1.equipment.AllEquipmentListForReading)
{
Rect rect2 = new Rect(x, 0, gWidth, gHeight);
DrawThing(rect2, thing, p1);
@@ -290,26 +290,26 @@ private void DrawThing(Rect rect, Thing thing, Pawn selPawn)
Apparel ap = thing as Apparel;
if (ap != null)
{
- Apparel unused;
action = delegate
- {
- selPawn.apparel.TryDrop(ap, out unused, selPawn.Position, true);
+ {
+ Apparel unused;
+ selPawn.apparel.TryDrop(ap, out unused, selPawn.Position, true);
};
}
- else if (eq != null && selPawn.equipment.AllEquipment.Contains(eq))
+ else if (eq != null && selPawn.equipment.AllEquipmentListForReading.Contains(eq))
{
- ThingWithComps unused;
action = delegate
- {
- selPawn.equipment.TryDropEquipment(eq, out unused, selPawn.Position, true);
+ {
+ ThingWithComps unused;
+ selPawn.equipment.TryDropEquipment(eq, out unused, selPawn.Position, true);
};
}
else if (!thing.def.destroyOnDrop)
{
- Thing unused;
action = delegate
- {
- selPawn.inventory.innerContainer.TryDrop(thing, selPawn.Position, selPawn.Map, ThingPlaceMode.Near, out unused);
+ {
+ Thing unused;
+ selPawn.inventory.innerContainer.TryDrop(thing, selPawn.Position, selPawn.Map, ThingPlaceMode.Near, out unused);
};
}
list.Add(new FloatMenuOption("DropThing".Translate(), action, MenuOptionPriority.Default, null, null));
@@ -427,7 +427,7 @@ public void Draw(Rect rect, ThingWithComps ownerPawn)
// I stole this one line from Fluffy's Medical Tab. THANKS FLUFFY!
- string capValue = (p.health.capacities.GetEfficiency(cap) * 100f).ToString("F0") + "%";
+ string capValue = (p.health.capacities.GetLevel(cap) * 100f).ToString("F0") + "%";
GUI.color = effLabel.Second;
Widgets.Label(rect, capValue);
GUI.color = Color.white;
@@ -488,39 +488,22 @@ public void Draw(Rect rect, ThingWithComps ownerPawn)
case objectType.ControlPrisonerInteraction:
if (ownerPawn is Pawn)
- {
- if (Mouse.IsOver(rect))
- {
- GUI.DrawTexture(rect, TexUI.HighlightTex);
- }
- float x = 8f;
+ {
+ if (Mouse.IsOver(rect)) { GUI.DrawTexture(rect, TexUI.HighlightTex); }
+ float x = 8f;
- GUI.BeginGroup(rect);
- IEnumerator enumerator = Enum.GetValues(typeof(PrisonerInteractionMode)).GetEnumerator();
- try
- {
- while (enumerator.MoveNext())
- {
- PrisonerInteractionMode prisonerInteractionMode = (PrisonerInteractionMode)((byte)enumerator.Current);
- if (Widgets.RadioButton(new Vector2(x, 3f), (ownerPawn as Pawn).guest.interactionMode == prisonerInteractionMode))
- {
- (ownerPawn as Pawn).guest.interactionMode = prisonerInteractionMode;
- }
- TooltipHandler.TipRegion(new Rect(x, 0f, 30f, 30f), new TipSignal(prisonerInteractionMode.GetLabel()));
- x += 30f;
- }
- }
- finally
- {
- IDisposable disposable = enumerator as IDisposable;
- if (disposable != null)
- {
- disposable.Dispose();
- }
- }
- GUI.EndGroup();
- }
- break;
+ GUI.BeginGroup(rect);
+
+ foreach (var prisonerInteractionMode in DefDatabase.AllDefs)
+ {
+ if (Widgets.RadioButton(new Vector2(x, 3f), (ownerPawn as Pawn).guest.interactionMode == prisonerInteractionMode)) { (ownerPawn as Pawn).guest.interactionMode = prisonerInteractionMode; }
+ TooltipHandler.TipRegion(new Rect(x, 0f, 30f, 30f), new TipSignal(prisonerInteractionMode.GetLabel()));
+ x += 30f;
+ }
+
+ GUI.EndGroup();
+ }
+ break;
case objectType.ControlMedicalCare:
if (ownerPawn is Pawn) MedicalCareSetter(rect, ref (ownerPawn as Pawn).playerSettings.medCare);
@@ -530,9 +513,9 @@ public void Draw(Rect rect, ThingWithComps ownerPawn)
Text.Anchor = TextAnchor.MiddleCenter;
if (ownerPawn is Pawn && ((Pawn)ownerPawn).ageTracker.CurLifeStage.milkable)
{
- var comp = ((Pawn)ownerPawn).AllComps.Where(x => x is CompMilkable).FirstOrDefault();
+ var comp = ownerPawn.AllComps.OfType().FirstOrDefault();
if(comp != null)
- value = ((CompMilkable)comp).Fullness.ToStringPercent();
+ value = comp.Fullness.ToStringPercent();
}
Widgets.Label(rect, value);
@@ -542,9 +525,9 @@ public void Draw(Rect rect, ThingWithComps ownerPawn)
Text.Anchor = TextAnchor.MiddleCenter;
if (ownerPawn is Pawn && ((Pawn)ownerPawn).ageTracker.CurLifeStage.shearable)
{
- var comp = ((Pawn)ownerPawn).AllComps.Where(x => x is CompShearable).FirstOrDefault();
+ var comp = ownerPawn.AllComps.OfType().FirstOrDefault();
if (comp != null)
- value = ((CompShearable)comp).Fullness.ToStringPercent();
+ value = comp.Fullness.ToStringPercent();
}
Widgets.Label(rect, value);
diff --git a/Source/kNumbers/MainTabWindow_Numbers.cs b/Source/kNumbers/MainTabWindow_Numbers.cs
index 009e562..20d6a14 100644
--- a/Source/kNumbers/MainTabWindow_Numbers.cs
+++ b/Source/kNumbers/MainTabWindow_Numbers.cs
@@ -159,7 +159,7 @@ private void PreDrawPawnRow(Rect rect, ThingWithComps p)
{
Find.MainTabsRoot.EscapeCurrentTab(true);
Find.Selector.ClearSelection();
- Find.CameraDriver.JumpTo(p.PositionHeld);
+ Find.CameraDriver.JumpToVisibleMapLoc(p.PositionHeld);
}
//finally select if pawn is present
@@ -227,9 +227,7 @@ public enum orderBy
List pNeedDef;
List kList = new List();
-
- public static Dictionary> savedKLists = new Dictionary>(5);
- public static pawnType chosenPawnType = pawnType.Colonists;
+
orderBy chosenOrderBy = orderBy.Name;
KListObject sortObject;
@@ -243,11 +241,7 @@ public override Vector2 RequestedTabSize
return new Vector2(maxWidth, 90f + (float)base.ThingsCount * PawnRowHeight + 65f + 16f);
}
}
-
-
-
-
-
+
public MainTabWindow_Numbers()
{
Pawn tmpPawn;
@@ -262,15 +256,6 @@ public MainTabWindow_Numbers()
tmpPawn = PawnGenerator.GeneratePawn(PawnKindDefOf.Thrumbo, null);
pawnAnimalStatDef = (from s in ((IEnumerable)statsToDraw.Invoke(null, new[] { tmpPawn })) where s.ShouldDisplay && s.stat != null select s.stat).ToList();
pawnAnimalNeedDef = tmpPawn.needs.AllNeeds.Where(x => x.def.showOnNeedList).Select(x => x.def).ToList();
-
- savedKLists = new Dictionary>(5);
- foreach (MainTabWindow_Numbers.pawnType pType in Enum.GetValues(typeof(MainTabWindow_Numbers.pawnType)))
- {
- savedKLists.Add(pType, new List());
- }
-
- MapComponent_Numbers.InitMapComponent();
-
}
String numbersXMLPath
@@ -294,18 +279,18 @@ public void readPresets()
public override void PreOpen()
{
- base.PreOpen();
- isDirty = true;
- if (MapComponent_Numbers.hasData)
- {
- savedKLists = MapComponent_Numbers.savedKLists;
- chosenPawnType = MapComponent_Numbers.chosenPawnType;
- kList = savedKLists[chosenPawnType];
- MapComponent_Numbers.hasData = false;
- }
- }
-
- bool fits(float desiredSize)
+ var component = Find.World.GetComponent();
+ component.savedKLists.TryGetValue(component.chosenPawnType, out kList);
+ if (kList == null)
+ {
+ kList = new List();
+ component.savedKLists[component.chosenPawnType] = kList;
+ }
+ base.PreOpen();
+ isDirty = true;
+ }
+
+ bool fits(float desiredSize)
{
return (kListDesiredWidth + desiredSize + 70 < maxWindowWidth);
}
@@ -337,57 +322,57 @@ bool isGuest(Pawn p)
void UpdatePawnList()
{
- savedKLists[chosenPawnType] = kList;
-
+ var component = Find.World.GetComponent();
+
this.things.Clear();
IEnumerable tempPawns = new List();
- switch (chosenPawnType)
+ switch (component.chosenPawnType)
{
default:
case pawnType.Colonists:
- tempPawns = Find.VisibleMap.mapPawns.FreeColonists.Select(p=>p as ThingWithComps).ToList();
+ tempPawns = Find.VisibleMap.mapPawns.FreeColonists.Cast().ToList();
pStatDef = pawnHumanlikeStatDef;
pNeedDef = pawnHumanlikeNeedDef;
break;
case pawnType.Prisoners:
- tempPawns = Find.VisibleMap.mapPawns.PrisonersOfColony.Select(p => p as ThingWithComps).ToList();
+ tempPawns = Find.VisibleMap.mapPawns.PrisonersOfColony.Cast().ToList();
pStatDef = pawnHumanlikeStatDef;
pNeedDef = pawnHumanlikeNeedDef;
break;
case pawnType.Guests:
- tempPawns = Find.VisibleMap.mapPawns.AllPawns.Where(p => isGuest(p)).Select(p => p as ThingWithComps).ToList();
+ tempPawns = Find.VisibleMap.mapPawns.AllPawns.Where(isGuest).Cast().ToList();
pStatDef = pawnHumanlikeStatDef;
pNeedDef = pawnHumanlikeNeedDef;
break;
case pawnType.Enemies:
- // tempPawns = Find.MapPawns.PawnsHostileToColony.Select(p => p as ThingWithComps).ToList();
- tempPawns = (from p in Find.VisibleMap.mapPawns.AllPawns where isEnemy(p) select p).Select(p => p as ThingWithComps).ToList();
+ // tempPawns = Find.MapPawns.PawnsHostileToColony.Cast().ToList();
+ tempPawns = (from p in Find.VisibleMap.mapPawns.AllPawns where isEnemy(p) select p).Cast().ToList();
pStatDef = pawnHumanlikeStatDef;
pNeedDef = pawnHumanlikeNeedDef;
break;
case pawnType.Animals:
- tempPawns = (from p in Find.VisibleMap.mapPawns.PawnsInFaction(Faction.OfPlayer) where p.RaceProps.Animal select p).Select(p => p as ThingWithComps).ToList();
+ tempPawns = (from p in Find.VisibleMap.mapPawns.PawnsInFaction(Faction.OfPlayer) where p.RaceProps.Animal select p).Cast().ToList();
pStatDef = pawnAnimalStatDef;
pNeedDef = pawnAnimalNeedDef;
break;
case pawnType.WildAnimals:
- tempPawns = (from p in Find.VisibleMap.mapPawns.AllPawns where isWildAnimal(p) select p).Select(p => p as ThingWithComps).ToList();
+ tempPawns = (from p in Find.VisibleMap.mapPawns.AllPawns where isWildAnimal(p) select p).Cast().ToList();
pStatDef = pawnAnimalStatDef;
pNeedDef = pawnAnimalNeedDef;
break;
case pawnType.Corpses:
- tempPawns = Find.VisibleMap.listerThings.AllThings.Where(p => (p is Corpse) && (!(p as Corpse).InnerPawn.RaceProps.Animal)).Select(p => p as ThingWithComps).ToList();
+ tempPawns = Find.VisibleMap.listerThings.AllThings.Where(p => (p is Corpse) && (!(p as Corpse).InnerPawn.RaceProps.Animal)).Cast().ToList();
pStatDef = new List();
pNeedDef = new List();
break;
case pawnType.AnimalCorpses:
- tempPawns = Find.VisibleMap.listerThings.AllThings.Where(p => (p is Corpse) && (p as Corpse).InnerPawn.RaceProps.Animal && !p.Position.Fogged(Find.VisibleMap)).Select(p => p as ThingWithComps).ToList();
+ tempPawns = Find.VisibleMap.listerThings.AllThings.Where(p => (p is Corpse) && (p as Corpse).InnerPawn.RaceProps.Animal && !p.Position.Fogged(Find.VisibleMap)).Cast().ToList();
pStatDef = new List();
pNeedDef = new List();
break;
@@ -423,7 +408,7 @@ orderby p.GetStatValue((StatDef)sortObject.displayObject, true) ascending
this.things = (from p in tempPawns
where (p is Pawn) && ((p as Pawn).health != null)
- orderby ((p as Pawn).health.capacities.GetEfficiency((PawnCapacityDef)sortObject.displayObject)) ascending
+ orderby ((p as Pawn).health.capacities.GetLevel((PawnCapacityDef)sortObject.displayObject)) ascending
select p).ToList();
break;
@@ -437,7 +422,7 @@ orderby p.GetStatValue((StatDef)sortObject.displayObject, true) ascending
case KListObject.objectType.Gear:
this.things = tempPawns.Where(p=>(p is Pawn)||((p is Corpse)&&(!(p as Corpse).InnerPawn.RaceProps.Animal))).OrderBy(p => {
Pawn p1 = (p is Pawn)?(p as Pawn):(p as Corpse).InnerPawn;
- return (p1.equipment != null) ? ((p1.equipment.AllEquipment.Count() > 0) ? p1.equipment.AllEquipment.First().LabelCap : "") : "";
+ return (p1.equipment != null) ? ((p1.equipment.AllEquipmentListForReading.Any()) ? p1.equipment.AllEquipmentListForReading.First().LabelCap : "") : "";
}).ToList();
break;
@@ -471,9 +456,9 @@ orderby p.GetStatValue((StatDef)sortObject.displayObject, true) ascending
float f = -1;
if ((p as Pawn).ageTracker.CurLifeStage.milkable)
{
- var comp = (p as Pawn).AllComps.Where(x => x is CompMilkable).FirstOrDefault();
+ var comp = p.AllComps.OfType().FirstOrDefault();
if (comp != null)
- f = ((CompMilkable)comp).Fullness;
+ f = comp.Fullness;
}
return f;
}
@@ -486,9 +471,9 @@ orderby p.GetStatValue((StatDef)sortObject.displayObject, true) ascending
float f = -1;
if ((p as Pawn).ageTracker.CurLifeStage.milkable)
{
- var comp = (p as Pawn).AllComps.Where(x => x is CompShearable).FirstOrDefault();
+ var comp = p.AllComps.OfType().FirstOrDefault();
if (comp != null)
- f = ((CompShearable)comp).Fullness;
+ f = comp.Fullness;
}
return f;
}
@@ -515,19 +500,22 @@ orderby p.GetStatValue((StatDef)sortObject.displayObject, true) ascending
}
public void PawnSelectOptionsMaker()
- {
- List list = new List();
+ {
+ List list = new List();
foreach (pawnType pawn in Enum.GetValues(typeof(pawnType)))
{
Action action = delegate
- {
- if (pawn != chosenPawnType)
- {
- savedKLists[chosenPawnType] = kList;
- savedKLists.TryGetValue(pawn, out kList);
- if (kList == null)
- kList = new List();
- chosenPawnType = pawn;
+ {
+ var component = Find.World.GetComponent();
+ if (pawn != component.chosenPawnType)
+ {
+ component.savedKLists.TryGetValue(pawn, out kList);
+ if (kList == null)
+ {
+ kList = new List();
+ component.savedKLists[pawn] = kList;
+ }
+ component.chosenPawnType = pawn;
isDirty = true;
}
};
@@ -610,11 +598,12 @@ public void PresetOptionsMaker()
//other hardcoded options
public void OtherOptionsMaker()
- {
- List list = new List();
+ {
+ var component = Find.World.GetComponent();
+ List list = new List();
//equipment bearers
- if (new[] { pawnType.Colonists, pawnType.Prisoners, pawnType.Enemies, pawnType.Corpses }.Contains(chosenPawnType))
+ if (new[] { pawnType.Colonists, pawnType.Prisoners, pawnType.Enemies, pawnType.Corpses }.Contains(component.chosenPawnType))
{
Action action = delegate
{
@@ -626,7 +615,7 @@ public void OtherOptionsMaker()
}
//all living things
- if (new[] { pawnType.Colonists, pawnType.Prisoners, pawnType.Enemies, pawnType.Animals, pawnType.WildAnimals, pawnType.Guests }.Contains(chosenPawnType))
+ if (new[] { pawnType.Colonists, pawnType.Prisoners, pawnType.Enemies, pawnType.Animals, pawnType.WildAnimals, pawnType.Guests }.Contains(component.chosenPawnType))
{
Action action = delegate
{
@@ -645,7 +634,7 @@ public void OtherOptionsMaker()
list.Add(new FloatMenuOption("koisama.MentalState".Translate(), action, MenuOptionPriority.Default, null, null));
}
- if (chosenPawnType == pawnType.Prisoners) {
+ if (component.chosenPawnType == pawnType.Prisoners) {
Action action = delegate
{
KListObject kl = new KListObject(KListObject.objectType.ControlPrisonerGetsFood, "GetsFood".Translate(), null);
@@ -663,7 +652,7 @@ public void OtherOptionsMaker()
list.Add(new FloatMenuOption("koisama.Interaction".Translate(), action2, MenuOptionPriority.Default, null, null));
}
- if (chosenPawnType == pawnType.Animals)
+ if (component.chosenPawnType == pawnType.Animals)
{
Action action = delegate
{
@@ -683,7 +672,7 @@ public void OtherOptionsMaker()
}
//healable
- if (new[] { pawnType.Colonists, pawnType.Prisoners, pawnType.Animals }.Contains(chosenPawnType))
+ if (new[] { pawnType.Colonists, pawnType.Prisoners, pawnType.Animals }.Contains(component.chosenPawnType))
{
Action action = delegate
{
@@ -694,7 +683,7 @@ public void OtherOptionsMaker()
list.Add(new FloatMenuOption("koisama.MedicalCare".Translate(), action, MenuOptionPriority.Default, null, null));
}
- if (! new[] { pawnType.Corpses, pawnType.AnimalCorpses }.Contains(chosenPawnType))
+ if (! new[] { pawnType.Corpses, pawnType.AnimalCorpses }.Contains(component.chosenPawnType))
{
Action action = delegate
{
@@ -709,8 +698,9 @@ public void OtherOptionsMaker()
}
public override void DoWindowContents(Rect r)
- {
- maxWindowWidth = Screen.width;
+ {
+ var component = Find.World.GetComponent();
+ maxWindowWidth = Screen.width;
base.DoWindowContents(r);
if (pawnListUpdateNext < Find.TickManager.TicksGame)
@@ -729,7 +719,7 @@ public override void DoWindowContents(Rect r)
//pawn/prisoner list switch
Rect sourceButton = new Rect(x, 0f, buttonWidth, PawnRowHeight);
- if (Widgets.ButtonText(sourceButton, ("koisama.pawntype." + chosenPawnType.ToString()).Translate()))
+ if (Widgets.ButtonText(sourceButton, ("koisama.pawntype." + component.chosenPawnType.ToString()).Translate()))
{
PawnSelectOptionsMaker();
}
@@ -745,7 +735,7 @@ public override void DoWindowContents(Rect r)
x += buttonWidth + 10;
//skills btn
- if (new[] { pawnType.Colonists, pawnType.Prisoners, pawnType.Enemies }.Contains(chosenPawnType))
+ if (new[] { pawnType.Colonists, pawnType.Prisoners, pawnType.Enemies }.Contains(component.chosenPawnType))
{
Rect skillColumnButton = new Rect(x, 0f, buttonWidth, PawnRowHeight);
if (Widgets.ButtonText(skillColumnButton, "koisama.Numbers.AddSkillColumnLabel".Translate()))
diff --git a/Source/kNumbers/MapComponent_Numbers.cs b/Source/kNumbers/MapComponent_Numbers.cs
deleted file mode 100644
index 8d92a13..0000000
--- a/Source/kNumbers/MapComponent_Numbers.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Verse;
-
-namespace kNumbers
-{
- class MapComponent_Numbers : MapComponent
- {
-
- public static Dictionary> savedKLists;
- public static MainTabWindow_Numbers.pawnType chosenPawnType;
- public static bool hasData = false;
-
- private List tmpKList;
-
- public MapComponent_Numbers(Map map) : base(map)
- {
- this.map = map;
- }
-
- public override void ExposeData()
- {
-
- if (Scribe.mode == LoadSaveMode.LoadingVars)
- {
- hasData = false;
- SetDefaultValues();
- }
-
- if(Scribe.mode == LoadSaveMode.Saving) {
- savedKLists = MainTabWindow_Numbers.savedKLists;
- chosenPawnType = MainTabWindow_Numbers.chosenPawnType;
- }
-
- if (Scribe.mode == LoadSaveMode.LoadingVars || Scribe.mode == LoadSaveMode.Saving)
- {
- Scribe_Values.LookValue(ref chosenPawnType, "chosenPawnType", MainTabWindow_Numbers.pawnType.Colonists);
- foreach (MainTabWindow_Numbers.pawnType type in Enum.GetValues(typeof(MainTabWindow_Numbers.pawnType)))
- {
- tmpKList = savedKLists[type];
- Scribe_Collections.LookList(ref tmpKList, "klist-" + type, LookMode.Deep);
- savedKLists[type] = tmpKList;
-
- /*foreach(KListObject obj in tmpKList)
- {
- Log.Message("scribe loaded object "+ obj.oType.ToString() + ", " + obj.label + "," + (obj.displayObject == null? "NULL!" : obj.displayObject.ToString()));
- }*/
-
- }
- hasData = true;
- }
-
- }
-
- private static void SetDefaultValues()
- {
- chosenPawnType = MainTabWindow_Numbers.pawnType.Colonists;
- savedKLists = new Dictionary>(5);
- foreach(MainTabWindow_Numbers.pawnType pType in Enum.GetValues(typeof(MainTabWindow_Numbers.pawnType)))
- {
- savedKLists.Add(pType, new List(10));
- }
- }
-
-
- public static void InitMapComponent()
- {
- if(Find.VisibleMap.GetComponent() == null)
- {
- if (!hasData)
- {
- SetDefaultValues();
- }
- Find.VisibleMap.components.Add(new MapComponent_Numbers(Find.VisibleMap));
- }
- }
- }
-}
diff --git a/Source/kNumbers/WorldComponent_Numbers.cs b/Source/kNumbers/WorldComponent_Numbers.cs
new file mode 100644
index 0000000..b7d8854
--- /dev/null
+++ b/Source/kNumbers/WorldComponent_Numbers.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using RimWorld.Planet;
+using Verse;
+
+namespace kNumbers
+{
+ class WorldComponent_Numbers : WorldComponent
+ {
+
+ public Dictionary> savedKLists = new Dictionary>(5);
+ public MainTabWindow_Numbers.pawnType chosenPawnType = MainTabWindow_Numbers.pawnType.Colonists;
+
+
+ public WorldComponent_Numbers(World world) : base(world) { }
+
+ public override void ExposeData()
+ {
+
+ Scribe_Values.Look(ref chosenPawnType, "chosenPawnType", MainTabWindow_Numbers.pawnType.Colonists);
+ foreach (MainTabWindow_Numbers.pawnType type in Enum.GetValues(typeof(MainTabWindow_Numbers.pawnType)))
+ {
+ List tmpKList;
+ savedKLists.TryGetValue(type, out tmpKList);
+ Scribe_Collections.Look(ref tmpKList, "klist-" + type, LookMode.Deep);
+ savedKLists[type] = tmpKList;
+
+ /*foreach(KListObject obj in tmpKList ?? Enumerable.Empty())
+ {
+ Log.Message("scribe loaded object "+ obj.oType.ToString() + ", " + obj.label + "," + (obj.displayObject == null? "NULL!" : obj.displayObject.ToString()));
+ }*/
+
+ }
+
+ }
+
+ }
+}
diff --git a/Source/kNumbers/kNumbers.csproj b/Source/kNumbers/kNumbers.csproj
index 94d9ad0..831da04 100644
--- a/Source/kNumbers/kNumbers.csproj
+++ b/Source/kNumbers/kNumbers.csproj
@@ -54,7 +54,7 @@
-
+