Moved everything to a monorepo and fixed the CLI app rendering

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
2026-03-16 15:09:37 +01:00
parent ede2c3fa31
commit 9410916b57
53 changed files with 91 additions and 36 deletions

View File

@@ -5,7 +5,6 @@ import 'package:wolf_3d_data/wolf_3d_data.dart';
import 'package:wolf_3d_data_types/wolf_3d_data_types.dart';
import 'package:wolf_3d_engine/wolf_3d_engine.dart';
import 'package:wolf_3d_input/wolf_3d_input.dart';
import 'package:wolf_3d_synth/wolf_3d_synth.dart';
// Helper to gracefully exit and restore the terminal
void exitCleanly(int code) {
@@ -22,11 +21,21 @@ void main() async {
// HIDE the blinking cursor and clear the screen to prep the canvas
stdout.write('\x1b[?25l\x1b[2J');
// ... (Keep your game discovery and instantiation exactly the same) ...
print("Discovering game data...");
// 1. Get the absolute URI of where this exact script lives
final scriptUri = Platform.script;
// 2. Resolve the path mathematically.
final targetUri = scriptUri.resolve(
'../../../packages/wolf_3d_assets/assets/retail',
);
final targetPath = targetUri.toFilePath();
final availableGames = await WolfensteinLoader.discover(
directoryPath: 'assets/shareware',
directoryPath: targetPath,
recursive: true,
);
final data = availableGames.values.first;
final input = CliInput();
@@ -87,6 +96,8 @@ void main() async {
// Move cursor to top-left (0,0) before drawing the frame
stdout.write('\x1b[H');
input.update();
engine.tick(elapsed, input.currentInput);
rasterizer.render(engine, buffer);
rasterizer.finalizeFrame();

View File

@@ -0,0 +1,16 @@
name: wolf_3d_cli
description: A pure Dart CLI for Wolfenstein 3D.
publish_to: "none"
environment:
sdk: ^3.11.1
resolution: workspace
dependencies:
wolf_3d_data:
wolf_3d_data_types:
wolf_3d_engine:
wolf_3d_input:
wolf_3d_synth:
wolf_3d_assets:

View File

@@ -0,0 +1,4 @@
include: package:flutter_lints/flutter.yaml
formatter:
trailing_commas: preserve

View File

@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:wolf_3d_flutter/wolf_3d.dart';
import 'package:wolf_dart/screens/game_select_screen.dart';
import 'package:wolf_3d_gui/screens/game_select_screen.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();

View File

@@ -1,9 +1,9 @@
import 'package:flutter/material.dart';
import 'package:wolf_3d_data_types/wolf_3d_data_types.dart';
import 'package:wolf_3d_flutter/wolf_3d.dart';
import 'package:wolf_dart/screens/difficulty_screen.dart';
import 'package:wolf_dart/screens/sprite_gallery.dart';
import 'package:wolf_dart/screens/vga_gallery.dart';
import 'package:wolf_3d_gui/screens/difficulty_screen.dart';
import 'package:wolf_3d_gui/screens/sprite_gallery.dart';
import 'package:wolf_3d_gui/screens/vga_gallery.dart';
class EpisodeScreen extends StatefulWidget {
const EpisodeScreen({super.key});

View File

@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:wolf_3d_data_types/wolf_3d_data_types.dart';
import 'package:wolf_3d_flutter/wolf_3d.dart';
import 'package:wolf_dart/screens/episode_screen.dart';
import 'package:wolf_3d_gui/screens/episode_screen.dart';
class GameSelectScreen extends StatelessWidget {
const GameSelectScreen({super.key});

View File

@@ -0,0 +1,30 @@
name: wolf_3d_gui
description: "A new Flutter project."
publish_to: "none"
version: 0.1.0+1
environment:
sdk: ^3.11.1
resolution: workspace
dependencies:
wolf_3d_data: any
wolf_3d_data_types: any
wolf_3d_synth: any
wolf_3d_engine: any
wolf_3d_entities: any
wolf_3d_renderer: any
wolf_3d_input: any
wolf_3d_flutter: any
flutter:
sdk: flutter
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^6.0.0
flutter:
uses-material-design: true

View File

Before

Width:  |  Height:  |  Size: 917 B

After

Width:  |  Height:  |  Size: 917 B

View File

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

View File

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -0,0 +1,15 @@
name: wolf_3d_assets
description: "Shared game assets for Wolfenstein 3D apps."
publish_to: "none"
version: 0.1.0
environment:
sdk: ^3.11.1
resolution: workspace
# This tells Flutter to bundle these files when a dependent app builds!
flutter:
assets:
- assets/retail/
- assets/shareware/

View File

@@ -10,5 +10,6 @@ export 'src/managers/door_manager.dart';
export 'src/managers/pushwall_manager.dart';
export 'src/player/player.dart';
export 'src/rasterizer.dart';
export 'src/silent_renderer.dart';
export 'src/software_rasterizer.dart';
export 'src/wolf_3d_engine_base.dart';

View File

@@ -63,7 +63,8 @@ class Wolf3d {
for (final version in versionsToTry) {
try {
final ext = version.version.fileExtension;
final folder = 'assets/${version.path}';
// final folder = 'assets/${version.path}';
final folder = 'packages/wolf_3d_assets/assets/${version.path}';
final data = WolfensteinLoader.loadFromBytes(
version: version.version,

View File

@@ -18,6 +18,7 @@ dependencies:
wolf_3d_engine: any
wolf_3d_entities: any
wolf_3d_input: any
wolf_3d_assets: any
dev_dependencies:
flutter_test:

View File

@@ -3,5 +3,4 @@
/// More dartdocs go here.
library;
export 'src/silent_renderer.dart' show CliSilentAudio;
export 'src/wolf_3d_audio.dart' show WolfAudio;

View File

@@ -1,35 +1,11 @@
name: wolf_dart
description: "A new Flutter project."
publish_to: "none"
version: 0.1.0+1
environment:
sdk: ^3.11.1
dependencies:
wolf_3d_data: any
wolf_3d_data_types: any
wolf_3d_synth: any
wolf_3d_engine: any
wolf_3d_entities: any
wolf_3d_renderer: any
wolf_3d_input: any
wolf_3d_flutter: any
flutter:
sdk: flutter
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^6.0.0
flutter:
uses-material-design: true
assets:
- assets/retail/
- assets/shareware/
workspace:
- apps/wolf_3d_gui/
- apps/wolf_3d_cli/
- packages/wolf_3d_data/
- packages/wolf_3d_data_types/
- packages/wolf_3d_synth/
@@ -38,3 +14,4 @@ workspace:
- packages/wolf_3d_renderer/
- packages/wolf_3d_input/
- packages/wolf_3d_flutter/
- packages/wolf_3d_assets/