コード例 #1
0
        internal void UnhookStuff()
        {
            if (!this.StuffIsHooked)
            {
                return;
            }

            On.Celeste.OuiFileSelectSlot.CreateButtons -= CreateBingoButton;
            On.Monocle.Engine.RenderCore -= this.Render;
            IL.Monocle.Engine.Update     -= HookUpdateEarly;
            Everest.Events.Level.OnCreatePauseMenuButtons -= OnPause;
            Everest.Events.Level.OnExit             -= OnExit;
            On.Celeste.SaveData.Start               -= OnSaveStart;
            On.Celeste.SaveData.InitializeDebugMode -= WipeDebugFile;
            On.Celeste.SaveData.Start               -= WipeObjectiveCache;

            foreach (var detour in this.SpecialHooks)
            {
                detour.Dispose();
            }
            this.SpecialHooks.Clear();

            BingoWatches.UnhookStuff();

            this.StuffIsHooked = false;
        }
コード例 #2
0
        internal void HookStuff()
        {
            if (this.StuffIsHooked)
            {
                return;
            }

            On.Celeste.OuiFileSelectSlot.CreateButtons += CreateBingoButton;
            On.Monocle.Engine.RenderCore += this.Render;
            IL.Monocle.Engine.Update     += HookUpdateEarly;
            Everest.Events.Level.OnCreatePauseMenuButtons += OnPause;
            Everest.Events.Level.OnExit             += OnExit;
            On.Celeste.SaveData.Start               += OnSaveStart;
            On.Celeste.SaveData.InitializeDebugMode += WipeDebugFile;
            On.Celeste.SaveData.Start               += WipeObjectiveCache;

            this.SpecialHooks.Add(new ILHook(typeof(OuiFileSelect).GetMethod("orig_Enter").GetStateMachineTarget(), ReturnToFile));

            BingoWatches.HookStuff();

            this.StuffIsHooked = true;
        }