internal static void TitleMenuPatch(TitleMenu __instance, bool ___isTransitioningButtons) { try { if (___isTransitioningButtons) { return; } string toSpeak = ""; __instance.buttons.ForEach(component => { if (component.containsPoint(Game1.getMouseX(true), Game1.getMouseY(true))) { string name = component.name; string label = component.label; toSpeak = $"{name} {label} Button"; } }); if (__instance.muteMusicButton.containsPoint(Game1.getMouseX(true), Game1.getMouseY(true))) { toSpeak = "Mute Music Button"; } if (__instance.aboutButton.containsPoint(Game1.getMouseX(true), Game1.getMouseY(true))) { toSpeak = "About Button"; } if (__instance.languageButton.containsPoint(Game1.getMouseX(true), Game1.getMouseY(true))) { toSpeak = "Language Button"; } if (__instance.windowedButton.containsPoint(Game1.getMouseX(true), Game1.getMouseY(true))) { toSpeak = "Fullscreen: " + ((Game1.isFullscreen) ? "enabled" : "disabled"); } if (TitleMenu.subMenu != null && __instance.backButton.containsPoint(Game1.getMouseX(true), Game1.getMouseY(true))) { string text = "Back Button"; MainClass.ScreenReader.SayWithChecker(text, true); } // Fix for back button not working using keyboard if (TitleMenu.subMenu is CharacterCustomization && ((CharacterCustomization)TitleMenu.subMenu).backButton.containsPoint(Game1.getMouseX(true), Game1.getMouseY(true))) { // Perform Left Click if (MainClass.Config.LeftClickMainKey.JustPressed()) { __instance.backButtonPressed(); } } if (TitleMenu.subMenu == null && toSpeak != "") { MainClass.ScreenReader.SayWithChecker(toSpeak, true); } } catch (Exception e) { MainClass.ErrorLog($"Unable to narrate Text:\n{e.Message}\n{e.StackTrace}"); } }