Commit Graph

250 Commits

Author SHA1 Message Date
hans 8a9be477e4 feat: Update GameVersion enum to include labels for game releases
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-24 14:53:05 +01:00
hans ce4dd8d61d feat: Add tests for Wolf3dGuiApp and refactor game data picker management
- Introduced unit tests for the Wolf3dGuiApp to ensure proper directory configuration and audio management.
- Refactored the GameDataPickerManager to streamline directory and file selection processes.
- Removed obsolete GameDataPickerManager and Wolf3dAppManager classes to simplify the architecture.
- Enhanced the Wolf3dFlutterEngine to improve game version handling during save loading.
- Updated existing tests to reflect changes in the game data management structure.
- Removed unnecessary dependencies and cleaned up the codebase for better maintainability.

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-24 14:35:20 +01:00
hans b980174905 feat: Enhance DefaultRendererSettingsPersistence to support scoped settings for CLI and Flutter
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 19:54:22 +01:00
hans 3114700683 feat: Add arguments for data directory in CLI launch configuration
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 19:52:40 +01:00
hans 6784d2dd16 feat: Refactor game persistence and rendering management for CLI and Flutter hosts
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 19:48:02 +01:00
hans 6158a92fb0 feat: Enhance GameDataPickerManager and Wolf3dAppManager with improved directory and file picking capabilities
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 19:41:08 +01:00
hans 1394c20134 feat: Add GameDataPickerManager for managing game data selection flows
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 19:38:34 +01:00
hans 6441592534 feat: Introduce Wolf3dAppManager for managing audio shutdown and game data directory selection
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 19:37:32 +01:00
hans 88050dbc7d feat: Refactor Wolf3dApp to manage audio shutdown on dispose and add audio shutdown test
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 19:35:08 +01:00
hans 70b4fc3fe0 feat: Add file selector support and enhance game data directory management
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 19:30:50 +01:00
hans 569a3386a8 feat: Enhance CLI and GUI to support configurable game data directory persistence
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 19:19:50 +01:00
hans 5ef59d9980 feat: Refactor to use Wolf3dFlutterEngine across the application
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 18:56:51 +01:00
hans 5a2681e89b Moved all widgets and logic from gui app to Flutter package
- Implemented DebugToolsScreen for navigation to asset galleries.
- Created GameScreen to manage gameplay and renderer integrations.
- Added NoGameDataScreen to handle scenarios with missing game data.
- Developed SpriteGallery for visual browsing of sprite assets.
- Introduced VgaGallery for displaying VGA images from game data.
- Added GalleryGameSelector widget for selecting game variants in galleries.
- Created Wolf3dApp as the main application shell for managing game states.
- Implemented WolfMenuShell for consistent menu layouts across screens.
- Enhanced Wolf3d class to support debug mode and related functionalities.
- Updated pubspec.yaml to include window_manager dependency.
- Added tests for game screen lifecycle and debug mode functionalities.

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 18:44:32 +01:00
hans cbe2633ceb feat: Remove triggerQuitOnInitForTest from GameScreen and add audio shutdown test
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 17:54:03 +01:00
hans 3a7ec50abf feat: Add triggerQuitOnInitForTest to GameScreen for deterministic testing
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 17:52:02 +01:00
hans ae3b0deb04 feat: Add app exit handler and corresponding tests for audio shutdown
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 17:48:59 +01:00
hans a7353e45b3 feat: Implement audio shutdown procedure for graceful app exit
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 17:38:18 +01:00
hans f4d6db2db0 feat: Enhance audio management by implementing shutdown procedures on exit
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 17:36:49 +01:00
hans fdf84b3a9d Refactor audio handling in Wolfenstein 3D
- Updated main.dart to use NativeSubprocessAudio instead of CliSubprocessAudio.
- Introduced DebugMusicPlayer interface for music playback.
- Implemented NativeSubprocessAudio for native audio handling with subprocesses.
- Added SilentAudio class as a no-op fallback for audio.
- Removed deprecated FlutterAudioAdapter and default audio backend implementations.
- Integrated Wolf3dPlatformAudio to manage audio across platforms, selecting between NativeSubprocessAudio and an embedded audio player.
- Updated wolf_3d_engine.dart to use SilentAudio as the default audio backend.
- Cleaned up audio-related files and ensured proper audio initialization and playback functionality.

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 17:30:02 +01:00
hans ea6825341e feat: Add FPS toggle shortcut and corresponding input handling in CLI
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 17:12:27 +01:00
hans b88475882b feat: Implement audio backend with subprocess support and refactor audio handling
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 17:10:07 +01:00
hans 26c738b702 feat: Implement platform-specific persistence for renderer settings and save games
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 16:28:35 +01:00
hans dcfb2e8e02 refactor: Moved renderer package into Flutter package
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 16:12:03 +01:00
hans c4c8e4149a feat: Refactor MD5 hashing and update save game codec for compatibility with new payload format
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 16:03:12 +01:00
hans f05a861998 feat: Add exists method for checking save game file existence in CLI and Flutter persistence
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 15:39:02 +01:00
hans 3b1f8c80d1 Enhance save game codec tests for compatibility and add DOS-style file writing test
- Updated assertions in existing tests to allow for multiple valid values for `slot` and `createdAtMs` to accommodate legacy data.
- Added a new test to verify that the CompatibleSaveGameCodec correctly writes DOS-style description-prefixed files, ensuring proper encoding and structure.

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 15:34:10 +01:00
hans 1ed63d5f9b feat: Implement CompatibleSaveGameCodec for block payload format and legacy support
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 15:18:49 +01:00
hans 85fddd3df5 feat: Add CompatibleSaveGameCodec for legacy W3DS support and enhance SaveGamePersistence with existence check
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 15:14:46 +01:00
hans de8bff1964 feat: Add original layout envelope save codec with encoding/decoding and tests
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 14:57:36 +01:00
hans db06f5f5cb feat: Implement save game functionality with encoding/decoding
- Added SaveGameCodec for encoding and decoding save game files.
- Introduced SaveGamePersistence interface for slot-based save game persistence.
- Implemented FlutterSaveGamePersistence for file-based save management on Flutter.
- Enhanced WolfEngine to support saving and loading game states.
- Updated menu manager to include save/load game options.
- Created tests for SaveGameCodec to ensure proper functionality.

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 14:50:53 +01:00
hans 1a93b7d4a2 feat: Implement save and restore functionality for game session state, including player and entity states
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 14:37:58 +01:00
hans 7cb3f25c74 feat: Refactor rendering logic to use scheduled presentation and improve performance tracking
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 14:18:19 +01:00
hans a66ccf52c5 feat: Enhance weapon switching logic and add tests for animation pacing and menu behavior
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 12:35:31 +01:00
hans 827b8c779e feat: Add mutant death and god mode face animations, update HUD rendering and player damage handling
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 12:29:56 +01:00
hans 400ce4f680 feat: Implement chaingun pickup face animation and update HUD rendering logic
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 12:23:10 +01:00
hans 8ed460b03e feat: Add bonus flash effect for player pickups and update rendering logic
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 12:11:19 +01:00
hans 604923618a feat: Implement player locomotion constants and update movement logic in engine
feat: Add key icons to HUD modules and implement key rendering in HUD
test: Add player movement and rotation parity tests to ensure consistency with classic Wolf3D
test: Enhance HUD rendering tests for gold and silver key icons

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 12:04:25 +01:00
hans 7941c2902c refactor: Improve formatting and readability of secret-exit transition test
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 11:36:59 +01:00
hans b0f6e865b4 feat: Update HUD rendering to display current player lives dynamically
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 11:36:07 +01:00
hans 85583214ba feat: Update viewport calculations in renderers for consistent height handling and improve map rendering logic
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 11:29:27 +01:00
hans 35cfe8d88c feat: Conditionally display debug tools button based on debug mode and engine difficulty
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 11:24:29 +01:00
hans 0c74abcb7e feat: Enhance rendering with pushwall and enemy color support in ASCII, Sixel, and Software renderers
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 11:15:17 +01:00
hans 1165e0bc44 feat: Implement map overlay toggle functionality and rendering across input and rendering systems
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 11:08:43 +01:00
hans d63b316f1b feat: Implement fizzle fade transition effects for menus and intros, enhancing visual transitions
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 11:00:48 +01:00
hans a84c677845 feat: Add Spear of Destiny demo support with dedicated asset registry and entity definitions
- Introduced SpearDemoAssetRegistry for managing assets specific to the Spear of Destiny demo.
- Created SpearDemoEntityModule to define enemy animations with adjusted sprite ranges.
- Implemented SpearDemoHudModule and SpearDemoMenuPicModule for HUD and menu assets.
- Added SpearDemoSfxModule for sound effect mappings specific to the demo version.
- Updated enemy classes (Guard, Mutant, Officer, SS) to support custom animation sets.
- Modified entity registry to accept a custom AssetRegistry for spawning entities.
- Enhanced rendering with CRT phosphor bloom effect in GLSL shaders.
- Adjusted ASCII and software renderer layouts for improved UI spacing.
- Added tests for SpearDemoAssetRegistry to ensure correct asset resolution and enemy spawning.

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 10:37:50 +01:00
hans 528d6276b1 Add Spear of Destiny shareware assets and update project files
- Added new asset files for Spear of Destiny shareware including AUDIOHED.SDM, AUDIOT.SDM, GAMEMAPS.SDM, MAPHEAD.SDM, VGADICT.SDM, VGAGRAPH.SDM, VGAHEAD.SDM, VSWAP.SDM, and documentation files (README.txt, SOD.DOC).
- Included necessary DLLs (SDL.dll, SDL_mixer.dll) for audio support.
- Updated pubspec.yaml to include the new assets directory for Spear of Destiny.
- Enhanced data versioning to recognize Spear of Destiny shareware in data_version.dart.
- Modified registry_resolver.dart to handle asset registry for Spear of Destiny shareware.
- Added license agreements for both id Software and MAME.

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-23 10:00:27 +01:00
hans 3270338f44 feat: Implement Change View and Renderer Options menus
- Added functionality to display and navigate the Change View menu in SixelRenderer and SoftwareRenderer.
- Introduced methods to draw the Change View and Renderer Options menus, including handling cursor and selection states.
- Updated WolfClassicMenuArt to include a customize label for the new menu.
- Enhanced WolfMenuScreen to support new menu states.
- Created tests for Change View menu interactions, ensuring proper transitions and renderer settings toggling.
- Implemented persistence for renderer settings in Flutter, allowing settings to be saved and loaded from a local file.

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-20 20:49:37 +01:00
hans 45e5302eac Automatically use sixel if it's available
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-20 18:19:19 +01:00
hans 2598218a4d feat: Improve Sixel rendering stability by adjusting output height and anchoring behavior
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-20 18:03:19 +01:00
hans 1e5222368a feat: Increase rendering resolution for Flutter and GLSL renderers to enhance visual clarity
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-20 17:45:54 +01:00