コード例 #1
0
        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);
            };
        }
コード例 #2
0
        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);
            };
        }
コード例 #3
0
 private static void RunGenerateStageRNG(On.RoR2.Run.orig_GenerateStageRNG orig, Run self)
 {
     PreStageRng = new RunRngData(Run.instance);
     orig(self);
 }