public void SerializeTo(GlobalSaveGameFormat global) { var afflictionDict = new Dictionary <AfflictionType, List <Affliction> >(); foreach (var affliction in Negative.Concat(Positive)) { if (!afflictionDict.ContainsKey(affliction.AfflictionType)) { afflictionDict.Add(affliction.AfflictionType, new List <Affliction>()); } afflictionDict[affliction.AfflictionType].Add(affliction); } global.Hypothermia = ConvertBackHypothermia(global.Hypothermia, afflictionDict); global.FrostBite = ConvertBackFrostBite(global.FrostBite, afflictionDict); global.FoodPoisoning = ConvertBackFoodPoisoning(global.FoodPoisoning, afflictionDict); global.Dysentery = ConvertBackDysentery(global.Dysentery, afflictionDict); global.SprainedAnkle = ConvertBackSprainedAnkle(global.SprainedAnkle, afflictionDict); global.SprainedWrist = ConvertBackSprainedWrist(global.SprainedWrist, afflictionDict); global.Burns = ConvertBackBurns(global.Burns, afflictionDict); global.BurnsElectric = ConvertBackBurnsElectric(global.BurnsElectric, afflictionDict); global.BloodLoss = ConvertBackBloodLoss(global.BloodLoss, afflictionDict); global.Infection = ConvertBackInfection(global.Infection, afflictionDict); global.InfectionRisk = ConvertBackInfectionRisk(global.InfectionRisk, afflictionDict); global.CabinFever = ConvertBackCabinFever(global.CabinFever, afflictionDict); global.IntestinalParasites = ConvertBackIntestinalParasites(global.IntestinalParasites, afflictionDict); global.BrokenRibs = ConvertBackBrokenRib(global.BrokenRibs, afflictionDict); global.WellFed = ConvertBackWellFed(global.WellFed, afflictionDict); }
public AfflictionsContainer(GlobalSaveGameFormat global) { negative.CollectionChanged += (object sender, NotifyCollectionChangedEventArgs e) => { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs("Negative")); } }; positive.CollectionChanged += (object sender, NotifyCollectionChangedEventArgs e) => { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs("Positive")); } }; ConvertHypothermia(global.Hypothermia); ConvertFrostbite(global.FrostBite); ConvertFoodPoisoning(global.FoodPoisoning); ConvertDysentery(global.Dysentery); ConvertSprainedAnkle(global.SprainedAnkle); ConvertSprainedWrist(global.SprainedWrist); ConvertBurns(global.Burns); ConvertBurnsElectric(global.BurnsElectric); ConvertBloodLoss(global.BloodLoss); ConvertInfection(global.Infection); ConvertInfectionRisk(global.InfectionRisk); ConvertCabinFever(global.CabinFever); ConvertIntestinalParasites(global.IntestinalParasites); ConvertBrokenRib(global.BrokenRibs); ConvertWellFed(global.WellFed); }
public string Serialize() { var proxy = new GlobalSaveGameFormat(); proxy.m_Version = Version; proxy.m_GameManagerSerialized = Util.SerializeObject(SceneTransistion); proxy.m_HudManagerSerialized = Util.SerializeObject(HudManager); proxy.m_TimeOfDay_Serialized = Util.SerializeObject(TimeOfDay); proxy.m_Wind_Serialized = Wind.Serialize(); proxy.m_Weather_Serialized = Util.SerializeObject(Weather); proxy.m_WeatherTransition_Serialized = Util.SerializeObject(WeatherTransistion); proxy.m_Condition_Serialized = Util.SerializeObject(Condition); proxy.m_Encumber_Serialized = Util.SerializeObject(Encumber); proxy.m_Hunger_Serialized = Util.SerializeObject(Hunger); proxy.m_Thirst_Serialized = Util.SerializeObject(Thirst); proxy.m_Fatigue_Serialized = Util.SerializeObject(Fatigue); proxy.m_Freezing_Serialized = Util.SerializeObject(Freezing); proxy.m_Willpower_Serialized = Util.SerializeObject(Willpower); proxy.m_Inventory_Serialized = Inventory.Serialize(); proxy.m_SandboxManagerSerialized = Util.SerializeObject(SandboxManager); proxy.m_StoryManagerSerialized = Util.SerializeObject(StoryManager); proxy.m_PlayerManagerSerialized = Util.SerializeObject(PlayerManager); proxy.m_PlayerClimbRopeSerialized = Util.SerializeObject(PlayerClimbRope); proxy.m_PlayerSkillsSerialized = Util.SerializeObject(PlayerSkills); proxy.m_PlayerGameStatsSerialized = Util.SerializeObject(PlayerGameStats); Afflictions.SerializeTo(proxy); proxy.m_LogSerialized = Util.SerializeObject(Log); proxy.m_RestSerialized = Util.SerializeObject(Rest); proxy.m_FlyOverSerialized = Util.SerializeObject(FlyOver); proxy.m_AchievementManagerSerialized = Util.SerializeObject(AchievementManager); proxy.m_ExperienceModeManagerSerialized = Util.SerializeObject(ExperienceModeManager); proxy.m_AuroraManagerSerialized = AuroraManager; proxy.m_PlayerMovementSerialized = Util.SerializeObject(PlayerMovement); proxy.m_PlayerStruggleSerialized = PlayerStruggle; proxy.m_PanelStatsSerialized = PanelStats; proxy.m_EmergencyStimSerialized = Util.SerializeObject(EmergencyStim); proxy.m_MusicEventManagerSerialized = Util.SerializeObject(MusicEventManager); proxy.m_SnowPatchManagerSerialized = Util.SerializeObject(SnowPatchManager); proxy.m_PlayerAnimationSerialized = Util.SerializeObject(PlayerAnimation); proxy.m_SkillsManagerSerialized = SkillsManager.Serialize(); proxy.m_LockCompanionsSerialized = Util.SerializeObject(UnlockedCompanions); proxy.m_FeatsEnabledSerialized = Util.SerializeObject(EnabledFeats); proxy.m_TrustManagerSerialized = Util.SerializeObject(TrustManager); proxy.m_WorldMapDataSerialized = Util.SerializeObject(WorldMapData); proxy.m_MapDataSerialized = Util.SerializeObject(MapData); proxy.m_BearHuntSerialized = Util.SerializeObject(BearHunt); proxy.m_KnowledgeManagerSerialized = Util.SerializeObject(KnowledgeManager); proxy.m_UnlockedBlueprintsSerialized = Util.SerializeObject(UnlockedBlueprints); proxy.m_CollectionManagerSerialized = CollectionManagerSerialized; proxy.m_AuroraScreenManagerSerialized = AuroraScreenManager; proxy.m_StoryMissionDataSerialized = StoryMissionDataSerialized; proxy.m_CurrentEpisodeComplete = CurrentEpisodeCompleted; return(Util.SerializeObject(proxy)); }
public Afflictions(GlobalSaveGameFormat global) { Negative = new ObservableCollection <Affliction>(); negative.CollectionChanged += (object sender, NotifyCollectionChangedEventArgs e) => { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs("Negative")); } }; Positive = new ObservableCollection <Affliction>(); positive.CollectionChanged += (object sender, NotifyCollectionChangedEventArgs e) => { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs("Positive")); } }; var hypothermia = Util.DeserializeObject <HypothermiaSaveDataProxy>(global.m_HypothermiaSerialized); if (hypothermia != null && hypothermia.m_Active) { Negative.Add(new AfflictionWithProxy() { AfflictionType = AfflictionType.Hypothermia, proxy = global.m_HypothermiaSerialized, Location = 6 }); } else if (hypothermia != null && hypothermia.m_ElapsedHours > 0) { Negative.Add(new HypothermiaRisk() { AfflictionType = AfflictionType.HypothermiaRisk, proxy = global.m_HypothermiaSerialized, ElapsedHours = hypothermia.m_ElapsedHours, Location = 6, }); } var frostBite = Util.DeserializeObject <FrostBiteSaveDataProxy>(global.m_FrostbiteSerialized); if (frostBite != null) { foreach (int bodyArea in frostBite.m_LocationsWithActiveFrostbite) { Negative.Add(new Affliction() { AfflictionType = AfflictionType.Frostbite, Location = bodyArea }); } for (int i = 0; i < frostBite.m_LocationsWithFrostbiteRisk.Length; i++) { Negative.Add(new FrostBiteRisk() { AfflictionType = AfflictionType.FrostbiteRisk, Location = frostBite.m_LocationsWithFrostbiteRisk[i], Damage = frostBite.m_LocationsCurrentFrostbiteDamage[i] }); } } // Duration > 0 var foodPoisoning = Util.DeserializeObject <FoodPoisoningSaveDataProxy>(global.m_FoodPoisoningSerialized); if (foodPoisoning != null && foodPoisoning.m_Active) { Negative.Add(new AfflictionWithProxy() { AfflictionType = AfflictionType.FoodPoisioning, proxy = global.m_FoodPoisoningSerialized, Location = 6 }); } // Duration > 0 var dysentery = Util.DeserializeObject <DysenterySaveDataProxy>(global.m_DysenterySerialized); if (foodPoisoning != null && foodPoisoning.m_Active) { Negative.Add(new AfflictionWithProxy() { AfflictionType = AfflictionType.Dysentery, proxy = global.m_DysenterySerialized, Location = 7 }); } var sprainedAnkle = Util.DeserializeObject <SprainedAnkleSaveDataProxy>(global.m_SprainedAnkleSerialized); if (sprainedAnkle != null) { for (int i = 0; i < sprainedAnkle.m_ElapsedHoursList.Length; i++) { Negative.Add(new SprainAffliction() { AfflictionType = AfflictionType.SprainedAnkle, Location = sprainedAnkle.m_Locations[i], CauseLocID = sprainedAnkle.m_CausesLocIDs[i], Duration = sprainedAnkle.m_DurationHoursList[i], ElapsedHours = sprainedAnkle.m_ElapsedHoursList[i], ElapsedRest = sprainedAnkle.m_ElapsedRestList[i] }); } } var sprainedWrist = Util.DeserializeObject <SprainedWristSaveDataProxy>(global.m_SprainedWristSerialized); if (sprainedWrist != null) { for (int i = 0; i < sprainedWrist.m_ElapsedHoursList.Length; i++) { Negative.Add(new SprainAffliction() { AfflictionType = AfflictionType.SprainedWrist, Location = sprainedWrist.m_Locations[i], CauseLocID = sprainedWrist.m_CausesLocIDs[i], Duration = sprainedWrist.m_DurationHoursList[i], ElapsedHours = sprainedWrist.m_ElapsedHoursList[i], ElapsedRest = sprainedWrist.m_ElapsedRestList[i] }); } } var sprainedWristMajor = Util.DeserializeObject <SprainedWristMajorSaveDataProxy>(global.m_SprainedWristMajorSerialized); if (sprainedWristMajor != null) { for (int i = 0; i < sprainedWristMajor.m_ElapsedRestList.Length; i++) { Negative.Add(new SprainedWristMajor() { AfflictionType = AfflictionType.SprainedWristMajor, Location = sprainedWristMajor.m_Locations[i], CauseLocID = sprainedWristMajor.m_CausesLocIDs[i], ElapsedRest = sprainedWristMajor.m_ElapsedRestList[i] }); } } var burns = Util.DeserializeObject <BurnsSaveDataProxy>(global.m_BurnsSerialized); if (burns != null && burns.m_Active) { Negative.Add(new AfflictionWithProxy() { AfflictionType = AfflictionType.Burns, Location = 5, proxy = global.m_BurnsSerialized }); } var burnsElectric = Util.DeserializeObject <BurnsElectricSaveDataProxy>(global.m_BurnsElectricSerialized); if (burnsElectric != null && burnsElectric.m_Active) { Negative.Add(new AfflictionWithProxy() { AfflictionType = AfflictionType.BurnsElectric, Location = 5, proxy = global.m_BurnsElectricSerialized }); } var bloodLoss = Util.DeserializeObject <BloodLossSaveDataProxy>(global.m_BloodLossSerialized); if (bloodLoss != null) { for (int i = 0; i < bloodLoss.m_DurationHoursList.Length; i++) { Negative.Add(new BloodLoss() { AfflictionType = AfflictionType.BloodLoss, Location = bloodLoss.m_Locations[i], CauseLocID = bloodLoss.m_CausesLocIDs[i], DurationHours = bloodLoss.m_DurationHoursList[i], ElapsedHours = bloodLoss.m_ElapsedHoursList[i] }); } } var infection = Util.DeserializeObject <InfectionSaveDataProxy>(global.m_InfectionSerialized); if (infection != null) { for (int i = 0; i < infection.m_DurationHoursList.Length; i++) { Negative.Add(new Infection() { AfflictionType = AfflictionType.Infection, Location = infection.m_Locations[i], AntibioticsTaken = infection.m_AntibioticsTakenList[i], CauseLocID = infection.m_CausesLocIDs[i], DurationHours = infection.m_DurationHoursList[i], ElapsedHours = infection.m_ElapsedHoursList[i], ElapsedRest = infection.m_ElapsedRestList[i] }); } } var infectionRisk = Util.DeserializeObject <InfectionRiskSaveDataProxy>(global.m_InfectionRiskSerialized); if (infectionRisk != null) { for (int i = 0; i < infectionRisk.m_DurationHoursList.Length; i++) { Negative.Add(new InfectionRisk() { AfflictionType = AfflictionType.InfectionRisk, Location = infectionRisk.m_Locations[i], AntisepticTaken = infectionRisk.m_AntisepticTakenList[i], CauseLocID = infectionRisk.m_CausesLocIDs[i], CurrentInfectionChance = infectionRisk.m_CurrentInfectionChanceList[i], DurationHours = infectionRisk.m_DurationHoursList[i], ElapsedHours = infectionRisk.m_ElapsedHoursList[i] }); } } var cabinFever = Util.DeserializeObject <CabinFeverSaveDataProxy>(global.m_CabinFeverSerialized); if (cabinFever != null && cabinFever.m_Active) { Negative.Add(new AfflictionWithProxy() { AfflictionType = AfflictionType.CabinFever, Location = 0, proxy = global.m_CabinFeverSerialized }); } var parasites = Util.DeserializeObject <IntestinalParasitesSaveDataProxy>(global.m_IntestinalParasitesSerialized); if (parasites != null && (parasites.m_HasParasites || parasites.m_HasParasiteRisk)) { var affliction = parasites.m_HasParasites ? AfflictionType.IntestinalParasites : AfflictionType.IntestinalParasitesRisk; Negative.Add(new AfflictionWithProxy() { AfflictionType = affliction, Location = 7, proxy = global.m_IntestinalParasitesSerialized }); } var brokenRibs = Util.DeserializeObject <BrokenRibSaveDataProxy>(global.m_BrokenRibSerialized); if (brokenRibs != null) { for (int i = 0; i < brokenRibs.m_Locations.Length; i++) { Negative.Add(new BrokenRib() { AfflictionType = AfflictionType.BrokenRib, Location = brokenRibs.m_Locations[i], BandagesApplied = brokenRibs.m_BandagesApplied[i], ElapsedRest = brokenRibs.m_ElapsedRestList[i], NumHoursRestForCure = brokenRibs.m_NumHoursRestForCureList[i], PainKillersTaken = brokenRibs.m_PainKillersTaken[i], }); } } }
public GlobalSaveGameFormat SerializeTo(GlobalSaveGameFormat proxy) { var afflictions = new Dictionary <AfflictionType, List <Affliction> >(); foreach (var affliction in Negative) { if (!afflictions.ContainsKey(affliction.AfflictionType)) { afflictions.Add(affliction.AfflictionType, new List <Affliction>()); } afflictions[affliction.AfflictionType].Add(affliction); } if (afflictions.ContainsKey(AfflictionType.Hypothermia)) { proxy.m_HypothermiaSerialized = ((AfflictionWithProxy)afflictions[AfflictionType.Hypothermia][0]).proxy; } var frostBiteProxy = new FrostBiteSaveDataProxy(); frostBiteProxy.m_LocationsCurrentFrostbiteDamage = new float[11]; frostBiteProxy.m_LocationsWithActiveFrostbite = new int[0]; frostBiteProxy.m_LocationsWithFrostbiteRisk = new int[0]; if (afflictions.ContainsKey(AfflictionType.Frostbite)) { frostBiteProxy.m_LocationsWithActiveFrostbite = afflictions[AfflictionType.Frostbite].Select(f => f.Location).ToArray(); } if (afflictions.ContainsKey(AfflictionType.FrostbiteRisk)) { var locations = new List <int>(); foreach (var frostBiteRisk in afflictions[AfflictionType.FrostbiteRisk]) { locations.Add(frostBiteRisk.Location); frostBiteProxy.m_LocationsCurrentFrostbiteDamage[frostBiteRisk.Location] = ((FrostBiteRisk)frostBiteRisk).Damage; } } proxy.m_FrostbiteSerialized = Util.SerializeObject(frostBiteProxy); if (afflictions.ContainsKey(AfflictionType.FoodPoisioning)) { proxy.m_FoodPoisoningSerialized = ((AfflictionWithProxy)afflictions[AfflictionType.FoodPoisioning][0]).proxy; } if (afflictions.ContainsKey(AfflictionType.Dysentery)) { proxy.m_DysenterySerialized = ((AfflictionWithProxy)afflictions[AfflictionType.Dysentery][0]).proxy; } if (afflictions.ContainsKey(AfflictionType.SprainedAnkle)) { var sprainedAnkleProxy = new SprainedAnkleSaveDataProxy(); var sprains = afflictions[AfflictionType.SprainedAnkle]; sprainedAnkleProxy.m_CausesLocIDs = new string[sprains.Count]; sprainedAnkleProxy.m_DurationHoursList = new float[sprains.Count]; sprainedAnkleProxy.m_ElapsedHoursList = new float[sprains.Count]; sprainedAnkleProxy.m_ElapsedRestList = new float[sprains.Count]; sprainedAnkleProxy.m_Locations = new int[sprains.Count]; for (int i = 0; i < sprains.Count; i++) { var sprain = (SprainAffliction)sprains[i]; sprainedAnkleProxy.m_CausesLocIDs[i] = sprain.CauseLocID; sprainedAnkleProxy.m_DurationHoursList[i] = sprain.Duration; sprainedAnkleProxy.m_ElapsedHoursList[i] = sprain.ElapsedHours; sprainedAnkleProxy.m_ElapsedRestList[i] = sprain.ElapsedHours; sprainedAnkleProxy.m_Locations[i] = sprain.Location; } proxy.m_SprainedAnkleSerialized = Util.SerializeObject(sprainedAnkleProxy); } if (afflictions.ContainsKey(AfflictionType.SprainedWrist)) { var sprainedWristProxy = new SprainedWristSaveDataProxy(); var sprains = afflictions[AfflictionType.SprainedWrist]; sprainedWristProxy.m_CausesLocIDs = new string[sprains.Count]; sprainedWristProxy.m_DurationHoursList = new float[sprains.Count]; sprainedWristProxy.m_ElapsedHoursList = new float[sprains.Count]; sprainedWristProxy.m_ElapsedRestList = new float[sprains.Count]; sprainedWristProxy.m_Locations = new int[sprains.Count]; for (int i = 0; i < sprains.Count; i++) { var sprain = (SprainAffliction)sprains[i]; sprainedWristProxy.m_CausesLocIDs[i] = sprain.CauseLocID; sprainedWristProxy.m_DurationHoursList[i] = sprain.Duration; sprainedWristProxy.m_ElapsedHoursList[i] = sprain.ElapsedHours; sprainedWristProxy.m_ElapsedRestList[i] = sprain.ElapsedHours; sprainedWristProxy.m_Locations[i] = sprain.Location; } proxy.m_SprainedWristSerialized = Util.SerializeObject(sprainedWristProxy); } if (afflictions.ContainsKey(AfflictionType.SprainedWristMajor)) { var sprainedWristMajorProxy = new SprainedWristMajorSaveDataProxy(); var sprains = afflictions[AfflictionType.SprainedWristMajor]; sprainedWristMajorProxy.m_CausesLocIDs = new string[sprains.Count]; sprainedWristMajorProxy.m_ElapsedRestList = new float[sprains.Count]; sprainedWristMajorProxy.m_Locations = new int[sprains.Count]; for (int i = 0; i < sprains.Count; i++) { var sprain = (SprainedWristMajor)sprains[i]; sprainedWristMajorProxy.m_Locations[i] = sprain.Location; sprainedWristMajorProxy.m_ElapsedRestList[i] = sprain.ElapsedRest; sprainedWristMajorProxy.m_CausesLocIDs[i] = sprain.CauseLocID; } proxy.m_SprainedWristMajorSerialized = Util.SerializeObject(sprainedWristMajorProxy); } if (afflictions.ContainsKey(AfflictionType.Burns)) { proxy.m_BurnsSerialized = ((AfflictionWithProxy)afflictions[AfflictionType.Burns][0]).proxy; } if (afflictions.ContainsKey(AfflictionType.BurnsElectric)) { proxy.m_BurnsSerialized = ((AfflictionWithProxy)afflictions[AfflictionType.BurnsElectric][0]).proxy; } if (afflictions.ContainsKey(AfflictionType.BloodLoss)) { var bloodLossProxy = new BloodLossSaveDataProxy(); var bloodLosses = afflictions[AfflictionType.BloodLoss]; bloodLossProxy.m_CausesLocIDs = new string[bloodLosses.Count]; bloodLossProxy.m_DurationHoursList = new float[bloodLosses.Count]; bloodLossProxy.m_ElapsedHoursList = new float[bloodLosses.Count]; bloodLossProxy.m_Locations = new int[bloodLosses.Count]; for (int i = 0; i < bloodLosses.Count; i++) { var bloodLoss = (BloodLoss)bloodLosses[i]; bloodLossProxy.m_CausesLocIDs[i] = bloodLoss.CauseLocID; bloodLossProxy.m_DurationHoursList[i] = bloodLoss.DurationHours; bloodLossProxy.m_ElapsedHoursList[i] = bloodLoss.ElapsedHours; bloodLossProxy.m_Locations[i] = bloodLoss.Location; } proxy.m_BloodLossSerialized = Util.SerializeObject(bloodLossProxy); } if (afflictions.ContainsKey(AfflictionType.Infection)) { var infectionProxy = new InfectionSaveDataProxy(); var infections = afflictions[AfflictionType.Infection]; infectionProxy.m_AntibioticsTakenList = new bool[infections.Count]; infectionProxy.m_CausesLocIDs = new string[infections.Count]; infectionProxy.m_DurationHoursList = new float[infections.Count]; infectionProxy.m_ElapsedHoursList = new float[infections.Count]; infectionProxy.m_ElapsedRestList = new float[infections.Count]; infectionProxy.m_Locations = new int[infections.Count]; for (int i = 0; i < infections.Count; i++) { var infection = (Infection)infections[i]; infectionProxy.m_AntibioticsTakenList[i] = infection.AntibioticsTaken; infectionProxy.m_CausesLocIDs[i] = infection.CauseLocID; infectionProxy.m_DurationHoursList[i] = infection.DurationHours; infectionProxy.m_ElapsedHoursList[i] = infection.ElapsedHours; infectionProxy.m_ElapsedRestList[i] = infection.ElapsedRest; infectionProxy.m_Locations[i] = infection.Location; } proxy.m_InfectionSerialized = Util.SerializeObject(infectionProxy); } if (afflictions.ContainsKey(AfflictionType.InfectionRisk)) { var infectionRisk = new InfectionRiskSaveDataProxy(); var infectionRisks = afflictions[AfflictionType.InfectionRisk]; infectionRisk.m_CausesLocIDs = new string[infectionRisks.Count]; infectionRisk.m_DurationHoursList = new float[infectionRisks.Count]; infectionRisk.m_ElapsedHoursList = new float[infectionRisks.Count]; infectionRisk.m_Locations = new int[infectionRisks.Count]; infectionRisk.m_AntisepticTakenList = new bool[infectionRisks.Count]; infectionRisk.m_CurrentInfectionChanceList = new float[infectionRisks.Count]; for (int i = 0; i < infectionRisks.Count; i++) { var infection = (InfectionRisk)infectionRisks[i]; infectionRisk.m_CausesLocIDs[i] = infection.CauseLocID; infectionRisk.m_DurationHoursList[i] = infection.DurationHours; infectionRisk.m_ElapsedHoursList[i] = infection.ElapsedHours; infectionRisk.m_Locations[i] = infection.Location; infectionRisk.m_AntisepticTakenList[i] = infection.AntisepticTaken; infectionRisk.m_CurrentInfectionChanceList[i] = infection.CurrentInfectionChance; } proxy.m_InfectionRiskSerialized = Util.SerializeObject(infectionRisk); } if (afflictions.ContainsKey(AfflictionType.BrokenRib)) { var brokenRibProxy = new BrokenRibSaveDataProxy(); var brokenRibs = afflictions[AfflictionType.BrokenRib]; brokenRibProxy.m_BandagesApplied = new int[brokenRibs.Count]; brokenRibProxy.m_CausesLocIDs = new string[brokenRibs.Count]; brokenRibProxy.m_ElapsedRestList = new float[brokenRibs.Count]; brokenRibProxy.m_Locations = new int[brokenRibs.Count]; brokenRibProxy.m_NumHoursRestForCureList = new float[brokenRibs.Count]; brokenRibProxy.m_PainKillersTaken = new int[brokenRibs.Count]; for (int i = 0; i < brokenRibs.Count; i++) { var brokenRib = (BrokenRib)brokenRibs[i]; brokenRibProxy.m_BandagesApplied[i] = brokenRib.BandagesApplied; brokenRibProxy.m_CausesLocIDs[i] = brokenRib.CauseLocID; brokenRibProxy.m_ElapsedRestList[i] = brokenRib.ElapsedRest; brokenRibProxy.m_Locations[i] = brokenRib.Location; brokenRibProxy.m_NumHoursRestForCureList[i] = brokenRib.NumHoursRestForCure; brokenRibProxy.m_PainKillersTaken[i] = brokenRib.PainKillersTaken; } proxy.m_BrokenRibSerialized = Util.SerializeObject(brokenRibProxy); } if (afflictions.ContainsKey(AfflictionType.CabinFever)) { proxy.m_CabinFeverSerialized = ((AfflictionWithProxy)afflictions[AfflictionType.CabinFever][0]).proxy; } if (afflictions.ContainsKey(AfflictionType.IntestinalParasites)) { proxy.m_IntestinalParasitesSerialized = ((AfflictionWithProxy)afflictions[AfflictionType.IntestinalParasites][0]).proxy; } else if (afflictions.ContainsKey(AfflictionType.IntestinalParasitesRisk)) { proxy.m_IntestinalParasitesSerialized = ((AfflictionWithProxy)afflictions[AfflictionType.IntestinalParasitesRisk][0]).proxy; } return(proxy); }