From 8169f5d5c002acd83091a88782bd1d9a0b6473b3 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Tue, 17 Mar 2026 12:37:19 -0700 Subject: [PATCH] feat: add audio feedback for level-up, achievements, duels, group invites, and inventory errors Wire up remaining UISoundManager calls for milestone and notification events: - playLevelUp() on SMSG_LEVELUP_INFO - playAchievementAlert() on SMSG_ACHIEVEMENT_EARNED (self only) - playTargetSelect() on duel request and group invite - playError() on inventory change failure --- src/game/game_handler.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/game/game_handler.cpp b/src/game/game_handler.cpp index 75a7ccd1..0b4d253c 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -4395,6 +4395,10 @@ void GameHandler::handlePacket(network::Packet& packet) { } if (newLevel > oldLevel) { addSystemChatMessage("You have reached level " + std::to_string(newLevel) + "!"); + if (auto* renderer = core::Application::getInstance().getRenderer()) { + if (auto* sfx = renderer->getUiSoundManager()) + sfx->playLevelUp(); + } if (levelUpCallback_) levelUpCallback_(newLevel); } } @@ -4649,6 +4653,10 @@ void GameHandler::handlePacket(network::Packet& packet) { } std::string msg = errMsg ? errMsg : "Inventory error (" + std::to_string(error) + ")."; addSystemChatMessage(msg); + if (auto* renderer = core::Application::getInstance().getRenderer()) { + if (auto* sfx = renderer->getUiSoundManager()) + sfx->playError(); + } } } break; @@ -13440,6 +13448,10 @@ void GameHandler::handleDuelRequested(network::Packet& packet) { pendingDuelRequest_ = true; addSystemChatMessage(duelChallengerName_ + " challenges you to a duel!"); + if (auto* renderer = core::Application::getInstance().getRenderer()) { + if (auto* sfx = renderer->getUiSoundManager()) + sfx->playTargetSelect(); + } LOG_INFO("SMSG_DUEL_REQUESTED: challenger=0x", std::hex, duelChallengerGuid_, " flag=0x", duelFlagGuid_, std::dec, " name=", duelChallengerName_); } @@ -18745,6 +18757,10 @@ void GameHandler::handleGroupInvite(network::Packet& packet) { if (!data.inviterName.empty()) { addSystemChatMessage(data.inviterName + " has invited you to a group."); } + if (auto* renderer = core::Application::getInstance().getRenderer()) { + if (auto* sfx = renderer->getUiSoundManager()) + sfx->playTargetSelect(); + } } void GameHandler::handleGroupDecline(network::Packet& packet) { @@ -24480,6 +24496,10 @@ void GameHandler::handleAchievementEarned(network::Packet& packet) { earnedAchievements_.insert(achievementId); achievementDates_[achievementId] = earnDate; + if (auto* renderer = core::Application::getInstance().getRenderer()) { + if (auto* sfx = renderer->getUiSoundManager()) + sfx->playAchievementAlert(); + } if (achievementEarnedCallback_) { achievementEarnedCallback_(achievementId, achName); }