feat: respect loot roll voteMask for button visibility

Store the voteMask from SMSG_LOOT_START_ROLL and use it to conditionally
show Need/Greed/Disenchant/Pass buttons. Previously all four buttons were
always shown regardless of the server's allowed roll types.
This commit is contained in:
Kelsi 2026-03-18 10:01:53 -07:00
parent 02a1b5cbf3
commit 209f60031e
3 changed files with 25 additions and 13 deletions

View file

@ -2344,7 +2344,7 @@ void GameHandler::handlePacket(network::Packet& packet) {
/*uint32_t randProp =*/ packet.readUInt32();
}
uint32_t countdown = packet.readUInt32();
/*uint8_t voteMask =*/ packet.readUInt8();
uint8_t voteMask = packet.readUInt8();
// Trigger the roll popup for local player
pendingLootRollActive_ = true;
pendingLootRoll_.objectGuid = objectGuid;
@ -2358,9 +2358,10 @@ void GameHandler::handlePacket(network::Packet& packet) {
pendingLootRoll_.itemName = info ? info->name : std::to_string(itemId);
pendingLootRoll_.itemQuality = info ? static_cast<uint8_t>(info->quality) : 0;
pendingLootRoll_.rollCountdownMs = (countdown > 0 && countdown <= 120000) ? countdown : 60000;
pendingLootRoll_.voteMask = voteMask;
pendingLootRoll_.rollStartedAt = std::chrono::steady_clock::now();
LOG_INFO("SMSG_LOOT_START_ROLL: item=", itemId, " (", pendingLootRoll_.itemName,
") slot=", slot);
") slot=", slot, " voteMask=0x", std::hex, (int)voteMask, std::dec);
break;
}