diff --git a/lib/game/components/google_word/behaviors/google_word_bonus_behavior.dart b/lib/game/components/google_word/behaviors/google_word_bonus_behavior.dart index 92664531..cb9ad308 100644 --- a/lib/game/components/google_word/behaviors/google_word_bonus_behavior.dart +++ b/lib/game/components/google_word/behaviors/google_word_bonus_behavior.dart @@ -17,7 +17,7 @@ class GoogleWordBonusBehavior extends Component // https://github.com/flame-engine/flame/pull/1538 letter.bloc.stream.listen((_) { final achievedBonus = googleLetters - .every((letter) => letter.bloc.state == GoogleLetterState.active); + .every((letter) => letter.bloc.state == GoogleLetterState.lit); if (achievedBonus) { gameRef.audio.googleBonus(); diff --git a/lib/game/components/google_word/google_word.dart b/lib/game/components/google_word/google_word.dart index 79e1e6e5..2ce68263 100644 --- a/lib/game/components/google_word/google_word.dart +++ b/lib/game/components/google_word/google_word.dart @@ -17,27 +17,27 @@ class GoogleWord extends Component with ZIndex { GoogleLetter( 0, children: [ScoringBehavior(points: 5000)], - )..initialPosition = position + Vector2(-12.92, 1.82), + )..initialPosition = position + Vector2(-13.1, 1.72), GoogleLetter( 1, children: [ScoringBehavior(points: 5000)], - )..initialPosition = position + Vector2(-8.33, -0.65), + )..initialPosition = position + Vector2(-8.33, -0.75), GoogleLetter( 2, children: [ScoringBehavior(points: 5000)], - )..initialPosition = position + Vector2(-2.88, -1.75), + )..initialPosition = position + Vector2(-2.88, -1.85), GoogleLetter( 3, children: [ScoringBehavior(points: 5000)], - )..initialPosition = position + Vector2(2.88, -1.75), + )..initialPosition = position + Vector2(2.88, -1.85), GoogleLetter( 4, children: [ScoringBehavior(points: 5000)], - )..initialPosition = position + Vector2(8.33, -0.65), + )..initialPosition = position + Vector2(8.33, -0.75), GoogleLetter( 5, children: [ScoringBehavior(points: 5000)], - )..initialPosition = position + Vector2(12.92, 1.82), + )..initialPosition = position + Vector2(13.1, 1.72), GoogleWordBonusBehavior(), ], ) { diff --git a/lib/game/game_assets.dart b/lib/game/game_assets.dart index e48ab7ff..1b8ae0f6 100644 --- a/lib/game/game_assets.dart +++ b/lib/game/game_assets.dart @@ -101,12 +101,18 @@ extension PinballGameAssetsX on PinballGame { images.load(components.Assets.images.sparky.bumper.c.dimmed.keyName), images.load(components.Assets.images.backboard.backboardScores.keyName), images.load(components.Assets.images.backboard.backboardGameOver.keyName), - images.load(components.Assets.images.googleWord.letter1.keyName), - images.load(components.Assets.images.googleWord.letter2.keyName), - images.load(components.Assets.images.googleWord.letter3.keyName), - images.load(components.Assets.images.googleWord.letter4.keyName), - images.load(components.Assets.images.googleWord.letter5.keyName), - images.load(components.Assets.images.googleWord.letter6.keyName), + images.load(components.Assets.images.googleWord.letter1.lit.keyName), + images.load(components.Assets.images.googleWord.letter1.dimmed.keyName), + images.load(components.Assets.images.googleWord.letter2.lit.keyName), + images.load(components.Assets.images.googleWord.letter2.dimmed.keyName), + images.load(components.Assets.images.googleWord.letter3.lit.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.multiplier.x2.lit.keyName), images.load(components.Assets.images.multiplier.x2.dimmed.keyName), diff --git a/lib/game/pinball_game.dart b/lib/game/pinball_game.dart index 6715430b..cd5a1c7f 100644 --- a/lib/game/pinball_game.dart +++ b/lib/game/pinball_game.dart @@ -51,9 +51,7 @@ class PinballGame extends Forge2DGame Backboard.waiting(position: Vector2(0, -88)), ]; final decals = [ - GoogleWord( - position: Vector2(-4.1, 1.8), - ), + GoogleWord(position: Vector2(-4.25, 1.8)), Multipliers(), ]; final characterAreas = [ diff --git a/packages/pinball_components/assets/images/google_word/letter1.png b/packages/pinball_components/assets/images/google_word/letter1.png deleted file mode 100644 index f79ea687..00000000 Binary files a/packages/pinball_components/assets/images/google_word/letter1.png and /dev/null differ diff --git a/packages/pinball_components/assets/images/google_word/letter1/dimmed.png b/packages/pinball_components/assets/images/google_word/letter1/dimmed.png new file mode 100644 index 00000000..dd728a17 Binary files /dev/null and b/packages/pinball_components/assets/images/google_word/letter1/dimmed.png differ diff --git a/packages/pinball_components/assets/images/google_word/letter1/lit.png b/packages/pinball_components/assets/images/google_word/letter1/lit.png new file mode 100644 index 00000000..fa0d0509 Binary files /dev/null and b/packages/pinball_components/assets/images/google_word/letter1/lit.png differ diff --git a/packages/pinball_components/assets/images/google_word/letter2.png b/packages/pinball_components/assets/images/google_word/letter2.png deleted file mode 100644 index e9d205e3..00000000 Binary files a/packages/pinball_components/assets/images/google_word/letter2.png and /dev/null differ diff --git a/packages/pinball_components/assets/images/google_word/letter2/dimmed.png b/packages/pinball_components/assets/images/google_word/letter2/dimmed.png new file mode 100644 index 00000000..4542e517 Binary files /dev/null and b/packages/pinball_components/assets/images/google_word/letter2/dimmed.png differ diff --git a/packages/pinball_components/assets/images/google_word/letter2/lit.png b/packages/pinball_components/assets/images/google_word/letter2/lit.png new file mode 100644 index 00000000..04bf4ca0 Binary files /dev/null and b/packages/pinball_components/assets/images/google_word/letter2/lit.png differ diff --git a/packages/pinball_components/assets/images/google_word/letter3.png b/packages/pinball_components/assets/images/google_word/letter3.png deleted file mode 100644 index e9d205e3..00000000 Binary files a/packages/pinball_components/assets/images/google_word/letter3.png and /dev/null differ diff --git a/packages/pinball_components/assets/images/google_word/letter3/dimmed.png b/packages/pinball_components/assets/images/google_word/letter3/dimmed.png new file mode 100644 index 00000000..9043cfa6 Binary files /dev/null and b/packages/pinball_components/assets/images/google_word/letter3/dimmed.png differ diff --git a/packages/pinball_components/assets/images/google_word/letter3/lit.png b/packages/pinball_components/assets/images/google_word/letter3/lit.png new file mode 100644 index 00000000..f50511ff Binary files /dev/null and b/packages/pinball_components/assets/images/google_word/letter3/lit.png differ diff --git a/packages/pinball_components/assets/images/google_word/letter4.png b/packages/pinball_components/assets/images/google_word/letter4.png deleted file mode 100644 index f79ea687..00000000 Binary files a/packages/pinball_components/assets/images/google_word/letter4.png and /dev/null differ diff --git a/packages/pinball_components/assets/images/google_word/letter4/dimmed.png b/packages/pinball_components/assets/images/google_word/letter4/dimmed.png new file mode 100644 index 00000000..c30d4eed Binary files /dev/null and b/packages/pinball_components/assets/images/google_word/letter4/dimmed.png differ diff --git a/packages/pinball_components/assets/images/google_word/letter4/lit.png b/packages/pinball_components/assets/images/google_word/letter4/lit.png new file mode 100644 index 00000000..87fee646 Binary files /dev/null and b/packages/pinball_components/assets/images/google_word/letter4/lit.png differ diff --git a/packages/pinball_components/assets/images/google_word/letter5.png b/packages/pinball_components/assets/images/google_word/letter5.png deleted file mode 100644 index 13f30fb7..00000000 Binary files a/packages/pinball_components/assets/images/google_word/letter5.png and /dev/null differ diff --git a/packages/pinball_components/assets/images/google_word/letter5/dimmed.png b/packages/pinball_components/assets/images/google_word/letter5/dimmed.png new file mode 100644 index 00000000..4bce185b Binary files /dev/null and b/packages/pinball_components/assets/images/google_word/letter5/dimmed.png differ diff --git a/packages/pinball_components/assets/images/google_word/letter5/lit.png b/packages/pinball_components/assets/images/google_word/letter5/lit.png new file mode 100644 index 00000000..6f88a2bc Binary files /dev/null and b/packages/pinball_components/assets/images/google_word/letter5/lit.png differ diff --git a/packages/pinball_components/assets/images/google_word/letter6.png b/packages/pinball_components/assets/images/google_word/letter6.png deleted file mode 100644 index 7d87654b..00000000 Binary files a/packages/pinball_components/assets/images/google_word/letter6.png and /dev/null differ diff --git a/packages/pinball_components/assets/images/google_word/letter6/dimmed.png b/packages/pinball_components/assets/images/google_word/letter6/dimmed.png new file mode 100644 index 00000000..48befa49 Binary files /dev/null and b/packages/pinball_components/assets/images/google_word/letter6/dimmed.png differ diff --git a/packages/pinball_components/assets/images/google_word/letter6/lit.png b/packages/pinball_components/assets/images/google_word/letter6/lit.png new file mode 100644 index 00000000..157cd77d Binary files /dev/null and b/packages/pinball_components/assets/images/google_word/letter6/lit.png differ diff --git a/packages/pinball_components/lib/gen/assets.gen.dart b/packages/pinball_components/lib/gen/assets.gen.dart index 9e6e6df1..4388ced6 100644 --- a/packages/pinball_components/lib/gen/assets.gen.dart +++ b/packages/pinball_components/lib/gen/assets.gen.dart @@ -18,6 +18,7 @@ class $AssetsImagesGen { /// File path: assets/images/board-background.png AssetGenImage get boardBackground => const AssetGenImage('assets/images/board-background.png'); + $AssetsImagesBoundaryGen get boundary => const $AssetsImagesBoundaryGen(); $AssetsImagesDashGen get dash => const $AssetsImagesDashGen(); $AssetsImagesDinoGen get dino => const $AssetsImagesDinoGen(); @@ -141,29 +142,18 @@ class $AssetsImagesFlipperGen { class $AssetsImagesGoogleWordGen { const $AssetsImagesGoogleWordGen(); - /// File path: assets/images/google_word/letter1.png - AssetGenImage get letter1 => - const AssetGenImage('assets/images/google_word/letter1.png'); - - /// File path: assets/images/google_word/letter2.png - AssetGenImage get letter2 => - const AssetGenImage('assets/images/google_word/letter2.png'); - - /// File path: assets/images/google_word/letter3.png - AssetGenImage get letter3 => - const AssetGenImage('assets/images/google_word/letter3.png'); - - /// 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'); + $AssetsImagesGoogleWordLetter1Gen get letter1 => + const $AssetsImagesGoogleWordLetter1Gen(); + $AssetsImagesGoogleWordLetter2Gen get letter2 => + const $AssetsImagesGoogleWordLetter2Gen(); + $AssetsImagesGoogleWordLetter3Gen get letter3 => + const $AssetsImagesGoogleWordLetter3Gen(); + $AssetsImagesGoogleWordLetter4Gen get letter4 => + const $AssetsImagesGoogleWordLetter4Gen(); + $AssetsImagesGoogleWordLetter5Gen get letter5 => + const $AssetsImagesGoogleWordLetter5Gen(); + $AssetsImagesGoogleWordLetter6Gen get letter6 => + const $AssetsImagesGoogleWordLetter6Gen(); } class $AssetsImagesKickerGen { @@ -339,6 +329,78 @@ class $AssetsImagesDinoAnimatronicGen { 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 { const $AssetsImagesKickerLeftGen(); diff --git a/packages/pinball_components/lib/src/components/google_letter/cubit/google_letter_cubit.dart b/packages/pinball_components/lib/src/components/google_letter/cubit/google_letter_cubit.dart index a352e98d..9ef219ff 100644 --- a/packages/pinball_components/lib/src/components/google_letter/cubit/google_letter_cubit.dart +++ b/packages/pinball_components/lib/src/components/google_letter/cubit/google_letter_cubit.dart @@ -5,13 +5,13 @@ import 'package:bloc/bloc.dart'; part 'google_letter_state.dart'; class GoogleLetterCubit extends Cubit { - GoogleLetterCubit() : super(GoogleLetterState.inactive); + GoogleLetterCubit() : super(GoogleLetterState.dimmed); void onBallContacted() { - emit(GoogleLetterState.active); + emit(GoogleLetterState.lit); } void onReset() { - emit(GoogleLetterState.inactive); + emit(GoogleLetterState.dimmed); } } diff --git a/packages/pinball_components/lib/src/components/google_letter/cubit/google_letter_state.dart b/packages/pinball_components/lib/src/components/google_letter/cubit/google_letter_state.dart index e1339320..1e5a29e8 100644 --- a/packages/pinball_components/lib/src/components/google_letter/cubit/google_letter_state.dart +++ b/packages/pinball_components/lib/src/components/google_letter/cubit/google_letter_state.dart @@ -1,10 +1,8 @@ +// ignore_for_file: public_member_api_docs + part of 'google_letter_cubit.dart'; -/// Indicates the [GoogleLetterCubit]'s current state. enum GoogleLetterState { - /// A lit up letter. - active, - - /// A dimmed letter. - inactive, + lit, + dimmed, } diff --git a/packages/pinball_components/lib/src/components/google_letter/google_letter.dart b/packages/pinball_components/lib/src/components/google_letter/google_letter.dart index a865acf8..16218fa3 100644 --- a/packages/pinball_components/lib/src/components/google_letter/google_letter.dart +++ b/packages/pinball_components/lib/src/components/google_letter/google_letter.dart @@ -7,6 +7,33 @@ import 'package:pinball_flame/pinball_flame.dart'; export 'cubit/google_letter_cubit.dart'; +final _spritePaths = >[ + { + 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} /// Circular sensor that represents a letter in "GOOGLE" for a given index. /// {@endtemplate} @@ -15,13 +42,27 @@ class GoogleLetter extends BodyComponent with InitialPosition { GoogleLetter( int index, { Iterable? children, - }) : bloc = GoogleLetterCubit(), - super( + }) : this._( + index, + bloc: GoogleLetterCubit(), + children: children, + ); + + GoogleLetter._( + int index, { + required this.bloc, + Iterable? children, + }) : super( children: [ + _GoogleLetterSpriteGroupComponent( + litAssetPath: _spritePaths[index][GoogleLetterState.lit]!, + dimmedAssetPath: _spritePaths[index][GoogleLetterState.dimmed]!, + current: bloc.state, + ), GoogleLetterBallContactBehavior(), - _GoogleLetterSprite(_GoogleLetterSprite.spritePaths[index]), ...?children, ], + renderBody: false, ); /// Creates a [GoogleLetter] without any children. @@ -61,33 +102,37 @@ class GoogleLetter extends BodyComponent with InitialPosition { } } -class _GoogleLetterSprite extends SpriteComponent +class _GoogleLetterSpriteGroupComponent + extends SpriteGroupComponent with HasGameRef, ParentIsA { - _GoogleLetterSprite(String path) - : _path = path, - super(anchor: Anchor.center); - - static final spritePaths = [ - Assets.images.googleWord.letter1.keyName, - Assets.images.googleWord.letter2.keyName, - Assets.images.googleWord.letter3.keyName, - Assets.images.googleWord.letter4.keyName, - Assets.images.googleWord.letter5.keyName, - Assets.images.googleWord.letter6.keyName, - ]; + _GoogleLetterSpriteGroupComponent({ + required String litAssetPath, + required String dimmedAssetPath, + required GoogleLetterState current, + }) : _litAssetPath = litAssetPath, + _dimmedAssetPath = dimmedAssetPath, + super( + anchor: Anchor.center, + current: current, + ); - final String _path; + final String _litAssetPath; + final String _dimmedAssetPath; @override Future onLoad() async { await super.onLoad(); - // TODO(alisonryan2002): Make SpriteGroupComponent. - // parent.bloc.stream.listen(); + parent.bloc.stream.listen((state) => current = state); - // TODO(alestiago): Used cached assets. - final sprite = await gameRef.loadSprite(_path); - this.sprite = sprite; - // TODO(alestiago): Size correctly once the assets are provided. - size = sprite.originalSize / 5; + final sprites = { + GoogleLetterState.lit: Sprite( + gameRef.images.fromCache(_litAssetPath), + ), + GoogleLetterState.dimmed: Sprite( + gameRef.images.fromCache(_dimmedAssetPath), + ), + }; + this.sprites = sprites; + size = sprites[current]!.originalSize / 10; } } diff --git a/packages/pinball_components/pubspec.yaml b/packages/pinball_components/pubspec.yaml index 8352afa3..4ca7f28e 100644 --- a/packages/pinball_components/pubspec.yaml +++ b/packages/pinball_components/pubspec.yaml @@ -74,7 +74,12 @@ flutter: - assets/images/sparky/bumper/b/ - assets/images/sparky/bumper/c/ - 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/multiplier/x2/ - assets/images/multiplier/x3/ diff --git a/packages/pinball_components/sandbox/lib/stories/google_word/google_letter_game.dart b/packages/pinball_components/sandbox/lib/stories/google_word/google_letter_game.dart index be90fdb9..bc537de2 100644 --- a/packages/pinball_components/sandbox/lib/stories/google_word/google_letter_game.dart +++ b/packages/pinball_components/sandbox/lib/stories/google_word/google_letter_game.dart @@ -6,7 +6,14 @@ import 'package:pinball_components/pinball_components.dart'; import 'package:sandbox/stories/ball/basic_ball_game.dart'; 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 = ''' Shows how a GoogleLetter is rendered. diff --git a/packages/pinball_components/test/src/components/google_letter/behaviors/google_letter_ball_contact_behavior_test.dart b/packages/pinball_components/test/src/components/google_letter/behaviors/google_letter_ball_contact_behavior_test.dart index bf261460..12c596e6 100644 --- a/packages/pinball_components/test/src/components/google_letter/behaviors/google_letter_ball_contact_behavior_test.dart +++ b/packages/pinball_components/test/src/components/google_letter/behaviors/google_letter_ball_contact_behavior_test.dart @@ -31,7 +31,7 @@ void main() { whenListen( bloc, const Stream.empty(), - initialState: GoogleLetterState.active, + initialState: GoogleLetterState.lit, ); final googleLetter = GoogleLetter.test(bloc: bloc); diff --git a/packages/pinball_components/test/src/components/google_letter/cubit/google_letter_cubit_test.dart b/packages/pinball_components/test/src/components/google_letter/cubit/google_letter_cubit_test.dart index 390aa192..812e86de 100644 --- a/packages/pinball_components/test/src/components/google_letter/cubit/google_letter_cubit_test.dart +++ b/packages/pinball_components/test/src/components/google_letter/cubit/google_letter_cubit_test.dart @@ -10,14 +10,14 @@ void main() { 'onBallContacted emits active', build: GoogleLetterCubit.new, act: (bloc) => bloc.onBallContacted(), - expect: () => [GoogleLetterState.active], + expect: () => [GoogleLetterState.lit], ); blocTest( 'onReset emits inactive', build: GoogleLetterCubit.new, act: (bloc) => bloc.onReset(), - expect: () => [GoogleLetterState.inactive], + expect: () => [GoogleLetterState.dimmed], ); }, ); diff --git a/packages/pinball_components/test/src/components/google_letter/google_letter_test.dart b/packages/pinball_components/test/src/components/google_letter/google_letter_test.dart index 7ad0e64b..be1f9743 100644 --- a/packages/pinball_components/test/src/components/google_letter/google_letter_test.dart +++ b/packages/pinball_components/test/src/components/google_letter/google_letter_test.dart @@ -12,7 +12,21 @@ import '../../../helpers/helpers.dart'; void main() { 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', () { 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', () { expect(() => GoogleLetter(-1), throwsA(isA())); expect(() => GoogleLetter(6), throwsA(isA())); @@ -104,7 +108,7 @@ void main() { whenListen( bloc, const Stream.empty(), - initialState: GoogleLetterState.active, + initialState: GoogleLetterState.lit, ); when(bloc.close).thenAnswer((_) async {}); final googleLetter = GoogleLetter.test(bloc: bloc); @@ -116,15 +120,27 @@ void main() { verify(bloc.close).called(1); }); - flameTester.test('adds a GoogleLetterBallContactBehavior', (game) async { - final googleLetter = GoogleLetter(0); - await game.ensureAdd(googleLetter); - expect( - googleLetter.children - .whereType() - .single, - isNotNull, - ); + group('adds', () { + flameTester.test('new children', (game) async { + final component = Component(); + final googleLetter = GoogleLetter( + 1, + children: [component], + ); + 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() + .single, + isNotNull, + ); + }); }); }); } diff --git a/test/game/components/google_word/behaviors/google_word_bonus_behavior_test.dart b/test/game/components/google_word/behaviors/google_word_bonus_behavior_test.dart index deca61ee..97efc207 100644 --- a/test/game/components/google_word/behaviors/google_word_bonus_behavior_test.dart +++ b/test/game/components/google_word/behaviors/google_word_bonus_behavior_test.dart @@ -12,6 +12,20 @@ import '../../../../helpers/helpers.dart'; void main() { 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', () { late GameBloc gameBloc; @@ -28,6 +42,7 @@ void main() { final flameBlocTester = FlameBlocTester( gameBuilder: EmptyPinballTestGame.new, blocBuilder: () => gameBloc, + assets: assets, ); flameBlocTester.testGameWidget( diff --git a/test/game/components/google_word/google_word_test.dart b/test/game/components/google_word/google_word_test.dart index 2d7d04e5..11751238 100644 --- a/test/game/components/google_word/google_word_test.dart +++ b/test/game/components/google_word/google_word_test.dart @@ -1,6 +1,9 @@ +// ignore_for_file: cascade_invocations + import 'package:flame_forge2d/flame_forge2d.dart'; import 'package:flame_test/flame_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_components/pinball_components.dart'; @@ -8,7 +11,21 @@ import '../../../helpers/helpers.dart'; void main() { 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', () { flameTester.test( @@ -22,5 +39,14 @@ void main() { 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().single, + isNotNull, + ); + }); }); } diff --git a/test/game/pinball_game_test.dart b/test/game/pinball_game_test.dart index 687280c0..c2357046 100644 --- a/test/game/pinball_game_test.dart +++ b/test/game/pinball_game_test.dart @@ -45,12 +45,18 @@ void main() { Assets.images.dash.bumper.main.inactive.keyName, Assets.images.flipper.left.keyName, Assets.images.flipper.right.keyName, - Assets.images.googleWord.letter1.keyName, - Assets.images.googleWord.letter2.keyName, - Assets.images.googleWord.letter3.keyName, - Assets.images.googleWord.letter4.keyName, - Assets.images.googleWord.letter5.keyName, - Assets.images.googleWord.letter6.keyName, + 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, Assets.images.kicker.left.lit.keyName, Assets.images.kicker.left.dimmed.keyName, Assets.images.kicker.right.lit.keyName,