refactor: load assets in test games

pull/204/head
Allison Ryan 3 years ago
parent 74c2b0483e
commit aa86ef302b

@ -2,9 +2,19 @@ import 'package:flame/input.dart';
import 'package:flame_forge2d/flame_forge2d.dart';
class TestGame extends Forge2DGame {
TestGame() {
TestGame([List<String>? assets]) : _assets = assets {
images.prefix = '';
}
final List<String>? _assets;
@override
Future<void> onLoad() async {
if (_assets != null) {
await Future.wait(_assets!.map(images.load));
}
await super.onLoad();
}
}
class KeyboardTestGame extends TestGame with HasKeyboardHandlerComponents {}

@ -1,16 +1,23 @@
import 'package:flame/src/game/flame_game.dart';
import 'package:flame/game.dart';
import 'package:flame_test/flame_test.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_test/flutter_test.dart';
class FlameBlocTester<T extends FlameGame, B extends Bloc<dynamic, dynamic>>
extends FlameTester<T> {
FlameBlocTester({
required GameCreateFunction<T> gameBuilder,
required B Function() blocBuilder,
// TODO(allisonryan0002): find alternative for testGameWidget. Loading
// assets in onLoad fails because the game loads after
List<String>? assets,
List<RepositoryProvider> Function()? repositories,
}) : super(
gameBuilder,
pumpWidget: (gameWidget, tester) async {
if (assets != null) {
await Future.wait(assets.map(gameWidget.game.images.load));
}
await tester.pumpWidget(
BlocProvider.value(
value: blocBuilder(),

@ -1,5 +1,7 @@
// ignore_for_file: must_call_super
import 'dart:async';
import 'package:flame_bloc/flame_bloc.dart';
import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:pinball/game/game.dart';
@ -14,26 +16,53 @@ class TestGame extends Forge2DGame with FlameBloc {
}
class PinballTestGame extends PinballGame {
PinballTestGame()
: super(
PinballTestGame([List<String>? assets])
: _assets = assets,
super(
audio: MockPinballAudio(),
theme: const PinballTheme(
characterTheme: DashTheme(),
),
);
final List<String>? _assets;
@override
Future<void> onLoad() async {
if (_assets != null) {
await Future.wait(_assets!.map(images.load));
}
await super.onLoad();
}
}
class DebugPinballTestGame extends DebugPinballGame {
DebugPinballTestGame()
: super(
DebugPinballTestGame([List<String>? assets])
: _assets = assets,
super(
audio: MockPinballAudio(),
theme: const PinballTheme(
characterTheme: DashTheme(),
),
);
final List<String>? _assets;
@override
Future<void> onLoad() async {
if (_assets != null) {
await Future.wait(_assets!.map(images.load));
}
await super.onLoad();
}
}
class EmptyPinballTestGame extends PinballTestGame {
EmptyPinballTestGame([List<String>? assets]) : super(assets);
@override
Future<void> onLoad() async {}
Future<void> onLoad() async {
if (_assets != null) {
await Future.wait(_assets!.map(images.load));
}
}
}

Loading…
Cancel
Save