protected override void OnReload(GameMode currentGameMode) { Logger.Log(DebugLogLevel, "[OnReload] Fired!!"); TriggerEnabled = false; ResetCharaTriggerInfo(); PluginData ExtendedData = GetExtendedData(); if (ExtendedData != null && ExtendedData.data.TryGetValue("CharaTriggerInfo", out var loadedCharaTriggerInfo) && loadedCharaTriggerInfo != null) { if (MakerAPI.InsideMaker) { CharacterLoadFlags LoadFlags = MakerAPI.GetCharacterLoadFlags(); if (((bool)LoadFlags?.Clothes) || (LoadFlags == null)) { CharaTriggerInfo = MessagePackSerializer.Deserialize <List <OutfitTriggerInfo> >((byte[])loadedCharaTriggerInfo); } } else { CharaTriggerInfo = MessagePackSerializer.Deserialize <List <OutfitTriggerInfo> >((byte[])loadedCharaTriggerInfo); } Logger.Log(DebugLogLevel, $"[OnReload][{ChaControl.chaFile.parameter?.fullname}] CharaTriggerInfo loaded from extdata"); } InitCurOutfitTriggerInfo(); base.OnReload(currentGameMode); }
private static int ReplacedParts(CharacterLoadFlags flags) { if (flags == null) { return(5); } var bools = new[] { flags.Body, flags.Clothes, flags.Face, flags.Hair, flags.Parameters }; return(bools.Sum(b => b ? 1 : 0)); }
protected override void OnReload(GameMode currentGameMode, bool maintainState) { Dictionary <string, object> data = GetExtendedData()?.data; foreach (string prefix in prefixKeys) { foreach (string boolKey in boolKeys) { string key = prefix + boolKey; data.TryGetValue(key, out bool value, boolDefaults[key]); boolData[key] = value; } foreach (string floatKey in floatKeys) { string key = prefix + floatKey; data.TryGetValue(key, out float value, floatDefaults[key]); floatData[key] = value; } } if (!MakerAPI.InsideMaker) { return; } CharacterLoadFlags flags = MakerAPI.GetCharacterLoadFlags(); if (flags != null && !flags.Body) { return; } if (MakerAPI.GetCharacterControl() != ChaControl) { return; } HS2_BoobSettings.MakerAPI_Update(this); }