ui: add side action bars, fix resize positioning, and fix player nameplates

Action bars:
- Expand from 2 bars (24 slots) to 4 bars (48 slots)
- Bar 2: right-edge vertical bar (slots 24-35), off by default
- Bar 3: left-edge vertical bar (slots 36-47), off by default
- New "Interface" settings tab with toggles and offset sliders for all bars
- XP bar Y position now tracks bar 2 visibility and vertical offset

HUD resize fix:
- All HUD elements (action bars, bag bar, XP bar, cast bar, mirror timers)
  now use ImGui::GetIO().DisplaySize instead of window->getWidth/Height()
- DisplaySize is always in sync with the current frame — eliminates the
  one-frame lag that caused bars to misalign after window resize

Player nameplates:
- Show player name only on nameplate (no level number clutter)
- Fall back to "Player (level)" while name query is pending
- NPC nameplates unchanged (still show "level Name")
This commit is contained in:
Kelsi 2026-03-10 15:56:41 -07:00
parent ec5e7c66c3
commit bee4dde9b7
3 changed files with 150 additions and 23 deletions

View file

@ -588,10 +588,14 @@ public:
const std::unordered_map<uint32_t, TalentTabEntry>& getAllTalentTabs() const { return talentTabCache_; }
void loadTalentDbc();
// Action bar — 2 bars × 12 slots = 24 total
// Action bar — 4 bars × 12 slots = 48 total
// Bar 0 (slots 0-11): main bottom bar (1-0, -, =)
// Bar 1 (slots 12-23): second bar above main (Shift+1 ... Shift+=)
// Bar 2 (slots 24-35): right side vertical bar
// Bar 3 (slots 36-47): left side vertical bar
static constexpr int SLOTS_PER_BAR = 12;
static constexpr int ACTION_BARS = 2;
static constexpr int ACTION_BAR_SLOTS = SLOTS_PER_BAR * ACTION_BARS; // 24
static constexpr int ACTION_BARS = 4;
static constexpr int ACTION_BAR_SLOTS = SLOTS_PER_BAR * ACTION_BARS; // 48
std::array<ActionBarSlot, ACTION_BAR_SLOTS>& getActionBar() { return actionBar; }
const std::array<ActionBarSlot, ACTION_BAR_SLOTS>& getActionBar() const { return actionBar; }
void setActionBarSlot(int slot, ActionBarSlot::Type type, uint32_t id);