NTFS load order, a title-sorted AddOns list, and tooltips at the cursor
- addons load in the order NTFS lists a folder, case-insensitive with an underscore before the letters, the order the vanilla corpus was written against and the one that decides which addon provides a shared library (2178) - GetNumAddOns and the index form of every AddOn verb walk a title-sorted list that hides the Blizzard addons the server says to hide, and the character-select AddOns list is in title order (2175) - SetPoint and SetAllPoints raise the reference's own errors for a frame name that does not exist or an omitted relative frame instead of quietly anchoring to the parent, and an explicit nil means the screen root (2176) - a tooltip owned with ANCHOR_CURSOR follows the mouse, which pfUI's tooltip, xpbar and chat modules, pfQuest's browser and TipBuddy ask for; an omitted or unknown anchor is ANCHOR_LEFT (2176) - a $parent name handed to CreateFrame, CreateTexture or CreateFontString expands as it does in XML, so FonzAppraiser's thirty dropdowns and pfQuest's search icon get the names they asked for (2176) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -363,6 +363,20 @@ pub(crate) fn load_ingame_ui_on_world_entry(world: &mut World) {
|
||||
let identity = world
|
||||
.get_resource::<crate::char_select::Roster>()
|
||||
.and_then(crate::ui_macro::identity);
|
||||
// **The Lua index space, before a single addon file runs** (decision 2175). The reference has
|
||||
// the array in hand well before `UI_Init 0x48fbf0` reaches the addon walk — `SMSG_ADDON_INFO`
|
||||
// lands during the handshake — so an addon reading `GetNumAddOns()` at file scope sees a
|
||||
// populated one. Seated here rather than off a message for exactly that reason: a feed running
|
||||
// a frame later would seat it after every addon had already asked.
|
||||
//
|
||||
// A server that never answered leaves this `None`, and the array then stays empty for the
|
||||
// session — which is the reference's behaviour too, not a fallback we chose.
|
||||
if let Some(reply) = world
|
||||
.get_resource::<crate::net::AddonInfoReply>()
|
||||
.and_then(|r| r.0.clone())
|
||||
{
|
||||
script.note_addon_info_reply(&reply);
|
||||
}
|
||||
// **The CVar table goes in BEFORE the UI loads**, for the same reason and with a shipped-file
|
||||
// consumer rather than an addon one (decision 2115): the reference's own `UIOptionsFrame.xml`
|
||||
// — hidden, on the manifest for the addons that name it — reads `cameraSmoothStyle` and
|
||||
|
||||
Reference in New Issue
Block a user