diff --git a/src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevos.Leaderboards.cs b/src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevos.Leaderboards.cs index b12e2e3bda..5b1d1a06ce 100644 --- a/src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevos.Leaderboards.cs +++ b/src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevos.Leaderboards.cs @@ -39,7 +39,7 @@ namespace BizHawk.Client.EmuHawk } } - private bool LBoardsActive { get; set; } + private bool LBoardNotifsActive { get; set; } private LBoard CurrentLboard { get; set; } public class LBoard diff --git a/src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevos.Ping.cs b/src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevos.Ping.cs index e34615fe96..adc171222d 100644 --- a/src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevos.Ping.cs +++ b/src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevos.Ping.cs @@ -72,7 +72,7 @@ namespace BizHawk.Client.EmuHawk private void CheckPing() { - if (RichPresenceActive) + if (RichPresenceActive || HardcoreMode) { var len = _lib.rc_runtime_get_richpresence(_runtime, _richPresenceBuffer, (uint)_richPresenceBuffer.Length, _peekcb, IntPtr.Zero, IntPtr.Zero); CurrentRichPresence = Encoding.UTF8.GetString(_richPresenceBuffer, 0, len); diff --git a/src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevos.cs b/src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevos.cs index d55aeb09eb..e2bc2369e3 100644 --- a/src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevos.cs +++ b/src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevos.cs @@ -119,19 +119,20 @@ namespace BizHawk.Client.EmuHawk enableCheevosItem.CheckedChanged += (_, _) => CheevosActive = !CheevosActive; raDropDownItems.Add(enableCheevosItem); - var enableLboardsItem = new ToolStripMenuItem("Enable Leaderboards") + var enableLboardNotifsItem = new ToolStripMenuItem("Enable Leaderboard Notifications") { - Checked = LBoardsActive, + Checked = LBoardNotifsActive, CheckOnClick = true, Enabled = HardcoreMode }; - enableLboardsItem.CheckedChanged += (_, _) => LBoardsActive = !LBoardsActive; - raDropDownItems.Add(enableLboardsItem); + enableLboardNotifsItem.CheckedChanged += (_, _) => LBoardNotifsActive = !LBoardNotifsActive; + raDropDownItems.Add(enableLboardNotifsItem); var enableRichPresenceItem = new ToolStripMenuItem("Enable Rich Presence") { - Checked = RichPresenceActive, - CheckOnClick = true + Checked = RichPresenceActive || HardcoreMode, + CheckOnClick = true, + Enabled = !HardcoreMode }; enableRichPresenceItem.CheckedChanged += (_, _) => RichPresenceActive = !RichPresenceActive; raDropDownItems.Add(enableRichPresenceItem); @@ -153,7 +154,7 @@ namespace BizHawk.Client.EmuHawk ToSoftcoreMode(); } - enableLboardsItem.Enabled = HardcoreMode; + enableLboardNotifsItem.Enabled = HardcoreMode; }; raDropDownItems.Add(enableHardcoreItem); @@ -245,7 +246,7 @@ namespace BizHawk.Client.EmuHawk var config = _getConfig(); CheevosActive = config.RACheevosActive; - LBoardsActive = config.RALBoardsActive; + LBoardNotifsActive = config.RALBoardsActive; RichPresenceActive = config.RARichPresenceActive; _hardcoreMode = config.RAHardcoreMode; EnableSoundEffects = config.RASoundEffects; @@ -314,7 +315,7 @@ namespace BizHawk.Client.EmuHawk var buffer = file.ReadAllBytes(); _lib.rc_runtime_deserialize_progress_sized(_runtime, buffer, (uint)buffer.Length, IntPtr.Zero); } - + private void QuickLoadCallback(object _, BeforeQuickLoadEventArgs e) { if (HardcoreMode) @@ -332,7 +333,7 @@ namespace BizHawk.Client.EmuHawk { var config = _getConfig(); config.RACheevosActive = CheevosActive; - config.RALBoardsActive = LBoardsActive; + config.RALBoardsActive = LBoardNotifsActive; config.RARichPresenceActive = RichPresenceActive; config.RAHardcoreMode = HardcoreMode; config.RASoundEffects = EnableSoundEffects; @@ -527,7 +528,7 @@ namespace BizHawk.Client.EmuHawk } case LibRCheevos.rc_runtime_event_type_t.RC_RUNTIME_EVENT_LBOARD_STARTED: { - if (!LBoardsActive || !HardcoreMode) return; + if (!HardcoreMode) return; var lboard = _gameData.GetLboardById(evt->id); if (!lboard.Invalid) @@ -537,9 +538,13 @@ namespace BizHawk.Client.EmuHawk if (!lboard.Hidden) { CurrentLboard = lboard; - _dialogParent.AddOnScreenMessage("Leaderboard Attempt Started!"); - _dialogParent.AddOnScreenMessage(lboard.Description); - PlaySound(_lboardStartSound); + + if (LBoardNotifsActive) + { + _dialogParent.AddOnScreenMessage("Leaderboard Attempt Started!"); + _dialogParent.AddOnScreenMessage(lboard.Description); + PlaySound(_lboardStartSound); + } } } @@ -547,7 +552,7 @@ namespace BizHawk.Client.EmuHawk } case LibRCheevos.rc_runtime_event_type_t.RC_RUNTIME_EVENT_LBOARD_CANCELED: { - if (!LBoardsActive || !HardcoreMode) return; + if (!HardcoreMode) return; var lboard = _gameData.GetLboardById(evt->id); if (!lboard.Invalid) @@ -559,19 +564,22 @@ namespace BizHawk.Client.EmuHawk CurrentLboard = null; } - _dialogParent.AddOnScreenMessage($"Leaderboard Attempt Failed! ({lboard.Score})"); - _dialogParent.AddOnScreenMessage(lboard.Description); - PlaySound(_lboardFailedSound); + if (LBoardNotifsActive) + { + _dialogParent.AddOnScreenMessage($"Leaderboard Attempt Failed! ({lboard.Score})"); + _dialogParent.AddOnScreenMessage(lboard.Description); + PlaySound(_lboardFailedSound); + } } lboard.SetScore(0); } - + break; } case LibRCheevos.rc_runtime_event_type_t.RC_RUNTIME_EVENT_LBOARD_UPDATED: { - if (!LBoardsActive || !HardcoreMode) return; + if (!HardcoreMode) return; var lboard = _gameData.GetLboardById(evt->id); if (!lboard.Invalid) @@ -583,7 +591,7 @@ namespace BizHawk.Client.EmuHawk } case LibRCheevos.rc_runtime_event_type_t.RC_RUNTIME_EVENT_LBOARD_TRIGGERED: { - if (!LBoardsActive || !HardcoreMode) return; + if (!HardcoreMode) return; var lboard = _gameData.GetLboardById(evt->id); if (!lboard.Invalid) @@ -597,9 +605,12 @@ namespace BizHawk.Client.EmuHawk CurrentLboard = null; } - _dialogParent.AddOnScreenMessage($"Leaderboard Attempt Complete! ({lboard.Score})"); - _dialogParent.AddOnScreenMessage(lboard.Description); - PlaySound(_lboardCompleteSound); + if (LBoardNotifsActive) + { + _dialogParent.AddOnScreenMessage($"Leaderboard Attempt Complete! ({lboard.Score})"); + _dialogParent.AddOnScreenMessage(lboard.Description); + PlaySound(_lboardCompleteSound); + } } }