private void ExposeFactionData() { if (Scribe.mode == LoadSaveMode.Saving) { int currentFactionId = Faction.OfPlayer.loadID; Scribe_Custom.LookValue(currentFactionId, "currentFactionId"); var data = new Dictionary <int, FactionMapData>(factionData); data.Remove(currentFactionId); Scribe_Custom.LookValueDeep(ref data, "factionMapData", map); } else { // The faction whose data is currently set Scribe_Values.Look(ref currentFactionId, "currentFactionId"); Scribe_Custom.LookValueDeep(ref factionData, "factionMapData", map); if (factionData == null) { factionData = new Dictionary <int, FactionMapData>(); } } if (Scribe.mode == LoadSaveMode.LoadingVars) { factionData[currentFactionId] = FactionMapData.NewFromMap(map, currentFactionId); } }
public static void InitFactionDataFromMap(Map map, Faction f) { var mapComp = map.MpComp(); mapComp.factionData[f.loadID] = FactionMapData.NewFromMap(map, f.loadID); var customData = mapComp.customFactionData[f.loadID] = CustomFactionMapData.New(f.loadID, map); foreach (var t in map.listerThings.AllThings) { if (t is ThingWithComps tc && tc.GetComp <CompForbiddable>() is { forbiddenInt: false })