feat: add audio feedback for quest accept/complete and transaction errors

Wire up UISoundManager calls that were loaded but never invoked:
- playQuestActivate() on quest accept
- playQuestComplete() on server-confirmed quest completion
- playError() on trainer buy failure, vendor buy failure, and sell failure
This commit is contained in:
Kelsi 2026-03-17 12:28:15 -07:00
parent 8c3060f261
commit a0b978f95b

View file

@ -3925,6 +3925,11 @@ void GameHandler::handlePacket(network::Packet& packet) {
else if (errorCode != 0) msg += " (error " + std::to_string(errorCode) + ")";
addSystemChatMessage(msg);
// Play error sound so the player notices the failure
if (auto* renderer = core::Application::getInstance().getRenderer()) {
if (auto* sfx = renderer->getUiSoundManager())
sfx->playError();
}
break;
}
@ -4535,6 +4540,10 @@ void GameHandler::handlePacket(network::Packet& packet) {
};
const char* msg = (result < 7) ? sellErrors[result] : "Unknown sell error";
addSystemChatMessage(std::string("Sell failed: ") + msg);
if (auto* renderer = core::Application::getInstance().getRenderer()) {
if (auto* sfx = renderer->getUiSoundManager())
sfx->playError();
}
LOG_WARNING("SMSG_SELL_ITEM error: ", (int)result, " (", msg, ")");
}
}
@ -4688,6 +4697,10 @@ void GameHandler::handlePacket(network::Packet& packet) {
default: break;
}
addSystemChatMessage(msg);
if (auto* renderer = core::Application::getInstance().getRenderer()) {
if (auto* sfx = renderer->getUiSoundManager())
sfx->playError();
}
}
break;
}
@ -5015,6 +5028,11 @@ void GameHandler::handlePacket(network::Packet& packet) {
if (questCompleteCallback_) {
questCompleteCallback_(questId, it->title);
}
// Play quest-complete sound
if (auto* renderer = core::Application::getInstance().getRenderer()) {
if (auto* sfx = renderer->getUiSoundManager())
sfx->playQuestComplete();
}
questLog_.erase(it);
LOG_INFO(" Removed quest ", questId, " from quest log");
break;
@ -20070,6 +20088,12 @@ void GameHandler::acceptQuest() {
pendingQuestAcceptTimeouts_[questId] = 5.0f;
pendingQuestAcceptNpcGuids_[questId] = npcGuid;
// Play quest-accept sound
if (auto* renderer = core::Application::getInstance().getRenderer()) {
if (auto* sfx = renderer->getUiSoundManager())
sfx->playQuestActivate();
}
questDetailsOpen = false;
questDetailsOpenTime = std::chrono::steady_clock::time_point{};
currentQuestDetails = QuestDetailsData{};