mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-23 07:40:14 +00:00
Handle gossip POI, combat clearing, dismount, spell log miss, and loot notifications
- SMSG_GOSSIP_POI: parse map POI markers (x/y/icon/name) from quest NPCs, render as cyan diamonds on the minimap with hover tooltips for quest navigation - SMSG_ATTACKSWING_DEADTARGET: clear auto-attack when target dies mid-swing - SMSG_CANCEL_COMBAT: server-side combat reset (clears autoAttacking + target) - SMSG_BREAK_TARGET / SMSG_CLEAR_TARGET: server-side targeting clears - SMSG_DISMOUNT: server-forced dismount triggers mountCallback(0) - SMSG_MOUNTRESULT / SMSG_DISMOUNTRESULT: mount feedback in system chat - SMSG_LOOT_ALL_PASSED: "Everyone passed on [Item]" system message, clears loot roll - SMSG_LOOT_ITEM_NOTIFY / SMSG_LOOT_SLOT_CHANGED: consumed - SMSG_SPELLLOGMISS: decode miss/dodge/parry/block from spell casts into combat text - SMSG_ENVIRONMENTALDAMAGELOG: environmental damage (drowning/lava/fall) in combat text - GossipPoi struct + gossipPois_ vector in GameHandler with public getters/clearers
This commit is contained in:
parent
bd3bd1b5a6
commit
f89840a6aa
3 changed files with 189 additions and 0 deletions
|
|
@ -7378,6 +7378,32 @@ void GameScreen::renderMinimapMarkers(game::GameHandler& gameHandler) {
|
|||
IM_COL32(0, 0, 0, 255), marker);
|
||||
}
|
||||
|
||||
// Gossip POI markers (quest / NPC navigation targets)
|
||||
for (const auto& poi : gameHandler.getGossipPois()) {
|
||||
// Convert WoW canonical coords to render coords for minimap projection
|
||||
glm::vec3 poiRender = core::coords::canonicalToRender(glm::vec3(poi.x, poi.y, 0.0f));
|
||||
float sx = 0.0f, sy = 0.0f;
|
||||
if (!projectToMinimap(poiRender, sx, sy)) continue;
|
||||
|
||||
// Draw as a cyan diamond with tooltip on hover
|
||||
const float d = 5.0f;
|
||||
ImVec2 pts[4] = {
|
||||
{ sx, sy - d },
|
||||
{ sx + d, sy },
|
||||
{ sx, sy + d },
|
||||
{ sx - d, sy },
|
||||
};
|
||||
drawList->AddConvexPolyFilled(pts, 4, IM_COL32(0, 210, 255, 220));
|
||||
drawList->AddPolyline(pts, 4, IM_COL32(255, 255, 255, 160), true, 1.0f);
|
||||
|
||||
// Show name label if cursor is within ~8px
|
||||
ImVec2 cursorPos = ImGui::GetMousePos();
|
||||
float dx = cursorPos.x - sx, dy = cursorPos.y - sy;
|
||||
if (!poi.name.empty() && (dx * dx + dy * dy) < 64.0f) {
|
||||
ImGui::SetTooltip("%s", poi.name.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
auto applyMuteState = [&]() {
|
||||
auto* activeRenderer = core::Application::getInstance().getRenderer();
|
||||
float masterScale = soundMuted_ ? 0.0f : static_cast<float>(pendingMasterVolume) / 100.0f;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue