Maps in widened views: TAB overlay in place, M map across the full width
- hud: shift SetViewport/Clear with moved windows (TAB overview map) - megamap: view constants patched to the render width (clip, scroll limit, edge scrolling, centre, dark band, zoomed view and its markers); frame stretched to the screen edges, zoom controls and their click area centred - hud: Anchor::Screen windows are drawn and clicked unshifted but still own the event scope - autotest waits for log markers instead of fixed delays (~18 s per run) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
a7f8496b2b
commit
c6c5530709
9 files changed
+327
-18
No files matched your search
+29
@@ -86,3 +86,32 @@ tests. Visible dialog tooltips: `mods::hud::VisibleDialogTooltips`.
|
||||
|
||||
The standalone control hooks (buttons, texts) above turned out not to be what
|
||||
the quest dialog is made of; they stay, for top-level controls in general.
|
||||
|
||||
## Large map (M) across the render width
|
||||
|
||||
`mods/megamap.cpp`. cUI_Megamap (vtable 0x894714) is not moved like the other
|
||||
windows (`Anchor::Screen`: drawn and clicked unshifted); its 1024x768 view is
|
||||
widened instead, when the render size is applied (`PatchLayout`):
|
||||
|
||||
| What | Where | Game | Now |
|
||||
|---|---|---|---|
|
||||
| cursor at the right edge (edge scrolling, cursor shape) | 9 × `cmp reg, 3FFh` 0x6c7625..0x6c9e32 | 1023 | width − 1 |
|
||||
| tiles right of the view skipped; labels flipped left | `cmp reg, 400h` 0x6c9aa3, 0x6ca2c6, 0x6ca2e5 | 1024 | width |
|
||||
| largest scroll x = map width (+0xc0160, 2048) − view | `add eax, -400h` 0x6c9edd | −1024 | −width |
|
||||
| view centre (zoom frame, centred image) | 0x6ca53f, 0x6ca637, 0x6ca645 | 0x200 | width / 2 |
|
||||
| scroll centred on the hero; zoomed view; its quest markers | `[0x88e6fc]` (512.0) at 0x6c7bfe, 0x6cb27a, 0x6ccb7f, 0x6cf782 | 512 | own float |
|
||||
| zoomed view: other markers at 768 − d (centre + 256) | `[0x890040]` (768.0) at 0x6ce156 | 768 | width / 2 + 256 |
|
||||
| dark band, right outer / inner edge | vertex immediates 0x6ca774, 0x6ca808 / 0x6ca7bc, 0x6ca84c | 1024 / 954 | width / width − 70 |
|
||||
|
||||
The frame is child statics of the window (vector at +0x78..+0x7c; measured:
|
||||
corners 41×44, 32 px tiles, left side x < 48, right side from x 976). On
|
||||
Show (vf24 0x6c7930) the right side moves to the screen edge, the top and
|
||||
bottom tiles stretch over the wider span, and the four controls the map holds
|
||||
itself (+0xc0440, +0xc04bc statics, +0xc0544, +0xc0600 buttons: the zoom
|
||||
controls, absolute positions) stay centred, and so does the rectangle around
|
||||
them at +0xc0538: the map passes only clicks inside it to the buttons
|
||||
(0x6c7f32). Each control is placed once (the
|
||||
game lays them out at creation only).
|
||||
|
||||
A window anchored `Screen` still counts as the outermost scope for events, so
|
||||
its child buttons (hooked as standalone controls, `Center`) don't shift again.
|
||||
Reference in new issue
Block a user