mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-24 00:00:13 +00:00
Implement basic trade request/accept/decline flow
- Parse SMSG_TRADE_STATUS for all 20+ status codes: incoming request, open/cancel/complete/accept notifications, error conditions (too far, wrong faction, stunned, dead, trial account, etc.) - SMSG_TRADE_STATUS_EXTENDED consumed via shared handler (no full item window yet; state tracking sufficient for accept/decline flow) - Add acceptTradeRequest() (CMSG_BEGIN_TRADE), declineTradeRequest(), acceptTrade() (CMSG_ACCEPT_TRADE), cancelTrade() (CMSG_CANCEL_TRADE) - Add BeginTradePacket, CancelTradePacket, AcceptTradePacket builders - Add renderTradeRequestPopup(): shows "X wants to trade" with Accept/Decline buttons when tradeStatus_ == PendingIncoming - TradeStatus enum tracks None/PendingIncoming/Open/Accepted/Complete
This commit is contained in:
parent
b4f6ca2ca7
commit
f369fe9c6e
6 changed files with 178 additions and 0 deletions
|
|
@ -398,6 +398,7 @@ void GameScreen::render(game::GameHandler& gameHandler) {
|
|||
renderGroupInvitePopup(gameHandler);
|
||||
renderDuelRequestPopup(gameHandler);
|
||||
renderLootRollPopup(gameHandler);
|
||||
renderTradeRequestPopup(gameHandler);
|
||||
renderGuildInvitePopup(gameHandler);
|
||||
renderGuildRoster(gameHandler);
|
||||
renderBuffBar(gameHandler);
|
||||
|
|
@ -4402,6 +4403,30 @@ void GameScreen::renderDuelRequestPopup(game::GameHandler& gameHandler) {
|
|||
ImGui::End();
|
||||
}
|
||||
|
||||
void GameScreen::renderTradeRequestPopup(game::GameHandler& gameHandler) {
|
||||
if (!gameHandler.hasPendingTradeRequest()) return;
|
||||
|
||||
auto* window = core::Application::getInstance().getWindow();
|
||||
float screenW = window ? static_cast<float>(window->getWidth()) : 1280.0f;
|
||||
|
||||
ImGui::SetNextWindowPos(ImVec2(screenW / 2 - 150, 370), ImGuiCond_Always);
|
||||
ImGui::SetNextWindowSize(ImVec2(300, 0), ImGuiCond_Always);
|
||||
|
||||
if (ImGui::Begin("Trade Request", nullptr, ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize)) {
|
||||
ImGui::Text("%s wants to trade with you.", gameHandler.getTradePeerName().c_str());
|
||||
ImGui::Spacing();
|
||||
|
||||
if (ImGui::Button("Accept", ImVec2(130, 30))) {
|
||||
gameHandler.acceptTradeRequest();
|
||||
}
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button("Decline", ImVec2(130, 30))) {
|
||||
gameHandler.declineTradeRequest();
|
||||
}
|
||||
}
|
||||
ImGui::End();
|
||||
}
|
||||
|
||||
void GameScreen::renderLootRollPopup(game::GameHandler& gameHandler) {
|
||||
if (!gameHandler.hasPendingLootRoll()) return;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue