mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-23 07:40:14 +00:00
feat: show quest objective progress toasts on kill and item collection
Adds a visual progress overlay at bottom-right when quest kill counts or item collection updates arrive. Each toast shows the quest title, objective name, a fill-progress bar, and an X/Y count. Toasts coalesce when the same objective updates multiple times, and auto-dismiss after 4s. Wires a new QuestProgressCallback through GameHandler to trigger the UI.
This commit is contained in:
parent
5216582f15
commit
c3afe543c6
4 changed files with 152 additions and 0 deletions
|
|
@ -4484,6 +4484,10 @@ void GameHandler::handlePacket(network::Packet& packet) {
|
|||
progressMsg += std::to_string(count) + "/" + std::to_string(reqCount);
|
||||
addSystemChatMessage(progressMsg);
|
||||
|
||||
if (questProgressCallback_) {
|
||||
questProgressCallback_(quest.title, creatureName, count, reqCount);
|
||||
}
|
||||
|
||||
LOG_INFO("Updated kill count for quest ", questId, ": ",
|
||||
count, "/", reqCount);
|
||||
break;
|
||||
|
|
@ -4538,6 +4542,26 @@ void GameHandler::handlePacket(network::Packet& packet) {
|
|||
updatedAny = true;
|
||||
}
|
||||
addSystemChatMessage("Quest item: " + itemLabel + " (" + std::to_string(count) + ")");
|
||||
|
||||
if (questProgressCallback_ && updatedAny) {
|
||||
// Find the quest that tracks this item to get title and required count
|
||||
for (const auto& quest : questLog_) {
|
||||
if (quest.complete) continue;
|
||||
if (quest.itemCounts.count(itemId) == 0) continue;
|
||||
uint32_t required = 0;
|
||||
auto rIt = quest.requiredItemCounts.find(itemId);
|
||||
if (rIt != quest.requiredItemCounts.end()) required = rIt->second;
|
||||
if (required == 0) {
|
||||
for (const auto& obj : quest.itemObjectives) {
|
||||
if (obj.itemId == itemId) { required = obj.required; break; }
|
||||
}
|
||||
}
|
||||
if (required == 0) required = count;
|
||||
questProgressCallback_(quest.title, itemLabel, count, required);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
LOG_INFO("Quest item update: itemId=", itemId, " count=", count,
|
||||
" trackedQuestsUpdated=", updatedAny);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue