private void RegisterGameSaving() { //Save game after stage is loaded On.RoR2.Stage.Start += (orig, self) => { orig(self); if (FirstRunStage) { FirstRunStage = false; return; } SaveGame(); }; //Delete save file when run is over On.RoR2.GameOverController.Awake += (orig, self) => { orig(self); try { var metadata = Save?.SaveFileMeta; if (metadata != null) { File.Delete(metadata.FilePath); SavesMetadata.Remove(metadata); UpdateSavesMetadata(); Save = null; } } catch (Exception e) { Debug.LogError(e); } }; //Save stage RNG before it changed On.RoR2.Run.GenerateStageRNG += (orig, self) => { PreStageRng = new RunRngData(Run.instance); orig(self); }; }
private void RegisterGameLoading() { //Load players and theirs minions On.RoR2.SceneDirector.PopulateScene += (orig, self) => { try { orig(self); } catch { } if (IsLoadingScene) { Save.LoadPlayers(); IsLoadingScene = false; } }; //Replace with custom run load On.RoR2.Run.Start += (orig, self) => { FirstRunStage = true; if (IsLoadingScene) { Save.LoadRun(); Save.LoadArtifacts(); } else { orig(self); } }; //Restore team expirience On.RoR2.TeamManager.Start += (orig, self) => { orig(self); if (IsLoadingScene) { Save.LoadTeam(); } }; //Save game after stage is loaded On.RoR2.Stage.Start += (orig, self) => { orig(self); if (!RoR2Application.isInSinglePlayer) { return; } if (FirstRunStage) { FirstRunStage = false; return; } SaveGame(); }; On.RoR2.GameOverController.Awake += (orig, self) => { orig(self); if (!RoR2Application.isInSinglePlayer) { return; } File.Delete(GetSavePath()); }; On.RoR2.Run.GenerateStageRNG += (orig, self) => { PreStageRng = new RunRngData(Run.instance); orig(self); }; }
private static void RunGenerateStageRNG(On.RoR2.Run.orig_GenerateStageRNG orig, Run self) { PreStageRng = new RunRngData(Run.instance); orig(self); }