diff --git a/src/core/achievements.cpp b/src/core/achievements.cpp index 3e00acfbf..28846b106 100644 --- a/src/core/achievements.cpp +++ b/src/core/achievements.cpp @@ -1008,7 +1008,7 @@ void Achievements::DisplayAchievementSummary() if (s_game_summary.num_core_achievements > 0) { summary = fmt::format( - TRANSLATE_FS("Achievements", "You have unlocked {} of {} achievements, and earned {} of {} points."), + TRANSLATE_FS("Achievements", "You have unlocked {0} of {1} achievements, and earned {2} of {3} points."), s_game_summary.num_unlocked_achievements, s_game_summary.num_core_achievements, s_game_summary.points_unlocked, s_game_summary.points_core); } @@ -2184,17 +2184,24 @@ void Achievements::DrawAchievementsWindow() ImGui::PopFont(); const ImRect summary_bb(ImVec2(left, top), ImVec2(right, top + g_medium_font->FontSize)); - if (s_game_summary.num_unlocked_achievements == s_game_summary.num_core_achievements) + if (s_game_summary.num_core_achievements > 0) { - text.fmt(TRANSLATE_FS("Achievements", "You have unlocked all achievements and earned {} points!"), - s_game_summary.points_unlocked); + if (s_game_summary.num_unlocked_achievements == s_game_summary.num_core_achievements) + { + text.fmt(TRANSLATE_FS("Achievements", "You have unlocked all achievements and earned {} points!"), + s_game_summary.points_unlocked); + } + else + { + text.fmt(TRANSLATE_FS("Achievements", + "You have unlocked {0} of {1} achievements, earning {2} of {3} possible points."), + s_game_summary.num_unlocked_achievements, s_game_summary.num_core_achievements, + s_game_summary.points_unlocked, s_game_summary.points_core); + } } else { - text.fmt( - TRANSLATE_FS("Achievements", "You have unlocked {} of {} achievements, earning {} of {} possible points."), - s_game_summary.num_unlocked_achievements, s_game_summary.num_core_achievements, - s_game_summary.points_unlocked, s_game_summary.points_core); + text.assign(TRANSLATE_SV("Achievements", "This game has no achievements.")); } top += g_medium_font->FontSize + spacing; @@ -2204,23 +2211,26 @@ void Achievements::DrawAchievementsWindow() ImVec2(0.0f, 0.0f), &summary_bb); ImGui::PopFont(); - const float progress_height = ImGuiFullscreen::LayoutScale(20.0f); - const ImRect progress_bb(ImVec2(left, top), ImVec2(right, top + progress_height)); - const float fraction = static_cast(s_game_summary.num_unlocked_achievements) / - static_cast(s_game_summary.num_core_achievements); - dl->AddRectFilled(progress_bb.Min, progress_bb.Max, ImGui::GetColorU32(ImGuiFullscreen::UIPrimaryDarkColor)); - dl->AddRectFilled(progress_bb.Min, - ImVec2(progress_bb.Min.x + fraction * progress_bb.GetWidth(), progress_bb.Max.y), - ImGui::GetColorU32(ImGuiFullscreen::UISecondaryColor)); + if (s_game_summary.num_core_achievements > 0) + { + const float progress_height = ImGuiFullscreen::LayoutScale(20.0f); + const ImRect progress_bb(ImVec2(left, top), ImVec2(right, top + progress_height)); + const float fraction = static_cast(s_game_summary.num_unlocked_achievements) / + static_cast(s_game_summary.num_core_achievements); + dl->AddRectFilled(progress_bb.Min, progress_bb.Max, ImGui::GetColorU32(ImGuiFullscreen::UIPrimaryDarkColor)); + dl->AddRectFilled(progress_bb.Min, + ImVec2(progress_bb.Min.x + fraction * progress_bb.GetWidth(), progress_bb.Max.y), + ImGui::GetColorU32(ImGuiFullscreen::UISecondaryColor)); - text.fmt("{}%", static_cast(std::round(fraction * 100.0f))); - text_size = ImGui::CalcTextSize(text.c_str(), text.end_ptr()); - const ImVec2 text_pos(progress_bb.Min.x + ((progress_bb.Max.x - progress_bb.Min.x) / 2.0f) - (text_size.x / 2.0f), - progress_bb.Min.y + ((progress_bb.Max.y - progress_bb.Min.y) / 2.0f) - - (text_size.y / 2.0f)); - dl->AddText(g_medium_font, g_medium_font->FontSize, text_pos, - ImGui::GetColorU32(ImGuiFullscreen::UIPrimaryTextColor), text.c_str(), text.end_ptr()); - top += progress_height + spacing; + text.fmt("{}%", static_cast(std::round(fraction * 100.0f))); + text_size = ImGui::CalcTextSize(text.c_str(), text.end_ptr()); + const ImVec2 text_pos( + progress_bb.Min.x + ((progress_bb.Max.x - progress_bb.Min.x) / 2.0f) - (text_size.x / 2.0f), + progress_bb.Min.y + ((progress_bb.Max.y - progress_bb.Min.y) / 2.0f) - (text_size.y / 2.0f)); + dl->AddText(g_medium_font, g_medium_font->FontSize, text_pos, + ImGui::GetColorU32(ImGuiFullscreen::UIPrimaryTextColor), text.c_str(), text.end_ptr()); + top += progress_height + spacing; + } } } ImGuiFullscreen::EndFullscreenWindow();