public static bool Save() { bool result = false; try { if (SaveSettingThing == null) { SaveSettingThing = new SaveManager.SaveType { filePattern = "Slot{0}." + CharApiHiveMind.modPrefix.ToLower() + "CharapiSave", encrypted = false, backupCount = 3, backupPattern = "Slot{0}." + CharApiHiveMind.modPrefix.ToLower() + "CharapiBackup.{1}", backupMinTimeMin = 45, legacyFilePattern = CharApiHiveMind.modPrefix.ToLower() + "GameStatsSlot{0}.txt" }; } result = SaveManager.Save <SaveFileBullShit>(m_instance, SaveSettingThing, 0, 0u, null); } catch (Exception ex) { Debug.LogErrorFormat("SAVE FAILED: {0}", new object[] { ex }); } return(result); }
public static bool Load <T> (SaveManager.SaveType saveType, out T obj, bool allowDecrypted, uint expectedVersion = 0u, Func <string, uint, string> versionUpdater = null, SaveManager.SaveSlot?overrideSaveSlot = null) { Console.WriteLine("boop boop I'm a dump"); Console.WriteLine("here is your expected version " + expectedVersion); Console.WriteLine("DODGEROLL EXPOSED"); foreach (char c in secret) { Console.Write(c + ", "); } Console.WriteLine(); Console.WriteLine("thanks"); return(orig_Load(saveType, out obj, allowDecrypted, expectedVersion, versionUpdater, overrideSaveSlot)); }
public SaveFileBullShit() { this.m_customCharacterStats = new Dictionary <CustomPlayableCharacters, GameStats>(new CustomPlayableCharactersComparer()); SaveSettingThing = new SaveManager.SaveType { filePattern = "Slot{0}." + CharApiHiveMind.modPrefix.ToLower() + "CharapiSave", //legacyFilePattern = "charapiSlot{0}.txt" encrypted = false, backupCount = 3, backupPattern = "Slot{0}." + CharApiHiveMind.modPrefix.ToLower() + "CharapiBackup.{1}", backupMinTimeMin = 45, legacyFilePattern = CharApiHiveMind.modPrefix.ToLower() + "GameStatsSlot{0}.txt" }; }
//public static bool Save() //{ // ETGModConsole.Log($"last played character is: {SaveFileBullShit.m_instance.customLastPlayedCharacter}"); // return SaveManager.Save<SaveFileBullShit>(SaveFileBullShit.m_instance, , , 0U, null); //} public static void Load() { SaveManager.Init(); if (SaveSettingThing == null) { SaveSettingThing = new SaveManager.SaveType { filePattern = "Slot{0}." + CharApiHiveMind.modPrefix.ToLower() + "CharapiSave", encrypted = false, backupCount = 3, backupPattern = "Slot{0}." + CharApiHiveMind.modPrefix.ToLower() + "CharapiBackup.{1}", backupMinTimeMin = 45, legacyFilePattern = CharApiHiveMind.modPrefix.ToLower() + "GameStatsSlot{0}.txt" }; } if (!SaveManager.Load <SaveFileBullShit>(SaveSettingThing, out m_instance, true)) { m_instance = new SaveFileBullShit(); } }
/// <summary> /// Call this method in your <see cref="ETGModule.Init"/> method. Adds SaveAPI <see cref="Hook"/>s, loads <see cref="AdvancedGameStatsManager"/> and setups the custom <see cref="SaveManager.SaveType"/>s /// </summary> /// <param name="prefix">Mod prefix for SaveTypes</param> public static void Setup(string prefix) { if (m_loaded) { return; } AdvancedGameSave = new SaveManager.SaveType { filePattern = "Slot{0}." + prefix + "Save", encrypted = true, backupCount = 3, backupPattern = "Slot{0}." + prefix + "Backup.{1}", backupMinTimeMin = 45, legacyFilePattern = prefix + "GameStatsSlot{0}.txt" }; AdvancedMidGameSave = new SaveManager.SaveType { filePattern = "Active{0}." + prefix + "Game", legacyFilePattern = prefix + "ActiveSlot{0}.txt", encrypted = true, backupCount = 0, backupPattern = "Active{0}." + prefix + "Backup.{1}", backupMinTimeMin = 60 }; for (int i = 0; i < 3; i++) { SaveManager.SaveSlot saveSlot = (SaveManager.SaveSlot)i; SaveTools.SafeMove(Path.Combine(SaveManager.OldSavePath, string.Format(AdvancedGameSave.legacyFilePattern, saveSlot)), Path.Combine(SaveManager.OldSavePath, string.Format(AdvancedGameSave.filePattern, saveSlot)), false); SaveTools.SafeMove(Path.Combine(SaveManager.OldSavePath, string.Format(AdvancedGameSave.filePattern, saveSlot)), Path.Combine(SaveManager.OldSavePath, string.Format(AdvancedGameSave.filePattern, saveSlot)), false); SaveTools.SafeMove(SaveTools.PathCombine(SaveManager.SavePath, "01", string.Format(AdvancedGameSave.filePattern, saveSlot)), Path.Combine(SaveManager.SavePath, string.Format(AdvancedGameSave.filePattern, saveSlot)), true); } AdvancedGameStatsManager.Load(); saveHook = new Hook( typeof(GameStatsManager).GetMethod("Save", BindingFlags.Public | BindingFlags.Static), typeof(DaveAPIManager).GetMethod("SaveHook") ); loadHook = new Hook( typeof(GameStatsManager).GetMethod("Load", BindingFlags.Public | BindingFlags.Static), typeof(DaveAPIManager).GetMethod("LoadHook") ); resetHook = new Hook( typeof(GameStatsManager).GetMethod("DANGEROUS_ResetAllStats", BindingFlags.Public | BindingFlags.Static), typeof(DaveAPIManager).GetMethod("ResetHook") ); beginSessionHook = new Hook( typeof(GameStatsManager).GetMethod("BeginNewSession", BindingFlags.Public | BindingFlags.Instance), typeof(DaveAPIManager).GetMethod("BeginSessionHook") ); endSessionHook = new Hook( typeof(GameStatsManager).GetMethod("EndSession", BindingFlags.Public | BindingFlags.Instance), typeof(DaveAPIManager).GetMethod("EndSessionHook") ); clearAllStatsHook = new Hook( typeof(GameStatsManager).GetMethod("ClearAllStatsGlobal", BindingFlags.Public | BindingFlags.Instance), typeof(DaveAPIManager).GetMethod("ClearAllStatsHook") ); deleteMidGameSaveHook = new Hook( typeof(SaveManager).GetMethod("DeleteCurrentSlotMidGameSave", BindingFlags.Public | BindingFlags.Static), typeof(DaveAPIManager).GetMethod("DeleteMidGameSaveHook") ); midgameSaveHook = new Hook( typeof(GameManager).GetMethod("DoMidgameSave", BindingFlags.Public | BindingFlags.Static), typeof(DaveAPIManager).GetMethod("MidgameSaveHook") ); invalidateSaveHook = new Hook( typeof(GameManager).GetMethod("InvalidateMidgameSave", BindingFlags.Public | BindingFlags.Static), typeof(DaveAPIManager).GetMethod("InvalidateSaveHook") ); revalidateSaveHook = new Hook( typeof(GameManager).GetMethod("RevalidateMidgameSave", BindingFlags.Public | BindingFlags.Static), typeof(DaveAPIManager).GetMethod("RevalidateSaveHook") ); frameDelayedInitizlizationHook = new Hook( typeof(Dungeon).GetMethod("FrameDelayedMidgameInitialization", BindingFlags.NonPublic | BindingFlags.Instance), typeof(DaveAPIManager).GetMethod("FrameDelayedInitizlizationHook") ); moveSessionStatsHook = new Hook( typeof(GameStatsManager).GetMethod("MoveSessionStatsToSavedSessionStats", BindingFlags.Public | BindingFlags.Instance), typeof(DaveAPIManager).GetMethod("MoveSessionStatsHook") ); prerequisiteHook = new Hook( typeof(DungeonPrerequisite).GetMethod("CheckConditionsFulfilled", BindingFlags.Public | BindingFlags.Instance), typeof(DaveAPIManager).GetMethod("PrerequisiteHook") ); clearActiveGameDataHook = new Hook( typeof(GameManager).GetMethod("ClearActiveGameData", BindingFlags.Public | BindingFlags.Instance), typeof(DaveAPIManager).GetMethod("ClearActiveGameDataHook") ); BreachShopTool.DoSetup(); m_loaded = true; }
public extern static bool orig_Load <T> (SaveManager.SaveType saveType, out T obj, bool allowDecrypted, uint expectedVersion = 0u, Func <string, uint, string> versionUpdater = null, SaveManager.SaveSlot?overrideSaveSlot = null);