Implement Dungeon Finder UI window with role/dungeon selection

- Add renderDungeonFinderWindow() with status display (not queued /
  role check / queued+wait time / proposal / in dungeon / finished)
- Role checkboxes (Tank/Healer/DPS) and dungeon combo (25 entries
  covering Vanilla, TBC, and WotLK including Random/Heroic)
- Accept/Decline buttons during Proposal state, Teleport button
  while InDungeon, Leave Queue button while Queued/RoleCheck
- Store lfgProposalId_ on GameHandler so UI can pass it to
  lfgAcceptProposal(); expose getLfgProposalId() and
  getLfgTimeInQueueMs() getters
- Toggle window with I key (when chat input is not active)
This commit is contained in:
Kelsi 2026-03-09 13:47:07 -07:00
parent 63c6039dbb
commit 200a00d4f5
4 changed files with 212 additions and 6 deletions

View file

@ -9073,15 +9073,18 @@ void GameHandler::handleLfgProposalUpdate(network::Packet& packet) {
if (remaining < 17) return;
/*bool canOverride =*/ packet.readUInt8();
lfgDungeonId_ = dungeonId;
lfgDungeonId_ = dungeonId;
lfgProposalId_ = proposalId;
switch (proposalState) {
case 0:
lfgState_ = LfgState::Queued;
lfgState_ = LfgState::Queued;
lfgProposalId_ = 0;
addSystemChatMessage("Dungeon Finder: Group proposal failed.");
break;
case 1:
lfgState_ = LfgState::InDungeon;
lfgState_ = LfgState::InDungeon;
lfgProposalId_ = 0;
addSystemChatMessage("Dungeon Finder: Group found! Entering dungeon...");
break;
case 2:
@ -9094,7 +9097,6 @@ void GameHandler::handleLfgProposalUpdate(network::Packet& packet) {
LOG_INFO("SMSG_LFG_PROPOSAL_UPDATE: dungeonId=", dungeonId,
" proposalId=", proposalId, " state=", proposalState);
(void)proposalId;
}
void GameHandler::handleLfgRoleCheckUpdate(network::Packet& packet) {