Linux and macOS now both build the pure-SDL + microui menu. Remove GTK3
detection, the ENABLE_GTK build branches, and the GTK menu sources.
Decouple gettext NLS from ENABLE_GTK so menu labels stay translatable on all
desktop builds, and update i18n to the new sources (POTFILES.in, .pot, ja.po).
Rewrite s39init.c GTK-free: keep the System39.ini / Volume.sav loading,
saving and mus_vol_set_valance() logic, and expose the channel table via
s39ini_available() / s39ini_channels() instead of driving a GtkWidget.
Add a microui volume panel to menu_sdl.c, offered as a "Volume" item in
the popup menu when the game defines volume channels.
The text field is hand-drawn and IME-aware: SDL_TEXTINPUT /
SDL_TEXTEDITING / BACKSPACE are handled directly (mirroring editor.c)
instead of using a microui textbox.
Vendor microui 2.02 under src/microui/ and use it to draw an in-game
popup menu as an overlay.
modal.c provides generic modal infrastructure: a loop that pumps SDL
events into microui and renders the command list via SDL_Renderer,
hooked into gfx_updateScreen(). menu_sdl.c builds the concrete popup
menu on top of it.
The font module kept a global "currently selected font" set by
font_select() and implicitly used when drawing. Make it stateless by
introducing a FontSpec {type, weight, size} that font_render_text() /
font_draw_text() and gfx_drawString() take directly.
Make FontWeight a two-valued enum and normalize the 1-9 weight to it
in commandZB().
Removes font_select(), ags_setFont() and ags_setFontWithWeight().
Switch the bundled mincho font from a Source Han Serif JP subset to a
subset of IPA Mincho, which has monospace ASCII glyphs.
IPA Mincho's hhea ascent/descent already match its OS/2 typo metrics, so
adjust_metrics.py is no longer needed. However, IPA Mincho is distributed
under the IPA Font License v1.0, under which a subset is a "Derived
Program"; Article 3.1(4) forbids the derived font's name from containing
the licensed program's name ("IPA"). Add rename_font.py to rewrite the
name table accordingly, and replace licenses/mincho.txt with the IPA Font
License.
gtk_menu_popup() is deprecated since GTK 3.22. Since no GdkEvent is
available at the call site, use gtk_menu_popup_at_rect() with the
current pointer position obtained via gdk_device_get_position().
Instead of hardcoding "dDEMO.alk" / "tDEMO.alk", use the actual filename
stored in nact->files.alk[0] from the directory scan. This fixes loading
failures on case-sensitive filesystems where the actual file may be
named "dDemo.alk" or "tDemo.alk".
Also update gameresource.c to store .alk files without a numeric suffix
at index 0 (these games have only one .alk file).
This resolves issues where saving to and loading from paths with
subdirectories (e.g., "Save\file.asd") would fail.
The original problems were:
1. Writing failure: A path mismatch between directory creation in
commandQE and file writing in fc_open.
2. Loading failure: fc_search could not handle paths containing
directory separators, preventing saved files in subdirectories from
being found.
This commit addresses these issues with the following changes:
- fc_open now automatically creates parent directories when writing a
file.
- fc_search is updated to support two modes:
- It performs a case-insensitive search for simple filenames
(preserving original behavior).
- It performs a case-sensitive existence check for full paths.
Fixes#74.
This introduces "Streamer Mode" to mosaic specified NSFW images, making
the game suitable for streaming or public viewing. This feature is
enabled via the '-censor <file>' command-line option, which takes a file
containing a list of image numbers to be filtered.
Rance 5D uses filename `Save\\Rance5dSystem.asd`. This caused issues:
- On Windows, saving would fail if the `Save` directory did not exist.
- On other platforms, files were created with literal backslashes in
their names.
This change addresses these problems by:
- In commandQE, normalizing backslashes to forward slashes in the path
and ensuring that the target directory exists by calling mkdir_p().
- In commandLE, first attempting to load files with normalized forward
slashes. If that fails, it retries with the original path (containing
backslashes) for compatibility with older saves.