Skip to content

Commit 1cc5fe0

Browse files
committed
ImGuiManager: Remove duration parameter from OSD messages
Use a type instead.
1 parent 2290f31 commit 1cc5fe0

34 files changed

+605
-666
lines changed

src/core/achievements.cpp

Lines changed: 37 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "bus.h"
1010
#include "cheats.h"
1111
#include "cpu_core.h"
12+
#include "fullscreenui.h"
1213
#include "fullscreenui_widgets.h"
1314
#include "game_list.h"
1415
#include "gpu_thread.h"
@@ -309,7 +310,7 @@ std::span<const Achievements::ActiveChallengeIndicator> Achievements::GetActiveC
309310
void Achievements::ReportError(std::string_view sv)
310311
{
311312
ERROR_LOG(sv);
312-
Host::AddIconOSDWarning(std::string(), ICON_EMOJI_WARNING, std::string(sv), Host::OSD_CRITICAL_ERROR_DURATION);
313+
Host::AddIconOSDMessage(OSDMessageType::Error, std::string(), ICON_EMOJI_WARNING, std::string(sv));
313314
}
314315

315316
template<typename... T>
@@ -1067,10 +1068,9 @@ bool Achievements::IdentifyGame(CDImage* image)
10671068
if (!game_hash.has_value() && !rc_client_is_game_loaded(s_state.client))
10681069
{
10691070
// If we are starting with this game and it's bad, notify the user that this is why.
1070-
Host::AddIconOSDWarning(
1071-
"AchievementsHashFailed", ICON_EMOJI_WARNING,
1072-
TRANSLATE_STR("Achievements", "Failed to read executable from disc. Achievements disabled."),
1073-
Host::OSD_ERROR_DURATION);
1071+
Host::AddIconOSDMessage(OSDMessageType::Error, "AchievementsHashFailed", ICON_EMOJI_WARNING,
1072+
TRANSLATE_STR("Achievements", "Failed to read executable from disc."),
1073+
TRANSLATE_STR("Achievements", "Achievements have been disabled."));
10741074
}
10751075

10761076
s_state.game_path = image ? image->GetPath() : std::string();
@@ -1299,9 +1299,18 @@ void Achievements::DisplayHardcoreDeferredMessage()
12991299
{
13001300
if (g_settings.achievements_hardcore_mode && System::IsValid())
13011301
{
1302-
FullscreenUI::ShowToast(std::string(),
1303-
TRANSLATE_STR("Achievements", "Hardcore mode will be enabled on system reset."),
1304-
Host::OSD_WARNING_DURATION);
1302+
GPUThread::RunOnThread([]() {
1303+
if (FullscreenUI::HasActiveWindow())
1304+
{
1305+
FullscreenUI::ShowToast(OSDMessageType::Info, {},
1306+
TRANSLATE_STR("Achievements", "Hardcore mode will be enabled on system reset."));
1307+
}
1308+
else
1309+
{
1310+
Host::AddIconOSDMessage(OSDMessageType::Info, "AchievementsHardcoreDeferred", ICON_EMOJI_TROPHY,
1311+
TRANSLATE_STR("Achievements", "Hardcore mode will be enabled on system reset."));
1312+
}
1313+
});
13051314
}
13061315
}
13071316

@@ -1631,32 +1640,32 @@ void Achievements::HandleAchievementProgressIndicatorUpdateEvent(const rc_client
16311640

16321641
void Achievements::HandleServerErrorEvent(const rc_client_event_t* event)
16331642
{
1634-
std::string message =
1635-
fmt::format(TRANSLATE_FS("Achievements", "Server error in {}:\n{}"),
1636-
event->server_error->api ? event->server_error->api : "UNKNOWN",
1637-
event->server_error->error_message ? event->server_error->error_message : "UNKNOWN");
1638-
ERROR_LOG(message.c_str());
1639-
Host::AddOSDMessage(std::move(message), Host::OSD_ERROR_DURATION);
1643+
ERROR_LOG("Server error in {}:\n{}", event->server_error->api ? event->server_error->api : "UNKNOWN",
1644+
event->server_error->error_message ? event->server_error->error_message : "UNKNOWN");
1645+
Host::AddIconOSDMessage(OSDMessageType::Error, {}, ICON_EMOJI_WARNING,
1646+
fmt::format(TRANSLATE_FS("Achievements", "Server error in {}"),
1647+
event->server_error->api ? event->server_error->api : "UNKNOWN"),
1648+
event->server_error->error_message ? event->server_error->error_message : "UNKNOWN");
16401649
}
16411650

16421651
void Achievements::HandleServerDisconnectedEvent(const rc_client_event_t* event)
16431652
{
16441653
WARNING_LOG("Server disconnected.");
16451654

1646-
FullscreenUI::ShowToast(
1655+
Host::AddIconOSDMessage(
1656+
OSDMessageType::Error, "AchievementsDisconnected", ICON_EMOJI_WARNING,
16471657
TRANSLATE_STR("Achievements", "Achievements Disconnected"),
16481658
TRANSLATE_STR("Achievements",
1649-
"An unlock request could not be completed. We will keep retrying to submit this request."),
1650-
Host::OSD_ERROR_DURATION);
1659+
"An unlock request could not be completed.\nWe will keep trying to submit this request."));
16511660
}
16521661

16531662
void Achievements::HandleServerReconnectedEvent(const rc_client_event_t* event)
16541663
{
16551664
WARNING_LOG("Server reconnected.");
16561665

1657-
FullscreenUI::ShowToast(TRANSLATE_STR("Achievements", "Achievements Reconnected"),
1658-
TRANSLATE_STR("Achievements", "All pending unlock requests have completed."),
1659-
Host::OSD_INFO_DURATION);
1666+
Host::AddIconOSDMessage(OSDMessageType::Warning, "AchievementsDisconnected", ICON_EMOJI_INFORMATION,
1667+
TRANSLATE_STR("Achievements", "Achievements Reconnected"),
1668+
TRANSLATE_STR("Achievements", "All pending unlock requests have completed."));
16601669
}
16611670

16621671
void Achievements::EnableHardcodeMode(bool display_message, bool display_game_summary)
@@ -1688,10 +1697,11 @@ void Achievements::OnHardcoreModeChanged(bool enabled, bool display_message, boo
16881697

16891698
if (System::IsValid() && display_message)
16901699
{
1691-
FullscreenUI::ShowToast(std::string(),
1692-
enabled ? TRANSLATE_STR("Achievements", "Hardcore mode is now enabled.") :
1693-
TRANSLATE_STR("Achievements", "Hardcore mode is now disabled."),
1694-
Host::OSD_INFO_DURATION);
1700+
Host::AddIconOSDMessage(OSDMessageType::Info, "AchievementsHardcoreModeChanged", ICON_EMOJI_TROPHY,
1701+
enabled ? TRANSLATE_STR("Achievements", "Hardcore Mode Enabled") :
1702+
TRANSLATE_STR("Achievements", "Hardcore Mode Disabled"),
1703+
enabled ? TRANSLATE_STR("Achievements", "Restrictions are now active.") :
1704+
TRANSLATE_STR("Achievements", "Restrictions are no longer active."));
16951705
}
16961706

16971707
if (HasActiveGame() && display_game_summary)
@@ -1964,7 +1974,7 @@ void Achievements::ClientLoginWithTokenCallback(int result, const char* error_me
19641974
if (System::IsValid())
19651975
{
19661976
FullscreenUI::AddNotification(
1967-
"AchievementsLoginFailed", Host::OSD_ERROR_DURATION, "images/warning.svg",
1977+
"AchievementsLoginFailed", 15.0f, "images/warning.svg",
19681978
TRANSLATE_STR("Achievements", "RetroAchievements Login Failed"),
19691979
fmt::format(
19701980
TRANSLATE_FS("Achievements", "Achievement unlocks will not be submitted for this session.\nError: {}"),
@@ -2601,8 +2611,8 @@ void Achievements::RefreshAllProgressCallback(int result, const char* error_mess
26012611

26022612
Host::OnAchievementsAllProgressRefreshed();
26032613

2604-
FullscreenUI::ShowToast({}, TRANSLATE_STR("Achievements", "Updated achievement progress database."),
2605-
Host::OSD_INFO_DURATION);
2614+
FullscreenUI::ShowToast(OSDMessageType::Quick, {},
2615+
TRANSLATE_STR("Achievements", "Updated achievement progress database."));
26062616
}
26072617

26082618
void Achievements::BuildHashDatabase(const rc_client_hash_library_t* hashlib,

src/core/analog_controller.cpp

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -135,12 +135,11 @@ bool AnalogController::DoState(StateWrapper& sw, bool apply_input_state)
135135

136136
if (old_analog_mode != m_analog_mode)
137137
{
138-
Host::AddIconOSDMessage(fmt::format("Controller{}AnalogMode", m_index), ICON_FA_GAMEPAD,
138+
Host::AddIconOSDMessage(OSDMessageType::Quick, fmt::format("Controller{}AnalogMode", m_index), ICON_FA_GAMEPAD,
139139
fmt::format(m_analog_mode ?
140140
TRANSLATE_FS("AnalogController", "Controller {} switched to analog mode.") :
141141
TRANSLATE_FS("AnalogController", "Controller {} switched to digital mode."),
142-
m_index + 1u),
143-
5.0f);
142+
m_index + 1u));
144143
}
145144
}
146145
return true;
@@ -324,10 +323,9 @@ void AnalogController::SetAnalogMode(bool enabled, bool show_message)
324323
if (show_message)
325324
{
326325
Host::AddIconOSDMessage(
327-
fmt::format("Controller{}AnalogMode", m_index), ICON_PF_GAMEPAD_ALT,
326+
OSDMessageType::Quick, fmt::format("Controller{}AnalogMode", m_index), ICON_PF_GAMEPAD_ALT,
328327
m_analog_mode ? fmt::format(TRANSLATE_FS("Controller", "Controller {} switched to analog mode."), m_index + 1u) :
329-
fmt::format(TRANSLATE_FS("Controller", "Controller {} switched to digital mode."), m_index + 1u),
330-
Host::OSD_QUICK_DURATION);
328+
fmt::format(TRANSLATE_FS("Controller", "Controller {} switched to digital mode."), m_index + 1u));
331329
}
332330
}
333331

@@ -336,12 +334,11 @@ void AnalogController::ProcessAnalogModeToggle()
336334
if (m_analog_locked)
337335
{
338336
Host::AddIconOSDMessage(
339-
fmt::format("Controller{}AnalogMode", m_index), ICON_PF_GAMEPAD_ALT,
337+
OSDMessageType::Quick, fmt::format("Controller{}AnalogMode", m_index), ICON_PF_GAMEPAD_ALT,
340338
fmt::format(m_analog_mode ?
341339
TRANSLATE_FS("AnalogController", "Controller {} is locked to analog mode by the game.") :
342340
TRANSLATE_FS("AnalogController", "Controller {} is locked to digital mode by the game."),
343-
m_index + 1u),
344-
Host::OSD_QUICK_DURATION);
341+
m_index + 1u));
345342
}
346343
else
347344
{

src/core/analog_joystick.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ bool AnalogJoystick::DoState(StateWrapper& sw, bool apply_input_state)
6464

6565
if (sw.IsReading() && (old_analog_mode != m_analog_mode))
6666
{
67-
Host::AddIconOSDMessage(
67+
Host::AddIconOSDMessage(OSDMessageType::Quick,
6868
fmt::format("analog_mode_toggle_{}", m_index), ICON_FA_GAMEPAD,
6969
m_analog_mode ? fmt::format(TRANSLATE_FS("Controller", "Controller {} switched to analog mode."), m_index + 1u) :
7070
fmt::format(TRANSLATE_FS("Controller", "Controller {} switched to digital mode."), m_index + 1u));
@@ -237,7 +237,7 @@ void AnalogJoystick::ToggleAnalogMode()
237237
InputManager::SetPadLEDState(m_index, BoolToFloat(m_analog_mode));
238238

239239
INFO_LOG("Joystick {} switched to {} mode.", m_index + 1u, m_analog_mode ? "analog" : "digital");
240-
Host::AddIconOSDMessage(
240+
Host::AddIconOSDMessage(OSDMessageType::Quick,
241241
fmt::format("analog_mode_toggle_{}", m_index), ICON_FA_GAMEPAD,
242242
m_analog_mode ? fmt::format(TRANSLATE_FS("Controller", "Controller {} switched to analog mode."), m_index + 1u) :
243243
fmt::format(TRANSLATE_FS("Controller", "Controller {} switched to digital mode."), m_index + 1u));

src/core/cdrom.cpp

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1017,17 +1017,17 @@ bool CDROM::PrecacheMedia()
10171017
if (s_reader.GetMedia()->HasSubImages() && s_reader.GetMedia()->GetSubImageCount() > 1)
10181018
{
10191019
Host::AddOSDMessage(
1020+
OSDMessageType::Error,
10201021
fmt::format(TRANSLATE_FS("OSDMessage", "CD image preloading not available for multi-disc image '{}'"),
1021-
FileSystem::GetDisplayNameFromPath(s_reader.GetMedia()->GetPath())),
1022-
Host::OSD_ERROR_DURATION);
1022+
FileSystem::GetDisplayNameFromPath(s_reader.GetMedia()->GetPath())));
10231023
return false;
10241024
}
10251025

10261026
FullscreenUI::LoadingScreenProgressCallback callback;
10271027
if (!s_reader.Precache(&callback))
10281028
{
1029-
Host::AddOSDMessage(TRANSLATE_STR("OSDMessage", "Precaching CD image failed, it may be unreliable."),
1030-
Host::OSD_ERROR_DURATION);
1029+
Host::AddOSDMessage(OSDMessageType::Error,
1030+
TRANSLATE_STR("OSDMessage", "Precaching CD image failed, it may be unreliable."));
10311031
return false;
10321032
}
10331033

@@ -3295,11 +3295,10 @@ void CDROM::DoSectorRead()
32953295
// TODO: Queue the next read here and swap the buffer.
32963296
if (!s_reader.WaitForReadToComplete()) [[unlikely]]
32973297
{
3298-
Host::AddIconOSDWarning(
3299-
"DiscReadError", ICON_EMOJI_WARNING,
3300-
TRANSLATE_STR("OSDMessage", "Failed to read sector from disc image. The game will probably crash now.\nYour "
3301-
"dump may be corrupted, or the physical disc is scratched."),
3302-
Host::OSD_CRITICAL_ERROR_DURATION);
3298+
Host::AddIconOSDMessage(
3299+
OSDMessageType::Error, "DiscReadError", ICON_EMOJI_WARNING, TRANSLATE_STR("CDROM", "Disc Read Error"),
3300+
TRANSLATE_STR(
3301+
"CDROM", "The game will probably crash now.\nYour dump may be corrupted, or the physical disc is scratched."));
33033302
StopReadingWithError();
33043303
return;
33053304
}

src/core/cheats.cpp

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1094,24 +1094,22 @@ void Cheats::UpdateActiveCodes(bool reload_enabled_list, bool verbose, bool verb
10941094
{
10951095
System::SetTaint(System::Taint::Patches);
10961096
Host::AddIconOSDMessage(
1097-
"LoadCheats", ICON_FA_BANDAGE,
1098-
TRANSLATE_PLURAL_STR("Cheats", "%n game patches are active.", "OSD Message", s_locals.active_patch_count),
1099-
Host::OSD_INFO_DURATION);
1097+
OSDMessageType::Info, "LoadCheats", ICON_FA_BANDAGE,
1098+
TRANSLATE_PLURAL_STR("Cheats", "%n game patches are active.", "OSD Message", s_locals.active_patch_count));
11001099
}
11011100
if (s_locals.active_cheat_count > 0)
11021101
{
11031102
System::SetTaint(System::Taint::Cheats);
11041103
Host::AddIconOSDMessage(
1105-
"LoadCheats", ICON_EMOJI_WARNING,
1104+
OSDMessageType::Warning, "LoadCheats", ICON_EMOJI_WARNING,
11061105
TRANSLATE_PLURAL_STR("Cheats", "%n cheats are enabled.", "OSD Message", s_locals.active_cheat_count),
1107-
TRANSLATE_STR("Cheats", "This may crash games."), Host::OSD_WARNING_DURATION);
1106+
TRANSLATE_STR("Cheats", "This may crash games."));
11081107
}
11091108
else if (s_locals.active_patch_count == 0)
11101109
{
11111110
Host::RemoveKeyedOSDMessage("LoadCheats");
1112-
Host::AddIconOSDMessage("LoadCheats", ICON_FA_BANDAGE,
1113-
TRANSLATE_STR("Cheats", "No cheats/patches are found or enabled."),
1114-
Host::OSD_INFO_DURATION);
1111+
Host::AddIconOSDMessage(OSDMessageType::Info, "LoadCheats", ICON_FA_BANDAGE,
1112+
TRANSLATE_STR("Cheats", "No cheats/patches are found or enabled."));
11151113
}
11161114
}
11171115

@@ -1139,7 +1137,7 @@ void Cheats::UpdateActiveCodes(bool reload_enabled_list, bool verbose, bool verb
11391137
blocked_cheats_msg.view(), blocked_patches_msg.view()) :
11401138
fmt::format(TRANSLATE_FS("Cheats", "{} disabled by achievements hardcore mode/safe mode."),
11411139
(blocked_cheats > 0) ? blocked_cheats_msg.view() : blocked_patches_msg.view());
1142-
Host::AddIconOSDMessage("LoadCheats", ICON_EMOJI_WARNING, std::move(message), Host::OSD_INFO_DURATION);
1140+
Host::AddIconOSDMessage(OSDMessageType::Warning, "LoadCheats", ICON_EMOJI_WARNING, std::move(message));
11431141
}
11441142
}
11451143
}
@@ -1169,9 +1167,8 @@ bool Cheats::ApplyManualCode(const std::string_view name)
11691167
{
11701168
if (code->IsManuallyActivated() && code->GetName() == name)
11711169
{
1172-
Host::AddIconOSDMessage(code->GetName(), ICON_FA_BANDAGE,
1173-
fmt::format(TRANSLATE_FS("Cheats", "Cheat '{}' applied."), code->GetName()),
1174-
Host::OSD_INFO_DURATION);
1170+
Host::AddIconOSDMessage(OSDMessageType::Quick, code->GetName(), ICON_FA_BANDAGE,
1171+
fmt::format(TRANSLATE_FS("Cheats", "Cheat '{}' applied."), code->GetName()));
11751172
code->Apply();
11761173
return true;
11771174
}
@@ -1480,10 +1477,9 @@ void Cheats::ParseFile(CheatCodeList* dst_list, const std::string_view file_cont
14801477
{
14811478
WARNING_LOG("Failed to parse code ending on line {}: {}", reader.GetCurrentLineNumber(), error.GetDescription());
14821479

1483-
Host::AddIconOSDWarning(fmt::format("cheat_parse_error_{}", code_name), ICON_EMOJI_WARNING,
1480+
Host::AddIconOSDMessage(OSDMessageType::Error, fmt::format("cheat_parse_error_{}", code_name), ICON_EMOJI_WARNING,
14841481
fmt::format("{} '{}':\n{}", TRANSLATE_SV("Cheats", "Failed to parse cheat code"),
1485-
code_name, error.GetDescription()),
1486-
Host::OSD_WARNING_DURATION);
1482+
code_name, error.GetDescription()));
14871483
}
14881484

14891485
next_code_group = {};

0 commit comments

Comments
 (0)