Commit graph

515 commits

Author SHA1 Message Date
Kelsi
afcd6f2db3 feat: add CHANNEL option to chat type dropdown with channel picker
Adds an 11th chat type "CHANNEL" to the dropdown, displaying a secondary
combo box populated from the player's joined channels. Typing /1, /2 etc.
in the input now also auto-switches the dropdown to CHANNEL mode and
selects the corresponding channel. Input text is colored cyan for channel
messages to visually distinguish them from other chat types.
2026-03-12 11:16:42 -07:00
Kelsi
20fef40b7b feat: show area trigger messages as screen banners
SMSG_AREA_TRIGGER_MESSAGE events (dungeon enter messages, objective
triggers, etc.) were previously only appended to chat. Now they also
appear as animated slide-up toasts in the lower-center of the screen:
blue-bordered dark panel with light-blue text, 4.5s lifetime with
35ms slide-in/out animation. Up to 4 simultaneous toasts stack
vertically. Messages still go to chat as before.
2026-03-12 11:06:40 -07:00
Kelsi
9fe7bbf826 feat: show lootable corpse diamonds on minimap
Dead units with UNIT_DYNFLAG_LOOTABLE (0x0001) set are rendered as small
yellow-green diamonds on the minimap, distinct from live NPC dots. A hover
tooltip shows the unit name. Uses the dynamic flags already tracked by the
update-object parser, so no new server data is needed.
2026-03-12 11:04:10 -07:00
Kelsi
661f7e3e8d feat: add persistent combat log window (/combatlog or /cl)
Stores up to 500 combat events in a rolling deque alongside the existing
floating combat text. Events are populated via the existing addCombatText()
call site, resolving attacker/target names from the entity manager and
player name cache at event time.

- CombatLogEntry struct in spell_defines.hpp (type, amount, spellId,
  isPlayerSource, timestamp, sourceName, targetName)
- getCombatLog() / clearCombatLog() accessors on GameHandler
- renderCombatLog() in GameScreen: scrollable two-column table (Time +
  Event), color-coded by event category, with Damage/Healing/Misc filter
  checkboxes, auto-scroll toggle, and Clear button
- /combatlog (/cl) chat command toggles the window
2026-03-12 11:00:10 -07:00
Kelsi
36d40905e1 feat: add in-window search bar to who results window
Add a search field with "Search" button directly in the who results
window so players can query without using the chat box. Pressing Enter
in the search field also triggers a new /who query.
2026-03-12 10:45:31 -07:00
Kelsi
367390a852 feat: add /who results window with sortable player table
Store structured WhoEntry data from SMSG_WHO responses and show them
in a dedicated popup window with Name/Guild/Level/Class/Zone columns.
Right-click on any row to Whisper, Invite, Add Friend, or Ignore.
Window auto-opens when /who or /whois is typed; shows online count
in the title bar. Results persist until the next /who query.
2026-03-12 10:41:18 -07:00
Kelsi
2f0fe302bc feat: add Trade, Duel, and Inspect to nameplate player context menu 2026-03-12 10:27:51 -07:00
Kelsi
1f7f1076ca feat: add Shaman totem frame with element-colored duration bars
- Renders below pet frame, visible only for Shaman (class 7)
- Shows each active totem (Earth/Fire/Water/Air) with its spell name
  and a colored countdown progress bar
- Colored element dot (brown/red/blue/light-blue) identifies element
- Only rendered when at least one totem is active
2026-03-12 10:14:44 -07:00
Kelsi
ef08366efc feat: add /use and /equip slash commands for inventory items by name
- /use <item name>  — searches backpack then bags (case-insensitive),
  calls useItemBySlot() / useItemInBag() for the first match
- /equip <item name> — same search, calls autoEquipItemBySlot() /
  autoEquipItemInBag() for the first match
- Both commands print an error if the item is not found
- Added both to tab-autocomplete list and /help output
2026-03-12 10:06:11 -07:00
Kelsi
611946bd3e feat: add Trade and Set Note to social frame friends context menu
- "Trade" option initiates a trade via existing initiateTrade(guid) API
  (only shown for online friends with a known GUID)
- "Set Note" option opens an inline popup with InputText pre-filled with
  the current note; Enter or OK saves via setFriendNote(), Esc/Cancel discards
2026-03-12 10:01:35 -07:00
Kelsi
71b0a18238 feat: implement quest sharing with party via CMSG_PUSHQUESTTOPARTY 2026-03-12 09:56:38 -07:00
Kelsi
e781ede5b2 feat: implement /chathelp command with channel-specific help text 2026-03-12 09:45:03 -07:00
Kelsi
88c3cfe7ab feat: show pet happiness bar in pet frame for hunter pets 2026-03-12 09:43:23 -07:00
Kelsi
84b31d3bbd feat: show spell name in proc trigger combat text when spellId is known 2026-03-12 09:41:45 -07:00
Kelsi
aaae07e477 feat: implement /wts and /wtb trade channel shortcuts 2026-03-12 09:38:29 -07:00
Kelsi
ec93981a9d feat: add /stopfollow and /zone slash commands, update /help 2026-03-12 09:36:14 -07:00
Kelsi
aaa3649975 feat: implement /cast slash command with rank support 2026-03-12 09:30:59 -07:00
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
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
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
92ce7459bb feat: add dispel-type border colors to target frame debuffs (magic/curse/disease/poison) 2026-03-12 08:20:14 -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
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