mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-23 07:40:14 +00:00
Implement group loot roll: SMSG_LOOT_ROLL, SMSG_LOOT_ROLL_WON, CMSG_LOOT_ROLL
- Parse SMSG_LOOT_ROLL: if rollType==128 and it's our player, store pending roll (itemId, slot, name from itemInfoCache_) and show popup; otherwise show chat notification of another player's roll result - Parse SMSG_LOOT_ROLL_WON: show winner announcement in chat with item name and roll type/value - sendLootRoll() sends CMSG_LOOT_ROLL (objectGuid+slot+rollType) and clears pending roll state - SMSG_LOOT_MASTER_LIST consumed silently (no UI yet) - renderLootRollPopup(): ImGui window with Need/Greed/Disenchant/Pass buttons; item name colored by quality (poor/common/uncommon/rare/epic/ legendary color scale)
This commit is contained in:
parent
2d124e7e54
commit
3114e80fa8
4 changed files with 194 additions and 0 deletions
|
|
@ -758,6 +758,19 @@ public:
|
|||
void setAutoLoot(bool enabled) { autoLoot_ = enabled; }
|
||||
bool isAutoLoot() const { return autoLoot_; }
|
||||
|
||||
// Group loot roll
|
||||
struct LootRollEntry {
|
||||
uint64_t objectGuid = 0;
|
||||
uint32_t slot = 0;
|
||||
uint32_t itemId = 0;
|
||||
std::string itemName;
|
||||
uint8_t itemQuality = 0;
|
||||
};
|
||||
bool hasPendingLootRoll() const { return pendingLootRollActive_; }
|
||||
const LootRollEntry& getPendingLootRoll() const { return pendingLootRoll_; }
|
||||
void sendLootRoll(uint64_t objectGuid, uint32_t slot, uint8_t rollType);
|
||||
// rollType: 0=need, 1=greed, 2=disenchant, 96=pass
|
||||
|
||||
// NPC Gossip
|
||||
void interactWithNpc(uint64_t guid);
|
||||
void interactWithGameObject(uint64_t guid);
|
||||
|
|
@ -1258,6 +1271,8 @@ private:
|
|||
void handleDuelRequested(network::Packet& packet);
|
||||
void handleDuelComplete(network::Packet& packet);
|
||||
void handleDuelWinner(network::Packet& packet);
|
||||
void handleLootRoll(network::Packet& packet);
|
||||
void handleLootRollWon(network::Packet& packet);
|
||||
|
||||
// ---- LFG / Dungeon Finder handlers ----
|
||||
void handleLfgJoinResult(network::Packet& packet);
|
||||
|
|
@ -1637,6 +1652,10 @@ private:
|
|||
bool lootWindowOpen = false;
|
||||
bool autoLoot_ = false;
|
||||
LootResponseData currentLoot;
|
||||
|
||||
// Group loot roll state
|
||||
bool pendingLootRollActive_ = false;
|
||||
LootRollEntry pendingLootRoll_;
|
||||
struct LocalLootState {
|
||||
LootResponseData data;
|
||||
bool moneyTaken = false;
|
||||
|
|
|
|||
|
|
@ -205,6 +205,7 @@ private:
|
|||
void renderPartyFrames(game::GameHandler& gameHandler);
|
||||
void renderGroupInvitePopup(game::GameHandler& gameHandler);
|
||||
void renderDuelRequestPopup(game::GameHandler& gameHandler);
|
||||
void renderLootRollPopup(game::GameHandler& gameHandler);
|
||||
void renderBuffBar(game::GameHandler& gameHandler);
|
||||
void renderLootWindow(game::GameHandler& gameHandler);
|
||||
void renderGossipWindow(game::GameHandler& gameHandler);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue