https://gitlab.synchro.net/main/sbbs/-/commit/84f78b99fc596f30ecf1d868
Added Files:
src/doors/syncrpg/door/help_term.cpp help_term.h syncrpg_version.h Modified Files:
src/doors/syncrpg/CMakeLists.txt PROVENANCE.md src/doors/syncrpg/door/input_term.cpp syncrpg.cpp ui_term.cpp src/doors/syncrpg/easyrpg/src/scene_logo.cpp
Log Message:
syncrpg: show the door's version, and add a help page
Nothing in SyncRPG identified the door, or which build of it a caller
was running, and nothing told them the controls -- Yume Nikki has no
menu of its own that could host either.
Wire up synchronet_gitinfo() (syncrpg had none, unlike the four sibling
termgfx doors) and add syncrpg_version_line(): version, short git hash
and build date -- the stamp SyncDOOM's m_menu.c, SyncDuke's menues.c, SyncRetro's main.c and syncmoo1's sm_door_version_line() already paint.
It surfaces in two places:
* The EasyRPG startup splash, in the right-hand slot of the single
text row it draws (scene_logo.cpp -- this door's FIRST vendored
source edit, recorded in PROVENANCE.md's new "Local patches"
section). EasyRPG's own version keeps the left slot; easyrpg.org
yields the right one but is still shown in the engine's
Settings > About, so no attribution is lost. The two share that row
because there is no second one to be had: it already runs to y=231
of a 240px screen. Single-spaced, unlike the siblings' double, to
fit the 48 characters the row holds.
* A door-drawn help page, since the splash flashes past. Opened with
F1 or the termgfx GMM hotkey (Ctrl+<letter>, syncrpg.ini "[input]
menu_key", default Ctrl-G -- same key and spellings as syncscumm,
so a sysop learns one convention); any key closes it. Composited
onto the engine's display surface in the game's own font from
UpdateDisplay(), which makes the engine's own per-frame repaint of
main_surface the restore path -- no ANSI overlay, no suppressed
presents, no new termgfx entry points, and nothing fighting the
present path's whole-frame de-dupe to get the screen back.
EasyRPG's own about page was tried first and rejected: F1 opens
Scene_Settings, which also carries video/audio/input settings, key
rebinding, and a config write to a SYSTEM-WIDE profile directory that
escapes the door's per-user sandbox. F1 stays unforwarded to the
engine, and input_term.cpp records why so it is not re-litigated.
Both triggers are explicit rather than "any unmapped key": the door's
unmapped bucket is not all keypresses (unrecognized CSI sequences,
terminal replies, stray bytes), and Ctrl+<letter> is indistinguishable
from the bare letter at that layer, so Ctrl-A would be the WASD A.
The help page lists Insert ahead of Escape for Cancel -- Escape works
now, but Insert survives every terminal and keyboard-protocol
combination the door supports -- and omits a bare 'q', which quits on
the legacy byte path but reaches the game as a letter under kitty and
evdev. That inconsistency is noted in help_term.cpp and is worth
settling in termgfx itself.
Verified live on SyncTERM against the Win32/MSVC build; not yet
compiled under GCC/Clang.
Co-Authored-By: Claude Opus 4.8 (1M context) <
[email protected]>
---
� Synchronet � Vertrauen � Home of Synchronet � [vert/cvs/bbs].synchro.net