5c309c2240
- Moved menu-related classes to a new structure under `src/menu/`. - Introduced `WolfMenuPresentation` to handle menu art and mappings. - Added `MenuManager` tests to ensure menu state reflects game status. - Implemented `FlutterRendererSettingsPersistence` and `FlutterSaveGamePersistence` for managing settings and save files on desktop platforms. - Created `Wolf3dFlutterInput` to handle keyboard and mouse input in a Flutter environment. - Updated README to reflect new package structure and usage instructions. Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
86 lines
2.0 KiB
Markdown
86 lines
2.0 KiB
Markdown
# wolf_dart
|
|
|
|
Wolfenstein 3D workspace built with Dart + Flutter.
|
|
|
|
This repository is organized as a multi-package workspace:
|
|
|
|
- **Apps** in `apps/` (CLI host and Flutter GUI host)
|
|
- **Packages** in `packages/` (core engine, Flutter integration, and assets)
|
|
|
|
The project expects you to provide legal Wolfenstein 3D game data files locally.
|
|
|
|
## Workspace Layout
|
|
|
|
### Apps
|
|
|
|
- [`apps/wolf_3d_gui/`](apps/wolf_3d_gui/README.md) — Flutter app host (desktop/web)
|
|
- [`apps/wolf_3d_cli/`](apps/wolf_3d_cli/README.md) — terminal CLI host
|
|
|
|
### Packages
|
|
|
|
- [`packages/wolf_3d_dart/`](packages/wolf_3d_dart/README.md) — core engine/runtime (non-Flutter)
|
|
- [`packages/wolf_3d_flutter/`](packages/wolf_3d_flutter/README.md) — Flutter host and UI integration
|
|
- [`packages/wolf_3d_assets/`](packages/wolf_3d_assets/README.md) — shared packaged asset trees
|
|
|
|
## Prerequisites
|
|
|
|
- Dart SDK `^3.11.1`
|
|
- Flutter SDK (for GUI app and Flutter package work)
|
|
|
|
### Linux native requirements
|
|
|
|
On Debian/Ubuntu, install:
|
|
|
|
`libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev lld`
|
|
|
|
## Quick Start
|
|
|
|
From workspace root:
|
|
|
|
```bash
|
|
dart pub get
|
|
```
|
|
|
|
Run GUI host:
|
|
|
|
```bash
|
|
cd apps/wolf_3d_gui
|
|
flutter run
|
|
```
|
|
|
|
Run CLI host:
|
|
|
|
```bash
|
|
cd apps/wolf_3d_cli
|
|
dart run bin/main.dart
|
|
```
|
|
|
|
If game data is not auto-discovered, pass a directory explicitly for CLI:
|
|
|
|
```bash
|
|
dart run bin/main.dart --data-directory /path/to/game-data
|
|
```
|
|
|
|
## Development Workflow
|
|
|
|
Typical contributor loop:
|
|
|
|
1. Update dependencies in relevant app/package (`dart pub get` or `flutter pub get`).
|
|
2. Run focused tests in the module you changed.
|
|
3. Run static analysis for the same module before submitting changes.
|
|
4. Keep docs in sync when command-line flags, platform support, or public APIs change.
|
|
|
|
## Testing
|
|
|
|
Run tests by module (examples):
|
|
|
|
```bash
|
|
cd packages/wolf_3d_dart && dart test
|
|
cd packages/wolf_3d_flutter && flutter test
|
|
cd apps/wolf_3d_gui && flutter test
|
|
```
|
|
|
|
## Related Docs
|
|
|
|
- App/package READMEs listed above for module-specific setup and architecture
|