feat: add `GoogleLetter` assets (#286)

* chore: add google letter assets

* refactor: reposition letters

* test: update tests

* refactor: renamed GoogleLetterState

* refactor: renamed active/inactive to lit/dimmed

* refactor: renamed Assets paths

Co-authored-by: Alejandro Santiago <dev@alestiago.com>
pull/284/head
Allison Ryan 3 years ago committed by GitHub
parent 5abfe6ab42
commit 431257f831
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -17,7 +17,7 @@ class GoogleWordBonusBehavior extends Component
// https://github.com/flame-engine/flame/pull/1538 // https://github.com/flame-engine/flame/pull/1538
letter.bloc.stream.listen((_) { letter.bloc.stream.listen((_) {
final achievedBonus = googleLetters final achievedBonus = googleLetters
.every((letter) => letter.bloc.state == GoogleLetterState.active); .every((letter) => letter.bloc.state == GoogleLetterState.lit);
if (achievedBonus) { if (achievedBonus) {
gameRef.audio.googleBonus(); gameRef.audio.googleBonus();

@ -17,27 +17,27 @@ class GoogleWord extends Component with ZIndex {
GoogleLetter( GoogleLetter(
0, 0,
children: [ScoringBehavior(points: 5000)], children: [ScoringBehavior(points: 5000)],
)..initialPosition = position + Vector2(-12.92, 1.82), )..initialPosition = position + Vector2(-13.1, 1.72),
GoogleLetter( GoogleLetter(
1, 1,
children: [ScoringBehavior(points: 5000)], children: [ScoringBehavior(points: 5000)],
)..initialPosition = position + Vector2(-8.33, -0.65), )..initialPosition = position + Vector2(-8.33, -0.75),
GoogleLetter( GoogleLetter(
2, 2,
children: [ScoringBehavior(points: 5000)], children: [ScoringBehavior(points: 5000)],
)..initialPosition = position + Vector2(-2.88, -1.75), )..initialPosition = position + Vector2(-2.88, -1.85),
GoogleLetter( GoogleLetter(
3, 3,
children: [ScoringBehavior(points: 5000)], children: [ScoringBehavior(points: 5000)],
)..initialPosition = position + Vector2(2.88, -1.75), )..initialPosition = position + Vector2(2.88, -1.85),
GoogleLetter( GoogleLetter(
4, 4,
children: [ScoringBehavior(points: 5000)], children: [ScoringBehavior(points: 5000)],
)..initialPosition = position + Vector2(8.33, -0.65), )..initialPosition = position + Vector2(8.33, -0.75),
GoogleLetter( GoogleLetter(
5, 5,
children: [ScoringBehavior(points: 5000)], children: [ScoringBehavior(points: 5000)],
)..initialPosition = position + Vector2(12.92, 1.82), )..initialPosition = position + Vector2(13.1, 1.72),
GoogleWordBonusBehavior(), GoogleWordBonusBehavior(),
], ],
) { ) {

@ -101,12 +101,18 @@ extension PinballGameAssetsX on PinballGame {
images.load(components.Assets.images.sparky.bumper.c.dimmed.keyName), images.load(components.Assets.images.sparky.bumper.c.dimmed.keyName),
images.load(components.Assets.images.backboard.backboardScores.keyName), images.load(components.Assets.images.backboard.backboardScores.keyName),
images.load(components.Assets.images.backboard.backboardGameOver.keyName), images.load(components.Assets.images.backboard.backboardGameOver.keyName),
images.load(components.Assets.images.googleWord.letter1.keyName), images.load(components.Assets.images.googleWord.letter1.lit.keyName),
images.load(components.Assets.images.googleWord.letter2.keyName), images.load(components.Assets.images.googleWord.letter1.dimmed.keyName),
images.load(components.Assets.images.googleWord.letter3.keyName), images.load(components.Assets.images.googleWord.letter2.lit.keyName),
images.load(components.Assets.images.googleWord.letter4.keyName), images.load(components.Assets.images.googleWord.letter2.dimmed.keyName),
images.load(components.Assets.images.googleWord.letter5.keyName), images.load(components.Assets.images.googleWord.letter3.lit.keyName),
images.load(components.Assets.images.googleWord.letter6.keyName), images.load(components.Assets.images.googleWord.letter3.dimmed.keyName),
images.load(components.Assets.images.googleWord.letter4.lit.keyName),
images.load(components.Assets.images.googleWord.letter4.dimmed.keyName),
images.load(components.Assets.images.googleWord.letter5.lit.keyName),
images.load(components.Assets.images.googleWord.letter5.dimmed.keyName),
images.load(components.Assets.images.googleWord.letter6.lit.keyName),
images.load(components.Assets.images.googleWord.letter6.dimmed.keyName),
images.load(components.Assets.images.backboard.display.keyName), images.load(components.Assets.images.backboard.display.keyName),
images.load(components.Assets.images.multiplier.x2.lit.keyName), images.load(components.Assets.images.multiplier.x2.lit.keyName),
images.load(components.Assets.images.multiplier.x2.dimmed.keyName), images.load(components.Assets.images.multiplier.x2.dimmed.keyName),

@ -51,9 +51,7 @@ class PinballGame extends Forge2DGame
Backboard.waiting(position: Vector2(0, -88)), Backboard.waiting(position: Vector2(0, -88)),
]; ];
final decals = [ final decals = [
GoogleWord( GoogleWord(position: Vector2(-4.25, 1.8)),
position: Vector2(-4.1, 1.8),
),
Multipliers(), Multipliers(),
]; ];
final characterAreas = [ final characterAreas = [

Binary file not shown.

Before

Width:  |  Height:  |  Size: 371 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 371 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 371 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 371 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 313 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 343 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

@ -18,6 +18,7 @@ class $AssetsImagesGen {
/// File path: assets/images/board-background.png /// File path: assets/images/board-background.png
AssetGenImage get boardBackground => AssetGenImage get boardBackground =>
const AssetGenImage('assets/images/board-background.png'); const AssetGenImage('assets/images/board-background.png');
$AssetsImagesBoundaryGen get boundary => const $AssetsImagesBoundaryGen(); $AssetsImagesBoundaryGen get boundary => const $AssetsImagesBoundaryGen();
$AssetsImagesDashGen get dash => const $AssetsImagesDashGen(); $AssetsImagesDashGen get dash => const $AssetsImagesDashGen();
$AssetsImagesDinoGen get dino => const $AssetsImagesDinoGen(); $AssetsImagesDinoGen get dino => const $AssetsImagesDinoGen();
@ -141,29 +142,18 @@ class $AssetsImagesFlipperGen {
class $AssetsImagesGoogleWordGen { class $AssetsImagesGoogleWordGen {
const $AssetsImagesGoogleWordGen(); const $AssetsImagesGoogleWordGen();
/// File path: assets/images/google_word/letter1.png $AssetsImagesGoogleWordLetter1Gen get letter1 =>
AssetGenImage get letter1 => const $AssetsImagesGoogleWordLetter1Gen();
const AssetGenImage('assets/images/google_word/letter1.png'); $AssetsImagesGoogleWordLetter2Gen get letter2 =>
const $AssetsImagesGoogleWordLetter2Gen();
/// File path: assets/images/google_word/letter2.png $AssetsImagesGoogleWordLetter3Gen get letter3 =>
AssetGenImage get letter2 => const $AssetsImagesGoogleWordLetter3Gen();
const AssetGenImage('assets/images/google_word/letter2.png'); $AssetsImagesGoogleWordLetter4Gen get letter4 =>
const $AssetsImagesGoogleWordLetter4Gen();
/// File path: assets/images/google_word/letter3.png $AssetsImagesGoogleWordLetter5Gen get letter5 =>
AssetGenImage get letter3 => const $AssetsImagesGoogleWordLetter5Gen();
const AssetGenImage('assets/images/google_word/letter3.png'); $AssetsImagesGoogleWordLetter6Gen get letter6 =>
const $AssetsImagesGoogleWordLetter6Gen();
/// File path: assets/images/google_word/letter4.png
AssetGenImage get letter4 =>
const AssetGenImage('assets/images/google_word/letter4.png');
/// File path: assets/images/google_word/letter5.png
AssetGenImage get letter5 =>
const AssetGenImage('assets/images/google_word/letter5.png');
/// File path: assets/images/google_word/letter6.png
AssetGenImage get letter6 =>
const AssetGenImage('assets/images/google_word/letter6.png');
} }
class $AssetsImagesKickerGen { class $AssetsImagesKickerGen {
@ -339,6 +329,78 @@ class $AssetsImagesDinoAnimatronicGen {
const AssetGenImage('assets/images/dino/animatronic/mouth.png'); const AssetGenImage('assets/images/dino/animatronic/mouth.png');
} }
class $AssetsImagesGoogleWordLetter1Gen {
const $AssetsImagesGoogleWordLetter1Gen();
/// File path: assets/images/google_word/letter1/dimmed.png
AssetGenImage get dimmed =>
const AssetGenImage('assets/images/google_word/letter1/dimmed.png');
/// File path: assets/images/google_word/letter1/lit.png
AssetGenImage get lit =>
const AssetGenImage('assets/images/google_word/letter1/lit.png');
}
class $AssetsImagesGoogleWordLetter2Gen {
const $AssetsImagesGoogleWordLetter2Gen();
/// File path: assets/images/google_word/letter2/dimmed.png
AssetGenImage get dimmed =>
const AssetGenImage('assets/images/google_word/letter2/dimmed.png');
/// File path: assets/images/google_word/letter2/lit.png
AssetGenImage get lit =>
const AssetGenImage('assets/images/google_word/letter2/lit.png');
}
class $AssetsImagesGoogleWordLetter3Gen {
const $AssetsImagesGoogleWordLetter3Gen();
/// File path: assets/images/google_word/letter3/dimmed.png
AssetGenImage get dimmed =>
const AssetGenImage('assets/images/google_word/letter3/dimmed.png');
/// File path: assets/images/google_word/letter3/lit.png
AssetGenImage get lit =>
const AssetGenImage('assets/images/google_word/letter3/lit.png');
}
class $AssetsImagesGoogleWordLetter4Gen {
const $AssetsImagesGoogleWordLetter4Gen();
/// File path: assets/images/google_word/letter4/dimmed.png
AssetGenImage get dimmed =>
const AssetGenImage('assets/images/google_word/letter4/dimmed.png');
/// File path: assets/images/google_word/letter4/lit.png
AssetGenImage get lit =>
const AssetGenImage('assets/images/google_word/letter4/lit.png');
}
class $AssetsImagesGoogleWordLetter5Gen {
const $AssetsImagesGoogleWordLetter5Gen();
/// File path: assets/images/google_word/letter5/dimmed.png
AssetGenImage get dimmed =>
const AssetGenImage('assets/images/google_word/letter5/dimmed.png');
/// File path: assets/images/google_word/letter5/lit.png
AssetGenImage get lit =>
const AssetGenImage('assets/images/google_word/letter5/lit.png');
}
class $AssetsImagesGoogleWordLetter6Gen {
const $AssetsImagesGoogleWordLetter6Gen();
/// File path: assets/images/google_word/letter6/dimmed.png
AssetGenImage get dimmed =>
const AssetGenImage('assets/images/google_word/letter6/dimmed.png');
/// File path: assets/images/google_word/letter6/lit.png
AssetGenImage get lit =>
const AssetGenImage('assets/images/google_word/letter6/lit.png');
}
class $AssetsImagesKickerLeftGen { class $AssetsImagesKickerLeftGen {
const $AssetsImagesKickerLeftGen(); const $AssetsImagesKickerLeftGen();

@ -5,13 +5,13 @@ import 'package:bloc/bloc.dart';
part 'google_letter_state.dart'; part 'google_letter_state.dart';
class GoogleLetterCubit extends Cubit<GoogleLetterState> { class GoogleLetterCubit extends Cubit<GoogleLetterState> {
GoogleLetterCubit() : super(GoogleLetterState.inactive); GoogleLetterCubit() : super(GoogleLetterState.dimmed);
void onBallContacted() { void onBallContacted() {
emit(GoogleLetterState.active); emit(GoogleLetterState.lit);
} }
void onReset() { void onReset() {
emit(GoogleLetterState.inactive); emit(GoogleLetterState.dimmed);
} }
} }

@ -1,10 +1,8 @@
// ignore_for_file: public_member_api_docs
part of 'google_letter_cubit.dart'; part of 'google_letter_cubit.dart';
/// Indicates the [GoogleLetterCubit]'s current state.
enum GoogleLetterState { enum GoogleLetterState {
/// A lit up letter. lit,
active, dimmed,
/// A dimmed letter.
inactive,
} }

@ -7,6 +7,33 @@ import 'package:pinball_flame/pinball_flame.dart';
export 'cubit/google_letter_cubit.dart'; export 'cubit/google_letter_cubit.dart';
final _spritePaths = <Map<GoogleLetterState, String>>[
{
GoogleLetterState.lit: Assets.images.googleWord.letter1.lit.keyName,
GoogleLetterState.dimmed: Assets.images.googleWord.letter1.dimmed.keyName,
},
{
GoogleLetterState.lit: Assets.images.googleWord.letter2.lit.keyName,
GoogleLetterState.dimmed: Assets.images.googleWord.letter2.dimmed.keyName,
},
{
GoogleLetterState.lit: Assets.images.googleWord.letter3.lit.keyName,
GoogleLetterState.dimmed: Assets.images.googleWord.letter3.dimmed.keyName,
},
{
GoogleLetterState.lit: Assets.images.googleWord.letter4.lit.keyName,
GoogleLetterState.dimmed: Assets.images.googleWord.letter4.dimmed.keyName,
},
{
GoogleLetterState.lit: Assets.images.googleWord.letter5.lit.keyName,
GoogleLetterState.dimmed: Assets.images.googleWord.letter5.dimmed.keyName,
},
{
GoogleLetterState.lit: Assets.images.googleWord.letter6.lit.keyName,
GoogleLetterState.dimmed: Assets.images.googleWord.letter6.dimmed.keyName,
},
];
/// {@template google_letter} /// {@template google_letter}
/// Circular sensor that represents a letter in "GOOGLE" for a given index. /// Circular sensor that represents a letter in "GOOGLE" for a given index.
/// {@endtemplate} /// {@endtemplate}
@ -15,13 +42,27 @@ class GoogleLetter extends BodyComponent with InitialPosition {
GoogleLetter( GoogleLetter(
int index, { int index, {
Iterable<Component>? children, Iterable<Component>? children,
}) : bloc = GoogleLetterCubit(), }) : this._(
super( index,
bloc: GoogleLetterCubit(),
children: children,
);
GoogleLetter._(
int index, {
required this.bloc,
Iterable<Component>? children,
}) : super(
children: [ children: [
_GoogleLetterSpriteGroupComponent(
litAssetPath: _spritePaths[index][GoogleLetterState.lit]!,
dimmedAssetPath: _spritePaths[index][GoogleLetterState.dimmed]!,
current: bloc.state,
),
GoogleLetterBallContactBehavior(), GoogleLetterBallContactBehavior(),
_GoogleLetterSprite(_GoogleLetterSprite.spritePaths[index]),
...?children, ...?children,
], ],
renderBody: false,
); );
/// Creates a [GoogleLetter] without any children. /// Creates a [GoogleLetter] without any children.
@ -61,33 +102,37 @@ class GoogleLetter extends BodyComponent with InitialPosition {
} }
} }
class _GoogleLetterSprite extends SpriteComponent class _GoogleLetterSpriteGroupComponent
extends SpriteGroupComponent<GoogleLetterState>
with HasGameRef, ParentIsA<GoogleLetter> { with HasGameRef, ParentIsA<GoogleLetter> {
_GoogleLetterSprite(String path) _GoogleLetterSpriteGroupComponent({
: _path = path, required String litAssetPath,
super(anchor: Anchor.center); required String dimmedAssetPath,
required GoogleLetterState current,
static final spritePaths = [ }) : _litAssetPath = litAssetPath,
Assets.images.googleWord.letter1.keyName, _dimmedAssetPath = dimmedAssetPath,
Assets.images.googleWord.letter2.keyName, super(
Assets.images.googleWord.letter3.keyName, anchor: Anchor.center,
Assets.images.googleWord.letter4.keyName, current: current,
Assets.images.googleWord.letter5.keyName, );
Assets.images.googleWord.letter6.keyName,
];
final String _path; final String _litAssetPath;
final String _dimmedAssetPath;
@override @override
Future<void> onLoad() async { Future<void> onLoad() async {
await super.onLoad(); await super.onLoad();
// TODO(alisonryan2002): Make SpriteGroupComponent. parent.bloc.stream.listen((state) => current = state);
// parent.bloc.stream.listen();
// TODO(alestiago): Used cached assets. final sprites = {
final sprite = await gameRef.loadSprite(_path); GoogleLetterState.lit: Sprite(
this.sprite = sprite; gameRef.images.fromCache(_litAssetPath),
// TODO(alestiago): Size correctly once the assets are provided. ),
size = sprite.originalSize / 5; GoogleLetterState.dimmed: Sprite(
gameRef.images.fromCache(_dimmedAssetPath),
),
};
this.sprites = sprites;
size = sprites[current]!.originalSize / 10;
} }
} }

@ -74,7 +74,12 @@ flutter:
- assets/images/sparky/bumper/b/ - assets/images/sparky/bumper/b/
- assets/images/sparky/bumper/c/ - assets/images/sparky/bumper/c/
- assets/images/backboard/ - assets/images/backboard/
- assets/images/google_word/ - assets/images/google_word/letter1/
- assets/images/google_word/letter2/
- assets/images/google_word/letter3/
- assets/images/google_word/letter4/
- assets/images/google_word/letter5/
- assets/images/google_word/letter6/
- assets/images/signpost/ - assets/images/signpost/
- assets/images/multiplier/x2/ - assets/images/multiplier/x2/
- assets/images/multiplier/x3/ - assets/images/multiplier/x3/

@ -6,7 +6,14 @@ import 'package:pinball_components/pinball_components.dart';
import 'package:sandbox/stories/ball/basic_ball_game.dart'; import 'package:sandbox/stories/ball/basic_ball_game.dart';
class GoogleLetterGame extends BallGame { class GoogleLetterGame extends BallGame {
GoogleLetterGame() : super(color: const Color(0xFF009900)); GoogleLetterGame()
: super(
color: const Color(0xFF009900),
imagesFileNames: [
Assets.images.googleWord.letter1.lit.keyName,
Assets.images.googleWord.letter1.dimmed.keyName,
],
);
static const description = ''' static const description = '''
Shows how a GoogleLetter is rendered. Shows how a GoogleLetter is rendered.

@ -31,7 +31,7 @@ void main() {
whenListen( whenListen(
bloc, bloc,
const Stream<GoogleLetterState>.empty(), const Stream<GoogleLetterState>.empty(),
initialState: GoogleLetterState.active, initialState: GoogleLetterState.lit,
); );
final googleLetter = GoogleLetter.test(bloc: bloc); final googleLetter = GoogleLetter.test(bloc: bloc);

@ -10,14 +10,14 @@ void main() {
'onBallContacted emits active', 'onBallContacted emits active',
build: GoogleLetterCubit.new, build: GoogleLetterCubit.new,
act: (bloc) => bloc.onBallContacted(), act: (bloc) => bloc.onBallContacted(),
expect: () => [GoogleLetterState.active], expect: () => [GoogleLetterState.lit],
); );
blocTest<GoogleLetterCubit, GoogleLetterState>( blocTest<GoogleLetterCubit, GoogleLetterState>(
'onReset emits inactive', 'onReset emits inactive',
build: GoogleLetterCubit.new, build: GoogleLetterCubit.new,
act: (bloc) => bloc.onReset(), act: (bloc) => bloc.onReset(),
expect: () => [GoogleLetterState.inactive], expect: () => [GoogleLetterState.dimmed],
); );
}, },
); );

@ -12,7 +12,21 @@ import '../../../helpers/helpers.dart';
void main() { void main() {
TestWidgetsFlutterBinding.ensureInitialized(); TestWidgetsFlutterBinding.ensureInitialized();
final flameTester = FlameTester(TestGame.new); final assets = [
Assets.images.googleWord.letter1.lit.keyName,
Assets.images.googleWord.letter1.dimmed.keyName,
Assets.images.googleWord.letter2.lit.keyName,
Assets.images.googleWord.letter2.dimmed.keyName,
Assets.images.googleWord.letter3.lit.keyName,
Assets.images.googleWord.letter3.dimmed.keyName,
Assets.images.googleWord.letter4.lit.keyName,
Assets.images.googleWord.letter4.dimmed.keyName,
Assets.images.googleWord.letter5.lit.keyName,
Assets.images.googleWord.letter5.dimmed.keyName,
Assets.images.googleWord.letter6.lit.keyName,
Assets.images.googleWord.letter6.dimmed.keyName,
];
final flameTester = FlameTester(() => TestGame(assets));
group('Google Letter', () { group('Google Letter', () {
flameTester.test( flameTester.test(
@ -81,16 +95,6 @@ void main() {
}, },
); );
flameTester.test('adds new children', (game) async {
final component = Component();
final googleLetter = GoogleLetter(
1,
children: [component],
);
await game.ensureAdd(googleLetter);
expect(googleLetter.children, contains(component));
});
test('throws error when index out of range', () { test('throws error when index out of range', () {
expect(() => GoogleLetter(-1), throwsA(isA<RangeError>())); expect(() => GoogleLetter(-1), throwsA(isA<RangeError>()));
expect(() => GoogleLetter(6), throwsA(isA<RangeError>())); expect(() => GoogleLetter(6), throwsA(isA<RangeError>()));
@ -104,7 +108,7 @@ void main() {
whenListen( whenListen(
bloc, bloc,
const Stream<GoogleLetterState>.empty(), const Stream<GoogleLetterState>.empty(),
initialState: GoogleLetterState.active, initialState: GoogleLetterState.lit,
); );
when(bloc.close).thenAnswer((_) async {}); when(bloc.close).thenAnswer((_) async {});
final googleLetter = GoogleLetter.test(bloc: bloc); final googleLetter = GoogleLetter.test(bloc: bloc);
@ -116,15 +120,27 @@ void main() {
verify(bloc.close).called(1); verify(bloc.close).called(1);
}); });
flameTester.test('adds a GoogleLetterBallContactBehavior', (game) async { group('adds', () {
final googleLetter = GoogleLetter(0); flameTester.test('new children', (game) async {
await game.ensureAdd(googleLetter); final component = Component();
expect( final googleLetter = GoogleLetter(
googleLetter.children 1,
.whereType<GoogleLetterBallContactBehavior>() children: [component],
.single, );
isNotNull, await game.ensureAdd(googleLetter);
); expect(googleLetter.children, contains(component));
});
flameTester.test('a GoogleLetterBallContactBehavior', (game) async {
final googleLetter = GoogleLetter(0);
await game.ensureAdd(googleLetter);
expect(
googleLetter.children
.whereType<GoogleLetterBallContactBehavior>()
.single,
isNotNull,
);
});
}); });
}); });
} }

@ -12,6 +12,20 @@ import '../../../../helpers/helpers.dart';
void main() { void main() {
TestWidgetsFlutterBinding.ensureInitialized(); TestWidgetsFlutterBinding.ensureInitialized();
final assets = [
Assets.images.googleWord.letter1.lit.keyName,
Assets.images.googleWord.letter1.dimmed.keyName,
Assets.images.googleWord.letter2.lit.keyName,
Assets.images.googleWord.letter2.dimmed.keyName,
Assets.images.googleWord.letter3.lit.keyName,
Assets.images.googleWord.letter3.dimmed.keyName,
Assets.images.googleWord.letter4.lit.keyName,
Assets.images.googleWord.letter4.dimmed.keyName,
Assets.images.googleWord.letter5.lit.keyName,
Assets.images.googleWord.letter5.dimmed.keyName,
Assets.images.googleWord.letter6.lit.keyName,
Assets.images.googleWord.letter6.dimmed.keyName,
];
group('GoogleWordBonusBehaviors', () { group('GoogleWordBonusBehaviors', () {
late GameBloc gameBloc; late GameBloc gameBloc;
@ -28,6 +42,7 @@ void main() {
final flameBlocTester = FlameBlocTester<PinballGame, GameBloc>( final flameBlocTester = FlameBlocTester<PinballGame, GameBloc>(
gameBuilder: EmptyPinballTestGame.new, gameBuilder: EmptyPinballTestGame.new,
blocBuilder: () => gameBloc, blocBuilder: () => gameBloc,
assets: assets,
); );
flameBlocTester.testGameWidget( flameBlocTester.testGameWidget(

@ -1,6 +1,9 @@
// ignore_for_file: cascade_invocations
import 'package:flame_forge2d/flame_forge2d.dart'; import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:flame_test/flame_test.dart'; import 'package:flame_test/flame_test.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:pinball/game/components/google_word/behaviors/behaviors.dart';
import 'package:pinball/game/game.dart'; import 'package:pinball/game/game.dart';
import 'package:pinball_components/pinball_components.dart'; import 'package:pinball_components/pinball_components.dart';
@ -8,7 +11,21 @@ import '../../../helpers/helpers.dart';
void main() { void main() {
TestWidgetsFlutterBinding.ensureInitialized(); TestWidgetsFlutterBinding.ensureInitialized();
final flameTester = FlameTester(EmptyPinballTestGame.new); final assets = [
Assets.images.googleWord.letter1.lit.keyName,
Assets.images.googleWord.letter1.dimmed.keyName,
Assets.images.googleWord.letter2.lit.keyName,
Assets.images.googleWord.letter2.dimmed.keyName,
Assets.images.googleWord.letter3.lit.keyName,
Assets.images.googleWord.letter3.dimmed.keyName,
Assets.images.googleWord.letter4.lit.keyName,
Assets.images.googleWord.letter4.dimmed.keyName,
Assets.images.googleWord.letter5.lit.keyName,
Assets.images.googleWord.letter5.dimmed.keyName,
Assets.images.googleWord.letter6.lit.keyName,
Assets.images.googleWord.letter6.dimmed.keyName,
];
final flameTester = FlameTester(() => EmptyPinballTestGame(assets: assets));
group('GoogleWord', () { group('GoogleWord', () {
flameTester.test( flameTester.test(
@ -22,5 +39,14 @@ void main() {
expect(letters.length, equals(word.length)); expect(letters.length, equals(word.length));
}, },
); );
flameTester.test('adds a GoogleWordBonusBehavior', (game) async {
final googleWord = GoogleWord(position: Vector2.zero());
await game.ensureAdd(googleWord);
expect(
googleWord.children.whereType<GoogleWordBonusBehavior>().single,
isNotNull,
);
});
}); });
} }

@ -45,12 +45,18 @@ void main() {
Assets.images.dash.bumper.main.inactive.keyName, Assets.images.dash.bumper.main.inactive.keyName,
Assets.images.flipper.left.keyName, Assets.images.flipper.left.keyName,
Assets.images.flipper.right.keyName, Assets.images.flipper.right.keyName,
Assets.images.googleWord.letter1.keyName, Assets.images.googleWord.letter1.lit.keyName,
Assets.images.googleWord.letter2.keyName, Assets.images.googleWord.letter1.dimmed.keyName,
Assets.images.googleWord.letter3.keyName, Assets.images.googleWord.letter2.lit.keyName,
Assets.images.googleWord.letter4.keyName, Assets.images.googleWord.letter2.dimmed.keyName,
Assets.images.googleWord.letter5.keyName, Assets.images.googleWord.letter3.lit.keyName,
Assets.images.googleWord.letter6.keyName, Assets.images.googleWord.letter3.dimmed.keyName,
Assets.images.googleWord.letter4.lit.keyName,
Assets.images.googleWord.letter4.dimmed.keyName,
Assets.images.googleWord.letter5.lit.keyName,
Assets.images.googleWord.letter5.dimmed.keyName,
Assets.images.googleWord.letter6.lit.keyName,
Assets.images.googleWord.letter6.dimmed.keyName,
Assets.images.kicker.left.lit.keyName, Assets.images.kicker.left.lit.keyName,
Assets.images.kicker.left.dimmed.keyName, Assets.images.kicker.left.dimmed.keyName,
Assets.images.kicker.right.lit.keyName, Assets.images.kicker.right.lit.keyName,

Loading…
Cancel
Save