Files
flutter_lua_runtime/lib/runtime/game/lua_game_widget.dart
2026-06-09 16:26:37 +08:00

54 lines
1.6 KiB
Dart

import 'package:flame/game.dart';
import 'package:flutter/widgets.dart';
import '../diagnostics/runtime_diagnostics.dart';
import '../host/runtime_host_bridge.dart';
import '../packages/game_package_repository.dart';
import '../scripting/lua_dardo_script_engine.dart';
import 'flame_lua_game.dart';
import 'runtime_options.dart';
class LuaGameWidget extends StatelessWidget {
const LuaGameWidget({
required this.gameId,
this.packageRepository,
this.serverUrl,
this.localeOverride,
this.runtimeOptions = const RuntimeOptions(),
this.hostBridge = const RuntimeHostBridge(),
super.key,
});
final String gameId;
final GamePackageRepository? packageRepository;
final Uri? serverUrl;
final Locale? localeOverride;
final RuntimeOptions runtimeOptions;
final RuntimeHostBridge hostBridge;
@override
Widget build(BuildContext context) {
final diagnostics = RuntimeDiagnostics();
return GameWidget(
game: FlameLuaGame(
scriptEngine: LuaDardoScriptEngine(diagnostics: diagnostics),
scriptEngineFactory: () =>
LuaDardoScriptEngine(diagnostics: diagnostics),
diagnostics: diagnostics,
packageRepository:
packageRepository ??
(serverUrl == null
? AssetGamePackageRepository(runtimeOptions: runtimeOptions)
: RemoteGamePackageRepository(
baseUri: serverUrl!,
runtimeOptions: runtimeOptions,
)),
gameId: gameId,
runtimeOptions: runtimeOptions,
hostBridge: hostBridge,
localeOverride: localeOverride,
),
);
}
}