diff --git a/include/ui/game_screen.hpp b/include/ui/game_screen.hpp index 660a25ec..a27f1808 100644 --- a/include/ui/game_screen.hpp +++ b/include/ui/game_screen.hpp @@ -371,6 +371,7 @@ private: std::vector chatBubbles_; bool chatBubbleCallbackSet_ = false; bool levelUpCallbackSet_ = false; + bool achievementCallbackSet_ = false; // Mail compose state char mailRecipientBuffer_[256] = ""; diff --git a/src/ui/game_screen.cpp b/src/ui/game_screen.cpp index 408a1457..5acec3f6 100644 --- a/src/ui/game_screen.cpp +++ b/src/ui/game_screen.cpp @@ -214,10 +214,19 @@ void GameScreen::render(game::GameHandler& gameHandler) { gameHandler.setLevelUpCallback([this](uint32_t newLevel) { levelUpFlashAlpha_ = 1.0f; levelUpDisplayLevel_ = newLevel; + triggerDing(newLevel); }); levelUpCallbackSet_ = true; } + // Set up achievement toast callback (once) + if (!achievementCallbackSet_) { + gameHandler.setAchievementEarnedCallback([this](uint32_t id, const std::string& name) { + triggerAchievementToast(id, name); + }); + achievementCallbackSet_ = true; + } + // Apply UI transparency setting float prevAlpha = ImGui::GetStyle().Alpha; ImGui::GetStyle().Alpha = uiOpacity_;