|
9 | 9 | #include "bus.h" |
10 | 10 | #include "cheats.h" |
11 | 11 | #include "cpu_core.h" |
| 12 | +#include "fullscreenui.h" |
12 | 13 | #include "fullscreenui_widgets.h" |
13 | 14 | #include "game_list.h" |
14 | 15 | #include "gpu_thread.h" |
@@ -309,7 +310,7 @@ std::span<const Achievements::ActiveChallengeIndicator> Achievements::GetActiveC |
309 | 310 | void Achievements::ReportError(std::string_view sv) |
310 | 311 | { |
311 | 312 | 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)); |
313 | 314 | } |
314 | 315 |
|
315 | 316 | template<typename... T> |
@@ -1067,10 +1068,9 @@ bool Achievements::IdentifyGame(CDImage* image) |
1067 | 1068 | if (!game_hash.has_value() && !rc_client_is_game_loaded(s_state.client)) |
1068 | 1069 | { |
1069 | 1070 | // 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.")); |
1074 | 1074 | } |
1075 | 1075 |
|
1076 | 1076 | s_state.game_path = image ? image->GetPath() : std::string(); |
@@ -1299,9 +1299,18 @@ void Achievements::DisplayHardcoreDeferredMessage() |
1299 | 1299 | { |
1300 | 1300 | if (g_settings.achievements_hardcore_mode && System::IsValid()) |
1301 | 1301 | { |
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 | + }); |
1305 | 1314 | } |
1306 | 1315 | } |
1307 | 1316 |
|
@@ -1631,32 +1640,32 @@ void Achievements::HandleAchievementProgressIndicatorUpdateEvent(const rc_client |
1631 | 1640 |
|
1632 | 1641 | void Achievements::HandleServerErrorEvent(const rc_client_event_t* event) |
1633 | 1642 | { |
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"); |
1640 | 1649 | } |
1641 | 1650 |
|
1642 | 1651 | void Achievements::HandleServerDisconnectedEvent(const rc_client_event_t* event) |
1643 | 1652 | { |
1644 | 1653 | WARNING_LOG("Server disconnected."); |
1645 | 1654 |
|
1646 | | - FullscreenUI::ShowToast( |
| 1655 | + Host::AddIconOSDMessage( |
| 1656 | + OSDMessageType::Error, "AchievementsDisconnected", ICON_EMOJI_WARNING, |
1647 | 1657 | TRANSLATE_STR("Achievements", "Achievements Disconnected"), |
1648 | 1658 | 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.")); |
1651 | 1660 | } |
1652 | 1661 |
|
1653 | 1662 | void Achievements::HandleServerReconnectedEvent(const rc_client_event_t* event) |
1654 | 1663 | { |
1655 | 1664 | WARNING_LOG("Server reconnected."); |
1656 | 1665 |
|
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.")); |
1660 | 1669 | } |
1661 | 1670 |
|
1662 | 1671 | void Achievements::EnableHardcodeMode(bool display_message, bool display_game_summary) |
@@ -1688,10 +1697,11 @@ void Achievements::OnHardcoreModeChanged(bool enabled, bool display_message, boo |
1688 | 1697 |
|
1689 | 1698 | if (System::IsValid() && display_message) |
1690 | 1699 | { |
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.")); |
1695 | 1705 | } |
1696 | 1706 |
|
1697 | 1707 | if (HasActiveGame() && display_game_summary) |
@@ -1964,7 +1974,7 @@ void Achievements::ClientLoginWithTokenCallback(int result, const char* error_me |
1964 | 1974 | if (System::IsValid()) |
1965 | 1975 | { |
1966 | 1976 | FullscreenUI::AddNotification( |
1967 | | - "AchievementsLoginFailed", Host::OSD_ERROR_DURATION, "images/warning.svg", |
| 1977 | + "AchievementsLoginFailed", 15.0f, "images/warning.svg", |
1968 | 1978 | TRANSLATE_STR("Achievements", "RetroAchievements Login Failed"), |
1969 | 1979 | fmt::format( |
1970 | 1980 | 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 |
2601 | 2611 |
|
2602 | 2612 | Host::OnAchievementsAllProgressRefreshed(); |
2603 | 2613 |
|
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.")); |
2606 | 2616 | } |
2607 | 2617 |
|
2608 | 2618 | void Achievements::BuildHashDatabase(const rc_client_hash_library_t* hashlib, |
|
0 commit comments