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; }
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; }