static bool Prefix_TryCreateDialogForVersionMismatchWarnings(ref bool __result, Action confirmedAction) { SimpleLog.Log("Checking mod mismatch"); bool isModListSame = ScribeMetaHeaderUtility.LoadedModsMatchesActiveMods(out _, out _); bool useVersionCompare = ModMismatchFormatter.useVersionCompare; if (isModListSame) { SimpleLog.Log("ModList are same"); if (useVersionCompare) { SimpleLog.Log("use version checking"); bool isVersionSame = MetaHeaderUtility.isVersionSame(ModContentPackExtension.GetModsFromSave(useVersionCompare), ModContentPackExtension.GetModsFromActive(useVersionCompare)); if (!isVersionSame) { SimpleLog.Log("Version is different..."); string warningMessage = "Checking mismatch for mod and mod versions... please wait"; Messages.Message(warningMessage, MessageTypeDefOf.SilentInput, false); CreateModMismatchWindow(confirmedAction, useVersionCompare); __result = true; return(false); } } __result = false; return(true); } else { SimpleLog.Log("Mod mismatch!"); CreateModMismatchWindow(confirmedAction, useVersionCompare); __result = true; return(false); } }
static void Prefix_SaveGame(string fileName) { SimpleLog.Log("Caching last saved file path"); bool WriteMeta = ModMismatchFormatter.writeMetaToSave; if (WriteMeta) { MetaHeaderUtility.StoreLastSavedFilePath(fileName); } }
static void Postfix_SaveGame() { SimpleLog.Log("Trying to write additional meta headers to save file..."); bool WriteMeta = ModMismatchFormatter.writeMetaToSave; if (WriteMeta) { try { MetaHeaderUtility.UpdateModVersionMetaHeader(); } catch (Exception ex) { string report = $"exception was raised and cannot write mod meta headers to the save. mod versions are not saved. your save is fine though.\n==original exception==\n{ex.ToString()}"; Log.Error(report); } } }