Esc menu without "Exportieren"; export screen mod removed
- cUI_EscMenu::BuildLines hook: the UI_ESC_EXPORT line is removed, the lines below move up, the window shrinks by one line, centred. - game/ui/control.h: control vector helpers (ControlsIn, RemoveControl, SetControlAt, DeleteControl, ControlNamed), used by the main menu too. - The export screen is unreachable now: charexport.cpp and docs/char-export.md deleted. Spielen screen redesign noted in todo.md. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
618288e310
commit
e0d8d0ce7e
9 files changed
+105
-195
No files matched your search
@@ -1,48 +0,0 @@
|
||||
# Character export screen (`src/mods/charexport.cpp`)
|
||||
|
||||
Request (2026-10-18): the export screen (Esc menu "Exportieren") was not
|
||||
adapted to widescreen (layout and clicks shifted), slots could not be
|
||||
cleared or overwritten; the screen and the save game window need black
|
||||
beside the background picture.
|
||||
|
||||
## Layout
|
||||
|
||||
See `hud.md`, "Full-screen windows": the 3D scene was stretched across the
|
||||
wide viewport; the window now draws with a viewport on the centred frame.
|
||||
|
||||
## cUI_Character
|
||||
|
||||
One window for the main menu's character selection / import and the export
|
||||
screen (vtable 0x894fa8, render vf44 0x70f160, events vf10 0x70e860).
|
||||
|
||||
| Field | Meaning |
|
||||
|---|---|
|
||||
| +0x390 | mode: 4 selection, 5 export, 6 overwrite confirmation (7 import) |
|
||||
| +0x394 | previous mode |
|
||||
| +0x1b4 | 8 slot controls; hero id at +0x2f8 (0: empty) |
|
||||
| +0x1d6 | selected slot (char, -1 none) |
|
||||
| +0x3b4 | erase button ("UI_CHAR_ERASE_TOOLTIP") |
|
||||
|
||||
| Address | Function |
|
||||
|---|---|
|
||||
| 0x70c760 | SetMode (mode), ret 4; entering mode 5 reloads the heroes |
|
||||
| 0x70c440 | SelectSlot (char slot), ret 4; shows the erase button in modes 4 / 7 only |
|
||||
| 0x70d0f0 | ExecuteAction (action, slot, extra), ret 0xc: 6 export into slot (`Save\Hero%.2d.pax`), 9 export with confirmation if occupied |
|
||||
| 0x70e650 | right-hand button: in mode 5 action 6 (empty slot) or 9 (occupied) |
|
||||
| 0x7f01a0 | HeroSlots_DeleteHero (slot + 1), thiscall on 0x7d7c40(), ret 4 |
|
||||
|
||||
## Overwrite
|
||||
|
||||
Measured with a log: exporting to an occupied slot was already the game's own
|
||||
path (action 9 -> mode 6 confirmation -> action 6). It only failed because
|
||||
clicks hit the wrong place before the layout fix.
|
||||
|
||||
## Clear
|
||||
|
||||
The erase button is created for every mode, and its click handler (vf10)
|
||||
does not check the mode: it opens the game's confirmation
|
||||
(UI_CHAR_ERASE_CONFIRM, cUI_BusyDlg), whose answer (0x72087b) calls
|
||||
DeleteHero. The mod shows the button in export mode whenever an occupied slot
|
||||
is selected (after SetMode / SelectSlot). After DeleteHero, if the screen is
|
||||
in export mode, it enters export mode again (reloads the heroes) and clears
|
||||
the selection; otherwise the erased hero stayed until the next export.
|
||||
+8
-1
@@ -258,6 +258,14 @@ flag +0x54 |= 0x40. The Esc menu line keeps its action (Show
|
||||
direct save while a game runs. Its text is patched at 0x6bc1f7 (id 0x41b is
|
||||
used by other windows too). Loading is from the main menu only.
|
||||
|
||||
The Esc menu has no "Exportieren" (request 2026-10-20): `cUI_EscMenu::BuildLines`
|
||||
(0x6bb870, called by the constructor and on an event) makes five
|
||||
cUI_StaticText64 lines in the vector +0x158, 0x24 apart; each handles its own
|
||||
events. After it the UI_ESC_EXPORT line is removed and deleted, the lines
|
||||
below move up, and the window (0x108 x 0xc8) loses 0x24 of height, staying
|
||||
centred. With it the export screen (cUI_Character mode 5) is unreachable;
|
||||
its mod (charexport.cpp, an erase button for export slots) was deleted.
|
||||
|
||||
### Migration
|
||||
|
||||
On first start (no `characters\` folder): after a backup in
|
||||
@@ -268,7 +276,6 @@ kept, the newest file overall is the shared hero.
|
||||
## Open
|
||||
|
||||
- Reset a difficulty.
|
||||
- Remove the export / import UI.
|
||||
- Silent autosave every 10 minutes.
|
||||
- Quickload (row 0) does not know characters.
|
||||
- Multiplayer (see `todo.md`).
|
||||
+10
-5
@@ -182,13 +182,10 @@ From the characters rework (`docs/characters.md`, request of 2026-10-19):
|
||||
- **Unlock difficulties by story completion.** Bronze and Silber stay open;
|
||||
difficulty d >= 2 opens when the story on d - 1 is completed. The counters
|
||||
are one byte per difficulty in cStatsManager +0x5704 (read 0x424be0) and
|
||||
travel in the save header (+0x88..+0x98) and the hero file. Today every
|
||||
difficulty up to the highest played one is offered (and Silber).
|
||||
travel in the save header (+0x88..+0x98) and the hero file. Done
|
||||
2026-10-20 (docs/characters.md).
|
||||
- **Reset a difficulty.** Remove one world from a character (the shared hero
|
||||
stays); a button / dialog entry in the load window.
|
||||
- **Remove the export / import UI.** The Esc menu's "Exportieren" and the
|
||||
character screen's import (cUI_Character mode 5, `docs/char-export.md`):
|
||||
characters replace exported heroes.
|
||||
- **Silent autosave every 10 minutes** (a setting later) into the
|
||||
autosave file, without the busy dialog, like the direct save
|
||||
(`SaveOnTick`) but marked as an autosave.
|
||||
@@ -196,3 +193,11 @@ From the characters rework (`docs/characters.md`, request of 2026-10-19):
|
||||
current character, but the quickload event (0x116, engine +0x68 = row,
|
||||
flag 0x200) loads `GAME00.PAK`, which is not listed; make it reload the
|
||||
current character's world (or its newer autosave).
|
||||
|
||||
## Savegames screen redesign ("Spielen")
|
||||
|
||||
Asked 2026-10-20: redesign the load window (cUI_Savegame, the "Spielen"
|
||||
screen, characters.cpp): show a render of the selected character, use the
|
||||
space far better. The user looks for 16:9 artwork so the screens can be
|
||||
widened beyond the 1024 frame (now drawn in a centred 1024x768 viewport with
|
||||
black sides, hud.cpp FrameScope).
|
||||
Reference in new issue
Block a user