Commit graph

585 commits

Author SHA1 Message Date
Kelsi
bba2f20588 feat: implement CMSG_PET_RENAME with rename dialog in pet frame
- Add PetRenamePacket::build(petGuid, name, isDeclined) builder
- Add GameHandler::renamePet(newName) — sends packet via petGuid_
- Add 'Rename Pet' to pet frame context menu (right-click pet name)
- Modal input dialog with 12-char limit matches server validation
2026-03-12 19:42:31 -07:00
Kelsi
214c1a9ff8 feat: enable FXAA alongside FSR3 in settings and add FXAA to Ultra preset
- Remove fsr2Active guard that prevented FXAA when FSR3 was active
- FXAA checkbox now always enabled; tooltip adapts to explain FSR3+FXAA combo
  when FSR3 is active ('recommended ultra-quality combination')
- Performance HUD shows 'FXAA: ON (FSR3+FXAA combined)' when both active
- Ultra graphics preset now enables FXAA (8x MSAA + FXAA for max smoothness)
- Preset detection updated to require FXAA for Ultra match
2026-03-12 19:27:00 -07:00
Kelsi
284b98d93a feat: implement pet stable system (MSG_LIST_STABLED_PETS, CMSG_STABLE_PET, CMSG_UNSTABLE_PET)
- Parse MSG_LIST_STABLED_PETS (SMSG): populate StabledPet list with
  petNumber, entry, level, name, displayId, and active status
- Detect stable master via gossip option text/keyword matching and
  auto-send MSG_LIST_STABLED_PETS request to open the stable UI
- Refresh list automatically after SMSG_STABLE_RESULT to reflect state
- New packet builders: ListStabledPetsPacket, StablePetPacket, UnstablePetPacket
- New public API: requestStabledPetList(), stablePet(slot), unstablePet(petNumber)
- Stable window UI: shows active/stabled pets with store/retrieve buttons,
  slot count, refresh, and close; opens when server sends pet list
- Clear stable state on world logout/disconnect
2026-03-12 19:15:52 -07:00
Kelsi
5883654e1e feat: replace page-text chat-dump with proper book/scroll window
handlePageTextQueryResponse() now collects pages into bookPages_ vector
instead of dumping lines to system chat. Multi-page items (nextPageId != 0)
are automatically chained by requesting subsequent pages. The book window
opens automatically when pages arrive, shows formatted text in a parchment-
styled ImGui window with Prev/Next page navigation and a Close button.

SMSG_READ_ITEM_OK clears bookPages_ so each item read starts fresh;
handleGameObjectPageText() does the same before querying the first page.
Closes the long-standing issue where reading scrolls and tattered notes
spammed many separate chat messages instead of showing a readable UI.
2026-03-12 18:21:50 -07:00
Kelsi
218d68e275 feat: parse Classic SMSG_INSPECT gear + implement temp weapon enchant timers
Classic 1.12 SMSG_INSPECT (wire 0x115): parse PackedGUID + 19×uint32
itemEntries to populate InspectResult and inspectedPlayerItemEntries_ cache,
enabling gear inspection of other players on Classic servers. Triggers item
queries for all filled slots so the inspect window shows names/ilevels.

SMSG_ITEM_ENCHANT_TIME_UPDATE: parse itemGuid/slot/durationSec/playerGuid and
store per-slot expire timestamps in tempEnchantTimers_. Fires 5min/1min
chat warnings before expiry. getTempEnchantRemainingMs() helper queries live
remaining time. Buff bar renders timed slot buttons (gold/teal/purple per
slot) that pulse red below 60s — useful for Shaman imbues, Rogue poisons,
whetstones and oils across all three expansions.
2026-03-12 18:15:51 -07:00
Kelsi
2f479c6230 feat: implement master loot UI for SMSG_LOOT_MASTER_LIST
Parse master loot candidate GUIDs from SMSG_LOOT_MASTER_LIST and display
a "Give to..." popup menu on item click when master loot is active.
Sends CMSG_LOOT_MASTER_GIVE with loot GUID, slot, and target GUID.
Clears candidates when loot window is closed.
2026-03-12 17:58:24 -07:00
Kelsi
6957ba97ea feat: show stat gains in level-up toast from SMSG_LEVELUP_INFO
Parse hp/mana/str/agi/sta/int/spi deltas from SMSG_LEVELUP_INFO payload
and display them in green below the "You have reached level X!" banner.
Extends DING_DURATION to 4s to give players time to read the gains.
2026-03-12 17:54:49 -07:00
Kelsi
b7c1aa39a9 feat: add WotLK vehicle exit UI with Leave Vehicle button
Parse SMSG_PLAYER_VEHICLE_DATA (PackedGuid + uint32 vehicleId) and
track in-vehicle state. Add sendRequestVehicleExit() which sends
CMSG_REQUEST_VEHICLE_EXIT. Render a floating red "Leave Vehicle"
button above the action bar whenever vehicleId_ is non-zero.
State cleared on world leave and zone transfer.
2026-03-12 17:25:00 -07:00
Kelsi
806744c483 refactor: consolidate duplicate quest trackers; make primary tracker draggable
Remove the redundant renderObjectiveTracker (simpler, fixed-position) and
apply draggable position tracking to renderQuestObjectiveTracker (the primary
tracker with context menus, item icons, and click-to-open-quest-log).

- questTrackerPos_ / questTrackerPosInit_ now drive the primary tracker
- Default position is top-right (below minimap at y=320)
- Drag saves to settings.cfg immediately (quest_tracker_x/y keys)
- Both trackers were rendering simultaneously — this eliminates the duplicate
2026-03-12 16:52:12 -07:00
Kelsi
925d15713c feat: make quest tracker draggable with persistent position 2026-03-12 16:47:42 -07:00
Kelsi
6e95709b68 feat: add FXAA post-process anti-aliasing, combinable with MSAA 2026-03-12 16:43:48 -07:00
Kelsi
819a690c33 feat: show resurrection flash banner when player transitions ghost→alive 2026-03-12 16:33:08 -07:00
Kelsi
42d66bc876 feat: show quality-coloured loot toast when items are received
SMSG_ITEM_PUSH_RESULT now fires a new ItemLootCallback that
game_screen.cpp uses to push a compact slide-in toast at the
bottom-left of the screen.  Each toast:

- Shows a quality-tinted left accent bar (grey/white/green/blue/
  purple/orange matching WoW quality colours)
- Displays "Loot: <item name>" with the name in quality colour
- Appends " x<N>" for stacked pickups
- Coalesces repeated pickups of the same item (adds count, resets timer)
- Stacks up to 5 entries, 3 s lifetime with 0.15 s slide-in and 0.7 s
  fade-out
2026-03-12 16:24:11 -07:00
Kelsi
129fa84fe3 feat: add PvP honor credit toast on honorable kill
SMSG_PVP_CREDIT previously only wrote a system chat message.  Now it
also fires a new PvpHonorCallback, which game_screen.cpp uses to push
a compact dark-red toast at the top-right of the screen showing
"⚔ +N Honor" with a 3.5 s lifetime and smooth fade in/out.
2026-03-12 16:19:25 -07:00
Kelsi
59fc7cebaf feat: show toast when a nearby player levels up
When the server sends a level-up update for a non-self player entity,
fire the existing OtherPlayerLevelUpCallback which was previously
unregistered in the UI layer.  GameScreen now:

- Registers the callback once and stores {guid, level} entries
- Lazily resolves the player name from the name cache at render time
- Renders gold-bordered toasts bottom-centre with a ★ icon and fade/slide
  animation ("Thrall is now level 60!"), coalescing duplicates
- Prunes entries after 4 s with a 1 s fade-out
2026-03-12 16:12:21 -07:00
Kelsi
b52e9c29c6 feat: highlight quest GO objectives as cyan triangles on the minimap
Quest game-object objectives (negative npcOrGoId entries, e.g. gather 5
crystals) now render as larger bright-cyan triangles distinct from the
standard amber GO markers. Tooltip appends "(quest)" to the name.
Also refactors the minimap quest-entry build to track both NPC and GO
kill-objective entries from the tracked quest log.
2026-03-12 16:05:34 -07:00
Kelsi
3f340ca235 feat: highlight quest kill objective mobs as gold dots on the minimap
Quest kill objective NPCs are now rendered as larger gold dots (3.5px)
with a dark outline on the minimap, distinct from standard hostile (red)
and friendly (white) dots. Only shows mobs for incomplete objectives in
tracked quests (or all active quests if none are tracked). Hovering the
dot shows a tooltip with the unit name and "(quest)" annotation.
2026-03-12 15:59:30 -07:00
Kelsi
c3afe543c6 feat: show quest objective progress toasts on kill and item collection
Adds a visual progress overlay at bottom-right when quest kill counts
or item collection updates arrive. Each toast shows the quest title,
objective name, a fill-progress bar, and an X/Y count. Toasts coalesce
when the same objective updates multiple times, and auto-dismiss after 4s.
Wires a new QuestProgressCallback through GameHandler to trigger the UI.
2026-03-12 15:57:09 -07:00
Kelsi
5216582f15 feat: show whisper toast notification when a player whispers you
Adds a slide-in toast overlay at the bottom-left of the screen whenever
an incoming whisper arrives. Toasts display "Whisper from:", the sender
name in gold, and a truncated message preview. Up to 3 toasts stack with
a 5s lifetime; each fades in over 0.25s and fades out in the final 1s.
2026-03-12 15:53:45 -07:00
Kelsi
77879769d3 feat: show area discovery toast with XP gain when exploring new zones 2026-03-12 15:42:55 -07:00
Kelsi
98ad71df0d feat: show class-colored health bars on player nameplates 2026-03-12 15:36:25 -07:00
Kelsi
9e4c3d67d9 feat: show interactable game object dots on minimap when NPC dots enabled 2026-03-12 15:28:31 -07:00
Kelsi
78ad20f95d feat: add cooldown tracker panel showing all active spell cooldowns
A new opt-in panel (Settings > Interface > Show Cooldown Tracker) lists
all spells currently on cooldown, sorted longest-to-shortest, with
spell icons and color-coded remaining time (red>30s, orange>10s,
yellow>5s, green<5s). Adds getSpellCooldowns() accessor to GameHandler.
Setting persists to ~/.wowee/settings.cfg.
2026-03-12 15:25:07 -07:00
Kelsi
c503bc9432 feat: show nearby other-player dots on minimap when NPC dots are enabled 2026-03-12 15:20:31 -07:00
Kelsi
39fc6a645e feat: show party member dots on minimap with class colors and name tooltip
Small colored squares appear on the minimap for each online party member
at their server-reported position. Dots use WoW class colors when the
entity is loaded, gold for the party leader, and light blue otherwise;
dead members show as gray. Hovering a dot shows the member's name.
2026-03-12 15:19:08 -07:00
Kelsi
bff690ea53 feat: show zone name tooltip on party member name hover in party frame 2026-03-12 15:11:09 -07:00
Kelsi
e2f36f6ac5 feat: show party member dots on world map with name labels and class colors 2026-03-12 15:05:52 -07:00
Kelsi
6dc630c1d8 feat: add Arena tab to Social frame showing per-team rating and weekly/season record 2026-03-12 14:58:48 -07:00
Kelsi
6645845d05 feat: show aura stack/charge count on boss frame aura icons for parity 2026-03-12 14:53:14 -07:00
Kelsi
c0c750a76e feat: show aura stack/charge count on focus frame aura icons for parity with target frame 2026-03-12 14:50:59 -07:00
Kelsi
6044739661 feat: show group leader crown on world nameplate for party/raid leader players 2026-03-12 14:48:53 -07:00
Kelsi
61412ae06d feat: show group leader crown on player frame when you are party/raid leader 2026-03-12 14:47:51 -07:00
Kelsi
d682ec4ca7 feat: show group leader crown on focus frame for parity with target frame 2026-03-12 14:43:58 -07:00
Kelsi
2f234af43b feat: show group leader crown on target frame when targeting party leader 2026-03-12 14:39:29 -07:00
Kelsi
6d21a8cb8d feat: add distance indicator to focus frame for range awareness 2026-03-12 14:34:21 -07:00
Kelsi
b44ff09b63 feat: add pulsing golden glow to Attack action bar slot when auto-attacking 2026-03-12 14:32:15 -07:00
Kelsi
950a4e2991 feat: show raid mark icon on focus frame to match target frame parity 2026-03-12 14:30:15 -07:00
Kelsi
65f19b2d53 feat: show durability warning overlay when gear is damaged or broken
Displays a bottom-center HUD banner when any equipped item drops below
20% durability (yellow) or reaches 0 (red "broken" alert), matching
WoW's own repair reminder UX.
2026-03-12 14:25:37 -07:00
Kelsi
d34f505eea feat: add quest indicator, classification badge, and subtitle to focus frame
Mirrors the target frame improvements: NPC focus targets now show
quest giver ! / ? indicators, Elite/Rare/Boss/Rare Elite badges,
and the creature subtitle (e.g. '<Grand Marshal of the Alliance>').
Keeps the focus and target frames in consistent feature parity.
2026-03-12 14:21:02 -07:00
Kelsi
9494b1e607 feat: show quest giver ! and ? indicators on nameplates
For non-hostile NPCs with quest status data, displays a colored symbol
to the right of the nameplate name:
  !  (gold)  — quest available
  !  (gray)  — low-level quest
  ?  (gold)  — quest ready to turn in
  ?  (gray)  — quest incomplete

Displayed adjacent to the existing quest-kill sword icon, maintaining
the existing icon offset logic so both can coexist.
2026-03-12 14:18:22 -07:00
Kelsi
d2db0b46ff feat: show quest giver ! and ? indicators in target frame
Reads QuestGiverStatus from the existing npcQuestStatus_ cache and
displays a colored badge next to the target's name:
  !  (gold)  — quest available
  !  (gray)  — low-level quest available
  ?  (gold)  — quest ready to turn in
  ?  (gray)  — quest incomplete / in progress
Matches the standard WoW quest indicator convention.
2026-03-12 14:15:45 -07:00
Kelsi
1165aa6e74 feat: display creature subtitle in target frame
Shows the NPC subtitle (e.g. '<Warchief of the Horde>') below the
creature name in the target frame, using the subName field already
parsed from SMSG_CREATURE_QUERY_RESPONSE. Adds getCachedCreatureSubName()
accessor to GameHandler. Matches the official client's presentation.
2026-03-12 14:14:25 -07:00
Kelsi
8cb0f1d0ef feat: show Elite/Rare/Boss classification badge in target frame
Reads creature rank (0=Normal, 1=Elite, 2=RareElite, 3=Boss, 4=Rare)
from the existing creatureInfoCache populated by creature query responses.
Shows a colored badge next to the level: gold for Elite, purple for
Rare Elite, red for Boss, cyan for Rare — each with a tooltip. Adds
getCreatureRank() accessor to GameHandler for UI use.
2026-03-12 14:13:09 -07:00
Kelsi
a03ee33f8c feat: add power bar to boss frames for energy/mana tracking
Energy bosses (e.g. Anub'arak, various WotLK encounters) use energy as
their ability cooldown mechanic — tracking it in the boss frame lets
raiders anticipate major ability casts. Mana, rage, focus, and energy
all shown with type-appropriate colors as a slim 6px bar below HP.
2026-03-12 14:09:01 -07:00
Kelsi
fb843026ad feat: add LFG queue time indicator below minimap with role-check pulsing 2026-03-12 14:00:14 -07:00
Kelsi
e2b2425230 feat: add cast bar to target-of-target frame with pulsing interrupt warning 2026-03-12 13:58:30 -07:00
Kelsi
f39ba56390 feat: show raid mark symbols on raid frame cells beside leader crown 2026-03-12 13:50:46 -07:00
Kelsi
e6f48dd822 feat: show raid mark symbols on minimap party member dots with name tooltip 2026-03-12 13:48:01 -07:00
Kelsi
1e76df7c98 feat: show raid mark symbols on party frame member names 2026-03-12 13:47:02 -07:00
Kelsi
3d1b187986 feat: add aura icons to boss frame with DoT tracking and duration overlays 2026-03-12 13:43:12 -07:00