public WorldComp(World world) : base(world) { if (DressersToUse != null) { DressersToUse.Clear(); } else { DressersToUse = new LinkedList <Building_Dresser>(); } if (PawnOutfits != null) { PawnOutfits.Clear(); } else { PawnOutfits = new Dictionary <Pawn, PawnOutfitTracker>(); } if (OutfitsForBattle != null) { OutfitsForBattle.Clear(); } else { OutfitsForBattle = new List <Outfit>(); } }
public override void ExposeData() { if (Scribe.mode == LoadSaveMode.Saving) { this.tempPawnOutfits = new List <PawnOutfitTracker>(PawnOutfits.Count); foreach (PawnOutfitTracker po in PawnOutfits.Values) { if (po != null) { this.tempPawnOutfits.Add(po); } } } Scribe_Values.Look <int>(ref nextDresserOutfitId, "nextDresserOutfitId", 0); Scribe_Collections.Look(ref this.tempPawnOutfits, "pawnOutfits", LookMode.Deep, new object[0]); Scribe_Deep.Look(ref ApparelColorTracker, "apparelColorTrack"); List <Outfit> ofb = OutfitsForBattle; Scribe_Collections.Look(ref ofb, "outfitsForBattle", LookMode.Reference, new object[0]); OutfitsForBattle = ofb; if (Scribe.mode == LoadSaveMode.PostLoadInit) { if (PawnOutfits == null) { PawnOutfits = new Dictionary <Pawn, PawnOutfitTracker>(); } if (OutfitsForBattle == null) { OutfitsForBattle = new List <Outfit>(); } PawnOutfits.Clear(); if (this.tempPawnOutfits != null) { foreach (PawnOutfitTracker po in this.tempPawnOutfits) { if (po != null && po.Pawn != null && !po.Pawn.Dead) { PawnOutfits.Add(po.Pawn, po); } } } for (int i = OutfitsForBattle.Count - 1; i >= 0; --i) { if (OutfitsForBattle[i] == null) { OutfitsForBattle.RemoveAt(i); } } if (ApparelColorTracker == null) { ApparelColorTracker = new ApparelColorTracker(); } ApparelColorTracker.PersistWornColors(); } if (this.tempPawnOutfits != null && (Scribe.mode == LoadSaveMode.Saving || Scribe.mode == LoadSaveMode.PostLoadInit)) { this.tempPawnOutfits.Clear(); this.tempPawnOutfits = null; } }