Party Frames (oUF SpawnHeader)#137
Draft
danvernon wants to merge 20 commits intoEllesmereGaming:mainfrom
Draft
Conversation
ff52b98 to
e08ec18
Compare
Contributor
Author
|
Debug commands — paste these in-game: Paste the chat output back here. |
Contributor
Author
Status: Party frames are working!The frame is rendering correctly — health bar, name text, portrait, power bar all visible. Issues from the screenshots:
|
Contributor
Author
|
Debug: check if position is saving correctly After dragging party frames in Unlock Mode and exiting, run: Then Also try this to force a known-good position: |
Contributor
Author
Spec for configurable party frames using oUF SpawnHeader with existing component builders shared via ns namespace. Covers frame anatomy, header layout architecture, settings structure, file organization, CDM integration, and phased implementation plan.
9-task plan covering defaults, settings mappings, ns exports, StylePartyFrame, SpawnPartyHeader, Unlock Mode, and CDM integration. Reviewed and fixed: WoW API correctness, ns.PP load-time availability, RegisterStyle guard, GetSettingsForUnit cache placement.
- Add full party defaults sub-table with layout, text, aura, threat, range-fade, growth direction, sort order, and spacing settings - Add party = true to enabledFrames - Add party position to positions table - Include "party" in opacity normalization UNITS list
- Map "party1"-"party4" to the "party" settings key in UnitToSettingsKey - Add party1-party4 and "party" entries to the lazy-init unitSettingsMap
- Export ns.PP for PixelPerfect access from party/raid files - Export 17 builder/utility functions (CreateHealthBar, CreatePowerBar, CreateCastBar, CreateUnifiedBorder, ApplyFramePosition, etc.) - Set ns.db after DB initialization so party file can access profile - Export ns.frames for cross-file frame references - Export ns.SetupUnitMenu inside spawn function scope
…nd SpawnPartyHeader Core party frames implementation: - StylePartyFrame: health, absorb, power, portrait, border, text, role icon, auras with dispel highlights, range fade, threat, ready check, leader/assist, resurrect, summon indicators - SpawnPartyHeader: oUF header with configurable growth direction, sort order, spacing, and showPlayer toggle - UpdatePartyLayout: out-of-combat layout attribute updates
Task 6: Call ns.SpawnPartyHeader() after boss frame hiding loop,
guarded by an existence check so it's safe when the party module
isn't loaded.
Task 7: Register party frames with Unlock Mode system:
- Add "party" to UNIT_LABELS
- Route getFrame to ns.partyHeader
- Compute getSize from party profile settings
- Block setWidth/setHeight (not individually resizable)
- Add savePos/applyPos branches for ns.partyHeader
- Register MakeUFElement("party", 8) after boss
EllesmereUI party frames checked first, before ElvUI/Cell/Blizzard fallbacks.
…rames - UpdatePartyLayout now always sets all three sort attributes (groupBy, groupingOrder, sortMethod) with nil to clear stale values when switching between sort modes - Hide Blizzard CompactPartyFrame and PartyFrame when EUI party frames are enabled, preventing overlap
Toggles test mode that shows party frames when solo by overriding showSolo and visibility driver. Type /partytest again to restore normal behavior.
…bility - StylePartyFrame now falls back to frame attribute or "player" when oUF calls it before a unit is assigned - /partytest unregisters the old driver before registering the new one and uses a macro conditional that lets the secure header properly assign units before styling frames
oUF ouf.lua:270 calls objectUnit:match() which crashes when both the unit parameter and oUF-guessUnit attribute are nil. This happens in solo test mode when the header creates frames with no real party member. Set a 'party' fallback in the initialConfigFunction.
… header The SecureGroupHeader's showSolo triggers oUF initObject with a nil unit which crashes at ouf.lua:270. Instead, spawn a standalone oUF frame with the party style using the player unit — bypasses the header entirely for preview purposes.
… table oUF.styles doesn't exist (styles is a local table), so the guard always passed and tried to re-register. Use ns._partyStyleRegistered flag instead. Also remove redundant registration attempt from /partytest.
oUF overrides frame:RegisterEvent to require (event, func) signature. Previous code used Blizzard-style single-arg registration which passed nil as the callback.
GROUP_ROSTER_UPDATE and PLAYER_ROLES_ASSIGNED are not unit events, oUF requires the third arg = true to register them.
The SecureGroupHeader hides when solo, which breaks Unlock Mode positioning (hidden frame reports wrong position). Added a persistent partyAnchor frame that holds the saved position; the header attaches to it. Unlock Mode now drags/saves via the anchor.
Test frame was anchoring to partyHeader which is hidden when solo, causing the test frame to not display.
e09566b to
e910cb5
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Summary
SpawnHeaderwith existing component buildersFindPlayerPartyFrame)Files Changed
EllesmereUIUnitFrames/EllesmereUIPartyFrames.lua— NEW (~480 lines)EllesmereUIUnitFrames/EllesmereUIUnitFrames.lua— defaults, mappings, ns exports, spawn call, Unlock ModeEllesmereUIUnitFrames/EllesmereUIUnitFrames.toc— load orderEllesmereUI.lua— CDM source priorityTest plan
enabledFrames.party = false— frames suppressed/partytest— shows frames while solo for testingPhase 2+ (not in this PR)