示例#1
0
        private static void TryRestore()
        {
            On.Celeste.SaveData.Start -= SaveDataOnStart;

            if (origSettings != null)
            {
                Settings.Instance.CopyAllFields(origSettings, true);
                Settings.Instance.ApplyVolumes();
                Settings.Instance.ApplyScreen();
                Settings.Instance.ApplyLanguage();
                (Engine.Scene as Overworld)?.GetUI <OuiMainMenu>()?.CreateButtons();
                origSettings = null;
            }

            if (origAssists != null)
            {
                SaveData.Instance.Assists = origAssists.Value;
                SetCommandHandler.ResetVariants(origAssists.Value);
                origAssists = null;
            }

            if (origModSettings != null)
            {
                foreach (EverestModule module in Everest.Modules)
                {
                    try {
                        if (module?._Settings != null && origModSettings.TryGetValue(module, out object modSettings) && modSettings != null)
                        {
                            bool showHitbox = CelesteTasModule.Settings.ShowHitboxes;

                            if (modSettings is CelesteTasModuleSettings backupTasSettings)
                            {
                                CelesteTasModuleSettings tasSettings = CelesteTasModule.Settings;
                                backupTasSettings.HideTriggerHitboxes       = tasSettings.HideTriggerHitboxes;
                                backupTasSettings.ShowActualCollideHitboxes = tasSettings.ShowActualCollideHitboxes;
                                backupTasSettings.SimplifiedGraphics        = tasSettings.SimplifiedGraphics;
                                backupTasSettings.HideGameplay       = tasSettings.HideGameplay;
                                backupTasSettings.CenterCamera       = tasSettings.CenterCamera;
                                backupTasSettings.InfoHud            = tasSettings.InfoHud;
                                backupTasSettings.InfoCustomTemplate = tasSettings.InfoCustomTemplate;
                                backupTasSettings.RoundPosition      = tasSettings.RoundPosition;
                                backupTasSettings.RoundSpeed         = tasSettings.RoundSpeed;
                                backupTasSettings.RoundVelocity      = tasSettings.RoundVelocity;
                                backupTasSettings.RoundCustomInfo    = tasSettings.RoundCustomInfo;
                            }

                            module._Settings.CopyAllProperties(modSettings);
                            module._Settings.CopyAllFields(modSettings, true);

                            CelesteTasModule.Settings.ShowHitboxes = showHitbox;
                        }
                    } catch (NullReferenceException) {
                        // maybe caused by hot reloading
                    }
                }

                origModSettings = null;
            }
        }
        public static void TryRestore()
        {
            On.Celeste.SaveData.Start -= SaveDataOnStart;

            if (origSettings != null)
            {
                Settings.Instance.CopyAllFields(origSettings);
                origSettings = null;
            }

            if (origAssists != null)
            {
                SaveData.Instance.Assists = origAssists.Value;
                origAssists = null;
            }

            if (origModSettings != null)
            {
                foreach (EverestModule module in Everest.Modules)
                {
                    if (module._Settings != null && origModSettings.TryGetValue(module, out object modSettings) && modSettings != null)
                    {
                        if (modSettings is CelesteTasModuleSettings backupTasSettings)
                        {
                            CelesteTasModuleSettings tasSettings = CelesteTasModule.Settings;
                            backupTasSettings.HideTriggerHitboxes = tasSettings.HideTriggerHitboxes;
                            backupTasSettings.SimplifiedGraphics  = tasSettings.SimplifiedGraphics;
                            backupTasSettings.CenterCamera        = tasSettings.CenterCamera;
                        }

                        bool showHitbox = GameplayRendererExt.RenderDebug;

                        module._Settings.CopyAllProperties(modSettings);
                        module._Settings.CopyAllFields(modSettings);

                        GameplayRendererExt.RenderDebug = showHitbox;
                    }
                }

                origModSettings = null;
            }
        }