Files
wolf_dart/apps/wolf_3d_gui
hans d393ca98ec Refactor menu rendering and asset registry structure
- Updated SoftwareRenderer to incorporate MenuHeaderBand for handling spear variant menus and improved backdrop drawing.
- Refactored asset registry imports to organize menu-related assets under a dedicated menu structure.
- Enhanced game session snapshot tests to validate menu theme restoration for spear variant games.
- Added tests for classic menu presentation module to ensure palette consistency with canonical constants.
- Implemented tests for spear asset registry to verify correct menu VGA index resolutions.
- Created unit tests for MenuHeaderBand to validate functionality in rendering menu headers and sidebars.
- Adjusted HUD module imports to align with new menu structure.

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
2026-03-24 23:35:56 +01:00
..

wolf_3d_gui

Flutter GUI host application for running Wolfenstein 3D with the shared engine and Flutter integration package.

What This App Is

wolf_3d_gui is the primary Flutter app host in this workspace.

It:

  • initializes Wolf3dFlutterEngine,
  • discovers available game data directories,
  • manages game-data selection and session flow,
  • renders gameplay through Flutter-native UI and renderer widgets.

Entrypoint: lib/main.dart

Prerequisites

  • Flutter SDK
  • Dart SDK ^3.11.1
  • Local Wolfenstein 3D game data files

Linux native requirements

On Debian/Ubuntu, install:

libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev lld

Setup

From this directory:

flutter pub get

Run

Run on your default connected Flutter target:

flutter run

Examples by target:

flutter run -d linux
flutter run -d chrome

Test and Analyze

From this directory:

flutter test
flutter analyze

App Flow Overview

Startup sequence:

  1. lib/main.dart creates and initializes Wolf3dFlutterEngine.
  2. Engine init discovers configured game-data directories.
  3. App shell (Wolf3dGuiApp) drives selection/navigation.
  4. Gameplay screen builds engine session + renderer mode and runs loop.

Game data directory selection/persistence is managed by app managers and Flutter package persistence helpers.

Troubleshooting

  • No game data discovered: choose a valid directory in the picker and ensure files are present.
  • Linux build/runtime issues: verify native dependency packages are installed.
  • Web target limitations: use desktop target for full native-audio/path behavior.