Example #1
0
        // Called with saveAsDeathOrQuit=true from StoryGameSession; =false from loading Red's statistics
        internal static SaveState PlayerProgression_GetOrInitiateSaveState(On.PlayerProgression.orig_GetOrInitiateSaveState orig, PlayerProgression self, int saveStateNumber, RainWorldGame game, ProcessManager.MenuSetup setup, bool saveAsDeathOrQuit)
        {
            bool loadedFromStarve = self.currentSaveState == null && self.starvedSaveState != null && self.starvedSaveState.saveStateNumber == saveStateNumber;
            bool loadedFromMemory = loadedFromStarve || (self.currentSaveState != null && self.currentSaveState.saveStateNumber == saveStateNumber);

            getOrInitSavePersLock = true;
            SaveState saveState = orig(self, saveStateNumber, game, setup, saveAsDeathOrQuit);

            getOrInitSavePersLock = false;
            LoadOIsSave(saveState, loadedFromMemory, loadedFromStarve);
            if (saveAsDeathOrQuit)
            {
                SaveOIsPers(true, true);
            }

            return(saveState);
        }
Example #2
0
        private static SaveState PlayerProgression_GetOrInitiateSaveState(On.PlayerProgression.orig_GetOrInitiateSaveState orig, PlayerProgression self, int saveStateNumber, RainWorldGame game, ProcessManager.MenuSetup setup, bool saveAsDeathOrQuit)
        {
            int slot = self.rainWorld.options.saveSlot;
            SlugBaseCharacter ply = PlayerManager.GetCustomPlayer(saveStateNumber);

            if (ply == null)
            {
                return(orig(self, saveStateNumber, game, setup, saveAsDeathOrQuit));
            }


            // Copied from PlayerProgression.GetOrInitiateSaveState

            if (self.currentSaveState == null && self.starvedSaveState != null)
            {
                Debug.Log("LOADING STARVED STATE");
                self.currentSaveState = self.starvedSaveState;
                self.currentSaveState.deathPersistentSaveData.winState.ResetLastShownValues();
                self.starvedSaveState = null;
            }
            if (self.currentSaveState != null && self.currentSaveState.saveStateNumber == saveStateNumber)
            {
                if (saveAsDeathOrQuit)
                {
                    self.SaveDeathPersistentDataOfCurrentState(true, true);
                }
                return(self.currentSaveState);
            }

            // Create a CustomSaveState instance instead
            self.currentSaveState = ply.CreateNewSave(self);

            if (!File.Exists(self.saveFilePath) || !setup.LoadInitCondition)
            {
                self.currentSaveState.LoadGame(string.Empty, game);
            }
            else
            {
                // Read the save state from a separate file instead of from prog lines
                CustomSaveState css = self.currentSaveState as CustomSaveState;
                if (css != null && HasCustomSaveData(ply.Name, slot))
                {
                    string inSave = File.ReadAllText(GetSaveFilePath(ply.Name, slot));
                    self.currentSaveState.LoadGame(inSave, game);
                    if (saveAsDeathOrQuit)
                    {
                        self.SaveDeathPersistentDataOfCurrentState(true, true);
                    }
                    return(self.currentSaveState);
                }

                // By default, load an empty string
                self.currentSaveState.LoadGame(string.Empty, game);
            }
            if (saveAsDeathOrQuit)
            {
                self.SaveDeathPersistentDataOfCurrentState(true, true);
            }
            return(self.currentSaveState);
            // End copied section
        }
 private static SaveState PlayerProgression_GetOrInitiateSaveState(On.PlayerProgression.orig_GetOrInitiateSaveState orig, PlayerProgression self, int saveStateNumber, RainWorldGame game, ProcessManager.MenuSetup setup, bool saveAsDeathOrQuit)
 {
     if (File.Exists(Custom.RootFolderDirectory() + "extraInventory.txt"))
     {
         string text = File.ReadAllText("extraInventory.txt");
         int    size;
         if (int.TryParse(text, out size))
         {
             if (size >= 0)
             {
                 KarmaAppetite_ExtraInventory.MaxSize = size;
             }
         }
     }
     return(orig.Invoke(self, saveStateNumber, game, setup, saveAsDeathOrQuit));
 }