Skip to content

Test release SDL3 clients

Pre-release
Pre-release

Choose a tag to compare

@jezek jezek released this 14 Aug 16:36
· 0 commits to master since this release
Working SDL3 clients (linux, mingw)

- Increased vesion to 4.9.3.0.2.0.
- Add USE_SDL3 macros thorough the code.
- Add OS_SUB_SDL3 and OS_SUB_GCU_SDL3 and use it in VERSION_OS_SUB.
- Add Unified makefile.sdl3 for linux compiling and windows cross compiling.
  - Compile windows sdl3 client without wine and tolua.exe.
  - Remove unnecessary generation rules for common/z_pack.
  - Refactor the tolua file generation.
  - Make tomenet and tomenet.exe executables in one run in SDL3 client.
  - Add automatic header-dependency tracking with -MMD/-MP.
- Update .gitignore.
- Introducing SDL3_GAME_PATH, SDL3_USER_PATH and SDL3_PATH_SEP variables.
- Introduce SDL3 user directory.
  - Declare and expose new ANGBAND_USER_DIR* pointers based on ANGBAND_DIR*.
  - Inform about creating user directories, refactor.
  - Copy default scripts into `ANGBAND_USER_DIR_SCPT` when it's created.
  - Redirect SDL3 client file I/O to the SDL3 user directory.
  - Store temporary files and logs in the SDL3 temp folder.
  - Rename copy_file to my_fcopy.
  - Edit my_fopen to open files with fallback and use instead of fopen in SDL3 client.
  - Prefer user dir for fonts/tilesets/macros; install audio packs to user xtra.
  - Use user dir when saving sound/music.cfg files.
  - Override the user storage dir via TOMENET_SDL3_USER_PATH environment variable.
  - Using a dir in sdl3 user path as tmpdir when no env value is set.
- Add common/net-sdl3.c using the SDL3 SDL_net library and use it with sdl3 clients.
- Add main-sdl3.c based on main-x11.c and use it in SDL3 client.
  - Add multi-layer multi-masks tiles support.
  - Add tile cache support, but turn it off (not needed, it is fast).
  - Hide disable_tile_cache into TILE_CACHE_SIZE ifdef macro.
  - Set terminal index during initialization.
  - Defer graphics until windows are initialized.
  - Graphic tiles are initialized after pref file is loaded.
  - Print warnings when pref file is not loaded into msg window when possible.
  - Graphics pref file now contains information about masks colors.
  - Per-subtileset mask colors are now loaded from .prf files and used.
  - Support PCF and TTF fonts in the SDL3 fonts menu, handle PCF fonts as graphical.
  - Add pcf fonts to lib/xtra/font for sdl3 clients.
  - Add window decorations toggle to settings file and in-game window flags menu.
  - On window move, store coordinates considering decorations.
  - Windows are created with decorations by default.
  - Draw only borders with SDL3_DEFAULT_BORDER_WIDTH width.
  - Using semi-transparent black as top tile outline color for UG_2MASK mode.
  - Graphics tiles outline layer generation for fg/bg tiles when UG_2MASK
    mode. Option to force outline generation of specific width.
  - Graphics tiles preferences on-the-fly change and
    tiles with layers preview in in-game graphics menu.
  - Graphic subtiles implemenation. Respects subtiles in preview an cache.
  - Graphics cache resets subset/index during init and teardown to keep entries clean before reuse.
  - Loading graphics images of tiles and subtiles from user location first.
  - Add tileset resize modes support, default is NEAREST.
  - For keyboard handling use only key press events (no text input).
  - Startup logo is graphic only when all used solid tiles are loaded.
  - Reset raw graphics definitions before pref load
  - Store raw graphics in their source tileset
  - Cache scaled tilesets to disk and reuse them when needed
  - Hide all disable_tileset_caching into USE_GRAPHICS macro guard
  - Fix casino display functions to consider use_graphics and rawpict_hook.
- Using tomenet.cfg in sdl3 user path as config (based on .tomenetrc).
- Make check_guide_checksums work for sdl3 with curl & ssl.
- Removing goto from client/client.c in mangrc read function.
- Use SDL3_image library for screenshots, but it is optional.
  - If not using SDL3_image, save screenshots to BMP instead of PNG.
- Add SDL3_STICKY_KEYS macro and disable by default.
- Create snd-sdl3.c file based on snd-sdl.c.
  - Switch SDL2 client sound to SDL3.
  - Allow sound code to compile with either `SOUND_SDL` or `SOUND_SDL3`.
  - Fix sdl3 quit on music quit, add debug logs to sdl3 unarchive.
  - Guard SDL mixer shutdown.
  - Don't use file descriptors (FD) and music caching.
  - Cache only currently played track without decoding.
  - Fix wrong mutex unlock when loading music (also in snd-sdl.c).
  - Refactor sound_sdl_init function.
  - Fix audio init failure cleanup.
  - Add subset logic.
  - Fix jukebox autoplay finish and destuctive pack-switch.
  - Fix post-autoplay cursor restore.
  - Fix autoplay stop after first song after a/u/e session.
  - Stabilize jukebox restore/fadeout/shutdown state across mixer reloads and previews.
  - Preserve force-disabled and runtime-disabled SDL3 audio state correctly in config and toggles.
  - Ignore transient EMFILE/ENFILE when loading audio events.
- Add libarchive-based unzipping sound/music pack 7zipped files.
  - Detect libarchive in makefile.sdl3 via pkg-config and link when available.
  - Notify when unpacking unsupprted 7z encrypted archive.
  - More archives support in sdl3 clients (.zip, .tar, .tar.gz).
- Use SDL_OpenURL for file and link opening.
- Fix double separator in lua scripts.
- Treating the SDL3 Delete key separately from Backspace so prompts.
- In knowledge menu, open last screenshot instead of conversion.
  - Open user folders in in-game knowledge menu too.
- Make macroset scan OS independent for SDL3 test clients.
- Create fake but deterministic MAC depending on PC stats.
- Add basic player sounds according to sound.cfg.default content.
- Add .prf files to lib/user for sdl3 clients.
- Get rid of most compiler warnings.
- Build sdl3 linux client to prefer .so beside the binary.
- Make SDL3 ip_iface return IPv4 string like Windows client (Can't make
  work like windows client, returns  different string).
- Add optional GCU support for SDL3 Linux client build, default is off.
- Added build scripts for fedora 41 & 43 distrobox build containers.
- Added CI for github with Fedora 41 build image and compile-check workflow.
- Added CI for building client/server release archives on tag push and
  append them if release is made.
- Updated guide with info about sdl3 clients how to build them.
- Add mask color documentation for sdl3 clients tileset bitmap.
- Default to x11 video driver in sdl3 linux client
- Fix: stop -X from enabling log redirection.
- Quit cleanly on window close.
- Save live window layout before config