your corpse answers the mouse, and a cinematic's last holes close
- a corpse is a body you can hover, cursor and click: it enters the same ray pass as units with the winner switched on type at publish (the reference's own shape — one trace over every object), the cursor classifier is transcribed whole (lootable-by-me → the pickup cursor, grayed by range; else the insignia leg behind the learned-skill latch; your own body falls through to the clear), and right-click is "not mounted AND lootable" → CMSG_LOOT; CORPSE_FIELD_FLAGS bit 5 is the PvP insignia flag, not "reclaimable" as an old note had it; the widening also caught that a GameObject anywhere on screen could steal the click from a nearer corpse, and that a left-click on a body cleared your target as if you had clicked ground
- the cinematic sweep closes eleven holes: a shot plays its sequence band's WIDTH, not its end — two shipped fly-bys band away from zero and ran long with their opening frames frozen (the Night Elf intro measured 102333 → 102000 ms); CMSG_NEXT_CINEMATIC_CAMERA announces every shot, the first included — the old "between shots" reading meant it was sent NEVER, since every 1.12 sequence row carries exactly one camera; the ack invariant is stated once (one CMSG_COMPLETE_CINEMATIC per accepted trigger, over-acking tolerated, under-acking never — a dropped ack despawns the world around you until relog); the hardware cursor hides for the shot; and the music cut lands in the frame that starts it — it was one frame late, exactly long enough for a first login's zone fanfare to start under the narration and be stamped as played
- RunBinding exists, and a fly-by stops handing the world its mouse: CinematicFrame's OnKeyDown hands the SCREENSHOT chord back to its binding through RunBinding, a global we never had, so every press during a fly-by raised and took no picture; and the mouse was fully live under a shot — right-drag turned the character, clicks picked targets through the flying camera, both buttons walked the body — so the pointer now reads as over the UI while a shot plays
- AdvanceTime and ReplaceIconTexture are carved off the bytes: AdvanceTime really is a no-op in the reference (its one reachable call is mov eax,1; ret), ReplaceIconTexture is a material swap over a model's type-14 texture slots that stores nothing on the widget, and SetModel(nil) RAISES — the "documented clear" our binding claimed was invented, not read; and the addon roster now says WHOSE package is short when a .toc names files the folder doesn't hold — nine of the corpus's twenty-nine load failures are the addon's own manifest, which the real client also shrugs off ("Couldn't open %s", carry on), so they stop reading as our defects
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -16,8 +16,18 @@
|
||||
transcription of the whole routing table would be a list of no-ops that reads as coverage.
|
||||
|
||||
Known seam, stated: the real client PARENTS every FrameXML frame under UIParent (scale/
|
||||
visibility cascade); benilla's top-level frames still attach to the screen root. Same
|
||||
rect, so anchors agree - re-parenting is a separate arc if a cascade consumer appears.
|
||||
visibility cascade). benilla is PART WAY there - 41 of our top-level frames declare
|
||||
parent="UIParent" where the reference declares 104, and 32 frames the reference parents
|
||||
(MainMenuBar, PlayerFrame, TargetFrame, the four MultiBars, UIErrorsFrame, the panels)
|
||||
still attach to the screen root because the transcription dropped the attribute. Same
|
||||
rect, so anchors agree.
|
||||
|
||||
The cascade consumer this note was waiting for HAS appeared (decision 1724): a cinematic
|
||||
hides the HUD by doing `UIParent:Hide()` in the reference, and benilla substitutes an
|
||||
engine-side draw-kill that also switches the mouse feed off - which is how the world came
|
||||
to take every click of a race intro. Restoring the dropped parents is the fix; it is a
|
||||
whole-UI arc (draw order, strata, ALT-Z, the world map's own full-screen row) and so is
|
||||
proposed rather than taken.
|
||||
-->
|
||||
<Frame name="UIParent" setAllPoints="true" frameStrata="MEDIUM">
|
||||
<Scripts>
|
||||
|
||||
@@ -293,9 +293,17 @@
|
||||
|
||||
-- SetFullScreenFrame(frame) — UIParent.lua l.852-866. ONE line dropped: the reference also
|
||||
-- does `UIParent:Hide()`/`:Show()` around the swap, hiding the whole game UI behind the
|
||||
-- fullscreen frame. benilla has no UIParent frame (the note on `slots` above), and the only
|
||||
-- full frame we ship — the world map — already paints its own full-screen blackout
|
||||
-- (WorldMapFrame.xml), which is what that Hide buys the reference.
|
||||
-- fullscreen frame.
|
||||
--
|
||||
-- BOTH of the reasons this note used to give are now FALSE (decision 1724). A real
|
||||
-- `UIParent` frame exists (UIParent.xml), and the world map is no longer the only `full`
|
||||
-- row: `CinematicFrame` is a second one, and it paints nothing by design. So this dropped
|
||||
-- line is exactly what makes a cinematic hide the HUD through `crate::ui_hide::UiHidden`
|
||||
-- instead of through here — and `UiHidden` also means "the UI takes no mouse", which is
|
||||
-- ALT-Z's meaning and the reason the world took every click of a fly-by.
|
||||
--
|
||||
-- Restoring it needs the HUD parented to UIParent first (the 32 dropped `parent="UIParent"`
|
||||
-- declarations 1724 measured); hiding UIParent today would reach almost nothing.
|
||||
function SetFullScreenFrame(frame)
|
||||
local oldFrame = slots.fullscreen
|
||||
slots.fullscreen = frame
|
||||
|
||||
@@ -455,7 +455,9 @@ ScriptLogFrame.xml
|
||||
# requirement rather than legibility is **after BuffFrame.xml**: the toast re-anchors
|
||||
# TemporaryEnchantFrame out of its own way, and that frame is declared there.
|
||||
HelpFrame.xml
|
||||
# The cinematic letterbox (the race-intro fly-by's two black bars, and the ESC that skips it).
|
||||
# The cinematic frame: the ESC that skips a fly-by, and the SCREENSHOT chord it hands back. It
|
||||
# draws NOTHING — the letterbox moved to Bevy UI nodes in `crate::cinematic` (decision 1699),
|
||||
# because the lane this frame paints into is dark for the whole shot.
|
||||
# Needs UiPanels.xml far above for ShowUIPanel/HideUIPanel and its own UIPanelWindows row; needs
|
||||
# nothing else, and nothing needs it — the engine reaches it purely by firing CINEMATIC_START.
|
||||
# Seated late because it is an outermost, screen-owning layer, like the two windows below it.
|
||||
|
||||
Reference in New Issue
Block a user