From 48c5c80b38625bc88b3f9445ff098047c6154c5c Mon Sep 17 00:00:00 2001 From: Allison Ryan <77211884+allisonryan0002@users.noreply.github.com> Date: Sun, 8 May 2022 18:17:37 -0500 Subject: [PATCH] feat: add `GoogleRollovers` (#407) * feat: add google rollovers * fix: spelling * refactor: move zIndex to parent * chore: remove unnecessary wrapper * fix: CI * refactor: PR revisions * refactor: suggestions * style: remove parentheses Co-authored-by: Jorge Coca --- lib/game/components/components.dart | 2 +- .../behaviors/behaviors.dart | 0 .../behaviors/google_word_bonus_behavior.dart | 24 +++ .../google_gallery/google_gallery.dart | 47 ++++++ .../behaviors/google_word_bonus_behavior.dart | 29 ---- .../components/google_word/google_word.dart | 52 ------ lib/game/game_assets.dart | 4 + lib/game/pinball_game.dart | 2 +- .../images/google_rollover/left/decal.png | Bin 0 -> 85488 bytes .../images/google_rollover/left/pin.png | Bin 0 -> 2543 bytes .../images/google_rollover/right/decal.png | Bin 0 -> 85182 bytes .../images/google_rollover/right/pin.png | Bin 0 -> 2227 bytes .../lib/gen/assets.gen.dart | 29 ++++ .../lib/src/components/components.dart | 4 +- .../lib/src/components/google_letter.dart | 88 ++++++++++ .../google_letter/behaviors/behaviors.dart | 1 - .../cubit/google_letter_cubit.dart | 15 -- .../cubit/google_letter_state.dart | 6 - .../google_letter/google_letter.dart | 133 --------------- .../google_rollover/behaviors/behaviors.dart | 1 + ...oogle_rollover_ball_contact_behavior.dart} | 7 +- .../google_rollover/google_rollover.dart | 113 +++++++++++++ .../google_word/cubit/google_word_cubit.dart | 30 ++++ .../google_word/cubit/google_word_state.dart | 17 ++ .../components/google_word/google_word.dart | 24 +++ packages/pinball_components/pubspec.yaml | 2 + ...gle_letter_ball_contact_behavior_test.dart | 55 ------ .../cubit/google_letter_cubit_test.dart | 24 --- .../google_letter/google_letter_test.dart | 145 ---------------- .../src/components/google_letter_test.dart | 159 ++++++++++++++++++ ...e_rollover_ball_contact_behavior_test.dart | 81 +++++++++ .../google_rollover/google_rollover_test.dart | 82 +++++++++ .../cubit/google_word_cubit_test.dart | 35 ++++ .../cubit/google_word_state_test.dart | 58 +++++++ .../google_word/google_word_test.dart | 32 ++-- .../cubit/skill_shot_state_test.dart | 14 +- .../android_acres/android_acres_test.dart | 2 +- .../google_word_bonus_behavior_test.dart | 120 +++++++++++++ .../google_gallery/google_gallery_test.dart | 110 ++++++++++++ .../google_word_bonus_behavior_test.dart | 94 ----------- test/game/pinball_game_test.dart | 4 +- .../widgets/play_button_overlay_test.dart | 2 +- 42 files changed, 1058 insertions(+), 589 deletions(-) rename lib/game/components/{google_word => google_gallery}/behaviors/behaviors.dart (100%) create mode 100644 lib/game/components/google_gallery/behaviors/google_word_bonus_behavior.dart create mode 100644 lib/game/components/google_gallery/google_gallery.dart delete mode 100644 lib/game/components/google_word/behaviors/google_word_bonus_behavior.dart delete mode 100644 lib/game/components/google_word/google_word.dart create mode 100644 packages/pinball_components/assets/images/google_rollover/left/decal.png create mode 100644 packages/pinball_components/assets/images/google_rollover/left/pin.png create mode 100644 packages/pinball_components/assets/images/google_rollover/right/decal.png create mode 100644 packages/pinball_components/assets/images/google_rollover/right/pin.png create mode 100644 packages/pinball_components/lib/src/components/google_letter.dart delete mode 100644 packages/pinball_components/lib/src/components/google_letter/behaviors/behaviors.dart delete mode 100644 packages/pinball_components/lib/src/components/google_letter/cubit/google_letter_cubit.dart delete mode 100644 packages/pinball_components/lib/src/components/google_letter/cubit/google_letter_state.dart delete mode 100644 packages/pinball_components/lib/src/components/google_letter/google_letter.dart create mode 100644 packages/pinball_components/lib/src/components/google_rollover/behaviors/behaviors.dart rename packages/pinball_components/lib/src/components/{google_letter/behaviors/google_letter_ball_contact_behavior.dart => google_rollover/behaviors/google_rollover_ball_contact_behavior.dart} (53%) create mode 100644 packages/pinball_components/lib/src/components/google_rollover/google_rollover.dart create mode 100644 packages/pinball_components/lib/src/components/google_word/cubit/google_word_cubit.dart create mode 100644 packages/pinball_components/lib/src/components/google_word/cubit/google_word_state.dart create mode 100644 packages/pinball_components/lib/src/components/google_word/google_word.dart delete mode 100644 packages/pinball_components/test/src/components/google_letter/behaviors/google_letter_ball_contact_behavior_test.dart delete mode 100644 packages/pinball_components/test/src/components/google_letter/cubit/google_letter_cubit_test.dart delete mode 100644 packages/pinball_components/test/src/components/google_letter/google_letter_test.dart create mode 100644 packages/pinball_components/test/src/components/google_letter_test.dart create mode 100644 packages/pinball_components/test/src/components/google_rollover/behaviors/google_rollover_ball_contact_behavior_test.dart create mode 100644 packages/pinball_components/test/src/components/google_rollover/google_rollover_test.dart create mode 100644 packages/pinball_components/test/src/components/google_word/cubit/google_word_cubit_test.dart create mode 100644 packages/pinball_components/test/src/components/google_word/cubit/google_word_state_test.dart rename {test/game => packages/pinball_components/test/src}/components/google_word/google_word_test.dart (65%) create mode 100644 test/game/components/google_gallery/behaviors/google_word_bonus_behavior_test.dart create mode 100644 test/game/components/google_gallery/google_gallery_test.dart delete mode 100644 test/game/components/google_word/behaviors/google_word_bonus_behavior_test.dart diff --git a/lib/game/components/components.dart b/lib/game/components/components.dart index 324f379a..969ea1ac 100644 --- a/lib/game/components/components.dart +++ b/lib/game/components/components.dart @@ -6,7 +6,7 @@ export 'dino_desert/dino_desert.dart'; export 'drain/drain.dart'; export 'flutter_forest/flutter_forest.dart'; export 'game_bloc_status_listener.dart'; -export 'google_word/google_word.dart'; +export 'google_gallery/google_gallery.dart'; export 'launcher.dart'; export 'multiballs/multiballs.dart'; export 'multipliers/multipliers.dart'; diff --git a/lib/game/components/google_word/behaviors/behaviors.dart b/lib/game/components/google_gallery/behaviors/behaviors.dart similarity index 100% rename from lib/game/components/google_word/behaviors/behaviors.dart rename to lib/game/components/google_gallery/behaviors/behaviors.dart diff --git a/lib/game/components/google_gallery/behaviors/google_word_bonus_behavior.dart b/lib/game/components/google_gallery/behaviors/google_word_bonus_behavior.dart new file mode 100644 index 00000000..abb6de1e --- /dev/null +++ b/lib/game/components/google_gallery/behaviors/google_word_bonus_behavior.dart @@ -0,0 +1,24 @@ +import 'package:flame/components.dart'; +import 'package:flame_bloc/flame_bloc.dart'; +import 'package:pinball/game/game.dart'; +import 'package:pinball_components/pinball_components.dart'; +import 'package:pinball_flame/pinball_flame.dart'; + +/// Adds a [GameBonus.googleWord] when all [GoogleLetter]s are activated. +class GoogleWordBonusBehavior extends Component { + @override + Future onLoad() async { + await super.onLoad(); + await add( + FlameBlocListener( + listenWhen: (_, state) => state.letterSpriteStates.values + .every((element) => element == GoogleLetterSpriteState.lit), + onNewState: (state) { + readBloc() + .add(const BonusActivated(GameBonus.googleWord)); + readBloc().onBonusAwarded(); + }, + ), + ); + } +} diff --git a/lib/game/components/google_gallery/google_gallery.dart b/lib/game/components/google_gallery/google_gallery.dart new file mode 100644 index 00000000..0b3d4b10 --- /dev/null +++ b/lib/game/components/google_gallery/google_gallery.dart @@ -0,0 +1,47 @@ +import 'package:flame/components.dart'; +import 'package:flame_bloc/flame_bloc.dart'; +import 'package:flutter/material.dart'; +import 'package:pinball/game/behaviors/behaviors.dart'; +import 'package:pinball/game/components/google_gallery/behaviors/behaviors.dart'; +import 'package:pinball_components/pinball_components.dart'; +import 'package:pinball_flame/pinball_flame.dart'; + +/// {@template google_gallery} +/// Middle section of the board containing the [GoogleWord] and the +/// [GoogleRollover]s. +/// {@endtemplate} +class GoogleGallery extends Component with ZIndex { + /// {@macro google_gallery} + GoogleGallery() + : super( + children: [ + FlameBlocProvider( + create: GoogleWordCubit.new, + children: [ + GoogleRollover( + side: BoardSide.right, + children: [ + ScoringContactBehavior(points: Points.fiveThousand), + ], + ), + GoogleRollover( + side: BoardSide.left, + children: [ + ScoringContactBehavior(points: Points.fiveThousand), + ], + ), + GoogleWord(position: Vector2(-4.45, 1.8)), + GoogleWordBonusBehavior(), + ], + ), + ], + ) { + zIndex = ZIndexes.decal; + } + + /// Creates a [GoogleGallery] without any children. + /// + /// This can be used for testing [GoogleGallery]'s behaviors in isolation. + @visibleForTesting + GoogleGallery.test(); +} 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 deleted file mode 100644 index c1c14ed5..00000000 --- a/lib/game/components/google_word/behaviors/google_word_bonus_behavior.dart +++ /dev/null @@ -1,29 +0,0 @@ -import 'package:flame/components.dart'; -import 'package:flame_bloc/flame_bloc.dart'; -import 'package:pinball/game/game.dart'; -import 'package:pinball_components/pinball_components.dart'; -import 'package:pinball_flame/pinball_flame.dart'; - -/// Adds a [GameBonus.googleWord] when all [GoogleLetter]s are activated. -class GoogleWordBonusBehavior extends Component - with ParentIsA, FlameBlocReader { - @override - void onMount() { - super.onMount(); - - final googleLetters = parent.children.whereType(); - for (final letter in googleLetters) { - letter.bloc.stream.listen((_) { - final achievedBonus = googleLetters - .every((letter) => letter.bloc.state == GoogleLetterState.lit); - - if (achievedBonus) { - bloc.add(const BonusActivated(GameBonus.googleWord)); - for (final letter in googleLetters) { - letter.bloc.onReset(); - } - } - }); - } - } -} diff --git a/lib/game/components/google_word/google_word.dart b/lib/game/components/google_word/google_word.dart deleted file mode 100644 index 76bac244..00000000 --- a/lib/game/components/google_word/google_word.dart +++ /dev/null @@ -1,52 +0,0 @@ -import 'package:flame/components.dart'; -import 'package:flutter/material.dart'; -import 'package:pinball/game/behaviors/scoring_behavior.dart'; -import 'package:pinball/game/components/google_word/behaviors/behaviors.dart'; -import 'package:pinball_components/pinball_components.dart'; -import 'package:pinball_flame/pinball_flame.dart'; - -/// {@template google_word} -/// Loads all [GoogleLetter]s to compose a [GoogleWord]. -/// {@endtemplate} -class GoogleWord extends Component with ZIndex { - /// {@macro google_word} - GoogleWord({ - required Vector2 position, - }) : super( - children: [ - GoogleLetter( - 0, - children: [ScoringContactBehavior(points: Points.fiveThousand)], - )..initialPosition = position + Vector2(-13.1, 1.72), - GoogleLetter( - 1, - children: [ScoringContactBehavior(points: Points.fiveThousand)], - )..initialPosition = position + Vector2(-8.33, -0.75), - GoogleLetter( - 2, - children: [ScoringContactBehavior(points: Points.fiveThousand)], - )..initialPosition = position + Vector2(-2.88, -1.85), - GoogleLetter( - 3, - children: [ScoringContactBehavior(points: Points.fiveThousand)], - )..initialPosition = position + Vector2(2.88, -1.85), - GoogleLetter( - 4, - children: [ScoringContactBehavior(points: Points.fiveThousand)], - )..initialPosition = position + Vector2(8.33, -0.75), - GoogleLetter( - 5, - children: [ScoringContactBehavior(points: Points.fiveThousand)], - )..initialPosition = position + Vector2(13.1, 1.72), - GoogleWordBonusBehavior(), - ], - ) { - zIndex = ZIndexes.decal; - } - - /// Creates a [GoogleWord] without any children. - /// - /// This can be used for testing [GoogleWord]'s behaviors in isolation. - @visibleForTesting - GoogleWord.test(); -} diff --git a/lib/game/game_assets.dart b/lib/game/game_assets.dart index 15a52afb..a770985b 100644 --- a/lib/game/game_assets.dart +++ b/lib/game/game_assets.dart @@ -118,6 +118,10 @@ extension PinballGameAssetsX on PinballGame { 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.googleRollover.left.decal.keyName), + images.load(components.Assets.images.googleRollover.left.pin.keyName), + images.load(components.Assets.images.googleRollover.right.decal.keyName), + images.load(components.Assets.images.googleRollover.right.pin.keyName), images.load(components.Assets.images.multiball.lit.keyName), images.load(components.Assets.images.multiball.dimmed.keyName), images.load(components.Assets.images.multiplier.x2.lit.keyName), diff --git a/lib/game/pinball_game.dart b/lib/game/pinball_game.dart index 8a213d31..751b8d8e 100644 --- a/lib/game/pinball_game.dart +++ b/lib/game/pinball_game.dart @@ -114,7 +114,7 @@ class PinballGame extends PinballForge2DGame shareRepository: shareRepository, entries: _entries, ), - GoogleWord(position: Vector2(-4.45, 1.8)), + GoogleGallery(), Multipliers(), Multiballs(), SkillShot( diff --git a/packages/pinball_components/assets/images/google_rollover/left/decal.png b/packages/pinball_components/assets/images/google_rollover/left/decal.png new file mode 100644 index 0000000000000000000000000000000000000000..da50313186724e99b9b490c19d313fefb8d21369 GIT binary patch literal 85488 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 literal 0 HcmV?d00001 diff --git a/packages/pinball_components/assets/images/google_rollover/left/pin.png b/packages/pinball_components/assets/images/google_rollover/left/pin.png new file mode 100644 index 0000000000000000000000000000000000000000..50a95a6b78b5a4e285f1041fbbec6d75d21b3934 GIT binary patch literal 2543 zcmV@D6@Ai_-?dN>9qdm+~575zE=R}d~i>$NDu^v5b{=@=VJiK&XoX+vH6qt-uvCV?|$z$ z{eEALqUd7)$j^fS3;@9MeD&JR8{c{3;)T}A%E~V|j=OSRDu4k1ilUgggF!|V1!}cw zLzd-l0RTEb0?Hz2Z?*RXK?KXP1VYFy01(cN0HBccd%b&tAQX0`f(>1}1^~)ej3>Uz z>ftBX;`r$JZjvTxtyTwJ*I!2nRas*-9p?vk?%esUEJ=5siv6_?{>hb2qRG}^Fz}s) zrm7oe6=Uu~QRKVx20{p_Km75JKDc(}%8!zG@{P6i2S1~f?!T%EK#}K%y>4%>*>s>% zv56>(*BG-X@H}6wHyWJdIJYH9`u3}sN}sQfnr5xmA~p=;DgbBwyZ3mWFY5IMCW>+c z0OVIGfDVWLgX5Ev(c;n~*tWHd5NtUm@0M%;M;(6{O!*A0ln(Xv@y@Atefn^yB7~^Hu_ka7=t)IUC!TW!0 zI?k^FKxGn8mSwoMy81xXG`g_RAd*aOuz+0T`ANIo?o_K)sMl&5&kI*sKt>3OSFT?D z{_S_(xwx{j@^hXSZZio0fUL8#bGImpnd3N|qNr~_F{XJzP9ChU-{%FsSZFo{q9`|? zTB_%Hp87*SGfWd4$EgxRzWbtu0DpNNAFUl8J&qO^myl(dZvue9Fa`35{fBpxG@ULk zE+Jjht^)vJcz)L1+uNWN@>a{?RZYA7q6B_vdL(h&eb|3^*jieGO10L)m}|0d5Cp@` zZnryh90%F9d4bW<>G9Fgsz3B6t;I!T7{&?!GMEGuMKS#Bv(MU1$Dz$;)8qx=GRr*9 zvg~ksd#hJ(G@xFu*D%Jfvj~VM@m{CXIj+|mU|Z%Q#>in3008Ow+WJ}$1f^x$5>eEf zEFja8j@uiXYn5uXY%MM;q9`#rdR`RX`uf_IVH(g_Xc#;%tUND)&k9^Ve*AcCduJz= zC6UuL{RRL?EF5$?o%?YT=k-Q|mkD7487NJ6cRKeJRV@~mmL*A+pPRsE-JnSv?{zwz zP}5XYtyM20gjhf>y@9*AwzeMeJdX{-yvo>`7YFOB)mS(P!*OSAb#2J;9MX0DG5}ai0w|^9 z!^6j2gb=kX%MeA03FNXYhr69lA9EZyPOBma!W%3JDDwPdb@kKzqAa0St1V!RTTB7~ zAahR!?KI0uUDqV_lmnL5Iz2i(+$xHqG)6ErwOI}*Rk2|hXD0B> zvgUdI*z-J35CpI+ixp%#%Vv-Kp&v-H3>Dj6#uzh!Je{UJ&-X(@2(s@HuLCpF=5QL&Af_(~diwVRu-E%!J5+xCA z+gipL*I5#f#z|)!MTtxZvMbL98NUF;f#vB8?mTfVEJe$o9 z1}7&&j_1L)>;}hii%bG2rQ?A+=oLjlbzKuxjSXZ<>Bw`vM-%`o%O(n|BbTM`x$eO! z$fo`*kY5xm3w*zwPN$`+s@SqDR*+NA^R}}rD^*qDbi-f*nNk}2p0}G91=V#!&`uM` zu?Q%lanznnqM0m7$gWf`A%s~#&Z98gOp-KL2*H+VzQyRsvr!PV(=;uJLa=FB*S@$} zhUWn>7>#0H;K4GDCdXkWkkcgD3CH796h)|1D$5viERI}86EFhPYanznflkC)y?IlJ>{_n2im{OWD8QJF`&Sw2!6oee+ zz%UG5mLw*Sr)k<9g`9{n>;lT4On;5m$5=@bHhViJwpVK|;iq6nt0EpR+jYhC!B z_vh~J-aSfb6h-5804QFDfO)q%Xg1AugK!kTzPuzGhOSAH^kzPreF6Y<&epp7_YXh( zRjppX<+<)(0HA!80-(tAgCGce094U6P1H60`Xq`tnE$h!GLGZ>5BvR3=N0`jrx28s z2A=0VD$5cyO~aL1gSEB(yqfS52g@!)G8zV*BuywG1lgAPm5xzg_F!3yXJI(n97jS literal 0 HcmV?d00001 diff --git a/packages/pinball_components/assets/images/google_rollover/right/decal.png b/packages/pinball_components/assets/images/google_rollover/right/decal.png new file mode 100644 index 0000000000000000000000000000000000000000..68496cafeb4dacc4a59a194ae95a327e3da1ca53 GIT binary patch literal 85182 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ȅ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 const $AssetsImagesFlapperGen(); $AssetsImagesFlipperGen get flipper => const $AssetsImagesFlipperGen(); + $AssetsImagesGoogleRolloverGen get googleRollover => + const $AssetsImagesGoogleRolloverGen(); $AssetsImagesGoogleWordGen get googleWord => const $AssetsImagesGoogleWordGen(); $AssetsImagesKickerGen get kicker => const $AssetsImagesKickerGen(); @@ -180,6 +182,15 @@ class $AssetsImagesFlipperGen { const AssetGenImage('assets/images/flipper/right.png'); } +class $AssetsImagesGoogleRolloverGen { + const $AssetsImagesGoogleRolloverGen(); + + $AssetsImagesGoogleRolloverLeftGen get left => + const $AssetsImagesGoogleRolloverLeftGen(); + $AssetsImagesGoogleRolloverRightGen get right => + const $AssetsImagesGoogleRolloverRightGen(); +} + class $AssetsImagesGoogleWordGen { const $AssetsImagesGoogleWordGen(); @@ -434,6 +445,24 @@ class $AssetsImagesDinoAnimatronicGen { const AssetGenImage('assets/images/dino/animatronic/mouth.png'); } +class $AssetsImagesGoogleRolloverLeftGen { + const $AssetsImagesGoogleRolloverLeftGen(); + + AssetGenImage get decal => + const AssetGenImage('assets/images/google_rollover/left/decal.png'); + AssetGenImage get pin => + const AssetGenImage('assets/images/google_rollover/left/pin.png'); +} + +class $AssetsImagesGoogleRolloverRightGen { + const $AssetsImagesGoogleRolloverRightGen(); + + AssetGenImage get decal => + const AssetGenImage('assets/images/google_rollover/right/decal.png'); + AssetGenImage get pin => + const AssetGenImage('assets/images/google_rollover/right/pin.png'); +} + class $AssetsImagesGoogleWordLetter1Gen { const $AssetsImagesGoogleWordLetter1Gen(); diff --git a/packages/pinball_components/lib/src/components/components.dart b/packages/pinball_components/lib/src/components/components.dart index 76d4e189..1116ee88 100644 --- a/packages/pinball_components/lib/src/components/components.dart +++ b/packages/pinball_components/lib/src/components/components.dart @@ -17,7 +17,9 @@ export 'dino_walls.dart'; export 'error_component.dart'; export 'flapper/flapper.dart'; export 'flipper/flipper.dart'; -export 'google_letter/google_letter.dart'; +export 'google_letter.dart'; +export 'google_rollover/google_rollover.dart'; +export 'google_word/google_word.dart'; export 'initial_position.dart'; export 'joint_anchor.dart'; export 'kicker/kicker.dart'; diff --git a/packages/pinball_components/lib/src/components/google_letter.dart b/packages/pinball_components/lib/src/components/google_letter.dart new file mode 100644 index 00000000..1c63f7ff --- /dev/null +++ b/packages/pinball_components/lib/src/components/google_letter.dart @@ -0,0 +1,88 @@ +import 'package:flame/components.dart'; +import 'package:flame_bloc/flame_bloc.dart'; +import 'package:pinball_components/pinball_components.dart'; +import 'package:pinball_flame/pinball_flame.dart'; + +enum GoogleLetterSpriteState { + lit, + dimmed, +} + +/// {@template google_letter} +/// Circular decal that represents a letter in "GOOGLE" for a given index. +/// {@endtemplate} +class GoogleLetter extends SpriteGroupComponent + with HasGameRef, FlameBlocListenable { + /// {@macro google_letter} + GoogleLetter(int index) + : _litAssetPath = _spritePaths[index][GoogleLetterSpriteState.lit]!, + _dimmedAssetPath = _spritePaths[index][GoogleLetterSpriteState.dimmed]!, + _index = index, + super(anchor: Anchor.center); + + final String _litAssetPath; + final String _dimmedAssetPath; + final int _index; + + @override + bool listenWhen(GoogleWordState previousState, GoogleWordState newState) { + return previousState.letterSpriteStates[_index] != + newState.letterSpriteStates[_index]; + } + + @override + void onNewState(GoogleWordState state) => + current = state.letterSpriteStates[_index]; + + @override + Future onLoad() async { + await super.onLoad(); + + final sprites = { + GoogleLetterSpriteState.lit: Sprite( + gameRef.images.fromCache(_litAssetPath), + ), + GoogleLetterSpriteState.dimmed: Sprite( + gameRef.images.fromCache(_dimmedAssetPath), + ), + }; + this.sprites = sprites; + current = readBloc() + .state + .letterSpriteStates[_index]; + size = sprites[current]!.originalSize / 10; + } +} + +final _spritePaths = >[ + { + GoogleLetterSpriteState.lit: Assets.images.googleWord.letter1.lit.keyName, + GoogleLetterSpriteState.dimmed: + Assets.images.googleWord.letter1.dimmed.keyName, + }, + { + GoogleLetterSpriteState.lit: Assets.images.googleWord.letter2.lit.keyName, + GoogleLetterSpriteState.dimmed: + Assets.images.googleWord.letter2.dimmed.keyName, + }, + { + GoogleLetterSpriteState.lit: Assets.images.googleWord.letter3.lit.keyName, + GoogleLetterSpriteState.dimmed: + Assets.images.googleWord.letter3.dimmed.keyName, + }, + { + GoogleLetterSpriteState.lit: Assets.images.googleWord.letter4.lit.keyName, + GoogleLetterSpriteState.dimmed: + Assets.images.googleWord.letter4.dimmed.keyName, + }, + { + GoogleLetterSpriteState.lit: Assets.images.googleWord.letter5.lit.keyName, + GoogleLetterSpriteState.dimmed: + Assets.images.googleWord.letter5.dimmed.keyName, + }, + { + GoogleLetterSpriteState.lit: Assets.images.googleWord.letter6.lit.keyName, + GoogleLetterSpriteState.dimmed: + Assets.images.googleWord.letter6.dimmed.keyName, + }, +]; diff --git a/packages/pinball_components/lib/src/components/google_letter/behaviors/behaviors.dart b/packages/pinball_components/lib/src/components/google_letter/behaviors/behaviors.dart deleted file mode 100644 index df54c1f4..00000000 --- a/packages/pinball_components/lib/src/components/google_letter/behaviors/behaviors.dart +++ /dev/null @@ -1 +0,0 @@ -export 'google_letter_ball_contact_behavior.dart'; 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 deleted file mode 100644 index 99b15702..00000000 --- a/packages/pinball_components/lib/src/components/google_letter/cubit/google_letter_cubit.dart +++ /dev/null @@ -1,15 +0,0 @@ -import 'package:bloc/bloc.dart'; - -part 'google_letter_state.dart'; - -class GoogleLetterCubit extends Cubit { - GoogleLetterCubit() : super(GoogleLetterState.dimmed); - - void onBallContacted() { - emit(GoogleLetterState.lit); - } - - void onReset() { - 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 deleted file mode 100644 index 12c7edd0..00000000 --- a/packages/pinball_components/lib/src/components/google_letter/cubit/google_letter_state.dart +++ /dev/null @@ -1,6 +0,0 @@ -part of 'google_letter_cubit.dart'; - -enum GoogleLetterState { - 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 deleted file mode 100644 index 9d678e30..00000000 --- a/packages/pinball_components/lib/src/components/google_letter/google_letter.dart +++ /dev/null @@ -1,133 +0,0 @@ -import 'package:flame/components.dart'; -import 'package:flame_forge2d/flame_forge2d.dart'; -import 'package:flutter/material.dart'; -import 'package:pinball_components/pinball_components.dart'; -import 'package:pinball_components/src/components/google_letter/behaviors/behaviors.dart'; -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} -class GoogleLetter extends BodyComponent with InitialPosition { - /// {@macro google_letter} - GoogleLetter( - int index, { - Iterable? children, - }) : 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(), - ...?children, - ], - renderBody: false, - ); - - /// Creates a [GoogleLetter] without any children. - /// - /// This can be used for testing [GoogleLetter]'s behaviors in isolation. - @visibleForTesting - GoogleLetter.test({ - required this.bloc, - }); - - final GoogleLetterCubit bloc; - - @override - void onRemove() { - bloc.close(); - super.onRemove(); - } - - @override - Body createBody() { - final shape = CircleShape()..radius = 1.85; - final fixtureDef = FixtureDef( - shape, - isSensor: true, - ); - final bodyDef = BodyDef( - position: initialPosition, - userData: this, - ); - - return world.createBody(bodyDef)..createFixture(fixtureDef); - } -} - -class _GoogleLetterSpriteGroupComponent - extends SpriteGroupComponent - with HasGameRef, ParentIsA { - _GoogleLetterSpriteGroupComponent({ - required String litAssetPath, - required String dimmedAssetPath, - required GoogleLetterState current, - }) : _litAssetPath = litAssetPath, - _dimmedAssetPath = dimmedAssetPath, - super( - anchor: Anchor.center, - current: current, - ); - - final String _litAssetPath; - final String _dimmedAssetPath; - - @override - Future onLoad() async { - await super.onLoad(); - parent.bloc.stream.listen((state) => current = state); - - 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/lib/src/components/google_rollover/behaviors/behaviors.dart b/packages/pinball_components/lib/src/components/google_rollover/behaviors/behaviors.dart new file mode 100644 index 00000000..0cb1ea1a --- /dev/null +++ b/packages/pinball_components/lib/src/components/google_rollover/behaviors/behaviors.dart @@ -0,0 +1 @@ +export 'google_rollover_ball_contact_behavior.dart'; diff --git a/packages/pinball_components/lib/src/components/google_letter/behaviors/google_letter_ball_contact_behavior.dart b/packages/pinball_components/lib/src/components/google_rollover/behaviors/google_rollover_ball_contact_behavior.dart similarity index 53% rename from packages/pinball_components/lib/src/components/google_letter/behaviors/google_letter_ball_contact_behavior.dart rename to packages/pinball_components/lib/src/components/google_rollover/behaviors/google_rollover_ball_contact_behavior.dart index 84a210ef..bef08bb0 100644 --- a/packages/pinball_components/lib/src/components/google_letter/behaviors/google_letter_ball_contact_behavior.dart +++ b/packages/pinball_components/lib/src/components/google_rollover/behaviors/google_rollover_ball_contact_behavior.dart @@ -1,12 +1,15 @@ +import 'package:flame/components.dart'; import 'package:flame_forge2d/flame_forge2d.dart'; import 'package:pinball_components/pinball_components.dart'; import 'package:pinball_flame/pinball_flame.dart'; -class GoogleLetterBallContactBehavior extends ContactBehavior { +class GoogleRolloverBallContactBehavior + extends ContactBehavior { @override void beginContact(Object other, Contact contact) { super.beginContact(other, contact); if (other is! Ball) return; - parent.bloc.onBallContacted(); + readBloc().onRolloverContacted(); + parent.firstChild()?.playing = true; } } diff --git a/packages/pinball_components/lib/src/components/google_rollover/google_rollover.dart b/packages/pinball_components/lib/src/components/google_rollover/google_rollover.dart new file mode 100644 index 00000000..e04e9778 --- /dev/null +++ b/packages/pinball_components/lib/src/components/google_rollover/google_rollover.dart @@ -0,0 +1,113 @@ +import 'package:flame/components.dart'; +import 'package:flame_forge2d/flame_forge2d.dart'; +import 'package:pinball_components/pinball_components.dart'; +import 'package:pinball_components/src/components/google_rollover/behaviors/behaviors.dart'; + +/// {@template google_rollover} +/// Rollover that lights up [GoogleLetter]s. +/// {@endtemplate} +class GoogleRollover extends BodyComponent { + /// {@macro google_rollover} + GoogleRollover({ + required BoardSide side, + Iterable? children, + }) : _side = side, + super( + renderBody: false, + children: [ + GoogleRolloverBallContactBehavior(), + _RolloverDecalSpriteComponent(side: side), + _PinSpriteAnimationComponent(side: side), + ...?children, + ], + ); + + final BoardSide _side; + + @override + Body createBody() { + final shape = PolygonShape() + ..setAsBox( + 0.1, + 3.4, + Vector2(_side.isLeft ? -14.8 : 5.9, -11), + 0.19 * _side.direction, + ); + final fixtureDef = FixtureDef(shape, isSensor: true); + return world.createBody(BodyDef())..createFixture(fixtureDef); + } +} + +class _RolloverDecalSpriteComponent extends SpriteComponent with HasGameRef { + _RolloverDecalSpriteComponent({required BoardSide side}) + : _side = side, + super( + anchor: Anchor.center, + position: Vector2(side.isLeft ? -14.8 : 5.9, -11), + angle: 0.18 * side.direction, + ); + + final BoardSide _side; + + @override + Future onLoad() async { + await super.onLoad(); + + final sprite = Sprite( + gameRef.images.fromCache( + (_side.isLeft) + ? Assets.images.googleRollover.left.decal.keyName + : Assets.images.googleRollover.right.decal.keyName, + ), + ); + this.sprite = sprite; + size = sprite.originalSize / 20; + } +} + +class _PinSpriteAnimationComponent extends SpriteAnimationComponent + with HasGameRef { + _PinSpriteAnimationComponent({required BoardSide side}) + : _side = side, + super( + anchor: Anchor.center, + position: Vector2(side.isLeft ? -14.9 : 5.95, -11), + angle: 0, + playing: false, + ); + + final BoardSide _side; + + @override + Future onLoad() async { + await super.onLoad(); + + final spriteSheet = gameRef.images.fromCache( + _side.isLeft + ? Assets.images.googleRollover.left.pin.keyName + : Assets.images.googleRollover.right.pin.keyName, + ); + + const amountPerRow = 3; + const amountPerColumn = 1; + final textureSize = Vector2( + spriteSheet.width / amountPerRow, + spriteSheet.height / amountPerColumn, + ); + size = textureSize / 10; + + animation = SpriteAnimation.fromFrameData( + spriteSheet, + SpriteAnimationData.sequenced( + amount: amountPerRow * amountPerColumn, + amountPerRow: amountPerRow, + stepTime: 1 / 24, + textureSize: textureSize, + loop: false, + ), + )..onComplete = () { + animation?.reset(); + playing = false; + }; + } +} diff --git a/packages/pinball_components/lib/src/components/google_word/cubit/google_word_cubit.dart b/packages/pinball_components/lib/src/components/google_word/cubit/google_word_cubit.dart new file mode 100644 index 00000000..197771d6 --- /dev/null +++ b/packages/pinball_components/lib/src/components/google_word/cubit/google_word_cubit.dart @@ -0,0 +1,30 @@ +import 'package:bloc/bloc.dart'; +import 'package:equatable/equatable.dart'; +import 'package:pinball_components/pinball_components.dart'; + +part 'google_word_state.dart'; + +class GoogleWordCubit extends Cubit { + GoogleWordCubit() : super(GoogleWordState.initial()); + + static const _lettersInGoogle = 6; + + int _lastLitLetter = 0; + + void onRolloverContacted() { + final spriteStatesMap = {...state.letterSpriteStates}; + if (_lastLitLetter < _lettersInGoogle) { + spriteStatesMap.update( + _lastLitLetter, + (_) => GoogleLetterSpriteState.lit, + ); + emit(GoogleWordState(letterSpriteStates: spriteStatesMap)); + _lastLitLetter++; + } + } + + void onBonusAwarded() { + emit(GoogleWordState.initial()); + _lastLitLetter = 0; + } +} diff --git a/packages/pinball_components/lib/src/components/google_word/cubit/google_word_state.dart b/packages/pinball_components/lib/src/components/google_word/cubit/google_word_state.dart new file mode 100644 index 00000000..a1ee2786 --- /dev/null +++ b/packages/pinball_components/lib/src/components/google_word/cubit/google_word_state.dart @@ -0,0 +1,17 @@ +part of 'google_word_cubit.dart'; + +class GoogleWordState extends Equatable { + const GoogleWordState({required this.letterSpriteStates}); + + GoogleWordState.initial() + : this( + letterSpriteStates: { + for (var i = 0; i <= 5; i++) i: GoogleLetterSpriteState.dimmed + }, + ); + + final Map letterSpriteStates; + + @override + List get props => [...letterSpriteStates.values]; +} diff --git a/packages/pinball_components/lib/src/components/google_word/google_word.dart b/packages/pinball_components/lib/src/components/google_word/google_word.dart new file mode 100644 index 00000000..72126d2c --- /dev/null +++ b/packages/pinball_components/lib/src/components/google_word/google_word.dart @@ -0,0 +1,24 @@ +import 'package:flame/components.dart'; +import 'package:pinball_components/pinball_components.dart'; + +export 'cubit/google_word_cubit.dart'; + +/// {@template google_word} +/// Loads all [GoogleLetter]s to compose a [GoogleWord]. +/// {@endtemplate} +class GoogleWord extends PositionComponent { + /// {@macro google_word} + GoogleWord({ + required Vector2 position, + }) : super( + position: position, + children: [ + GoogleLetter(0)..position = Vector2(-13.1, 1.72), + GoogleLetter(1)..position = Vector2(-8.33, -0.75), + GoogleLetter(2)..position = Vector2(-2.88, -1.85), + GoogleLetter(3)..position = Vector2(2.88, -1.85), + GoogleLetter(4)..position = Vector2(8.33, -0.75), + GoogleLetter(5)..position = Vector2(13.1, 1.72), + ], + ); +} diff --git a/packages/pinball_components/pubspec.yaml b/packages/pinball_components/pubspec.yaml index 60651eb2..fe52f8b8 100644 --- a/packages/pinball_components/pubspec.yaml +++ b/packages/pinball_components/pubspec.yaml @@ -81,6 +81,8 @@ flutter: - assets/images/google_word/letter4/ - assets/images/google_word/letter5/ - assets/images/google_word/letter6/ + - assets/images/google_rollover/left/ + - assets/images/google_rollover/right/ - assets/images/signpost/ - assets/images/multiball/ - assets/images/multiplier/x2/ 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 deleted file mode 100644 index 6a6fd437..00000000 --- a/packages/pinball_components/test/src/components/google_letter/behaviors/google_letter_ball_contact_behavior_test.dart +++ /dev/null @@ -1,55 +0,0 @@ -// ignore_for_file: cascade_invocations - -import 'package:bloc_test/bloc_test.dart'; -import 'package:flame_forge2d/flame_forge2d.dart'; -import 'package:flame_test/flame_test.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:mocktail/mocktail.dart'; -import 'package:pinball_components/pinball_components.dart'; -import 'package:pinball_components/src/components/google_letter/behaviors/behaviors.dart'; - -import '../../../../helpers/helpers.dart'; - -class _MockGoogleLetterCubit extends Mock implements GoogleLetterCubit {} - -class _MockBall extends Mock implements Ball {} - -class _MockContact extends Mock implements Contact {} - -void main() { - TestWidgetsFlutterBinding.ensureInitialized(); - final flameTester = FlameTester(TestGame.new); - - group( - 'GoogleLetterBallContactBehavior', - () { - test('can be instantiated', () { - expect( - GoogleLetterBallContactBehavior(), - isA(), - ); - }); - - flameTester.test( - 'beginContact emits onBallContacted when contacts with a ball', - (game) async { - final behavior = GoogleLetterBallContactBehavior(); - final bloc = _MockGoogleLetterCubit(); - whenListen( - bloc, - const Stream.empty(), - initialState: GoogleLetterState.lit, - ); - - final googleLetter = GoogleLetter.test(bloc: bloc); - await googleLetter.add(behavior); - await game.ensureAdd(googleLetter); - - behavior.beginContact(_MockBall(), _MockContact()); - - verify(googleLetter.bloc.onBallContacted).called(1); - }, - ); - }, - ); -} 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 deleted file mode 100644 index 812e86de..00000000 --- a/packages/pinball_components/test/src/components/google_letter/cubit/google_letter_cubit_test.dart +++ /dev/null @@ -1,24 +0,0 @@ -import 'package:bloc_test/bloc_test.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:pinball_components/pinball_components.dart'; - -void main() { - group( - 'GoogleLetterCubit', - () { - blocTest( - 'onBallContacted emits active', - build: GoogleLetterCubit.new, - act: (bloc) => bloc.onBallContacted(), - expect: () => [GoogleLetterState.lit], - ); - - blocTest( - 'onReset emits inactive', - build: GoogleLetterCubit.new, - act: (bloc) => bloc.onReset(), - 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 deleted file mode 100644 index 1ef5e7a7..00000000 --- a/packages/pinball_components/test/src/components/google_letter/google_letter_test.dart +++ /dev/null @@ -1,145 +0,0 @@ -// ignore_for_file: cascade_invocations - -import 'package:bloc_test/bloc_test.dart'; -import 'package:flame/components.dart'; -import 'package:flame_test/flame_test.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:mocktail/mocktail.dart'; -import 'package:pinball_components/pinball_components.dart'; -import 'package:pinball_components/src/components/google_letter/behaviors/behaviors.dart'; - -import '../../../helpers/helpers.dart'; - -class _MockGoogleLetterCubit extends Mock implements GoogleLetterCubit {} - -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, - ]; - final flameTester = FlameTester(() => TestGame(assets)); - - group('Google Letter', () { - flameTester.test( - '0th loads correctly', - (game) async { - final googleLetter = GoogleLetter(0); - await game.ready(); - await game.ensureAdd(googleLetter); - - expect(game.contains(googleLetter), isTrue); - }, - ); - - flameTester.test( - '1st loads correctly', - (game) async { - final googleLetter = GoogleLetter(1); - await game.ready(); - await game.ensureAdd(googleLetter); - - expect(game.contains(googleLetter), isTrue); - }, - ); - - flameTester.test( - '2nd loads correctly', - (game) async { - final googleLetter = GoogleLetter(2); - await game.ready(); - await game.ensureAdd(googleLetter); - - expect(game.contains(googleLetter), isTrue); - }, - ); - - flameTester.test( - '3d loads correctly', - (game) async { - final googleLetter = GoogleLetter(3); - await game.ready(); - await game.ensureAdd(googleLetter); - - expect(game.contains(googleLetter), isTrue); - }, - ); - - flameTester.test( - '4th loads correctly', - (game) async { - final googleLetter = GoogleLetter(4); - await game.ready(); - await game.ensureAdd(googleLetter); - - expect(game.contains(googleLetter), isTrue); - }, - ); - - flameTester.test( - '5th loads correctly', - (game) async { - final googleLetter = GoogleLetter(5); - await game.ready(); - await game.ensureAdd(googleLetter); - - expect(game.contains(googleLetter), isTrue); - }, - ); - - test('throws error when index out of range', () { - expect(() => GoogleLetter(-1), throwsA(isA())); - expect(() => GoogleLetter(6), throwsA(isA())); - }); - - flameTester.test('closes bloc when removed', (game) async { - final bloc = _MockGoogleLetterCubit(); - whenListen( - bloc, - const Stream.empty(), - initialState: GoogleLetterState.lit, - ); - when(bloc.close).thenAnswer((_) async {}); - final googleLetter = GoogleLetter.test(bloc: bloc); - - await game.ensureAdd(googleLetter); - game.remove(googleLetter); - await game.ready(); - - verify(bloc.close).called(1); - }); - - 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/packages/pinball_components/test/src/components/google_letter_test.dart b/packages/pinball_components/test/src/components/google_letter_test.dart new file mode 100644 index 00000000..7deea645 --- /dev/null +++ b/packages/pinball_components/test/src/components/google_letter_test.dart @@ -0,0 +1,159 @@ +// ignore_for_file: cascade_invocations + +import 'package:flame_bloc/flame_bloc.dart'; +import 'package:flame_forge2d/flame_forge2d.dart'; +import 'package:flame_test/flame_test.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:pinball_components/pinball_components.dart'; + +class _TestGame extends Forge2DGame { + @override + Future onLoad() async { + images.prefix = ''; + await images.loadAll([ + 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, + ]); + } + + Future pump(GoogleLetter child) async { + await ensureAdd( + FlameBlocProvider.value( + value: GoogleWordCubit(), + children: [child], + ), + ); + } +} + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + + final flameTester = FlameTester(_TestGame.new); + + group('Google Letter', () { + test('can be instantiated', () { + expect(GoogleLetter(0), isA()); + }); + + flameTester.test( + '0th loads correctly', + (game) async { + final googleLetter = GoogleLetter(0); + await game.pump(googleLetter); + + expect(game.descendants().contains(googleLetter), isTrue); + }, + ); + + flameTester.test( + '1st loads correctly', + (game) async { + final googleLetter = GoogleLetter(1); + await game.pump(googleLetter); + + expect(game.descendants().contains(googleLetter), isTrue); + }, + ); + + flameTester.test( + '2nd loads correctly', + (game) async { + final googleLetter = GoogleLetter(2); + await game.pump(googleLetter); + + expect(game.descendants().contains(googleLetter), isTrue); + }, + ); + + flameTester.test( + '3d loads correctly', + (game) async { + final googleLetter = GoogleLetter(3); + await game.pump(googleLetter); + + expect(game.descendants().contains(googleLetter), isTrue); + }, + ); + + flameTester.test( + '4th loads correctly', + (game) async { + final googleLetter = GoogleLetter(4); + await game.pump(googleLetter); + + expect(game.descendants().contains(googleLetter), isTrue); + }, + ); + + flameTester.test( + '5th loads correctly', + (game) async { + final googleLetter = GoogleLetter(5); + await game.pump(googleLetter); + + expect(game.descendants().contains(googleLetter), isTrue); + }, + ); + + test('throws error when index out of range', () { + expect(() => GoogleLetter(-1), throwsA(isA())); + expect(() => GoogleLetter(6), throwsA(isA())); + }); + + group('sprite', () { + const firstLetterLitState = GoogleWordState( + letterSpriteStates: { + 0: GoogleLetterSpriteState.lit, + 1: GoogleLetterSpriteState.dimmed, + 2: GoogleLetterSpriteState.dimmed, + 3: GoogleLetterSpriteState.dimmed, + 4: GoogleLetterSpriteState.dimmed, + 5: GoogleLetterSpriteState.dimmed, + }, + ); + + flameTester.test( + "listens when its index's state changes", + (game) async { + final googleLetter = GoogleLetter(0); + await game.pump(googleLetter); + + expect( + googleLetter.listenWhen( + GoogleWordState.initial(), + firstLetterLitState, + ), + isTrue, + ); + }, + ); + + flameTester.test( + 'changes current sprite onNewState', + (game) async { + final googleLetter = GoogleLetter(0); + await game.pump(googleLetter); + + final originalSprite = googleLetter.current; + + googleLetter.onNewState(firstLetterLitState); + await game.ready(); + + final newSprite = googleLetter.current; + expect(newSprite != originalSprite, isTrue); + }, + ); + }); + }); +} diff --git a/packages/pinball_components/test/src/components/google_rollover/behaviors/google_rollover_ball_contact_behavior_test.dart b/packages/pinball_components/test/src/components/google_rollover/behaviors/google_rollover_ball_contact_behavior_test.dart new file mode 100644 index 00000000..9d2e6fdf --- /dev/null +++ b/packages/pinball_components/test/src/components/google_rollover/behaviors/google_rollover_ball_contact_behavior_test.dart @@ -0,0 +1,81 @@ +// ignore_for_file: cascade_invocations + +import 'package:flame/components.dart'; +import 'package:flame_bloc/flame_bloc.dart'; +import 'package:flame_forge2d/flame_forge2d.dart'; +import 'package:flame_test/flame_test.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:pinball_components/pinball_components.dart'; +import 'package:pinball_components/src/components/google_rollover/behaviors/behaviors.dart'; + +class _TestGame extends Forge2DGame { + @override + Future onLoad() async { + images.prefix = ''; + await images.loadAll([ + Assets.images.googleRollover.left.decal.keyName, + Assets.images.googleRollover.left.pin.keyName, + ]); + } + + Future pump( + GoogleRollover child, { + GoogleWordCubit? bloc, + }) async { + // Not needed once https://github.com/flame-engine/flame/issues/1607 + // is fixed + await onLoad(); + await ensureAdd( + FlameBlocProvider.value( + value: bloc ?? GoogleWordCubit(), + children: [child], + ), + ); + } +} + +class _MockBall extends Mock implements Ball {} + +class _MockContact extends Mock implements Contact {} + +class _MockGoogleWordCubit extends Mock implements GoogleWordCubit {} + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + + final flameTester = FlameTester(_TestGame.new); + + group( + 'GoogleRolloverBallContactBehavior', + () { + test('can be instantiated', () { + expect( + GoogleRolloverBallContactBehavior(), + isA(), + ); + }); + + flameTester.testGameWidget( + 'beginContact animates pin and calls onRolloverContacted ' + 'when contacts with a ball', + setUp: (game, tester) async { + final behavior = GoogleRolloverBallContactBehavior(); + final bloc = _MockGoogleWordCubit(); + final googleRollover = GoogleRollover(side: BoardSide.left); + await googleRollover.add(behavior); + await game.pump(googleRollover, bloc: bloc); + + behavior.beginContact(_MockBall(), _MockContact()); + await tester.pump(); + + expect( + googleRollover.firstChild()!.playing, + isTrue, + ); + verify(bloc.onRolloverContacted).called(1); + }, + ); + }, + ); +} diff --git a/packages/pinball_components/test/src/components/google_rollover/google_rollover_test.dart b/packages/pinball_components/test/src/components/google_rollover/google_rollover_test.dart new file mode 100644 index 00000000..199803a0 --- /dev/null +++ b/packages/pinball_components/test/src/components/google_rollover/google_rollover_test.dart @@ -0,0 +1,82 @@ +// ignore_for_file: cascade_invocations + +import 'package:flame/components.dart'; +import 'package:flame_test/flame_test.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:pinball_components/pinball_components.dart'; +import 'package:pinball_components/src/components/google_rollover/behaviors/behaviors.dart'; + +import '../../../helpers/helpers.dart'; + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + final assets = [ + Assets.images.googleRollover.left.decal.keyName, + Assets.images.googleRollover.left.pin.keyName, + Assets.images.googleRollover.right.decal.keyName, + Assets.images.googleRollover.right.pin.keyName, + ]; + final flameTester = FlameTester(() => TestGame(assets)); + + group('GoogleRollover', () { + test('can be instantiated', () { + expect( + GoogleRollover(side: BoardSide.left), + isA(), + ); + }); + + flameTester.test('left loads correctly', (game) async { + final googleRollover = GoogleRollover(side: BoardSide.left); + await game.ensureAdd(googleRollover); + expect(game.contains(googleRollover), isTrue); + }); + + flameTester.test('right loads correctly', (game) async { + final googleRollover = GoogleRollover(side: BoardSide.right); + await game.ensureAdd(googleRollover); + expect(game.contains(googleRollover), isTrue); + }); + + group('adds', () { + flameTester.test('new children', (game) async { + final component = Component(); + final googleRollover = GoogleRollover( + side: BoardSide.left, + children: [component], + ); + await game.ensureAdd(googleRollover); + expect(googleRollover.children, contains(component)); + }); + + flameTester.test('a GoogleRolloverBallContactBehavior', (game) async { + final googleRollover = GoogleRollover(side: BoardSide.left); + await game.ensureAdd(googleRollover); + expect( + googleRollover.children + .whereType() + .single, + isNotNull, + ); + }); + }); + + flameTester.test( + 'pin stops animating after animation completes', + (game) async { + final googleRollover = GoogleRollover(side: BoardSide.left); + await game.ensureAdd(googleRollover); + + final pinSpriteAnimationComponent = + googleRollover.firstChild()!; + + pinSpriteAnimationComponent.playing = true; + game.update( + pinSpriteAnimationComponent.animation!.totalDuration() + 0.1, + ); + + expect(pinSpriteAnimationComponent.playing, isFalse); + }, + ); + }); +} diff --git a/packages/pinball_components/test/src/components/google_word/cubit/google_word_cubit_test.dart b/packages/pinball_components/test/src/components/google_word/cubit/google_word_cubit_test.dart new file mode 100644 index 00000000..08acfae8 --- /dev/null +++ b/packages/pinball_components/test/src/components/google_word/cubit/google_word_cubit_test.dart @@ -0,0 +1,35 @@ +import 'package:bloc_test/bloc_test.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:pinball_components/pinball_components.dart'; + +void main() { + group( + 'GoogleWordCubit', + () { + blocTest( + 'onRolloverContacted emits first letter lit', + build: GoogleWordCubit.new, + act: (bloc) => bloc.onRolloverContacted(), + expect: () => [ + const GoogleWordState( + letterSpriteStates: { + 0: GoogleLetterSpriteState.lit, + 1: GoogleLetterSpriteState.dimmed, + 2: GoogleLetterSpriteState.dimmed, + 3: GoogleLetterSpriteState.dimmed, + 4: GoogleLetterSpriteState.dimmed, + 5: GoogleLetterSpriteState.dimmed, + }, + ), + ], + ); + + blocTest( + 'onBonusAwarded emits initial state', + build: GoogleWordCubit.new, + act: (bloc) => bloc.onBonusAwarded(), + expect: () => [GoogleWordState.initial()], + ); + }, + ); +} diff --git a/packages/pinball_components/test/src/components/google_word/cubit/google_word_state_test.dart b/packages/pinball_components/test/src/components/google_word/cubit/google_word_state_test.dart new file mode 100644 index 00000000..6195c785 --- /dev/null +++ b/packages/pinball_components/test/src/components/google_word/cubit/google_word_state_test.dart @@ -0,0 +1,58 @@ +// ignore_for_file: prefer_const_constructors + +import 'package:flutter_test/flutter_test.dart'; +import 'package:pinball_components/pinball_components.dart'; + +void main() { + group('GoogleWordState', () { + test('supports value equality', () { + expect( + GoogleWordState( + letterSpriteStates: const { + 0: GoogleLetterSpriteState.dimmed, + 1: GoogleLetterSpriteState.dimmed, + 2: GoogleLetterSpriteState.dimmed, + 3: GoogleLetterSpriteState.dimmed, + 4: GoogleLetterSpriteState.dimmed, + 5: GoogleLetterSpriteState.dimmed, + }, + ), + equals( + GoogleWordState( + letterSpriteStates: const { + 0: GoogleLetterSpriteState.dimmed, + 1: GoogleLetterSpriteState.dimmed, + 2: GoogleLetterSpriteState.dimmed, + 3: GoogleLetterSpriteState.dimmed, + 4: GoogleLetterSpriteState.dimmed, + 5: GoogleLetterSpriteState.dimmed, + }, + ), + ), + ); + }); + + group('constructor', () { + test('can be instantiated', () { + expect( + const GoogleWordState(letterSpriteStates: {}), + isNotNull, + ); + }); + + test('initial has all dimmed sprite states', () { + const initialState = GoogleWordState( + letterSpriteStates: { + 0: GoogleLetterSpriteState.dimmed, + 1: GoogleLetterSpriteState.dimmed, + 2: GoogleLetterSpriteState.dimmed, + 3: GoogleLetterSpriteState.dimmed, + 4: GoogleLetterSpriteState.dimmed, + 5: GoogleLetterSpriteState.dimmed, + }, + ); + expect(GoogleWordState.initial(), equals(initialState)); + }); + }); + }); +} diff --git a/test/game/components/google_word/google_word_test.dart b/packages/pinball_components/test/src/components/google_word/google_word_test.dart similarity index 65% rename from test/game/components/google_word/google_word_test.dart rename to packages/pinball_components/test/src/components/google_word/google_word_test.dart index c0258281..daee7d37 100644 --- a/test/game/components/google_word/google_word_test.dart +++ b/packages/pinball_components/test/src/components/google_word/google_word_test.dart @@ -4,8 +4,6 @@ import 'package:flame_bloc/flame_bloc.dart'; 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'; class _TestGame extends Forge2DGame { @@ -28,10 +26,10 @@ class _TestGame extends Forge2DGame { ]); } - Future pump(GoogleWord child, {GameBloc? gameBloc}) { - return ensureAdd( - FlameBlocProvider.value( - value: gameBloc ?? GameBloc(), + Future pump(GoogleWord child) async { + await ensureAdd( + FlameBlocProvider.value( + value: GoogleWordCubit(), children: [child], ), ); @@ -44,25 +42,21 @@ void main() { final flameTester = FlameTester(_TestGame.new); group('GoogleWord', () { + test('can be instantiated', () { + expect(GoogleWord(position: Vector2.zero()), isA()); + }); + flameTester.test( - 'loads the letters correctly', + 'loads letters correctly', (game) async { - const word = 'Google'; final googleWord = GoogleWord(position: Vector2.zero()); await game.pump(googleWord); - final letters = googleWord.children.whereType(); - expect(letters.length, equals(word.length)); + expect( + googleWord.children.whereType().length, + equals(6), + ); }, ); - - flameTester.test('adds a GoogleWordBonusBehavior', (game) async { - final googleWord = GoogleWord(position: Vector2.zero()); - await game.pump(googleWord); - expect( - googleWord.children.whereType().single, - isNotNull, - ); - }); }); } diff --git a/packages/pinball_components/test/src/components/skill_shot/cubit/skill_shot_state_test.dart b/packages/pinball_components/test/src/components/skill_shot/cubit/skill_shot_state_test.dart index ee6e3e0d..b5aca68c 100644 --- a/packages/pinball_components/test/src/components/skill_shot/cubit/skill_shot_state_test.dart +++ b/packages/pinball_components/test/src/components/skill_shot/cubit/skill_shot_state_test.dart @@ -31,7 +31,7 @@ void main() { ); }); - test('initial is idle with mouth closed', () { + test('initial is dimmed and not blinking', () { const initialState = SkillShotState( spriteState: SkillShotSpriteState.dimmed, isBlinking: false, @@ -45,13 +45,13 @@ void main() { 'copies correctly ' 'when no argument specified', () { - const chromeDinoState = SkillShotState( + const skillShotState = SkillShotState( spriteState: SkillShotSpriteState.lit, isBlinking: true, ); expect( - chromeDinoState.copyWith(), - equals(chromeDinoState), + skillShotState.copyWith(), + equals(skillShotState), ); }, ); @@ -60,7 +60,7 @@ void main() { 'copies correctly ' 'when all arguments specified', () { - const chromeDinoState = SkillShotState( + const skillShotState = SkillShotState( spriteState: SkillShotSpriteState.lit, isBlinking: true, ); @@ -68,10 +68,10 @@ void main() { spriteState: SkillShotSpriteState.dimmed, isBlinking: false, ); - expect(chromeDinoState, isNot(equals(otherSkillShotState))); + expect(skillShotState, isNot(equals(otherSkillShotState))); expect( - chromeDinoState.copyWith( + skillShotState.copyWith( spriteState: SkillShotSpriteState.dimmed, isBlinking: false, ), diff --git a/test/game/components/android_acres/android_acres_test.dart b/test/game/components/android_acres/android_acres_test.dart index 5c750818..14d3d69e 100644 --- a/test/game/components/android_acres/android_acres_test.dart +++ b/test/game/components/android_acres/android_acres_test.dart @@ -62,7 +62,7 @@ void main() { group('loads', () { flameTester.test( - 'an AndroidSpaceship', + 'an AndroidSpaceship', (game) async { await game.pump(AndroidAcres()); expect( diff --git a/test/game/components/google_gallery/behaviors/google_word_bonus_behavior_test.dart b/test/game/components/google_gallery/behaviors/google_word_bonus_behavior_test.dart new file mode 100644 index 00000000..3d8d2b39 --- /dev/null +++ b/test/game/components/google_gallery/behaviors/google_word_bonus_behavior_test.dart @@ -0,0 +1,120 @@ +// ignore_for_file: cascade_invocations + +import 'dart:async'; + +import 'package:bloc_test/bloc_test.dart'; +import 'package:flame_bloc/flame_bloc.dart'; +import 'package:flame_forge2d/flame_forge2d.dart'; +import 'package:flame_test/flame_test.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:pinball/game/components/google_gallery/behaviors/behaviors.dart'; +import 'package:pinball/game/game.dart'; +import 'package:pinball_components/pinball_components.dart'; + +class _TestGame extends Forge2DGame { + @override + Future onLoad() async { + images.prefix = ''; + await images.loadAll([ + 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, + ]); + } + + Future pump( + GoogleGallery child, { + required GameBloc gameBloc, + required GoogleWordCubit googleWordBloc, + }) async { + // Not needed once https://github.com/flame-engine/flame/issues/1607 + // is fixed + await onLoad(); + await ensureAdd( + FlameMultiBlocProvider( + providers: [ + FlameBlocProvider.value( + value: gameBloc, + ), + FlameBlocProvider.value( + value: googleWordBloc, + ), + ], + children: [child], + ), + ); + } +} + +class _MockGameBloc extends Mock implements GameBloc {} + +class _MockGoogleWordCubit extends Mock implements GoogleWordCubit {} + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + + group('GoogleWordBonusBehavior', () { + late GameBloc gameBloc; + + setUp(() { + gameBloc = _MockGameBloc(); + }); + + final flameTester = FlameTester(_TestGame.new); + + flameTester.testGameWidget( + 'adds GameBonus.googleWord to the game when all letters ' + 'in google word are activated and calls onBonusAwarded', + setUp: (game, tester) async { + final behavior = GoogleWordBonusBehavior(); + final parent = GoogleGallery.test(); + final googleWord = GoogleWord(position: Vector2.zero()); + final googleWordBloc = _MockGoogleWordCubit(); + final streamController = StreamController(); + + whenListen( + googleWordBloc, + streamController.stream, + initialState: GoogleWordState.initial(), + ); + + await parent.add(googleWord); + await game.pump( + parent, + gameBloc: gameBloc, + googleWordBloc: googleWordBloc, + ); + await parent.ensureAdd(behavior); + + streamController.add( + const GoogleWordState( + letterSpriteStates: { + 0: GoogleLetterSpriteState.lit, + 1: GoogleLetterSpriteState.lit, + 2: GoogleLetterSpriteState.lit, + 3: GoogleLetterSpriteState.lit, + 4: GoogleLetterSpriteState.lit, + 5: GoogleLetterSpriteState.lit, + }, + ), + ); + await tester.pump(); + + verify( + () => gameBloc.add(const BonusActivated(GameBonus.googleWord)), + ).called(1); + verify(googleWordBloc.onBonusAwarded).called(1); + }, + ); + }); +} diff --git a/test/game/components/google_gallery/google_gallery_test.dart b/test/game/components/google_gallery/google_gallery_test.dart new file mode 100644 index 00000000..9551285f --- /dev/null +++ b/test/game/components/google_gallery/google_gallery_test.dart @@ -0,0 +1,110 @@ +// ignore_for_file: cascade_invocations + +import 'package:flame_bloc/flame_bloc.dart'; +import 'package:flame_forge2d/flame_forge2d.dart'; +import 'package:flame_test/flame_test.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:pinball/game/behaviors/behaviors.dart'; +import 'package:pinball/game/components/google_gallery/behaviors/behaviors.dart'; +import 'package:pinball/game/game.dart'; +import 'package:pinball_components/pinball_components.dart'; + +class _TestGame extends Forge2DGame { + @override + Future onLoad() async { + images.prefix = ''; + await images.loadAll([ + 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.googleRollover.left.decal.keyName, + Assets.images.googleRollover.left.pin.keyName, + Assets.images.googleRollover.right.decal.keyName, + Assets.images.googleRollover.right.pin.keyName, + ]); + } + + Future pump(GoogleGallery child) async { + await ensureAdd( + FlameBlocProvider.value( + value: _MockGameBloc(), + children: [child], + ), + ); + } +} + +class _MockGameBloc extends Mock implements GameBloc {} + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + + final flameTester = FlameTester(_TestGame.new); + + group('GoogleGallery', () { + flameTester.test('loads correctly', (game) async { + final component = GoogleGallery(); + await game.pump(component); + expect(game.descendants(), contains(component)); + }); + + group('loads', () { + flameTester.test( + 'two GoogleRollovers', + (game) async { + await game.pump(GoogleGallery()); + expect( + game.descendants().whereType().length, + equals(2), + ); + }, + ); + + flameTester.test( + 'a GoogleWord', + (game) async { + await game.pump(GoogleGallery()); + expect( + game.descendants().whereType().length, + equals(1), + ); + }, + ); + }); + + group('adds', () { + flameTester.test( + 'ScoringContactBehavior to GoogleRollovers', + (game) async { + await game.pump(GoogleGallery()); + + game.descendants().whereType().forEach( + (rollover) => expect( + rollover.firstChild(), + isNotNull, + ), + ); + }, + ); + + flameTester.test('a GoogleWordBonusBehavior', (game) async { + final component = GoogleGallery(); + await game.pump(component); + expect( + component.descendants().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 deleted file mode 100644 index e23c1fd2..00000000 --- a/test/game/components/google_word/behaviors/google_word_bonus_behavior_test.dart +++ /dev/null @@ -1,94 +0,0 @@ -// ignore_for_file: cascade_invocations - -import 'package:flame_bloc/flame_bloc.dart'; -import 'package:flame_forge2d/flame_forge2d.dart'; -import 'package:flame_test/flame_test.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:mocktail/mocktail.dart'; -import 'package:pinball/game/components/google_word/behaviors/behaviors.dart'; -import 'package:pinball/game/game.dart'; -import 'package:pinball_audio/pinball_audio.dart'; -import 'package:pinball_components/pinball_components.dart'; -import 'package:pinball_flame/pinball_flame.dart'; - -class _TestGame extends Forge2DGame { - @override - Future onLoad() async { - images.prefix = ''; - await images.loadAll([ - 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, - ]); - } - - Future pump(GoogleWord child, {required GameBloc gameBloc}) async { - await ensureAdd( - FlameBlocProvider.value( - value: gameBloc, - children: [ - FlameProvider.value( - _MockPinballAudioPlayer(), - children: [child], - ) - ], - ), - ); - } -} - -class _MockGameBloc extends Mock implements GameBloc {} - -class _MockPinballAudioPlayer extends Mock implements PinballAudioPlayer {} - -void main() { - TestWidgetsFlutterBinding.ensureInitialized(); - - group('GoogleWordBonusBehaviors', () { - late GameBloc gameBloc; - - setUp(() { - gameBloc = _MockGameBloc(); - }); - - final flameTester = FlameTester(_TestGame.new); - - flameTester.testGameWidget( - 'adds GameBonus.googleWord to the game when all letters are activated', - setUp: (game, tester) async { - await game.onLoad(); - final behavior = GoogleWordBonusBehavior(); - final parent = GoogleWord.test(); - final letters = [ - GoogleLetter(0), - GoogleLetter(1), - GoogleLetter(2), - GoogleLetter(3), - GoogleLetter(4), - GoogleLetter(5), - ]; - await parent.addAll(letters); - await game.pump(parent, gameBloc: gameBloc); - await parent.ensureAdd(behavior); - - for (final letter in letters) { - letter.bloc.onBallContacted(); - } - await tester.pump(); - - verify( - () => gameBloc.add(const BonusActivated(GameBonus.googleWord)), - ).called(1); - }, - ); - }); -} diff --git a/test/game/pinball_game_test.dart b/test/game/pinball_game_test.dart index 19760f64..52e8c97c 100644 --- a/test/game/pinball_game_test.dart +++ b/test/game/pinball_game_test.dart @@ -184,11 +184,11 @@ void main() { ); flameTester.test( - 'one GoogleWord', + 'one GoogleGallery', (game) async { await game.ready(); expect( - game.descendants().whereType().length, + game.descendants().whereType().length, equals(1), ); }, diff --git a/test/game/view/widgets/play_button_overlay_test.dart b/test/game/view/widgets/play_button_overlay_test.dart index f10c5f5b..8980c72d 100644 --- a/test/game/view/widgets/play_button_overlay_test.dart +++ b/test/game/view/widgets/play_button_overlay_test.dart @@ -29,7 +29,7 @@ void main() { expect(find.text('Play'), findsOneWidget); }); - testWidgets('adds PlayTapped event to StartGameBloc when taped', + testWidgets('adds PlayTapped event to StartGameBloc when tapped', (tester) async { await tester.pumpApp( const PlayButtonOverlay(),