mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-04-17 17:43:52 +00:00
feat: add standalone LFG group-found popup (renderLfgProposalPopup)
Shows a centered modal when LfgState::Proposal is active regardless of whether the Dungeon Finder window is open, matching WoW behaviour where the accept/decline prompt always appears over the game world. Mirrors the BG invite popup pattern; buttons call lfgAcceptProposal().
This commit is contained in:
parent
7c8bda0907
commit
8f2974b17c
2 changed files with 51 additions and 0 deletions
|
|
@ -250,6 +250,7 @@ private:
|
||||||
void renderGuildInvitePopup(game::GameHandler& gameHandler);
|
void renderGuildInvitePopup(game::GameHandler& gameHandler);
|
||||||
void renderReadyCheckPopup(game::GameHandler& gameHandler);
|
void renderReadyCheckPopup(game::GameHandler& gameHandler);
|
||||||
void renderBgInvitePopup(game::GameHandler& gameHandler);
|
void renderBgInvitePopup(game::GameHandler& gameHandler);
|
||||||
|
void renderLfgProposalPopup(game::GameHandler& gameHandler);
|
||||||
void renderChatBubbles(game::GameHandler& gameHandler);
|
void renderChatBubbles(game::GameHandler& gameHandler);
|
||||||
void renderMailWindow(game::GameHandler& gameHandler);
|
void renderMailWindow(game::GameHandler& gameHandler);
|
||||||
void renderMailComposeWindow(game::GameHandler& gameHandler);
|
void renderMailComposeWindow(game::GameHandler& gameHandler);
|
||||||
|
|
|
||||||
|
|
@ -420,6 +420,7 @@ void GameScreen::render(game::GameHandler& gameHandler) {
|
||||||
renderGuildInvitePopup(gameHandler);
|
renderGuildInvitePopup(gameHandler);
|
||||||
renderReadyCheckPopup(gameHandler);
|
renderReadyCheckPopup(gameHandler);
|
||||||
renderBgInvitePopup(gameHandler);
|
renderBgInvitePopup(gameHandler);
|
||||||
|
renderLfgProposalPopup(gameHandler);
|
||||||
renderGuildRoster(gameHandler);
|
renderGuildRoster(gameHandler);
|
||||||
renderBuffBar(gameHandler);
|
renderBuffBar(gameHandler);
|
||||||
renderLootWindow(gameHandler);
|
renderLootWindow(gameHandler);
|
||||||
|
|
@ -6155,6 +6156,55 @@ void GameScreen::renderBgInvitePopup(game::GameHandler& gameHandler) {
|
||||||
ImGui::PopStyleColor(3);
|
ImGui::PopStyleColor(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GameScreen::renderLfgProposalPopup(game::GameHandler& gameHandler) {
|
||||||
|
using LfgState = game::GameHandler::LfgState;
|
||||||
|
if (gameHandler.getLfgState() != LfgState::Proposal) return;
|
||||||
|
|
||||||
|
auto* window = core::Application::getInstance().getWindow();
|
||||||
|
float screenW = window ? static_cast<float>(window->getWidth()) : 1280.0f;
|
||||||
|
float screenH = window ? static_cast<float>(window->getHeight()) : 720.0f;
|
||||||
|
|
||||||
|
ImGui::SetNextWindowPos(ImVec2(screenW / 2.0f - 175.0f, screenH / 2.0f - 65.0f), ImGuiCond_Always);
|
||||||
|
ImGui::SetNextWindowSize(ImVec2(350.0f, 0.0f), ImGuiCond_Always);
|
||||||
|
|
||||||
|
ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(0.08f, 0.14f, 0.08f, 0.96f));
|
||||||
|
ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0.3f, 0.8f, 0.3f, 1.0f));
|
||||||
|
ImGui::PushStyleColor(ImGuiCol_TitleBgActive, ImVec4(0.1f, 0.3f, 0.1f, 1.0f));
|
||||||
|
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 6.0f);
|
||||||
|
|
||||||
|
const ImGuiWindowFlags flags =
|
||||||
|
ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoCollapse;
|
||||||
|
|
||||||
|
if (ImGui::Begin("Dungeon Finder", nullptr, flags)) {
|
||||||
|
ImGui::TextColored(ImVec4(0.4f, 1.0f, 0.4f, 1.0f), "A group has been found!");
|
||||||
|
ImGui::Spacing();
|
||||||
|
ImGui::TextWrapped("Please accept or decline to join the dungeon.");
|
||||||
|
ImGui::Spacing();
|
||||||
|
ImGui::Separator();
|
||||||
|
ImGui::Spacing();
|
||||||
|
|
||||||
|
ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.15f, 0.5f, 0.15f, 1.0f));
|
||||||
|
ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0.2f, 0.7f, 0.2f, 1.0f));
|
||||||
|
if (ImGui::Button("Accept", ImVec2(155.0f, 30.0f))) {
|
||||||
|
gameHandler.lfgAcceptProposal(gameHandler.getLfgProposalId(), true);
|
||||||
|
}
|
||||||
|
ImGui::PopStyleColor(2);
|
||||||
|
|
||||||
|
ImGui::SameLine();
|
||||||
|
|
||||||
|
ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.5f, 0.15f, 0.15f, 1.0f));
|
||||||
|
ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0.7f, 0.2f, 0.2f, 1.0f));
|
||||||
|
if (ImGui::Button("Decline", ImVec2(155.0f, 30.0f))) {
|
||||||
|
gameHandler.lfgAcceptProposal(gameHandler.getLfgProposalId(), false);
|
||||||
|
}
|
||||||
|
ImGui::PopStyleColor(2);
|
||||||
|
}
|
||||||
|
ImGui::End();
|
||||||
|
|
||||||
|
ImGui::PopStyleVar();
|
||||||
|
ImGui::PopStyleColor(3);
|
||||||
|
}
|
||||||
|
|
||||||
void GameScreen::renderGuildRoster(game::GameHandler& gameHandler) {
|
void GameScreen::renderGuildRoster(game::GameHandler& gameHandler) {
|
||||||
// O key toggle (WoW default Social/Guild keybind)
|
// O key toggle (WoW default Social/Guild keybind)
|
||||||
if (!ImGui::GetIO().WantCaptureKeyboard && ImGui::IsKeyPressed(ImGuiKey_O)) {
|
if (!ImGui::GetIO().WantCaptureKeyboard && ImGui::IsKeyPressed(ImGuiKey_O)) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue