public static bool Unlocks_LoadUnlockData2(Unlocks __instance, bool secondTry, bool foundFile, object mySaveObject) { string saveSlotText = GameController.gameController.sessionDataBig.GetSaveSlotText(); string text = "/CloudData/" + saveSlotText + "GameUnlocks.dat"; if (secondTry) { text = "/BackupData/" + saveSlotText + "BackupGameUnlocks2.dat"; } GameController.gameController.sessionDataBig.loadedUnlockData = true; if (foundFile) { try { UnlockSaveData unlockSaveData = null; if ((GameController.gameController.consoleVersion || GameController.gameController.usingUWP || mySaveObject != null) && !GameController.gameController.fakeConsole) { unlockSaveData = (UnlockSaveData)mySaveObject; } else { string str = Application.persistentDataPath; if (GameController.gameController.usingMyDocuments && !GameController.gameController.macVersion && !GameController.gameController.linuxVersion && !GameController.gameController.usingUWP) { str = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/" + GameController.gameController.dataFolder; } BinaryFormatter binaryFormatter = new BinaryFormatter(); using (FileStream fileStream = File.Open(str + text, FileMode.Open)) unlockSaveData = (UnlockSaveData)binaryFormatter.Deserialize(fileStream); } __instance.tempUnlocks = unlockSaveData.unlocks; string currentVersion = unlockSaveData.currentVersion; if (currentVersion != GameController.gameController.version && (__instance.buildsToBeCleared.Contains(currentVersion) || currentVersion == null)) { __instance.tempUnlocks.Clear(); } if (currentVersion != null) { GameController.gameController.sessionDataBig.highScores = unlockSaveData.highScores; GameController.gameController.sessionDataBig.customCharacterSlots = unlockSaveData.customCharacterSlots; if (GameController.gameController.sessionDataBig.customCharacterSlots == null) { GameController.gameController.sessionDataBig.customCharacterSlots = new List <string>(); GameController.gameController.sessionDataBig.customCharacterSlotsDetails = new List <SaveCharacterData>(); for (int i = 0; i < 16; i++) { GameController.gameController.sessionDataBig.customCharacterSlots.Add(""); GameController.gameController.sessionDataBig.customCharacterSlotsDetails.Add(new SaveCharacterData()); } } else if (GameController.gameController.sessionDataBig.customCharacterSlots.Count == 8) { for (int j = 0; j < 8; j++) { GameController.gameController.sessionDataBig.customCharacterSlots.Add(""); GameController.gameController.sessionDataBig.customCharacterSlotsDetails.Add(new SaveCharacterData()); } } GameController.gameController.sessionDataBig.storedItem = unlockSaveData.storedItem; GameController.gameController.sessionDataBig.storedItem2 = unlockSaveData.storedItem2; GameController.gameController.sessionDataBig.storedItem3 = unlockSaveData.storedItem3; GameController.gameController.sessionDataBig.storedItem4 = unlockSaveData.storedItem4; GameController.gameController.sessionDataBig.storedItem5 = unlockSaveData.storedItem5; GameController.gameController.sessionDataBig.totalDeaths = unlockSaveData.totalDeaths; GameController.gameController.sessionDataBig.totalWins = unlockSaveData.totalWins; GameController.gameController.sessionDataBig.totalGamesPlayed = unlockSaveData.totalGamesPlayed; GameController.gameController.sessionDataBig.nuggets = unlockSaveData.nuggets; GameController.gameController.sessionDataBig.lastDailyRun = unlockSaveData.lastDailyRun; GameController.gameController.sessionDataBig.finishedTutorial = GameController.gameController.specialShowVersion || unlockSaveData.finishedTutorial; GameController.gameController.sessionDataBig.viewedReadThis = unlockSaveData.viewedReadThis; try { for (int k = 0; k < unlockSaveData.loadoutList.Length; k++) { GameController.gameController.sessionDataBig.loadoutList[k] = new List <Unlock>(); if (unlockSaveData.loadoutList[k] != null) { for (int l = 0; l < unlockSaveData.loadoutList[k].Count; l++) { Unlock item = unlockSaveData.loadoutList[k][l]; GameController.gameController.sessionDataBig.loadoutList[k].Add(item); } } } } catch (Exception e) { Debug.LogError("LoadoutList Load Error"); Debug.LogError(e); } if (GameController.gameController.consoleVersion) { try { for (int m = 0; m < unlockSaveData.rewardConfigConsoleList.Length; m++) { GameController.gameController.sessionDataBig.rewardConfigConsoleList[m] = new List <string>(); if (unlockSaveData.rewardConfigConsoleList[m] != null) { for (int n = 0; n < unlockSaveData.rewardConfigConsoleList[m].Count; n++) { string item2 = unlockSaveData.rewardConfigConsoleList[m][n]; GameController.gameController.sessionDataBig.rewardConfigConsoleList[m].Add(item2); } } } for (int num = 0; num < unlockSaveData.traitConfigConsoleList.Length; num++) { GameController.gameController.sessionDataBig.traitConfigConsoleList[num] = new List <string>(); if (unlockSaveData.traitConfigConsoleList[num] != null) { for (int num2 = 0; num2 < unlockSaveData.traitConfigConsoleList[num].Count; num2++) { string item3 = unlockSaveData.traitConfigConsoleList[num][num2]; GameController.gameController.sessionDataBig.traitConfigConsoleList[num].Add(item3); } } } for (int num3 = 0; num3 < unlockSaveData.mutatorConfigConsoleList.Length; num3++) { GameController.gameController.sessionDataBig.mutatorConfigConsoleList[num3] = new List <string>(); if (unlockSaveData.mutatorConfigConsoleList[num3] != null) { for (int num4 = 0; num4 < unlockSaveData.mutatorConfigConsoleList[num3].Count; num4++) { string item4 = unlockSaveData.mutatorConfigConsoleList[num3][num4]; GameController.gameController.sessionDataBig.mutatorConfigConsoleList[num3].Add(item4); } } } } catch (Exception e) { Debug.LogError("ConfigList Load Error"); Debug.LogError(e); } } } __instance.LoadInitialUnlocks(); if (currentVersion != GameController.gameController.version) { __instance.SaveUnlockData(); } return(false); } catch (Exception e) { if (!secondTry && !GameController.gameController.usingUWP && (!GameController.gameController.consoleVersion || GameController.gameController.fakeConsole)) { Debug.LogError("Failed to Load GameUnlocks, Trying Backup"); Debug.LogError(e); __instance.CopyToCorrupted(text, "GameUnlocks.dat", saveSlotText); __instance.LoadUnlockData(true); } else { Debug.LogError("Couldn't load unlock data!"); Debug.LogError(e); __instance.CopyToCorrupted(text, "BackupGameUnlocks2.dat", saveSlotText); __instance.LoadInitialUnlocks(); } return(false); } } if (!secondTry && !GameController.gameController.usingUWP && (!GameController.gameController.consoleVersion || GameController.gameController.fakeConsole)) { Debug.Log("Failed to Load GameUnlocks (File Not Found), Trying Backup"); __instance.LoadUnlockData(true); return(false); } try { UnlockSaveData unlockSaveData2 = new UnlockSaveData(); __instance.LoadInitialUnlocks(); unlockSaveData2.unlocks = GameController.gameController.sessionDataBig.unlocks; unlockSaveData2.highScores = GameController.gameController.sessionDataBig.highScores; unlockSaveData2.customCharacterSlots = GameController.gameController.sessionDataBig.customCharacterSlots; unlockSaveData2.storedItem = GameController.gameController.sessionDataBig.storedItem; unlockSaveData2.storedItem2 = GameController.gameController.sessionDataBig.storedItem2; unlockSaveData2.storedItem3 = GameController.gameController.sessionDataBig.storedItem3; unlockSaveData2.storedItem4 = GameController.gameController.sessionDataBig.storedItem4; unlockSaveData2.storedItem5 = GameController.gameController.sessionDataBig.storedItem5; unlockSaveData2.totalDeaths = GameController.gameController.sessionDataBig.totalDeaths; unlockSaveData2.totalWins = GameController.gameController.sessionDataBig.totalWins; unlockSaveData2.totalGamesPlayed = GameController.gameController.sessionDataBig.totalGamesPlayed; unlockSaveData2.nuggets = GameController.gameController.sessionDataBig.nuggets; unlockSaveData2.lastDailyRun = GameController.gameController.sessionDataBig.lastDailyRun; unlockSaveData2.finishedTutorial = GameController.gameController.sessionDataBig.finishedTutorial; unlockSaveData2.viewedReadThis = GameController.gameController.sessionDataBig.viewedReadThis; unlockSaveData2.currentVersion = GameController.gameController.version; try { unlockSaveData2.loadoutList = new List <Unlock> [30]; for (int num5 = 0; num5 < GameController.gameController.sessionDataBig.loadoutList.Length; num5++) { unlockSaveData2.loadoutList[num5] = new List <Unlock>(); if (GameController.gameController.sessionDataBig.loadoutList[num5] != null) { for (int num6 = 0; num6 < GameController.gameController.sessionDataBig.loadoutList[num5].Count; num6++) { Unlock item5 = GameController.gameController.sessionDataBig.loadoutList[num5][num6]; unlockSaveData2.loadoutList[num5].Add(item5); } } } } catch (Exception e) { Debug.LogError("LoadoutList Save Error 2"); Debug.LogError(e); } if (GameController.gameController.consoleVersion) { try { unlockSaveData2.rewardConfigConsoleList = new List <string> [10]; for (int num7 = 0; num7 < GameController.gameController.sessionDataBig.rewardConfigConsoleList.Length; num7++) { unlockSaveData2.rewardConfigConsoleList[num7] = new List <string>(); if (GameController.gameController.sessionDataBig.rewardConfigConsoleList[num7] != null) { for (int num8 = 0; num8 < GameController.gameController.sessionDataBig.rewardConfigConsoleList[num7].Count; num8++) { string item6 = GameController.gameController.sessionDataBig.rewardConfigConsoleList[num7][num8]; unlockSaveData2.rewardConfigConsoleList[num7].Add(item6); } } } unlockSaveData2.traitConfigConsoleList = new List <string> [10]; for (int num9 = 0; num9 < GameController.gameController.sessionDataBig.traitConfigConsoleList.Length; num9++) { unlockSaveData2.traitConfigConsoleList[num9] = new List <string>(); if (GameController.gameController.sessionDataBig.traitConfigConsoleList[num9] != null) { for (int num10 = 0; num10 < GameController.gameController.sessionDataBig.traitConfigConsoleList[num9].Count; num10++) { string item7 = GameController.gameController.sessionDataBig.traitConfigConsoleList[num9][num10]; unlockSaveData2.traitConfigConsoleList[num9].Add(item7); } } } unlockSaveData2.mutatorConfigConsoleList = new List <string> [10]; for (int num11 = 0; num11 < GameController.gameController.sessionDataBig.mutatorConfigConsoleList.Length; num11++) { unlockSaveData2.mutatorConfigConsoleList[num11] = new List <string>(); if (GameController.gameController.sessionDataBig.mutatorConfigConsoleList[num11] != null) { for (int num12 = 0; num12 < GameController.gameController.sessionDataBig.mutatorConfigConsoleList[num11].Count; num12++) { string item8 = GameController.gameController.sessionDataBig.mutatorConfigConsoleList[num11][num12]; unlockSaveData2.mutatorConfigConsoleList[num11].Add(item8); } } } } catch (Exception e) { Debug.LogError("ConfigList Save Error 2"); Debug.LogError(e); } } if (GameController.gameController.consoleVersion && !GameController.gameController.fakeConsole) { GameController.gameController.consoleFunctions.SaveData(unlockSaveData2, saveSlotText + "GameUnlocks"); } else if (GameController.gameController.usingUWP) { GameController.gameController.uwpFunctions.SaveData(unlockSaveData2, saveSlotText + "GameUnlocks"); } else { string str2 = Application.persistentDataPath; if (GameController.gameController.usingMyDocuments && !GameController.gameController.macVersion && !GameController.gameController.linuxVersion && !GameController.gameController.usingUWP) { str2 = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/" + GameController.gameController.dataFolder; } BinaryFormatter binaryFormatter2 = new BinaryFormatter(); using (FileStream fileStream2 = File.Create(str2 + "/CloudData/" + saveSlotText + "GameUnlocks.dat")) binaryFormatter2.Serialize(fileStream2, unlockSaveData2); if (GameController.gameController.usingGDK) { GameController.gameController.gdkFunctions.SaveData(unlockSaveData2, saveSlotText + "GameUnlocks", binaryFormatter2); } } __instance.LoadUnlockData(false); } catch (Exception e) { Debug.LogError("Couldn't load unlock data!"); Debug.LogError(e); __instance.LoadInitialUnlocks(); } return(false); }
public static IEnumerator SaveEnumerator(Unlocks __instance) { yield return(null); __instance.savingUnlockData = false; if (curSaving) { saveOnNext = true; yield break; } curSaving = true; try { string text = Application.persistentDataPath; if (!GameController.gameController.consoleVersion || GameController.gameController.fakeConsole) { if (GameController.gameController.usingMyDocuments && !GameController.gameController.macVersion && !GameController.gameController.linuxVersion && !GameController.gameController.usingUWP && !GameController.gameController.usingUWP) { text = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/" + GameController.gameController.dataFolder; } Directory.CreateDirectory(text + "/CloudData/"); } SessionDataBig sdb = GameController.gameController.sessionDataBig; UnlockSaveData unlockSaveData = new UnlockSaveData { unlocks = sdb.unlocks, highScores = sdb.highScores, customCharacterSlots = sdb.customCharacterSlots, storedItem = sdb.storedItem, storedItem2 = sdb.storedItem2, storedItem3 = sdb.storedItem3, storedItem4 = sdb.storedItem4, storedItem5 = sdb.storedItem5, totalDeaths = sdb.totalDeaths, totalWins = sdb.totalWins, totalGamesPlayed = sdb.totalGamesPlayed, nuggets = sdb.nuggets + sdb.loadoutNuggetsSpent, lastDailyRun = sdb.lastDailyRun, finishedTutorial = sdb.finishedTutorial, viewedReadThis = sdb.viewedReadThis, currentVersion = GameController.gameController.version, }; try { unlockSaveData.loadoutList = new List <Unlock> [30]; for (int i = 0; i < sdb.loadoutList.Length; i++) { unlockSaveData.loadoutList[i] = new List <Unlock>(); if (sdb.loadoutList[i] != null) { for (int j = 0; j < sdb.loadoutList[i].Count; j++) { Unlock item = sdb.loadoutList[i][j]; unlockSaveData.loadoutList[i].Add(item); } } } } catch (Exception e) { Debug.LogError("LoadoutList Save Error"); Debug.LogError(e); } if (GameController.gameController.consoleVersion) { try { unlockSaveData.rewardConfigConsoleList = new List <string> [10]; unlockSaveData.traitConfigConsoleList = new List <string> [10]; unlockSaveData.mutatorConfigConsoleList = new List <string> [10]; for (int k = 0; k < sdb.rewardConfigConsoleList.Length; k++) { unlockSaveData.rewardConfigConsoleList[k] = new List <string>(); if (sdb.rewardConfigConsoleList[k] != null) { for (int l = 0; l < sdb.rewardConfigConsoleList[k].Count; l++) { string item2 = sdb.rewardConfigConsoleList[k][l]; unlockSaveData.rewardConfigConsoleList[k].Add(item2); } } } for (int m = 0; m < sdb.traitConfigConsoleList.Length; m++) { unlockSaveData.traitConfigConsoleList[m] = new List <string>(); if (sdb.traitConfigConsoleList[m] != null) { for (int n = 0; n < sdb.traitConfigConsoleList[m].Count; n++) { string item3 = sdb.traitConfigConsoleList[m][n]; unlockSaveData.traitConfigConsoleList[m].Add(item3); } } } for (int num = 0; num < sdb.mutatorConfigConsoleList.Length; num++) { unlockSaveData.mutatorConfigConsoleList[num] = new List <string>(); if (sdb.mutatorConfigConsoleList[num] != null) { for (int num2 = 0; num2 < sdb.mutatorConfigConsoleList[num].Count; num2++) { string item4 = sdb.mutatorConfigConsoleList[num][num2]; unlockSaveData.mutatorConfigConsoleList[num].Add(item4); } } } } catch { Debug.LogError("ConfigList Save Error"); } } Debug.Log("SAVE UNLOCK DATA"); string saveSlotText = sdb.GetSaveSlotText(); if (GameController.gameController.consoleVersion && !GameController.gameController.fakeConsole) { GameController.gameController.consoleFunctions.SaveData(unlockSaveData, saveSlotText + "GameUnlocks"); } else if (GameController.gameController.usingUWP) { GameController.gameController.uwpFunctions.SaveData(unlockSaveData, saveSlotText + "GameUnlocks"); } else { if (GameController.gameController.usingUWP) { BinaryFormatter binaryFormatter = new BinaryFormatter(); FileStream fileStream = File.Create(text + "/CloudData/" + saveSlotText + "GameUnlocks.dat"); binaryFormatter.Serialize(fileStream, unlockSaveData); fileStream.Close(); } else { BinaryFormatter binaryFormatter2 = new BinaryFormatter(); FileStream fileStream2 = File.Create(text + "/CloudData/Temp.dat"); if (!File.Exists(text + "/CloudData/" + saveSlotText + "GameUnlocks.dat")) { File.Create(text + "/CloudData/" + saveSlotText + "GameUnlocks.dat").Close(); } binaryFormatter2.Serialize(fileStream2, unlockSaveData); fileStream2.Close(); File.Replace(text + "/CloudData/Temp.dat", text + "/CloudData/" + saveSlotText + "GameUnlocks.dat", text + "/BackupData/" + saveSlotText + "BackupGameUnlocks.dat"); if (GameController.gameController.usingGDK) { GameController.gameController.gdkFunctions.SaveData(unlockSaveData, saveSlotText + "GameUnlocks", binaryFormatter2); } } __instance.StartCoroutine((IEnumerator)unlocksBackupMethod.Invoke(__instance, new object[] { text, saveSlotText, unlockSaveData })); GameController.gameController.steamGog.CloudSave(text + "/CloudData/" + saveSlotText + "GameUnlocks.dat"); } } catch (Exception e) { Debug.LogError("Couldn't save unlock data!"); Debug.LogError(e); } if (saveOnNext) { saveOnNext = false; __instance.StartCoroutine(__instance.SaveUnlockData2()); } curSaving = false; }