https://gitlab.synchro.net/main/sbbs/-/commit/f7154ef1336296e8ec07c643
Modified Files:
src/doors/syncconquer/PROVENANCE.md src/doors/syncconquer/door/door_io.c src/doors/syncconquer/vanilla/redalert/egos.cpp init.cpp menus.cpp options.cpp scroll.cpp sounddlg.cpp startup.cpp
Log Message:
syncalert: live-test fixes -- UI polish, portable INI, volume persistence
A batch of fixes from SyncTERM live testing, spanning the door's own code
and small tracked patches to the vendored engine (PROVENANCE #15-20).
UI polish:
- Stats overlay (Ctrl-S) now erases to end of line before its SGR reset, so
a shorter readout can't leave the previous longer line's tail on screen;
the bottom row renders as a clean full-width bar (door_io.c).
- Mouse edge-scroll: widened RA's literal 1-pixel scroll border to a small
band (scroll.cpp). Over a terminal the pointer is cell-quantized and can't
land on the exact edge pixel -- especially the top/left, which the door
can't snap to 0 without breaking menu-button clicks -- so edge-scroll was
nearly unusable. No click coordinate moves, so menus are unaffected.
- Sound Controls music slider now tracks changes made from outside the
dialog (the +/- hotkeys) without fighting the mouse: it re-syncs only when
ScoreVolume itself changes, never overriding the gauge from its own value
(sounddlg.cpp).
Portable per-user INI (door_io.c):
- The per-user REDALERT.INI is shared across hosts, so it must not carry
host-specific absolute paths. UserPath is now dropped entirely (the argv[0]
rewrite already makes the engine derive it), and DataPath is written
relative to the per-user home via a new door_relpath() helper. Stale
absolute keys a previous build wrote are actively removed.
Music-volume persistence and behavior:
- Root cause of "settings never persist": on exit RA re-saved the config from
the INIClass it loaded at startup, and INIClass::Load() merges rather than
replaces, so the reload kept the startup snapshot and clobbered whatever the
game wrote during play. Fixed by using a fresh INIClass for the exit save
(startup.cpp).
- Save_Settings now always writes ScoreVolume (was gated to GAME_NORMAL under
FIXIT_VERSION_3), and the +/- hotkey persists via Save_Settings, guarded at
the rails (options.cpp).
- Muting is respected everywhere: removed the force-to-0.4-when-muted override
on the title screen and credits scroll (menus.cpp, egos.cpp), and stopped a
Skirmish/MP game from overwriting the user's volume with the separate
MultiScoreVolume -- the single music-volume setting is now authoritative
(init.cpp).
Co-Authored-By: Claude Opus 4.8 (1M context) <
[email protected]>
--- SBBSecho 3.37-Linux
* Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)