Added dynamic discovery of available game data

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
2026-03-15 11:23:41 +01:00
parent 34b167e03f
commit 2db9dad00d
9 changed files with 288 additions and 54 deletions

View File

@@ -1,16 +1,17 @@
import 'package:flutter/material.dart';
import 'package:wolf_3d_data/wolf_3d_data.dart';
import 'package:wolf_dart/features/difficulty/difficulty.dart';
import 'package:wolf_dart/features/renderer/renderer.dart';
class DifficultyScreen extends StatefulWidget {
const DifficultyScreen({super.key});
class DifficultyScreen extends StatelessWidget {
const DifficultyScreen(
this.data, {
super.key,
});
@override
State<DifficultyScreen> createState() => _DifficultyScreenState();
}
final WolfensteinData data;
class _DifficultyScreenState extends State<DifficultyScreen> {
bool isShareware = true; // Default to Shareware (WL1)
bool get isShareware => data.version == GameVersion.shareware;
@override
Widget build(BuildContext context) {
@@ -22,6 +23,7 @@ class _DifficultyScreenState extends State<DifficultyScreen> {
Navigator.of(context).push(
MaterialPageRoute(
builder: (_) => WolfRenderer(
data,
difficulty: Difficulty.bringEmOn,
isShareware: isShareware,
showSpriteGallery: true,
@@ -44,27 +46,6 @@ class _DifficultyScreenState extends State<DifficultyScreen> {
fontFamily: 'Courier',
),
),
const SizedBox(height: 20),
// --- Version Toggle ---
Theme(
data: ThemeData(unselectedWidgetColor: Colors.grey),
child: CheckboxListTile(
title: const Text(
"Play Shareware Version (WL1)",
style: TextStyle(color: Colors.white),
),
value: isShareware,
onChanged: (bool? value) {
setState(() {
isShareware = value ?? true;
});
},
controlAffinity: ListTileControlAffinity.leading,
contentPadding: const EdgeInsets.symmetric(horizontal: 100),
),
),
const SizedBox(height: 20),
// --- Difficulty Buttons ---
ListView.builder(
@@ -87,6 +68,7 @@ class _DifficultyScreenState extends State<DifficultyScreen> {
Navigator.of(context).pushReplacement(
MaterialPageRoute(
builder: (_) => WolfRenderer(
data,
difficulty: difficulty,
isShareware: isShareware,
),