Beispiel #1
0
        public static void Postfix(SaveSlotType gameMode, string name)
        {
            string data = SaveDataManager.Serialize();

            SaveGameSlots.SaveDataToSlot(gameMode, SaveGameSystem.m_CurrentEpisode, SaveGameSystem.m_CurrentGameId, name, "global" + SaveDataManager.DATA_FILENAME_SUFFIX, data);
            SaveDataManager.Clear();
        }
Beispiel #2
0
            private static void Postfix(string name)
            {
                string json = SaveGameSlots.LoadDataFromSlot(name, SAVE_SLOT_NAME);

                if (string.IsNullOrEmpty(json))
                {
                    return;
                }

                HungerRevamped hungerRevamped = HungerRevamped.Instance;

                JSON.Load(json).Populate(saveDataProxy);

                hungerRevamped.storedCalories     = saveDataProxy.storedCalories + Tuning.defaultStoredCalories;
                hungerRevamped.wellFedHungerScore = saveDataProxy.wellFedHungerScore;
                hungerRevamped.deferredFoodPoisonings.Clear();
                if (saveDataProxy.deferredFoodPoisonings != null)
                {
                    hungerRevamped.deferredFoodPoisonings.AddRange(saveDataProxy.deferredFoodPoisonings);
                }

                Hunger hunger = GameManager.GetHungerComponent();

                hunger.m_CurrentReserveCalories = Mathf.Min(hunger.m_CurrentReserveCalories, hunger.m_MaxReserveCalories);
            }
Beispiel #3
0
            public static void Postfix(SaveSlotType gameMode, string name)
            {
                SaveProxy proxy = new SaveProxy();

                proxy.data = MelonLoader.TinyJSON.JSON.Dump(ModHealthManager.GetData());
                SaveGameSlots.SaveDataToSlot(gameMode, SaveGameSystem.m_CurrentEpisode, SaveGameSystem.m_CurrentGameId, name, "ModHealthManager", MelonLoader.TinyJSON.JSON.Dump(proxy));
            }
        public static void Postfix(string name)
        {
            string    serializedProxy = SaveGameSlots.LoadDataFromSlot(name, "ModHealthManager");
            SaveProxy proxy           = Utils.DeserializeObject <SaveProxy>(serializedProxy);

            ModHealthManager.SetData(GetData(proxy));
        }
Beispiel #5
0
        internal static void LoadRepairs(string saveName, string sceneSaveName)
        {
            System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
            stopwatch.Start();

            repairedContainers.Clear();

            string             saveProxyData            = SaveGameSlots.LoadDataFromSlot(saveName, sceneSaveName + REPAIRED_CONTAINERS_SUFFIX);
            RepairedContainers loadedRepairedContainers = DeserializeSaveProxy <RepairedContainers>(saveProxyData);

            if (loadedRepairedContainers == null)
            {
                loadedRepairedContainers = new RepairedContainers();
            }

            foreach (RepairedContainer eachRepairedContainer in loadedRepairedContainers.containers)
            {
                if (eachRepairedContainer.scene == GameManager.m_ActiveScene)
                {
                    RestoreRepairedContainer(eachRepairedContainer);
                }
            }

            stopwatch.Stop();
            Log("Loaded " + loadedRepairedContainers.containers.Count + " repair(s) for scene '" + GameManager.m_ActiveScene + "' in " + stopwatch.ElapsedMilliseconds + " ms");
        }
Beispiel #6
0
            static void SaveGameSystem_LoadSceneData_Prefix(string name, string sceneSaveName)
            {
                $"Loading scene {name}:{sceneSaveName}".logDbg();
                string text = SaveGameSlots.LoadDataFromSlot(name, $"{sceneSaveName}-{savename}");

                initContainersInfo(text == null? null: JsonConvert.DeserializeObject <MovedContainersInfo>(text));
            }
Beispiel #7
0
            static void SaveGameSystem_SaveSceneData_Prefix(SaveSlotType gameMode, string name, string sceneSaveName)
            {
                $"Saving scene {name}:{sceneSaveName}".logDbg();
                string text = JsonConvert.SerializeObject(info);

                SaveGameSlots.SaveDataToSlot(gameMode, SaveGameSystem.m_CurrentEpisode, SaveGameSystem.m_CurrentGameId, name, $"{sceneSaveName}-{savename}", text);
            }
Beispiel #8
0
            static void SaveGameSystem_RestoreGlobalData_Prefix(string name)
            {
                $"SaveGameSystem.RestoreGlobalData {name}".logDbg();
                string text          = SaveGameSlots.LoadDataFromSlot(name, savename);
                string containerType = text == null? null: JsonConvert.DeserializeObject <GlobalSaveData>(text).pickedContainerType;

                pickUpContainer(containerType);
            }
        public static void Postfix(SaveSlotType gameMode, string name)
        {
            SaveProxy proxy = new SaveProxy();

            proxy.data = Utils.SerializeObject(ModHealthManager.GetData());

            SaveGameSlots.SaveDataToSlot(gameMode, SaveGameSystem.m_CurrentEpisode, SaveGameSystem.m_CurrentGameId, name, "ModHealthManager", Utils.SerializeObject(proxy));
        }
Beispiel #10
0
        internal static void SaveData(SaveSlotType gameMode, string name)
        {
            string data = JSON.Dump(MD, EncodeOptions.NoTypeHints);

            SaveGameSlots.SaveDataToSlot(gameMode, SaveGameSystem.m_CurrentEpisode, SaveGameSystem.m_CurrentGameId, name + "d", SAVE_NAME, data);
            data = JSON.Dump(MBD, EncodeOptions.NoTypeHints);
            SaveGameSlots.SaveDataToSlot(gameMode, SaveGameSystem.m_CurrentEpisode, SaveGameSystem.m_CurrentGameId, name + "b", SAVE_NAME, data);
        }
Beispiel #11
0
        internal static void LoadData(string name)
        {
            string data = SaveGameSlots.LoadDataFromSlot(name, SAVE_FILE_NAME);

            if (data != null)
            {
                FishingHoles.deserialize(data);
            }
        }
Beispiel #12
0
        internal static void SaveRepairs(SaveSlotType gameMode, string saveName, string sceneSaveName)
        {
            string saveProxyData = Utils.SerializeObject(new SaveProxy()
            {
                data = Utils.SerializeObject(repairedContainers)
            });

            SaveGameSlots.SaveDataToSlot(gameMode, SaveGameSystem.m_CurrentEpisode, SaveGameSystem.m_CurrentGameId, saveName, sceneSaveName + REPAIRED_CONTAINERS_SUFFIX, saveProxyData);
        }
Beispiel #13
0
            static void SaveGameSystem_SaveGlobalData_Postfix(SaveSlotType gameMode, string name)
            {
                $"SaveGameSystem.SaveGlobalData {name}".logDbg();
                string text = JsonConvert.SerializeObject(new GlobalSaveData()
                {
                    pickedContainerType = pickedContainerType
                });

                SaveGameSlots.SaveDataToSlot(gameMode, SaveGameSystem.m_CurrentEpisode, SaveGameSystem.m_CurrentGameId, name, savename, text);
            }
Beispiel #14
0
        internal static void SaveData(SaveSlotType gameMode, string saveSlotName)
        {
            SaveData saveData = new SaveData();

            saveData.PreferredStruggleWeapon = PreferredStruggleWeaponId;

            string json = Utils.SerializeObject(saveData);

            SaveGameSlots.SaveDataToSlot(gameMode, SaveGameSystem.m_CurrentEpisode, SaveGameSystem.m_CurrentGameId, saveSlotName, SAVE_SLOT_NAME, json);
        }
Beispiel #15
0
            public static void Postfix(string name)
            {
                string    serializedProxy = SaveGameSlots.LoadDataFromSlot(name, "ModHealthManager");
                SaveProxy proxy           = new SaveProxy();

                if (!string.IsNullOrEmpty(serializedProxy))
                {
                    proxy = MelonLoader.TinyJSON.JSON.Load(serializedProxy).Make <SaveProxy>();
                }
                ModHealthManager.SetData(GetData(proxy));
            }
Beispiel #16
0
            private static void Postfix(SaveSlotType gameMode, string name)
            {
                HungerRevamped hungerRevamped = HungerRevamped.Instance;

                saveDataProxy.storedCalories         = hungerRevamped.storedCalories - Tuning.defaultStoredCalories;
                saveDataProxy.wellFedHungerScore     = hungerRevamped.wellFedHungerScore;
                saveDataProxy.deferredFoodPoisonings = hungerRevamped.deferredFoodPoisonings.ToArray();

                string json = JSON.Dump(saveDataProxy, EncodeOptions.NoTypeHints);

                SaveGameSlots.SaveDataToSlot(gameMode, SaveGameSystem.m_CurrentEpisode, SaveGameSystem.m_CurrentGameId, name, SAVE_SLOT_NAME, json);
            }
        public static void Prefix(string name)
        {
            //return;
            //Logger.LogWarning("Loading data from slot '{0}' for scene '{1}'", name, "global");
            string filename = "global" + SaveDataManager.DATA_FILENAME_SUFFIX;
            //Logger.Log("Filename: '{0}'", filename);
            string text = SaveGameSlots.LoadDataFromSlot(name, filename);

            //if (text is null) Logger.LogError("Found no data in the slot!");
            //else Logger.Log(text);
            SaveDataManager.Deserialize(text);
        }
        public static void Postfix(SaveSlotType gameMode, string name)
        {
            //Logger.LogWarning("Saving data to slot '{0}' for scene '{1}' in '{2}' mode", name, "global", gameMode);
            string filename = "global" + SaveDataManager.DATA_FILENAME_SUFFIX;
            //Logger.Log("Filename: '{0}'", filename);
            string data = SaveDataManager.Serialize();
            //if (data != null) Logger.LogWarning(data);
            //else Logger.LogError("Data to save was null!");
            bool globalSuccess = SaveGameSlots.SaveDataToSlot(gameMode, SaveGameSystem.m_CurrentEpisode, SaveGameSystem.m_CurrentGameId, name, filename, data);

            //Logger.Log(globalSuccess.ToString());
            SaveDataManager.Clear();
        }
Beispiel #19
0
        internal static void LoadData(string saveSlotName)
        {
            string json = SaveGameSlots.LoadDataFromSlot(saveSlotName, SAVE_SLOT_NAME);

            if (string.IsNullOrEmpty(json))
            {
                PreferredStruggleWeaponId = 0;
                return;
            }

            SaveData saveData = Utils.DeserializeObject <SaveData>(json);

            PreferredStruggleWeaponId = saveData.PreferredStruggleWeapon;
        }
Beispiel #20
0
        static void dumpSaveSlot(string slotName)
        {
            if (SaveGameSlots.GetSaveSlotFromName(slotName) is not SlotData slotData)
            {
                return;
            }

            foreach (var key in slotData.m_Dict.Keys)
            {
                string slotStr          = SaveGameSlots.LoadDataFromSlot(slotName, key);
                string slotStrFormatted = JsonConvert.SerializeObject(JsonConvert.DeserializeObject(slotStr), new JsonSerializerSettings()
                {
                    Formatting = Formatting.Indented
                });
                slotStrFormatted.saveToFile($"{PersistentDataPath.m_Path}\\saves-dump\\{slotName}-{key}.json");
            }
        }
Beispiel #21
0
        internal static void LoadData(string name)
        {
            FAD.Clear();
            fireFixed.Clear();
            string data = SaveGameSlots.LoadDataFromSlot(name, SAVE_NAME);

            if (!string.IsNullOrEmpty(data))
            {
                MelonLogger.Log("JSON loaded " + data);
                var foo = JSON.Load(data);
                foreach (var entry in foo as ProxyObject)
                {
                    FireAddonsData lFAD = new FireAddonsData();
                    entry.Value.Populate(lFAD);
                    FAD.Add(entry.Key, lFAD);
                }
            }
        }
Beispiel #22
0
        internal static void LoadData(string name)
        {
            MD.Clear();
            MBD.Clear();
            string data = SaveGameSlots.LoadDataFromSlot(name + "d", SAVE_NAME);

            if (!string.IsNullOrEmpty(data))
            {
                //MelonLogger.Log("JSON loaded " + data);
                var foo = JSON.Load(data);
                foreach (var entry in foo as ProxyObject)
                {
                    MooseData lMD = new MooseData();
                    entry.Value.Populate(lMD);
                    MD.Add(entry.Key, lMD);
                }
            }
            data = SaveGameSlots.LoadDataFromSlot(name + "b", SAVE_NAME);
            if (!string.IsNullOrEmpty(data))
            {
                //MelonLogger.Log("JSON loaded " + data);
                var foo = JSON.Load(data);
                foreach (var entry in foo as ProxyObject)
                {
                    MooseBagData lMBD = new MooseBagData();
                    entry.Value.Populate(lMBD);
                    MBD.Add(entry.Key, lMBD);
                }
            }
            // look for items in player inverntory and apply stats
            Inventory inventoryComponent = GameManager.GetInventoryComponent();

            foreach (GearItemObject item in inventoryComponent.m_Items)
            {
                GearItem gi   = item;
                string   guid = Utils.GetGuidFromGameObject(gi.gameObject);
                if (!string.IsNullOrEmpty(guid) && MD.ContainsKey(guid))
                {
                    applyStats(gi, true);
                }
            }
        }
Beispiel #23
0
            public static void Postfix(SaveGameSystem __instance, string name, string sceneSaveName)
            {
                if (InterfaceManager.IsMainMenuActive() || (GameManager.IsOutDoorsScene(GameManager.m_ActiveScene) && !RemoveClutter.notReallyOutdoors.Contains(GameManager.m_ActiveScene)))
                {
                    Debug.Log("[remove-clutter] " + GameManager.m_ActiveScene + " is outdoor scene, mod disabled.");
                    return;
                }


                string text = SaveGameSlots.LoadDataFromSlot(name, sceneSaveName);
                SceneSaveGameFormat saveGameFormat = Utils.DeserializeObject <SceneSaveGameFormat>(text);

                RemoveClutter.sceneBreakDownData = saveGameFormat.m_BreakDownObjectsSerialized;

                //Debug.Log(RemoveClutter.sceneBreakDownData);

                RemoveClutter.PatchSceneObjects();
                RemoveClutter.PatchSceneDecals();

                BreakDown.DeserializeAllAdditive(RemoveClutter.sceneBreakDownData);
            }
Beispiel #24
0
            static void SaveGameSlots_DeleteSlot_Postfix(SlotData slotData)
            {
                $"Deleting save slot {slotData.m_Name}".logDbg();
                if (!Main.config.removeCustomSavesWithOriginal)
                {
                    return;
                }
                $"Trying to delete linked slots".logDbg();
                List <string> linksToRemove = new();

                foreach (var link in slotsConfig.originalSlots)
                {
                    if (link.Value == slotData.m_Name)
                    {
                        linksToRemove.Add(link.Key);
                        SaveGameSlots.DeleteSlot(link.Key);
                    }
                }

                linksToRemove.ForEach(removeSlotInfo);
                updateSlots(SaveGameSlots.GetSaveSlotTypeFromName(slotData.m_Name));
            }
Beispiel #25
0
        public static void Prefix(string name)
        {
            string text = SaveGameSlots.LoadDataFromSlot(name, "global" + SaveDataManager.DATA_FILENAME_SUFFIX);

            SaveDataManager.Deserialize(text);
        }
Beispiel #26
0
 internal static void SaveData(SaveSlotType gameMode, string name)
 {
     SaveGameSlots.SaveDataToSlot(gameMode, SaveGameSystem.m_CurrentEpisode, SaveGameSystem.m_CurrentGameId, name, SAVE_FILE_NAME, FishingHoles.serialize());
 }