/// <summary> /// Initializes mod save data backups if required (if Everest was just updated past 2104). /// </summary> private static void checkModSaveDataBackups() { Version previousVersion; try { previousVersion = new Version(CoreModule.Settings.CurrentVersion); } catch { // oops, version is null or can't be parsed for any reason. previousVersion = new Version(0, 0, 0); } if (previousVersion < new Version(1, 2109, 0)) { // user just upgraded: create mod save data backups. // (this is very similar to OverworldLoader.CheckVariantsPostcardAtLaunch) Logger.Log("core", $"User just upgraded from version {previousVersion}: creating mod save data backups."); for (int i = 0; i < 3; i++) // only the first 3 saves really matter. { if (!UserIO.Exists(SaveData.GetFilename(i))) { continue; } SaveData saveData = UserIO.Load <SaveData>(SaveData.GetFilename(i), backup: false); if (saveData != null) { saveData.AfterInitialize(); UserIO.Save <ModSaveData>(SaveData.GetFilename(saveData.FileSlot) + "-modsavedata", UserIO.Serialize(new ModSaveData(saveData as patch_SaveData))); } } UserIO.Close(); SaveData.Instance = null; } }
public static bool TryDeleteModSaveData(int slot) { foreach (EverestModule mod in Everest._Modules) { if (mod.SaveDataAsync) { mod.WriteSaveData(slot, null); mod.WriteSession(slot, null); } else { #pragma warning disable CS0618 // Synchronous save / load IO is obsolete but some mods still override / use it. mod.DeleteSaveData(slot); mod.DeleteSession(slot); #pragma warning restore CS0618 } } LoadedModSaveDataIndex = int.MinValue; // delete the modsavedata file if it exists. string modSaveDataName = GetFilename(slot) + "-modsavedata"; if (UserIO.Exists(modSaveDataName)) { return(UserIO.Delete(modSaveDataName)); } else { return(true); } }