Commit graph

1773 commits

Author SHA1 Message Date
Kelsi
c1a090a17c feat: show kick target name and reason in LFG vote-kick UI
Parse the optional reason and target name strings from
SMSG_LFG_BOOT_PROPOSAL_UPDATE and display them in the Dungeon
Finder vote-kick section. Strings are cleared when the vote ends.
2026-03-12 09:09:41 -07:00
Kelsi
d8d59dcdc8 feat: show live per-player responses in ready check popup
Track each player's ready/not-ready response as MSG_RAID_READY_CHECK_CONFIRM
packets arrive. Display a color-coded table (green=Ready, red=Not Ready) in
the ready check popup so the raid leader can see who has responded in real
time. Results clear when a new check starts or finishes.
2026-03-12 09:07:37 -07:00
Kelsi
09d4a6ab41 feat: add pet stance indicator and Passive/Defensive/Aggressive buttons to pet frame
Show Psv/Def/Agg stance buttons (color-coded blue/green/red) above the
pet action bar. Active stance is highlighted; clicking sends CMSG_PET_ACTION
with the server-provided slot value for correct packet format, falling back
to the wire-protocol action ID if the slot is not in the action bar.
Also label stance slots 1/4/6 in the action bar as Psv/Def/Agg with
proper full-name tooltips.
2026-03-12 09:05:28 -07:00
Kelsi
fb8377f3ca fix: dismiss loot roll popup when any player wins, not only when we win
SMSG_LOOT_ROLL_WON signals the roll contest is over for this slot;
clear pendingLootRollActive_ unconditionally so the popup does not
linger if a different group member wins while we have not yet voted.
2026-03-12 09:00:31 -07:00
Kelsi
7acaa4d301 feat: show live roll results from group members in loot roll popup
Track each player's roll (need/greed/disenchant/pass + value) as
SMSG_LOOT_ROLL packets arrive while our roll window is open. Display
a color-coded table in the popup: green=need, blue=greed,
purple=disenchant, gray=pass. Roll value hidden for pass.
2026-03-12 08:59:38 -07:00
Kelsi
8a24638ced fix: use uint64_t for chat tab typeMask to avoid UB for ChatType values >= 32, add missing boss/party chat types to Combat tab 2026-03-12 08:54:29 -07:00
Kelsi
eaf60b4f79 feat: apply class color to target-of-target frame player names 2026-03-12 08:50:14 -07:00
Kelsi
ee7de739fc fix: include class name in /who response chat messages 2026-03-12 08:49:18 -07:00
Kelsi
641f943268 feat: inspect window shows class-colored name, class label, and average item level 2026-03-12 08:47:59 -07:00
Kelsi
0b14141e97 refactor: consolidate all class name/color lookups to shared helpers, remove 4 duplicate class tables 2026-03-12 08:46:26 -07:00
Kelsi
30b821f7ba refactor: replace duplicate class color switch in social frame with classColorVec4 helper, color friend names by class 2026-03-12 08:44:08 -07:00
Kelsi
339ee4dbba refactor: use classColorVec4 helper in guild roster, color member names by class 2026-03-12 08:42:55 -07:00
Kelsi
b5131b19a3 feat: color minimap party dots by class instead of uniform blue 2026-03-12 08:40:54 -07:00
Kelsi
f4a31fef2a feat: apply class colors to focus frame player name
Player entities shown in the focus frame now display their canonical
WoW class color (from UNIT_FIELD_BYTES_0), consistent with how player
names are now colored in the target frame, party frame, raid frame,
and nameplates.
2026-03-12 08:37:14 -07:00
Kelsi
c73da1629b refactor: use classColorVec4 helper in player frame
Replace the duplicated 10-case switch in renderPlayerFrame with a call
to the shared classColorVec4() helper, keeping the single source of truth
for Blizzard class colors.
2026-03-12 08:35:47 -07:00
Kelsi
41d121df1d refactor: consolidate class color lookups into shared helpers
Add classColorVec4(), classColorU32(), and entityClassId() to the
anonymous namespace so the canonical Blizzard class colors are defined
in exactly one place. Refactor the three existing class color blocks
(party frame, raid frame, nameplates) to use these helpers. Also apply
class colors to player names in the target frame.
2026-03-12 08:33:34 -07:00
Kelsi
8f68d1efb9 feat: show WoW class colors on player nameplates
Player nameplates previously used a flat cyan for all players. Now they
display the canonical Blizzard class color (Warrior=#C79C6E,
Paladin=#F58CBA, Hunter=#ABD473, etc.) read from UNIT_FIELD_BYTES_0.
This makes it easy to identify player classes at a glance in the world,
especially useful in PvP and group content. NPC nameplates keep the
existing red (hostile) / yellow (friendly) coloring.
2026-03-12 08:30:27 -07:00
Kelsi
d6d70f62c7 feat: apply WoW class colors to raid frame member names
Same class color logic as the party frame: read UNIT_FIELD_BYTES_0 byte 1
from the entity manager to determine each member's class, then draw their
name in the canonical Blizzard class color. Dead/offline members keep the
gray color since their status is more important than their class identity.
2026-03-12 08:29:17 -07:00
Kelsi
25e90acf27 feat: color party frame member names by WoW class
Uses UNIT_FIELD_BYTES_0 (byte 1) from the entity's update fields to
determine each party member's class when they are loaded in the world,
and applies canonical WoW class colors to their name in the 5-man
party frame. Falls back to gold (leader) or light gray (others) when
the entity is not currently loaded. All 10 classes (Warrior, Paladin,
Hunter, Rogue, Priest, Death Knight, Shaman, Mage, Warlock, Druid)
use the standard Blizzard-matching hex values.
2026-03-12 08:28:08 -07:00
Kelsi
2fbf3f28e6 feat: use colored coin display for quest reward money in quest log 2026-03-12 08:21:52 -07:00
Kelsi
92ce7459bb feat: add dispel-type border colors to target frame debuffs (magic/curse/disease/poison) 2026-03-12 08:20:14 -07:00
Kelsi
dedafdf443 feat: use colored coin display for sell price in item tooltips 2026-03-12 08:19:07 -07:00
Kelsi
06c8c26b8a feat: extend colored coin display to item tooltip, quests, AH, guild bank, buyback, taxi 2026-03-12 08:15:46 -07:00
Kelsi
6649f1583a feat: use colored coin display in loot window gold amount 2026-03-12 08:13:03 -07:00
Kelsi
b5567b362f feat: add colored gold/silver/copper text in vendor, trainer, and mail windows 2026-03-12 08:10:17 -07:00
Kelsi
8a9248be79 feat: add spell icons to target and focus frame cast bars 2026-03-12 08:03:43 -07:00
Kelsi
844a0002dc feat: improve combat text with drop shadows and larger crit size
Switch combat float text from ImGui::TextColored to draw list rendering
for drop shadows on all entries (readability over complex backgrounds).
Critical hit/heal events render at 1.35× normal font size for visual
impact, matching the WoW combat feedback convention.
2026-03-12 08:00:27 -07:00
Kelsi
0674dc9ec2 feat: add spell icons to boss and party member cast bars
Consistent with the player cast bar, show the spell icon (12×12 for
boss, 10×10 for party) to the left of each cast bar progress widget.
Falls back gracefully to the icon-less layout when no icon is found.
2026-03-12 07:58:36 -07:00
Kelsi
e41788c63f feat: display current zone name inside minimap top edge
Shows the player's current zone name (from server zone ID via
ZoneManager) as a golden label at the top of the minimap circle.
Gracefully absent when zone ID is 0 (loading screens, undetected zones).
2026-03-12 07:56:59 -07:00
Kelsi
6cd8dc0d9d feat: show spell icon in cast bar alongside progress bar
Display the casting spell's icon (20×20) to the left of the progress
bar using the existing getSpellIcon DBC lookup. Falls back gracefully
to the icon-less layout when no icon is available (e.g. before DBC
load or for unknown spells).
2026-03-12 07:52:47 -07:00
Kelsi
d9ce056e13 feat: add zone name labels and hover coordinates to world map
- Draw zone name text centered in each zone rect on the continent view;
  only rendered when the rect is large enough to fit the label without
  crowding (explored zones get gold text, unexplored get dim grey)
- Show WoW coordinates under the cursor when hovering the map image in
  continent or zone view, bottom-right corner of the map panel
2026-03-12 07:45:51 -07:00
Kelsi
dd8e09c2d9 feat: show hovered world coordinates in minimap tooltip 2026-03-12 07:41:22 -07:00
Kelsi
ddb8f06c3a feat: add class-color and zone tooltip to friends tab in guild roster 2026-03-12 07:39:11 -07:00
Kelsi
d26bac0221 feat: store and display enchant indicators in inspect window gear list 2026-03-12 07:37:29 -07:00
Kelsi
7cb4887011 feat: add threat status bar and pulling-aggro alert to threat window 2026-03-12 07:32:28 -07:00
Kelsi
bab66cfa35 feat: display mail expiry date and urgency warnings in mailbox 2026-03-12 07:28:18 -07:00
Kelsi
344556c639 feat: show class name with class color and zone tooltip in social frame friends list 2026-03-12 07:25:56 -07:00
Kelsi
c25f7b0e52 feat: store and display achievement earn dates in achievement window tooltip 2026-03-12 07:22:36 -07:00
Kelsi
381fc54c89 feat: add hover tooltips to quest kill objective minimap markers 2026-03-12 07:18:11 -07:00
Kelsi
9a08edae09 feat: add Low Health Vignette toggle in Settings > Interface
The persistent red-edge vignette (below 20% HP) now has an on/off
checkbox under Settings > Interface > Screen Effects, alongside the
existing Damage Flash toggle. The preference is persisted to settings.cfg.
2026-03-12 07:15:08 -07:00
Kelsi
8cba8033ba feat: add tooltip to XP bar showing XP to level and rested details
Hovering the XP bar now shows a breakdown: current XP, XP remaining
to the next level, rested bonus amount in XP and as a percentage of
a full level, and whether the player is currently resting.
2026-03-12 07:12:02 -07:00
Kelsi
8858edde05 fix: correct chat bubble Y-coordinate projection
The camera bakes the Vulkan Y-flip into the projection matrix, so no
extra Y-inversion is needed when converting NDC to screen pixels. This
matches the convention used by the nameplate and minimap marker code.
The old formula double-flipped Y, causing chat bubbles to appear at
mirrored positions (e.g. below characters instead of above their heads).
2026-03-12 07:10:45 -07:00
Kelsi
17022b9b40 feat: add persistent low-health vignette when HP below 20%
Screen edges pulse red (at ~1.5 Hz) whenever the player is alive but
below 20% HP, with intensity scaling inversely with remaining health.
Complements the existing on-hit damage flash by providing continuous
danger awareness during sustained low-HP situations.
2026-03-12 07:07:46 -07:00
Kelsi
b8e7fee9e7 feat: add quest kill objective markers on minimap
Live NPCs that match active tracked quest kill objectives are now shown
on the minimap as gold circles with an 'x' mark, making it easier to
spot remaining quest targets at a glance without needing to open the map.
Only shows targets for incomplete objectives in tracked quests.
2026-03-12 07:04:45 -07:00
Kelsi
92361c37df feat: out-of-range indicator on party and raid frames
Party members beyond 40 yards show a gray desaturated health bar
with 'OOR' text instead of HP values. Raid frame cells get a dark
overlay and gray health bar when a member is out of range. Range is
computed from the server-reported posX/posY in SMSG_PARTY_MEMBER_STATS
vs the local player entity position.
2026-03-12 06:58:42 -07:00
Kelsi
d817e4144c feat: debuff dispel-type border coloring in buff bar
Read DispelType from Spell.dbc (new field in all expansion DBC layouts)
and use it to color debuff icon borders: magic=blue, curse=purple,
disease=brown, poison=green, other=red. Buffs remain green-bordered.
Adds getSpellDispelType() to GameHandler for lazy cache lookup.
2026-03-12 06:55:16 -07:00
Kelsi
9a21e19486 feat: highlight chat messages that mention the local player
When a chat message contains the player's character name, the message
is rendered with a golden highlight background and bright yellow text.
A whisper notification sound plays (at most once per new-message scan)
to alert the player. Outgoing whispers and system messages are
excluded from mention detection.
2026-03-12 06:45:27 -07:00
Kelsi
c14b338a92 feat: add Tab autocomplete for slash commands in chat input
Pressing Tab while typing a slash command cycles through all matching
commands (e.g. /em<Tab> → /emote, /emote<Tab> → /emote again).
Unambiguous matches append a trailing space. Repeated Tab presses
cycle forward through all matches. History navigation (Up/Down)
resets the autocomplete session.
2026-03-12 06:38:10 -07:00
Kelsi
68251b647d feat: add spell/quest/achievement hyperlink rendering in chat
Extend chat renderTextWithLinks to handle |Hspell:, |Hquest:, and
|Hachievement: link types in addition to |Hitem:. Spell links show
a small icon and tooltip via renderSpellInfoTooltip; quest links
open the quest log on click; achievement links show a tooltip.
Also wire assetMgr into renderChatWindow for icon lookup.
2026-03-12 06:30:30 -07:00
Kelsi
e8fe53650b feat: add respawn countdown timer to the death dialog
The "You are dead." dialog now shows a "Release in M:SS" countdown
tracking time elapsed since death. The countdown runs from 6 minutes
(WoW's forced-release window) and disappears once it reaches zero.
Timer resets automatically when the player is no longer dead.
2026-03-12 06:14:18 -07:00