protected override void OnReload(GameMode currentGameMode) { var flags = MakerAPI.GetCharacterLoadFlags(); bool clothesFlag = false; if (flags == null || (flags != null && flags.Clothes)) { clothesFlag = true; } bool bodyFlag = false; if (flags == null || (flags != null && flags.Body)) { bodyFlag = true; } if (bodyFlag) { BaseData = new BodyData(ChaControl.fileBody); CurrentPushupData = new BodyData(ChaControl.fileBody); } if (clothesFlag) { //Load the data only if clothes is checked to be loaded BraDataDictionary = new Dictionary <int, ClothData>(); TopDataDictionary = new Dictionary <int, ClothData>(); var data = GetExtendedData(); if (data != null && data.data.TryGetValue(PushupConstants.Pushup_BraData, out var loadedBraData) && loadedBraData != null) { BraDataDictionary = MessagePackSerializer.Deserialize <Dictionary <int, ClothData> >((byte[])loadedBraData); } if (data != null && data.data.TryGetValue(PushupConstants.Pushup_TopData, out var loadedTopData) && loadedTopData != null) { TopDataDictionary = MessagePackSerializer.Deserialize <Dictionary <int, ClothData> >((byte[])loadedTopData); } //Reset advanced mode stuff and disable it when not loading the body in character maker if (!bodyFlag) { foreach (var clothData in BraDataDictionary.Values) { BaseData.CopyTo(clothData); clothData.UseAdvanced = false; } foreach (var clothData in TopDataDictionary.Values) { BaseData.CopyTo(clothData); clothData.UseAdvanced = false; } } } RecalculateBody(); base.OnReload(currentGameMode); }
protected override void OnReload(GameMode currentGameMode) { bool hasSavedBaseData = false; var flags = MakerAPI.GetCharacterLoadFlags(); bool clothesFlag = false; if (flags == null || flags.Clothes) { clothesFlag = true; } bool bodyFlag = false; if (flags == null || flags.Body) { bodyFlag = true; } if (bodyFlag) { BaseData = new BodyData(ChaControl.fileBody); LoadedBaseData = new BodyData(ChaControl.fileBody); BaseData.CopyTo(LoadedBaseData); CurrentPushupData = new BodyData(ChaControl.fileBody); } if (clothesFlag) { //Load the data only if clothes is checked to be loaded BraDataDictionary = new Dictionary <int, ClothData>(); TopDataDictionary = new Dictionary <int, ClothData>(); var data = GetExtendedData(); if (data != null && data.data.TryGetValue(PushupConstants.Pushup_BraData, out var loadedBraData) && loadedBraData != null) { BraDataDictionary = MessagePackSerializer.Deserialize <Dictionary <int, ClothData> >((byte[])loadedBraData); } if (data != null && data.data.TryGetValue(PushupConstants.Pushup_TopData, out var loadedTopData) && loadedTopData != null) { TopDataDictionary = MessagePackSerializer.Deserialize <Dictionary <int, ClothData> >((byte[])loadedTopData); } if (data != null && data.data.TryGetValue(PushupConstants.Pushup_BodyData, out var loadedBodyData) && loadedBodyData != null) { hasSavedBaseData = true; LoadedBaseData = MessagePackSerializer.Deserialize <BodyData>((byte[])loadedBodyData); } //Reset advanced mode stuff and disable it when not loading the body in character maker if (!bodyFlag) { foreach (var clothData in BraDataDictionary.Values) { BaseData.CopyTo(clothData); clothData.UseAdvanced = false; } foreach (var clothData in TopDataDictionary.Values) { BaseData.CopyTo(clothData); clothData.UseAdvanced = false; } } if (!hasSavedBaseData) { if (data?.data != null) { data.data.Add(PushupConstants.Pushup_BodyData, MessagePackSerializer.Serialize(BaseData)); SetExtendedData(data); } } } //Apply the saved data to the base body data since it sometimes gets overwritten in the main game if (KoikatuAPI.GetCurrentGameMode() == GameMode.MainGame) { LoadedBaseData.CopyTo(BaseData); } RecalculateBody(); base.OnReload(currentGameMode); }