diff --git a/parallel-rdp/interface.cpp b/parallel-rdp/interface.cpp index 20f713a5..5769b8ca 100644 --- a/parallel-rdp/interface.cpp +++ b/parallel-rdp/interface.cpp @@ -103,7 +103,6 @@ static std::vector achievement_challenge_indicators; static Vulkan::ImageHandle achievement_challenge_indicator_image; static Vulkan::ImageHandle achievement_progress_indicator_image; static std::map leaderboard_trackers; -static Vulkan::ImageHandle leaderboard_tracker_image; #define MESSAGE_TIME 3000 // 3 seconds @@ -309,17 +308,15 @@ void rdp_init(void *_window, GFX_INFO _gfx_info, const void *font, message_timer = 0; achievement_challenge_indicators.clear(); + leaderboard_trackers.clear(); achievement_challenge_indicator_image = Vulkan::ImageHandle(); achievement_progress_indicator_image = Vulkan::ImageHandle(); - leaderboard_trackers.clear(); - leaderboard_tracker_image = Vulkan::ImageHandle(); } void rdp_close() { messages = std::queue(); achievement_challenge_indicator_image = Vulkan::ImageHandle(); achievement_progress_indicator_image = Vulkan::ImageHandle(); - leaderboard_tracker_image = Vulkan::ImageHandle(); if (wsi) wsi->end_frame(); @@ -496,8 +493,6 @@ static void render_frame(Vulkan::Device &device) { } } else if (achievement_progress_indicator_image) { draw_indicator(cmd, achievement_progress_indicator_image, vp); - } else if (leaderboard_tracker_image) { - draw_indicator(cmd, leaderboard_tracker_image, vp); } else if (achievement_challenge_indicator_image) { draw_indicator(cmd, achievement_challenge_indicator_image, vp); } @@ -802,25 +797,29 @@ uint64_t rdp_process_commands() { static void update_challenge_indicator() { std::string message; + for (const auto &leaderboard_tracker : leaderboard_trackers) { + message += leaderboard_tracker.second; + message += '\n'; + } + + if (!leaderboard_trackers.empty() && + !achievement_challenge_indicators.empty()) { + message += "---\n"; + } + const auto &v = achievement_challenge_indicators; for (size_t i = 0; i < std::min(v.size(), 5); ++i) { message += v[i]; message += '\n'; } - achievement_challenge_indicator_image = create_message_image( - wsi->get_device(), 0, achievement_challenge_indicator_font, - message.c_str()); -} -static void update_leaderboard_tracker() { - std::string message; - for (const auto &leaderboard_tracker : leaderboard_trackers) { - message += leaderboard_tracker.second; - message += '\n'; + if (message.empty()) { + achievement_challenge_indicator_image = Vulkan::ImageHandle(); + } else { + achievement_challenge_indicator_image = create_message_image( + wsi->get_device(), 0, achievement_challenge_indicator_font, + message.c_str()); } - leaderboard_tracker_image = create_message_image( - wsi->get_device(), 0, achievement_challenge_indicator_font, - message.c_str()); } void achievement_challenge_indicator_add(const char *achievement_title) { @@ -830,11 +829,7 @@ void achievement_challenge_indicator_add(const char *achievement_title) { void achievement_challenge_indicator_remove(const char *achievement_title) { std::erase(achievement_challenge_indicators, achievement_title); - if (achievement_challenge_indicators.empty()) { - achievement_challenge_indicator_image = Vulkan::ImageHandle(); - } else { - update_challenge_indicator(); - } + update_challenge_indicator(); } void achievement_progress_add(const char *achievement_title, @@ -850,16 +845,11 @@ void achievement_progress_remove() { void leaderboard_tracker_add(uint32_t id, const char *title, const char *display) { - std::string message = std::format("{}: {}", title, display); - leaderboard_trackers[id] = message; - update_leaderboard_tracker(); + leaderboard_trackers[id] = std::format("{}: {}", title, display); + update_challenge_indicator(); } void leaderboard_tracker_remove(uint32_t id) { leaderboard_trackers.erase(id); - if (leaderboard_trackers.empty()) { - leaderboard_tracker_image = Vulkan::ImageHandle(); - } else { - update_leaderboard_tracker(); - } + update_challenge_indicator(); }