示例#1
0
        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);
        }
示例#2
0
        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;
        }