feat: target frame right-click context menu; add equipment diagnostic logging

Target frame: add Follow, Clear Target, and Set Raid Mark submenu to the
right-click context menu (Inspect, Trade, Duel were already present).

Equipment diagnostics: add LOG_INFO traces to updateOtherPlayerVisibleItems()
and emitOtherPlayerEquipment() to debug why other players appear naked.
Logs the visible item entry IDs received from the server and the resolved
displayIds from itemInfoCache. Check the log for "emitOtherPlayerEquipment"
to see if entries arrive as zeros (server not sending fields) or if
displayIds are zero (item templates not cached yet).
This commit is contained in:
Kelsi 2026-03-27 17:41:37 -07:00
parent a20f46f0b6
commit 16fc3ebfdf
2 changed files with 43 additions and 5 deletions

View file

@ -4234,11 +4234,17 @@ void GameScreen::renderTargetFrame(game::GameHandler& gameHandler) {
// Right-click context menu on target frame
if (ImGui::BeginPopupContextItem("##TargetFrameCtx")) {
const bool isPlayer = (target->getType() == game::ObjectType::PLAYER);
const uint64_t tGuid = target->getGuid();
ImGui::TextDisabled("%s", name.c_str());
ImGui::Separator();
if (ImGui::MenuItem("Set Focus"))
gameHandler.setFocus(target->getGuid());
if (target->getType() == game::ObjectType::PLAYER) {
gameHandler.setFocus(tGuid);
if (ImGui::MenuItem("Clear Target"))
gameHandler.clearTarget();
if (isPlayer) {
ImGui::Separator();
if (ImGui::MenuItem("Whisper")) {
selectedChatType = 4;
@ -4246,12 +4252,14 @@ void GameScreen::renderTargetFrame(game::GameHandler& gameHandler) {
whisperTargetBuffer[sizeof(whisperTargetBuffer) - 1] = '\0';
refocusChatInput = true;
}
if (ImGui::MenuItem("Follow"))
gameHandler.followTarget();
if (ImGui::MenuItem("Invite to Group"))
gameHandler.inviteToGroup(name);
if (ImGui::MenuItem("Trade"))
gameHandler.initiateTrade(target->getGuid());
gameHandler.initiateTrade(tGuid);
if (ImGui::MenuItem("Duel"))
gameHandler.proposeDuel(target->getGuid());
gameHandler.proposeDuel(tGuid);
if (ImGui::MenuItem("Inspect")) {
gameHandler.inspectTarget();
showInspectWindow_ = true;
@ -4262,6 +4270,17 @@ void GameScreen::renderTargetFrame(game::GameHandler& gameHandler) {
if (ImGui::MenuItem("Ignore"))
gameHandler.addIgnore(name);
}
ImGui::Separator();
if (ImGui::BeginMenu("Set Raid Mark")) {
for (int mi = 0; mi < 8; ++mi) {
if (ImGui::MenuItem(kRaidMarkNames[mi]))
gameHandler.setRaidMark(tGuid, static_cast<uint8_t>(mi));
}
ImGui::Separator();
if (ImGui::MenuItem("Clear Mark"))
gameHandler.setRaidMark(tGuid, 0xFF);
ImGui::EndMenu();
}
ImGui::EndPopup();
}