Commit graph

1713 commits

Author SHA1 Message Date
Kelsi
162fd790ef feat: add right-click context menu to minimap
Adds a WoW-style popup on right-click within the minimap circle with:
- Zoom In / Zoom Out controls
- Rotate with Camera toggle (with checkmark state)
- Square Shape toggle (with checkmark state)
- Show NPC Dots toggle (with checkmark state)
2026-03-12 05:25:46 -07:00
Kelsi
f5d67c3c7f feat: add Shift+hover item comparison in vendor window
Extend renderItemTooltip(ItemQueryResponseData) to accept an optional
Inventory* parameter. When Shift is held and an equipped item in the
same slot exists, show: equipped item name, item level diff (▲/▼/=),
and stat diffs for Armor/Str/Agi/Sta/Int/Spi. Pass the player's
inventory from the vendor window hover handler to enable this.
2026-03-12 05:20:44 -07:00
Kelsi
5827a8fcdd feat: add Shaman totem bar in player frame
Store active totem state (slot, spellId, duration, placedAt) from
SMSG_TOTEM_CREATED. Render 4 element slots (Earth/Fire/Water/Air) as
color-coded duration bars in the player frame for Shamans (class 7).
Shows countdown seconds, element letter when inactive, and tooltip
with spell name + remaining time on hover.
2026-03-12 05:16:43 -07:00
Kelsi
8efdaed7e4 feat: add gold glow when action bar spell comes off cooldown
When a spell's cooldown expires, its action bar slot briefly animates
with a pulsing gold border (4 pulses over 1.5 seconds, fading out) to
draw attention that the ability is ready again. Uses per-slot state
tracking with static maps inside the render lambda.
2026-03-12 05:12:58 -07:00
Kelsi
c35bf8d953 feat: add duel countdown overlay (3-2-1-Fight!)
Parse SMSG_DUEL_COUNTDOWN to get the countdown duration, track the
start time, and render a large centered countdown overlay. Numbers
display in pulsing gold; transitions to pulsing red 'Fight!' for the
last 0.5 seconds. Countdown clears on SMSG_DUEL_COMPLETE.
2026-03-12 05:06:14 -07:00
Kelsi
29a989e1f4 feat: add reputation bar above XP bar
Show a color-coded reputation progress bar for the most recently gained
faction above the XP bar. The bar is auto-shown when any faction rep
changes (watchedFactionId_ tracks the last changed faction). Colors
follow WoW conventions: red=Hated/Hostile, orange=Unfriendly,
yellow=Neutral, green=Friendly, blue=Honored, purple=Revered,
gold=Exalted. Tooltip shows exact standing values on hover.
2026-03-12 05:03:03 -07:00
Kelsi
0a03bf9028 feat: add cast bar to pet frame
Show an orange cast bar in the pet frame when the pet is casting a
spell, matching the party frame cast bar pattern. Displays spell name
and time remaining; falls back to 'Casting...' when spell name is
unavailable from Spell.dbc.
2026-03-12 04:59:24 -07:00
Kelsi
b682e8c686 feat: add countdown timer to loot roll popup
Show a color-coded progress bar (green→yellow→pulsing red) in the loot
roll window indicating time remaining to make a roll decision. The
countdown duration is read from SMSG_LOOT_START_ROLL (or defaults to
60s for the SMSG_LOOT_ROLL path). Remaining seconds are displayed on
the bar itself.
2026-03-12 04:57:36 -07:00
Kelsi
b34bf39746 feat: add quest completion toast notification
When a quest is turned in (SMSG_QUESTGIVER_QUEST_COMPLETE), a gold-bordered
toast slides in from the right showing "Quest Complete" header with the quest
title, consistent with the rep change and achievement toast systems.
2026-03-12 04:53:03 -07:00
Kelsi
71df1ccf6f feat: apply WoW class colors to guild roster class column
Online guild members now show their class name in the standard WoW
class color in the guild roster table, matching the familiar in-game
appearance. Offline members retain the dimmed gray style.
2026-03-12 04:46:25 -07:00
Kelsi
102b34db2f feat: apply buff expiry color warning to target aura timers
Target frame debuff/buff timers now use the same urgency colors as
the player buff bar: white >30s, orange <30s, pulsing red <10s.
2026-03-12 04:44:48 -07:00
Kelsi
fb6e7c7b57 feat: color-code quest tracker objectives green when complete
Completed kill/item objectives now display in green instead of gray,
giving an immediate visual cue about which objectives are done vs.
still in progress on the on-screen quest tracker.
2026-03-12 04:42:48 -07:00
Kelsi
271518ee08 feat: use WoW standard class colors for player name in player frame
Player name in the unit frame now shows in the official WoW class
color (warrior=tan, paladin=pink, hunter=green, rogue=yellow,
priest=white, DK=red, shaman=blue, mage=cyan, warlock=purple,
druid=orange) matching the familiar in-game appearance.
2026-03-12 04:39:38 -07:00
Kelsi
f04a5c8f3e feat: add buff expiry color warning on timer overlay
Buff/debuff countdown timers now change color as expiry approaches:
white (>30s) → orange (<30s) → pulsing red (<10s). This gives players
a clear visual cue to reapply important buffs before they fall off.
2026-03-12 04:34:00 -07:00
Kelsi
1b3dc52563 feat: improve party frame dead/offline member display
Dead party members now show a gray "Dead" progress bar instead of
"0/2000" health values, and offline members show a dimmed "Offline"
bar. The power bar is suppressed for both states to reduce clutter.
2026-03-12 04:31:01 -07:00
Kelsi
7475a4fff3 feat: add persistent coordinate display below minimap
Always-visible player coordinates (X, Y in canonical WoW space) rendered
as warm-yellow text on a semi-transparent pill just below the minimap
circle, eliminating the need to hover for position info.
2026-03-12 04:27:26 -07:00
Kelsi
2e504232ec feat: add item icons and full tooltips to inspect window gear list 2026-03-12 04:24:37 -07:00
Kelsi
10e9e94a73 feat: add interrupt pulse to nameplate cast bars for hostile casters 2026-03-12 04:21:33 -07:00
Kelsi
b8141262d2 feat: add low mana pulse and interrupt alert on cast bars
- Mana bar pulses dim blue when below 20% (matches health bar low-hp pulse)
- Target, focus, and boss cast bars pulse orange when cast is > 80% complete,
  signalling the closing interrupt window across all frame types
2026-03-12 04:18:39 -07:00
Kelsi
3014c79c1f feat: show item stack count on action bar slots
Consumable items (potions, food, etc.) on the action bar now show their
remaining stack count in the bottom-right corner of the icon. Shows red
when count is 1 (last one), white otherwise. Counts across all bag slots.
2026-03-12 04:12:07 -07:00
Kelsi
5adb5e0e9f feat: add health bar color transitions for player and pet frames
Some checks are pending
Build / Build (arm64) (push) Waiting to run
Build / Build (x86-64) (push) Waiting to run
Build / Build (macOS arm64) (push) Waiting to run
Build / Build (windows-arm64) (push) Waiting to run
Build / Build (windows-x86-64) (push) Waiting to run
Security / CodeQL (C/C++) (push) Waiting to run
Security / Semgrep (push) Waiting to run
Security / Sanitizer Build (ASan/UBSan) (push) Waiting to run
Player health bar now transitions green→orange→pulsing red as HP drops
(>50%=green, 20-50%=orange, <20%=pulsing red). Pet frame gets the same
3-tier color scheme. Target and party frames already had color coding.
2026-03-12 04:06:46 -07:00
Kelsi
d14982d125 feat: add DPS/HPS meter showing real-time damage and healing output
Floating window right of the cast bar showing player's DPS and healing
per second, derived from combat text entries. Uses actual combat duration
as denominator for accurate readings at fight start. Toggle in Settings
> Network. Saves to settings.cfg.
2026-03-12 04:04:27 -07:00
Kelsi
797bb5d964 feat: add center-screen raid warning and boss emote overlay
RAID_WARNING messages show as flashing red/yellow large text.
RAID_BOSS_EMOTE and MONSTER_EMOTE show as amber text.
Each message fades in quickly, holds for 5 seconds, then fades out.
Up to 3 messages stack vertically below the target frame area.
Dark semi-transparent background box improves readability.
Messages are detected from new chat history entries each frame.
2026-03-12 03:52:54 -07:00
Kelsi
66ec35b106 feat: show decimal precision for short action bar cooldowns
Display "1.5" instead of "1s" for cooldowns under 5 seconds,
matching WoW's default cooldown text behaviour for GCDs and
short ability cooldowns where sub-second timing matters.
2026-03-12 03:48:12 -07:00
Kelsi
6068d0d68d feat: add HP% text and cast bars to nameplates
- Show health percentage centered on each nameplate health bar
- Show purple cast bar below health bar when a unit is actively casting
- Display spell name (from Spell.dbc cache) above cast bar
- Show time remaining (e.g. "1.4s") centered on cast bar fill
- All elements respect the existing nameplate alpha fade-out at distance
2026-03-12 03:44:32 -07:00
Kelsi
fa947eb9c7 Add quest objective tracker overlay on right side of screen
Shows tracked quests (or first 5 active quests if none tracked) below the
minimap with live kill/item objective counts and completion status.
2026-03-12 03:39:10 -07:00
Kelsi
63c8e82913 Move latency meter to top-center of screen
Relocate the ms indicator from below the minimap to a small centered
overlay at the top of the screen, with a semi-transparent background
for better readability during gameplay.
2026-03-12 03:31:09 -07:00
Kelsi
d70db7fa0b Reduce damage flash vignette opacity for subtler combat feedback
Peak alpha reduced from 180 to 100 (71% → 39%) so the red edge flash is
noticeable but less intrusive during combat.
2026-03-12 03:24:25 -07:00
Kelsi
6cf511aa7f Add damage flash toggle setting and fix map explored zone reveal
Persist damage_flash to settings.cfg; checkbox in Interface > Screen Effects.
Fix world map fog: trust server exploration mask unconditionally when present,
always reveal the current zone immediately regardless of server mask state.
2026-03-12 03:21:49 -07:00
Kelsi
40a98f2436 Fix talent tab crash and missing talent points at level 10
Unique child window and button IDs per tab prevent ImGui state corruption
when switching talent tabs. Parse SMSG_INSPECT_TALENT type=0 properly to
populate unspentTalentPoints_ and learnedTalents_ from the server response.
2026-03-12 03:15:56 -07:00
Kelsi
6ab9ba65f9 Store and display played time on character Stats tab
Save totalTimePlayed/levelTimePlayed from SMSG_PLAYED_TIME. Request a
fresh update whenever the character screen is opened. Show total and
level-played time in a two-column layout below the stats panel.
2026-03-12 03:09:52 -07:00
Kelsi
46eb66b77f Store and display achievement criteria progress from SMSG_CRITERIA_UPDATE
Track criteria progress (criteriaId → counter) from SMSG_CRITERIA_UPDATE
and SMSG_ALL_ACHIEVEMENT_DATA. Add a Criteria tab to the achievement window
showing live progress values alongside the existing Earned achievements tab.
2026-03-12 03:03:02 -07:00
Kelsi
920950dfbd Add threat list window showing live aggro data for current target
Store SMSG_THREAT_UPDATE/SMSG_HIGHEST_THREAT_UPDATE in a per-unit map
(sorted descending by threat) and clear on SMSG_THREAT_REMOVE/CLEAR.
Show a threat window (/threat or via target frame button) with a progress
bar per player and gold highlight for the tank, red if local player has aggro.
2026-03-12 02:59:09 -07:00
Kelsi
43de2be1f2 Add inspect window showing talent summary and gear for inspected players
Store inspect results (talent points, dual-spec state, gear entries) in a
new InspectResult struct instead of discarding them as chat messages.
Open the inspect window automatically from all Inspect menu items and /inspect.
2026-03-12 02:52:40 -07:00
Kelsi
92db25038c Parse SMSG_ARENA_TEAM_STATS and display in character screen PvP tab 2026-03-12 02:35:29 -07:00
Kelsi
2bdd024f19 Add GM Ticket window (/ticket, /gm commands and Esc menu button) 2026-03-12 02:31:12 -07:00
Kelsi
3964a33c55 Add /help slash command listing all available commands 2026-03-12 02:23:24 -07:00
Kelsi
adf8e6414e Show boot vote progress in LFG UI; fix unused screenH warning 2026-03-12 02:17:49 -07:00
Kelsi
f4754797bc Add Achievements list window (Y key toggle) with search filter 2026-03-12 02:09:35 -07:00
Kelsi
7a1f330655 Add minimap coordinate tooltip and play time warning display
Hovering over the minimap now shows a tooltip with the player's
WoW canonical coordinates (X=North, Y=West) and a hint about
Ctrl+click pinging.

SMSG_PLAY_TIME_WARNING is now parsed (type + minutes) and shown
as both a chat message and a UIError overlay rather than silently
dropped.
2026-03-12 01:57:03 -07:00
Kelsi
1bc3e6b677 Add Channels tab to social frame and reputation change toast
Social frame now has three tabs: Friends, Ignore, and Channels. The
Channels tab lists joined channels with right-click Leave and an input
to join new channels.

Also adds a slide-in reputation change toast in the lower-right corner:
shows faction name, delta (+/-), and current standing tier (Honored,
Revered, etc.) whenever SMSG_SET_FACTION_STANDING fires a rep change.
2026-03-12 01:51:18 -07:00
Kelsi
fb6630a7ae Add Ignore tab to social frame with view/unignore/add support
Social frame now has Friends and Ignore tabs. Friends tab shows online
players first, then offline with a separator, and supports right-click
Whisper/Invite/Remove. Ignore tab lists all ignored players from
ignoreCache with right-click Unignore and an inline add-ignore field.
2026-03-12 01:31:44 -07:00
Kelsi
06456faa63 Extend UIErrorsFrame to spell failures, interrupts, server shutdown warnings 2026-03-12 01:22:42 -07:00
Kelsi
25e2c60603 Add UIErrorsFrame: center-bottom spell error overlay with fade-out 2026-03-12 01:15:11 -07:00
Kelsi
955b22841e Wire SMSG_FORCE_ANIM animId to emoteAnimCallback 2026-03-12 01:04:16 -07:00
Kelsi
eb9ca8e227 Fix item cooldowns not showing on action bar item-type slots
SMSG_ITEM_COOLDOWN now resolves itemId via onlineItems_ and applies cooldown
to both SPELL-type and ITEM-type action bar slots. Classic SMSG_SPELL_COOLDOWN
also uses the embedded itemId field to update ITEM-type slots.
2026-03-12 00:59:25 -07:00
Kelsi
9e5f7c481e Wire achievement toast and ding effect callbacks
Level-up now calls triggerDing() (sound + emote + fade text) in addition to
the screen flash. Achievement earned now calls triggerAchievementToast() via
setAchievementEarnedCallback(), making the existing toast animation visible.
2026-03-12 00:56:31 -07:00
Kelsi
d8f2fedae1 Implement renderSocialFrame: compact friends panel with minimap toggle button
Shows online/AFK/DND/offline status dots, whisper/invite/remove context menus,
and inline add-friend field. Minimap gets a smiley-face button (top-left) with
a green dot badge when friends are online, toggling the panel.
2026-03-12 00:53:57 -07:00
Kelsi
c89dc50b6c Distinguish channeled spells in cast bar with blue color and draining animation
Adds castIsChannel flag set on MSG_CHANNEL_START, cleared on all cast resets.
Cast bar now drains right-to-left in blue for channels vs gold fill for casts.
2026-03-12 00:43:29 -07:00
Kelsi
c13e18cb55 Add Set Raid Mark submenu to target, party, and raid frame context menus
Implements setRaidMark() using the existing RaidTargetUpdatePacket and exposes
it via right-click on target frame, party member frames, and raid cell frames.
2026-03-12 00:39:56 -07:00