summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorLillyJadeKatrin <lilly.kitty.1988@gmail.com>2023-10-07 00:09:47 -0400
committerAdmiral H. Curtiss <pikachu025@gmail.com>2023-10-19 19:21:12 +0200
commitdb784374989e07ce0aaef932443e9a58545fa756 (patch)
treec081f14f909f6451d3d29e3ff1479ee21028831b /Source
parenta3d561fdff551c095ddff13f062daf38bd0f9492 (diff)
Refactored welcome message to render after game start
Split the "welcome" messages letting players know achievements are active into a separate method that gets called (currently) after a number of frames to ensure that the emulator has started properly and has somewhere to display the messages.
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/AchievementManager.cpp58
-rw-r--r--Source/Core/Core/AchievementManager.h3
2 files changed, 39 insertions, 22 deletions
diff --git a/Source/Core/Core/AchievementManager.cpp b/Source/Core/Core/AchievementManager.cpp
index 6b4148a9ed..54671a1388 100644
--- a/Source/Core/Core/AchievementManager.cpp
+++ b/Source/Core/Core/AchievementManager.cpp
@@ -195,32 +195,11 @@ void AchievementManager::LoadGameByFilenameAsync(const std::string& iso_path,
{
std::lock_guard lg{m_lock};
m_is_game_loaded = true;
+ m_framecount = 0;
LoadUnlockData([](ResponseType r_type) {});
ActivateDeactivateAchievements();
ActivateDeactivateLeaderboards();
ActivateDeactivateRichPresence();
- PointSpread spread = TallyScore();
- if (hardcore_mode_enabled)
- {
- OSD::AddMessage(
- fmt::format("You have {}/{} achievements worth {}/{} points", spread.hard_unlocks,
- spread.total_count, spread.hard_points, spread.total_points),
- OSD::Duration::VERY_LONG, OSD::Color::YELLOW,
- (Config::Get(Config::RA_BADGES_ENABLED)) ? DecodeBadgeToOSDIcon(m_game_badge.badge) :
- nullptr);
- OSD::AddMessage("Hardcore mode is ON", OSD::Duration::VERY_LONG, OSD::Color::YELLOW);
- }
- else
- {
- OSD::AddMessage(fmt::format("You have {}/{} achievements worth {}/{} points",
- spread.hard_unlocks + spread.soft_unlocks, spread.total_count,
- spread.hard_points + spread.soft_points, spread.total_points),
- OSD::Duration::VERY_LONG, OSD::Color::CYAN,
- (Config::Get(Config::RA_BADGES_ENABLED)) ?
- DecodeBadgeToOSDIcon(m_game_badge.badge) :
- nullptr);
- OSD::AddMessage("Hardcore mode is OFF", OSD::Duration::VERY_LONG, OSD::Color::CYAN);
- }
}
FetchBadges();
// Reset this to zero so that RP immediately triggers on the first frame
@@ -562,6 +541,14 @@ void AchievementManager::DoFrame()
{
if (!m_is_game_loaded)
return;
+ if (m_framecount == 0x200)
+ {
+ DisplayWelcomeMessage();
+ }
+ if (m_framecount <= 0x200)
+ {
+ m_framecount++;
+ }
Core::RunAsCPUThread([&] {
rc_runtime_do_frame(
&m_runtime,
@@ -1194,6 +1181,33 @@ AchievementManager::PingRichPresence(const RichPresence& rich_presence)
return r_type;
}
+void AchievementManager::DisplayWelcomeMessage()
+{
+ std::lock_guard lg{m_lock};
+ PointSpread spread = TallyScore();
+ if (hardcore_mode_enabled)
+ {
+ OSD::AddMessage(
+ fmt::format("You have {}/{} achievements worth {}/{} points", spread.hard_unlocks,
+ spread.total_count, spread.hard_points, spread.total_points),
+ OSD::Duration::VERY_LONG, OSD::Color::YELLOW,
+ (Config::Get(Config::RA_BADGES_ENABLED)) ? DecodeBadgeToOSDIcon(m_game_badge.badge) :
+ nullptr);
+ OSD::AddMessage("Hardcore mode is ON", OSD::Duration::VERY_LONG, OSD::Color::YELLOW);
+ }
+ else
+ {
+ OSD::AddMessage(fmt::format("You have {}/{} achievements worth {}/{} points",
+ spread.hard_unlocks + spread.soft_unlocks, spread.total_count,
+ spread.hard_points + spread.soft_points, spread.total_points),
+ OSD::Duration::VERY_LONG, OSD::Color::CYAN,
+ (Config::Get(Config::RA_BADGES_ENABLED)) ?
+ DecodeBadgeToOSDIcon(m_game_badge.badge) :
+ nullptr);
+ OSD::AddMessage("Hardcore mode is OFF", OSD::Duration::VERY_LONG, OSD::Color::CYAN);
+ }
+}
+
void AchievementManager::HandleAchievementTriggeredEvent(const rc_runtime_event_t* runtime_event)
{
const auto event_id = runtime_event->id;
diff --git a/Source/Core/Core/AchievementManager.h b/Source/Core/Core/AchievementManager.h
index b5c1eee200..be2469dc9e 100644
--- a/Source/Core/Core/AchievementManager.h
+++ b/Source/Core/Core/AchievementManager.h
@@ -155,6 +155,8 @@ private:
ResponseType SubmitLeaderboard(AchievementId leaderboard_id, int value);
ResponseType PingRichPresence(const RichPresence& rich_presence);
+ void DisplayWelcomeMessage();
+
void HandleAchievementTriggeredEvent(const rc_runtime_event_t* runtime_event);
void HandleAchievementProgressUpdatedEvent(const rc_runtime_event_t* runtime_event);
void HandleLeaderboardStartedEvent(const rc_runtime_event_t* runtime_event);
@@ -178,6 +180,7 @@ private:
u32 m_game_id = 0;
rc_api_fetch_game_data_response_t m_game_data{};
bool m_is_game_loaded = false;
+ u32 m_framecount = 0;
BadgeStatus m_game_badge;
RichPresence m_rich_presence;
time_t m_last_ping_time = 0;