From 6fbf5b57977a1d6b721cb277e70d5fa7057f0a66 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Tue, 17 Mar 2026 12:31:38 -0700 Subject: [PATCH] feat: add audio feedback for item loot, vendor buy/sell, and spell learning Wire up remaining UISoundManager calls for core gameplay actions: - playLootItem() on SMSG_ITEM_PUSH_RESULT and handleLootRemoved - playPickupBag() on successful vendor purchase (SMSG_BUY_ITEM) - playDropOnGround() on successful item sell (SMSG_SELL_ITEM) - playQuestActivate() on trainer spell purchase success --- 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 e79371c9..84bd5db2 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -1940,6 +1940,10 @@ void GameHandler::handlePacket(network::Packet& packet) { std::string msg = "Received: " + itemName; if (count > 1) msg += " x" + std::to_string(count); addSystemChatMessage(msg); + if (auto* renderer = core::Application::getInstance().getRenderer()) { + if (auto* sfx = renderer->getUiSoundManager()) + sfx->playLootItem(); + } if (itemLootCallback_) { itemLootCallback_(itemId, count, quality, itemName); } @@ -3899,6 +3903,10 @@ void GameHandler::handlePacket(network::Packet& packet) { addSystemChatMessage("You have learned " + name + "."); else addSystemChatMessage("Spell learned."); + if (auto* renderer = core::Application::getInstance().getRenderer()) { + if (auto* sfx = renderer->getUiSoundManager()) + sfx->playQuestActivate(); + } break; } case Opcode::SMSG_TRAINER_BUY_FAILED: { @@ -4504,6 +4512,10 @@ void GameHandler::handlePacket(network::Packet& packet) { " result=", static_cast(result)); if (result == 0) { pendingSellToBuyback_.erase(itemGuid); + if (auto* renderer = core::Application::getInstance().getRenderer()) { + if (auto* sfx = renderer->getUiSoundManager()) + sfx->playDropOnGround(); + } } else { bool removedPending = false; auto it = pendingSellToBuyback_.find(itemGuid); @@ -4748,6 +4760,10 @@ void GameHandler::handlePacket(network::Packet& packet) { std::string msg = "Purchased: " + itemLabel; if (itemCount > 1) msg += " x" + std::to_string(itemCount); addSystemChatMessage(msg); + if (auto* renderer = core::Application::getInstance().getRenderer()) { + if (auto* sfx = renderer->getUiSoundManager()) + sfx->playPickupBag(); + } } pendingBuyItemId_ = 0; pendingBuyItemSlot_ = 0; @@ -20800,6 +20816,10 @@ void GameHandler::handleLootRemoved(network::Packet& packet) { msg << " x" << it->count; } addSystemChatMessage(msg.str()); + if (auto* renderer = core::Application::getInstance().getRenderer()) { + if (auto* sfx = renderer->getUiSoundManager()) + sfx->playLootItem(); + } currentLoot.items.erase(it); break; }