Commit Graph

24 Commits

Author SHA1 Message Date
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 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 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 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 10417d26ba Refactor audio module to use built-in music and sound effect identifiers
- Introduced BuiltInMusicModule and BuiltInSfxModule to replace RetailMusicModule and RetailSfxModule.
- Updated RetailAssetRegistry and SharewareAssetRegistry to utilize the new built-in modules.
- Removed deprecated MusicKey and SfxKey classes, replacing them with Music and SoundEffect enums for better clarity and maintainability.
- Adjusted music and sound effect resolution methods to align with the new structure.
- Updated audio playback methods in WolfAudio and FlutterAudioAdapter to accept the new Music and SoundEffect types.
- Refactored tests to accommodate changes in audio event handling and ensure compatibility with the new identifiers.

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-20 17:07:25 +01:00
hans 8cca66e966 feat: Add Audio Gallery screen and integrate into Debug Tools menu
feat: Implement audio playback controls and audio management in the gallery
refactor: Update audio engine interface to include stopAllAudio method

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-20 16:15:46 +01:00
hans 862191d245 feat: Implement host shortcut system for desktop window management and input suppression
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-20 11:35:22 +01:00
hans c81eb6750d feat: Integrate window manager for desktop windowing support and enhance input handling
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-20 11:25:05 +01:00
hans cbbcd3223a refactor: Update renderer mode enum and input key handling for improved clarity
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-20 10:54:10 +01:00
hans e060aef3f1 feat: Add quit callback support to engine and UI components
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-20 10:04:01 +01:00
hans ac6edb030e Refactor SixelRasterizer and SoftwareRasterizer for improved terminal handling and menu rendering
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-18 20:21:35 +01:00
hans 0e143892f0 Refactor menu rendering and improve projection sampling
- Updated AsciiRasterizer to support game and episode selection menus with improved layout and cursor handling.
- Enhanced SixelRasterizer and SoftwareRasterizer to modularize menu drawing logic for game and episode selection.
- Introduced new methods for drawing menus and applying fade effects across rasterizers.
- Adjusted wall texture sampling in Rasterizer to anchor to projection height center for consistent rendering.
- Added tests for wall texture sampling behavior to ensure legacy compatibility and new functionality.
- Modified Flutter audio adapter to use nullable access for active game and adjusted game selection logic in the main class.
- Cleaned up input handling in Wolf3dFlutterInput by removing unused menu tap variables.

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-18 20:06:18 +01:00
hans e39dfd5da0 WIP moving difficulty selection to engine
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-18 12:25:59 +01:00
hans 3c6a4672f7 Refactor and enhance documentation across the Wolf3D project
- Updated library imports to use the correct package paths for consistency.
- Added detailed documentation comments to various classes and methods, improving code readability and maintainability.
- Refined the GameSelectScreen, SpriteGallery, and VgaGallery classes with clearer descriptions of their functionality.
- Enhanced the CliInput class to better explain the input handling process and its interaction with the engine.
- Improved the SixelRasterizer and Opl2Emulator classes with comprehensive comments on their operations and state management.
- Removed the deprecated wolf_3d.dart file and consolidated its functionality into wolf_3d_flutter.dart for a cleaner architecture.
- Updated the Wolf3dFlutterInput class to clarify its role in merging keyboard and pointer events.
- Enhanced the rendering classes to provide better context on their purpose and usage within the Flutter framework.

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-18 10:01:12 +01:00
hans 1b75a41cd1 Fix key rebinding
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-17 20:47:32 +01:00
hans c424e10475 Enable option to turn on mouselook
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-17 20:45:29 +01:00
hans 55cf73f7f5 Moved away from singleton pattern
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-17 20:24:39 +01:00
hans 0dc75ded62 Migrate all Dart packages to a single wolf_3d_dart package
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-17 10:55:10 +01:00
hans bd486e4c82 Fix door opening sound
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-16 17:42:16 +01:00
hans 9410916b57 Moved everything to a monorepo and fixed the CLI app rendering
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-16 15:09:37 +01:00
hans ede2c3fa31 Fixed ASCII rasterizer, abstracted out input and audio, and created CLI client (untested)
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-16 14:47:10 +01:00
hans b0852543b0 Play (wrong) door sound effect when the door opens or closes
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-15 21:13:41 +01:00
hans b3b909a9b6 Remove unnecessary data class
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-15 20:25:28 +01:00
hans 57d394e911 De-coupled remaining aspects of game into packages
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-15 16:17:27 +01:00