From 155e316ba1cba5e08208626cada33adfe8b35fda Mon Sep 17 00:00:00 2001 From: Allison Ryan <77211884+allisonryan0002@users.noreply.github.com> Date: Wed, 4 May 2022 20:43:48 -0500 Subject: [PATCH] feat: implemented `SkillShot` (#337) * feat: add skill shot * fix: unused import * refactor: switched method * style: parameter order --- lib/game/game_assets.dart | 4 + lib/game/pinball_game.dart | 6 + .../assets/images/skill_shot/decal.png | Bin 0 -> 96796 bytes .../assets/images/skill_shot/dimmed.png | Bin 0 -> 9522 bytes .../assets/images/skill_shot/lit.png | Bin 0 -> 10179 bytes .../assets/images/skill_shot/pin.png | Bin 0 -> 2333 bytes .../lib/gen/assets.gen.dart | 21 +++ .../chrome_dino/cubit/chrome_dino_cubit.dart | 2 +- .../chrome_dino/cubit/chrome_dino_state.dart | 2 +- .../lib/src/components/components.dart | 1 + .../skill_shot/behaviors/behaviors.dart | 2 + .../skill_shot_ball_contact_behavior.dart | 16 ++ .../skill_shot_blinking_behavior.dart | 44 +++++ .../skill_shot/cubit/skill_shot_cubit.dart | 39 ++++ .../skill_shot/cubit/skill_shot_state.dart | 37 ++++ .../src/components/skill_shot/skill_shot.dart | 169 ++++++++++++++++++ packages/pinball_components/pubspec.yaml | 1 + .../chrome_dino_swiveling_behavior_test.dart | 10 +- .../chrome_dino/chrome_dino_test.dart | 2 +- .../cubit/chrome_dino_cubit_test.dart | 2 +- .../cubit/chrome_dino_state_test.dart | 2 +- ...skill_shot_ball_contact_behavior_test.dart | 62 +++++++ .../skill_shot_blinking_behavior_test.dart | 125 +++++++++++++ .../cubit/skill_shot_cubit_test.dart | 66 +++++++ .../cubit/skill_shot_state_test.dart | 84 +++++++++ .../skill_shot/skill_shot_test.dart | 99 ++++++++++ test/game/pinball_game_test.dart | 32 +++- 27 files changed, 811 insertions(+), 17 deletions(-) create mode 100644 packages/pinball_components/assets/images/skill_shot/decal.png create mode 100644 packages/pinball_components/assets/images/skill_shot/dimmed.png create mode 100644 packages/pinball_components/assets/images/skill_shot/lit.png create mode 100644 packages/pinball_components/assets/images/skill_shot/pin.png create mode 100644 packages/pinball_components/lib/src/components/skill_shot/behaviors/behaviors.dart create mode 100644 packages/pinball_components/lib/src/components/skill_shot/behaviors/skill_shot_ball_contact_behavior.dart create mode 100644 packages/pinball_components/lib/src/components/skill_shot/behaviors/skill_shot_blinking_behavior.dart create mode 100644 packages/pinball_components/lib/src/components/skill_shot/cubit/skill_shot_cubit.dart create mode 100644 packages/pinball_components/lib/src/components/skill_shot/cubit/skill_shot_state.dart create mode 100644 packages/pinball_components/lib/src/components/skill_shot/skill_shot.dart create mode 100644 packages/pinball_components/test/src/components/skill_shot/behaviors/skill_shot_ball_contact_behavior_test.dart create mode 100644 packages/pinball_components/test/src/components/skill_shot/behaviors/skill_shot_blinking_behavior_test.dart create mode 100644 packages/pinball_components/test/src/components/skill_shot/cubit/skill_shot_cubit_test.dart create mode 100644 packages/pinball_components/test/src/components/skill_shot/cubit/skill_shot_state_test.dart create mode 100644 packages/pinball_components/test/src/components/skill_shot/skill_shot_test.dart diff --git a/lib/game/game_assets.dart b/lib/game/game_assets.dart index d066ce0d..ac324417 100644 --- a/lib/game/game_assets.dart +++ b/lib/game/game_assets.dart @@ -131,6 +131,10 @@ extension PinballGameAssetsX on PinballGame { images.load(components.Assets.images.flapper.backSupport.keyName), images.load(components.Assets.images.flapper.frontSupport.keyName), images.load(components.Assets.images.flapper.flap.keyName), + images.load(components.Assets.images.skillShot.decal.keyName), + images.load(components.Assets.images.skillShot.pin.keyName), + images.load(components.Assets.images.skillShot.lit.keyName), + images.load(components.Assets.images.skillShot.dimmed.keyName), images.load(dashTheme.leaderboardIcon.keyName), images.load(sparkyTheme.leaderboardIcon.keyName), images.load(androidTheme.leaderboardIcon.keyName), diff --git a/lib/game/pinball_game.dart b/lib/game/pinball_game.dart index aa963a53..bdf23759 100644 --- a/lib/game/pinball_game.dart +++ b/lib/game/pinball_game.dart @@ -7,6 +7,7 @@ import 'package:flame/input.dart'; import 'package:flame_bloc/flame_bloc.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; +import 'package:pinball/game/behaviors/behaviors.dart'; import 'package:pinball/game/game.dart'; import 'package:pinball/l10n/l10n.dart'; import 'package:pinball_audio/pinball_audio.dart'; @@ -57,6 +58,11 @@ class PinballGame extends PinballForge2DGame GoogleWord(position: Vector2(-4.25, 1.8)), Multipliers(), Multiballs(), + SkillShot( + children: [ + ScoringContactBehavior(points: Points.oneMillion), + ], + ), ]; final characterAreas = [ AndroidAcres(), diff --git a/packages/pinball_components/assets/images/skill_shot/decal.png b/packages/pinball_components/assets/images/skill_shot/decal.png new file mode 100644 index 0000000000000000000000000000000000000000..120d70aaae161c3639c0476855b3ce53db87b706 GIT binary patch literal 96796 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 literal 0 HcmV?d00001 diff --git a/packages/pinball_components/assets/images/skill_shot/pin.png b/packages/pinball_components/assets/images/skill_shot/pin.png new file mode 100644 index 0000000000000000000000000000000000000000..5b64e1ab10b92860db22cc7c89a345ab4f188810 GIT binary patch literal 2333 zcmV+&3F7vNP){D0f4^{aEMrIwc2kat5|DwQArIOy9t)gQpPrfd)ysk_*X#8+%jFo?*EhB& zdA=C(LPVT<`xo#0>D^zy`{5f`-}o&6$P0%{nJ<+}u(G_oXeje31HndB3vh=~?CkFihxY=T zecWg^-I+)ARH5SBj$0@4x^4q4&NYG=GU)nxB8Iq2BxDrKNkIy8puAL}aeh=`_aUkuEJR zeFp&J5XZ%Fe6`hTroCRzcDvm>0AK?-N>LQOj)>7&a2UtQ)!BMI9SnAgot;6b5w6vy zZq{nGXmxFUG#m~?i-BA1&c}cJ^wYn!+N}=`OV4p|T&>k^R?|w<>pgm$W!e3}Vla(n z^JbF7w6e0)FYYip~IymKpoM$&e> za}@xfyVhM))gaL(=DEw4FJCLH#o^=q)5D60)mFRxCV;|vcYQ%s2Z2VKow>QWEE{WY zVDx)4RKS=gCv7 zr0I?6>FLtu=H_UBw14+BIED{;t-MvMRZG2IZ$BH4Lq*%n z&em_oaV*_#ciR@l;%Q;UN+rFKrfF$wb89%svIn6?W@ct@B}pQ^jg2km+;W(LVA5>0 zuM;73*SgF8h-e>$lS-Oi9}EV3@BaOsbFLexQ%SScx*;Oa-|9aM&Qrpf&RplU$z-Cv zUhn_%^eCJuSJKPd+kNcy9<8hDUYHS@uGbr{_4|EYTU)yuDB2*#%r_g2dX{B&cW39D zqj^e4N;Roe$}J-Td6snnAP=onVw$>t|A8G01`k4uAx@HOQ&Usr{#Ji99_`;dD%#J$ zAwZlYaV?HZYHi*REe2s}3rl(b@h~s)$x>jRa=B8uHXIJ+?%liFMNurD+FKDZj^ns2 zBI=ym37y5nNHa~#VxlPX-fsuysg%o=D?2+o)a&(ns=9j?Tse+Q5h8i-{o_C*C`RgW zDPlyLsOm8Axu{$zccREZkr%z=^7JTN!pu?>xms(p!0@0kW=cfJJDaQOIP5P$shlKJ zaa>aCitXc4h>py02@)IUy*lT|fgT_hNf8n9JkM3b#v}xcqEeJH5!j;GISUREF(E{; z)_U(xlMPKk)Ewd%bO4J(P5DyTwXZ5}#c zB4BL981KDWTV!X#A!3z?5CFV-%|bmFm7-Ju(H_7BdJYpnFwQ!4?)WG@6IK>ZnTc#+ zo%cQul>`wf11J=EK2Z$|DMAUp5)rwBu#V3PD~Xtth`>2#H4qK}B4R120zA>iAmL`_su4rphj|W-F;zlD z>#PfgLrjdY0Z_Hpg~|^wa|)p3ymNX&@g0U^V@!pa!82L^!nG*m2=j98owcF;7>S4w0mh?o@1%nwI@Ie- zsZ@%Q2y9_<4a_-asv2X+dsXjzXv?!jp8w#S8?COae0kDzl^BsH4+f7*%#t!QI_IA%edyA&96*Qmo{6v+RXq# zSS4aoRj@9&>d2TVjZB29aAJ>qZqG4GDk5a9Ra+FHaKcOp5rVVUzO1k!5vIa~UeDLS zMT7tm_V*w6opb${0>>g%BtrGxKYV3Adyz-@g&P$P#M3{^*Rc1!7UVXUI zPr9qCfBEX~U;XfKVd3+@Bii%BiAXBUaIj|$&K=FN?BD-=@Zdk^xDYvaSSgB1sfa-Z z_$f;N!od#1u?Sa;2*8iKp;z)rPzanc#*~Q=+`*0`gA1_e#}VBm%yKX`dq252aEOLP z5**VvP3$`xYN2C7(=1` const $AssetsImagesPlungerGen(); $AssetsImagesScoreGen get score => const $AssetsImagesScoreGen(); $AssetsImagesSignpostGen get signpost => const $AssetsImagesSignpostGen(); + $AssetsImagesSkillShotGen get skillShot => const $AssetsImagesSkillShotGen(); $AssetsImagesSlingshotGen get slingshot => const $AssetsImagesSlingshotGen(); $AssetsImagesSparkyGen get sparky => const $AssetsImagesSparkyGen(); } @@ -272,6 +273,26 @@ class $AssetsImagesSignpostGen { const AssetGenImage('assets/images/signpost/inactive.png'); } +class $AssetsImagesSkillShotGen { + const $AssetsImagesSkillShotGen(); + + /// File path: assets/images/skill_shot/decal.png + AssetGenImage get decal => + const AssetGenImage('assets/images/skill_shot/decal.png'); + + /// File path: assets/images/skill_shot/dimmed.png + AssetGenImage get dimmed => + const AssetGenImage('assets/images/skill_shot/dimmed.png'); + + /// File path: assets/images/skill_shot/lit.png + AssetGenImage get lit => + const AssetGenImage('assets/images/skill_shot/lit.png'); + + /// File path: assets/images/skill_shot/pin.png + AssetGenImage get pin => + const AssetGenImage('assets/images/skill_shot/pin.png'); +} + class $AssetsImagesSlingshotGen { const $AssetsImagesSlingshotGen(); diff --git a/packages/pinball_components/lib/src/components/chrome_dino/cubit/chrome_dino_cubit.dart b/packages/pinball_components/lib/src/components/chrome_dino/cubit/chrome_dino_cubit.dart index 649e804b..06e34199 100644 --- a/packages/pinball_components/lib/src/components/chrome_dino/cubit/chrome_dino_cubit.dart +++ b/packages/pinball_components/lib/src/components/chrome_dino/cubit/chrome_dino_cubit.dart @@ -7,7 +7,7 @@ import 'package:pinball_components/pinball_components.dart'; part 'chrome_dino_state.dart'; class ChromeDinoCubit extends Cubit { - ChromeDinoCubit() : super(const ChromeDinoState.inital()); + ChromeDinoCubit() : super(const ChromeDinoState.initial()); void onOpenMouth() { emit(state.copyWith(isMouthOpen: true)); diff --git a/packages/pinball_components/lib/src/components/chrome_dino/cubit/chrome_dino_state.dart b/packages/pinball_components/lib/src/components/chrome_dino/cubit/chrome_dino_state.dart index a5d3b183..8ed6fa8c 100644 --- a/packages/pinball_components/lib/src/components/chrome_dino/cubit/chrome_dino_state.dart +++ b/packages/pinball_components/lib/src/components/chrome_dino/cubit/chrome_dino_state.dart @@ -14,7 +14,7 @@ class ChromeDinoState extends Equatable { this.ball, }); - const ChromeDinoState.inital() + const ChromeDinoState.initial() : this( status: ChromeDinoStatus.idle, isMouthOpen: false, diff --git a/packages/pinball_components/lib/src/components/components.dart b/packages/pinball_components/lib/src/components/components.dart index 5eef3538..db2f7d38 100644 --- a/packages/pinball_components/lib/src/components/components.dart +++ b/packages/pinball_components/lib/src/components/components.dart @@ -29,6 +29,7 @@ export 'rocket.dart'; export 'score_component.dart'; export 'shapes/shapes.dart'; export 'signpost/signpost.dart'; +export 'skill_shot/skill_shot.dart'; export 'slingshot.dart'; export 'spaceship_rail.dart'; export 'spaceship_ramp/spaceship_ramp.dart'; diff --git a/packages/pinball_components/lib/src/components/skill_shot/behaviors/behaviors.dart b/packages/pinball_components/lib/src/components/skill_shot/behaviors/behaviors.dart new file mode 100644 index 00000000..03aa31bd --- /dev/null +++ b/packages/pinball_components/lib/src/components/skill_shot/behaviors/behaviors.dart @@ -0,0 +1,2 @@ +export 'skill_shot_ball_contact_behavior.dart'; +export 'skill_shot_blinking_behavior.dart'; diff --git a/packages/pinball_components/lib/src/components/skill_shot/behaviors/skill_shot_ball_contact_behavior.dart b/packages/pinball_components/lib/src/components/skill_shot/behaviors/skill_shot_ball_contact_behavior.dart new file mode 100644 index 00000000..62e4185f --- /dev/null +++ b/packages/pinball_components/lib/src/components/skill_shot/behaviors/skill_shot_ball_contact_behavior.dart @@ -0,0 +1,16 @@ +// ignore_for_file: public_member_api_docs + +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 SkillShotBallContactBehavior extends ContactBehavior { + @override + void beginContact(Object other, Contact contact) { + super.beginContact(other, contact); + if (other is! Ball) return; + parent.bloc.onBallContacted(); + parent.firstChild()?.playing = true; + } +} diff --git a/packages/pinball_components/lib/src/components/skill_shot/behaviors/skill_shot_blinking_behavior.dart b/packages/pinball_components/lib/src/components/skill_shot/behaviors/skill_shot_blinking_behavior.dart new file mode 100644 index 00000000..ea62fc25 --- /dev/null +++ b/packages/pinball_components/lib/src/components/skill_shot/behaviors/skill_shot_blinking_behavior.dart @@ -0,0 +1,44 @@ +import 'package:flame/components.dart'; +import 'package:pinball_components/pinball_components.dart'; +import 'package:pinball_flame/pinball_flame.dart'; + +/// {@template skill_shot_blinking_behavior} +/// Makes a [SkillShot] blink between [SkillShotSpriteState.lit] and +/// [SkillShotSpriteState.dimmed] for a set amount of blinks. +/// {@endtemplate} +class SkillShotBlinkingBehavior extends TimerComponent + with ParentIsA { + /// {@macro skill_shot_blinking_behavior} + SkillShotBlinkingBehavior() : super(period: 0.15); + + final _maxBlinks = 4; + int _blinks = 0; + + void _onNewState(SkillShotState state) { + if (state.isBlinking) { + timer + ..reset() + ..start(); + } + } + + @override + Future onLoad() async { + await super.onLoad(); + timer.stop(); + parent.bloc.stream.listen(_onNewState); + } + + @override + void onTick() { + super.onTick(); + if (_blinks != _maxBlinks * 2) { + parent.bloc.switched(); + _blinks++; + } else { + _blinks = 0; + timer.stop(); + parent.bloc.onBlinkingFinished(); + } + } +} diff --git a/packages/pinball_components/lib/src/components/skill_shot/cubit/skill_shot_cubit.dart b/packages/pinball_components/lib/src/components/skill_shot/cubit/skill_shot_cubit.dart new file mode 100644 index 00000000..b9491385 --- /dev/null +++ b/packages/pinball_components/lib/src/components/skill_shot/cubit/skill_shot_cubit.dart @@ -0,0 +1,39 @@ +// ignore_for_file: public_member_api_docs + +import 'package:bloc/bloc.dart'; +import 'package:equatable/equatable.dart'; + +part 'skill_shot_state.dart'; + +class SkillShotCubit extends Cubit { + SkillShotCubit() : super(const SkillShotState.initial()); + + void onBallContacted() { + emit( + const SkillShotState( + spriteState: SkillShotSpriteState.lit, + isBlinking: true, + ), + ); + } + + void switched() { + switch (state.spriteState) { + case SkillShotSpriteState.lit: + emit(state.copyWith(spriteState: SkillShotSpriteState.dimmed)); + break; + case SkillShotSpriteState.dimmed: + emit(state.copyWith(spriteState: SkillShotSpriteState.lit)); + break; + } + } + + void onBlinkingFinished() { + emit( + const SkillShotState( + spriteState: SkillShotSpriteState.dimmed, + isBlinking: false, + ), + ); + } +} diff --git a/packages/pinball_components/lib/src/components/skill_shot/cubit/skill_shot_state.dart b/packages/pinball_components/lib/src/components/skill_shot/cubit/skill_shot_state.dart new file mode 100644 index 00000000..1e040db6 --- /dev/null +++ b/packages/pinball_components/lib/src/components/skill_shot/cubit/skill_shot_state.dart @@ -0,0 +1,37 @@ +// ignore_for_file: public_member_api_docs + +part of 'skill_shot_cubit.dart'; + +enum SkillShotSpriteState { + lit, + dimmed, +} + +class SkillShotState extends Equatable { + const SkillShotState({ + required this.spriteState, + required this.isBlinking, + }); + + const SkillShotState.initial() + : this( + spriteState: SkillShotSpriteState.dimmed, + isBlinking: false, + ); + + final SkillShotSpriteState spriteState; + + final bool isBlinking; + + SkillShotState copyWith({ + SkillShotSpriteState? spriteState, + bool? isBlinking, + }) => + SkillShotState( + spriteState: spriteState ?? this.spriteState, + isBlinking: isBlinking ?? this.isBlinking, + ); + + @override + List get props => [spriteState, isBlinking]; +} diff --git a/packages/pinball_components/lib/src/components/skill_shot/skill_shot.dart b/packages/pinball_components/lib/src/components/skill_shot/skill_shot.dart new file mode 100644 index 00000000..3bf10a7e --- /dev/null +++ b/packages/pinball_components/lib/src/components/skill_shot/skill_shot.dart @@ -0,0 +1,169 @@ +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/skill_shot/behaviors/behaviors.dart'; +import 'package:pinball_flame/pinball_flame.dart'; + +export 'cubit/skill_shot_cubit.dart'; + +/// {@template skill_shot} +/// Rollover awarding extra points. +/// {@endtemplate} +class SkillShot extends BodyComponent with ZIndex { + /// {@macro skill_shot} + SkillShot({Iterable? children}) + : this._( + children: children, + bloc: SkillShotCubit(), + ); + + SkillShot._({ + Iterable? children, + required this.bloc, + }) : super( + renderBody: false, + children: [ + SkillShotBallContactBehavior(), + SkillShotBlinkingBehavior(), + _RolloverDecalSpriteComponent(), + PinSpriteAnimationComponent(), + _TextDecalSpriteGroupComponent(state: bloc.state.spriteState), + ...?children, + ], + ) { + zIndex = ZIndexes.decal; + } + + /// Creates a [SkillShot] without any children. + /// + /// This can be used for testing [SkillShot]'s behaviors in isolation. + // TODO(alestiago): Refactor injecting bloc once the following is merged: + // https://github.com/flame-engine/flame/pull/1538 + @visibleForTesting + SkillShot.test({ + required this.bloc, + }); + + // TODO(alestiago): Consider refactoring once the following is merged: + // https://github.com/flame-engine/flame/pull/1538 + // ignore: public_member_api_docs + final SkillShotCubit bloc; + + @override + void onRemove() { + bloc.close(); + super.onRemove(); + } + + @override + Body createBody() { + final shape = PolygonShape() + ..setAsBox( + 0.1, + 3.7, + Vector2(-31.9, 9.1), + 0.11, + ); + final fixtureDef = FixtureDef(shape, isSensor: true); + return world.createBody(BodyDef())..createFixture(fixtureDef); + } +} + +class _RolloverDecalSpriteComponent extends SpriteComponent with HasGameRef { + _RolloverDecalSpriteComponent() + : super( + anchor: Anchor.center, + position: Vector2(-31.9, 9.1), + angle: 0.11, + ); + + @override + Future onLoad() async { + await super.onLoad(); + + final sprite = Sprite( + gameRef.images.fromCache( + Assets.images.skillShot.decal.keyName, + ), + ); + this.sprite = sprite; + size = sprite.originalSize / 20; + } +} + +/// {@template pin_sprite_animation_component} +/// Animation for pin in [SkillShot] rollover. +/// {@endtemplate} +@visibleForTesting +class PinSpriteAnimationComponent extends SpriteAnimationComponent + with HasGameRef { + /// {@macro pin_sprite_animation_component} + PinSpriteAnimationComponent() + : super( + anchor: Anchor.center, + position: Vector2(-31.9, 9.1), + angle: 0, + playing: false, + ); + + @override + Future onLoad() async { + await super.onLoad(); + + final spriteSheet = gameRef.images.fromCache( + Assets.images.skillShot.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; + }; + } +} + +class _TextDecalSpriteGroupComponent + extends SpriteGroupComponent + with HasGameRef, ParentIsA { + _TextDecalSpriteGroupComponent({ + required SkillShotSpriteState state, + }) : super( + anchor: Anchor.center, + position: Vector2(-35.55, 3.59), + current: state, + ); + + @override + Future onLoad() async { + await super.onLoad(); + parent.bloc.stream.listen((state) => current = state.spriteState); + + final sprites = { + SkillShotSpriteState.lit: Sprite( + gameRef.images.fromCache(Assets.images.skillShot.lit.keyName), + ), + SkillShotSpriteState.dimmed: Sprite( + gameRef.images.fromCache(Assets.images.skillShot.dimmed.keyName), + ), + }; + this.sprites = sprites; + size = sprites[current]!.originalSize / 10; + } +} diff --git a/packages/pinball_components/pubspec.yaml b/packages/pinball_components/pubspec.yaml index bee6fd02..4f66c220 100644 --- a/packages/pinball_components/pubspec.yaml +++ b/packages/pinball_components/pubspec.yaml @@ -89,6 +89,7 @@ flutter: - assets/images/score/ - assets/images/backbox/ - assets/images/flapper/ + - assets/images/skill_shot/ flutter_gen: line_length: 80 diff --git a/packages/pinball_components/test/src/components/chrome_dino/behaviors/chrome_dino_swiveling_behavior_test.dart b/packages/pinball_components/test/src/components/chrome_dino/behaviors/chrome_dino_swiveling_behavior_test.dart index 9b6a05b6..4b34940c 100644 --- a/packages/pinball_components/test/src/components/chrome_dino/behaviors/chrome_dino_swiveling_behavior_test.dart +++ b/packages/pinball_components/test/src/components/chrome_dino/behaviors/chrome_dino_swiveling_behavior_test.dart @@ -36,7 +36,7 @@ void main() { whenListen( bloc, const Stream.empty(), - initialState: const ChromeDinoState.inital(), + initialState: const ChromeDinoState.initial(), ); final chromeDino = ChromeDino.test(bloc: bloc); @@ -58,7 +58,7 @@ void main() { whenListen( bloc, const Stream.empty(), - initialState: const ChromeDinoState.inital(), + initialState: const ChromeDinoState.initial(), ); final chromeDino = ChromeDino.test(bloc: bloc); @@ -91,7 +91,7 @@ void main() { bloc, const Stream.empty(), initialState: - const ChromeDinoState.inital().copyWith(isMouthOpen: true), + const ChromeDinoState.initial().copyWith(isMouthOpen: true), ); final chromeDino = ChromeDino.test(bloc: bloc); @@ -120,7 +120,7 @@ void main() { bloc, const Stream.empty(), initialState: - const ChromeDinoState.inital().copyWith(isMouthOpen: false), + const ChromeDinoState.initial().copyWith(isMouthOpen: false), ); final chromeDino = ChromeDino.test(bloc: bloc); @@ -148,7 +148,7 @@ void main() { bloc, const Stream.empty(), initialState: - const ChromeDinoState.inital().copyWith(isMouthOpen: false), + const ChromeDinoState.initial().copyWith(isMouthOpen: false), ); final chromeDino = ChromeDino.test(bloc: bloc); diff --git a/packages/pinball_components/test/src/components/chrome_dino/chrome_dino_test.dart b/packages/pinball_components/test/src/components/chrome_dino/chrome_dino_test.dart index 4c1802ef..d6366092 100644 --- a/packages/pinball_components/test/src/components/chrome_dino/chrome_dino_test.dart +++ b/packages/pinball_components/test/src/components/chrome_dino/chrome_dino_test.dart @@ -79,7 +79,7 @@ void main() { whenListen( bloc, const Stream.empty(), - initialState: const ChromeDinoState.inital(), + initialState: const ChromeDinoState.initial(), ); when(bloc.close).thenAnswer((_) async {}); final chromeDino = ChromeDino.test(bloc: bloc); diff --git a/packages/pinball_components/test/src/components/chrome_dino/cubit/chrome_dino_cubit_test.dart b/packages/pinball_components/test/src/components/chrome_dino/cubit/chrome_dino_cubit_test.dart index 79375a6e..80c01983 100644 --- a/packages/pinball_components/test/src/components/chrome_dino/cubit/chrome_dino_cubit_test.dart +++ b/packages/pinball_components/test/src/components/chrome_dino/cubit/chrome_dino_cubit_test.dart @@ -57,7 +57,7 @@ void main() { blocTest( 'onChomp emits nothing when the ball is already in the mouth', build: ChromeDinoCubit.new, - seed: () => const ChromeDinoState.inital().copyWith(ball: ball), + seed: () => const ChromeDinoState.initial().copyWith(ball: ball), act: (bloc) => bloc.onChomp(ball), expect: () => [], ); diff --git a/packages/pinball_components/test/src/components/chrome_dino/cubit/chrome_dino_state_test.dart b/packages/pinball_components/test/src/components/chrome_dino/cubit/chrome_dino_state_test.dart index 442d544b..0d7f9c83 100644 --- a/packages/pinball_components/test/src/components/chrome_dino/cubit/chrome_dino_state_test.dart +++ b/packages/pinball_components/test/src/components/chrome_dino/cubit/chrome_dino_state_test.dart @@ -36,7 +36,7 @@ void main() { status: ChromeDinoStatus.idle, isMouthOpen: false, ); - expect(ChromeDinoState.inital(), equals(initialState)); + expect(ChromeDinoState.initial(), equals(initialState)); }); }); diff --git a/packages/pinball_components/test/src/components/skill_shot/behaviors/skill_shot_ball_contact_behavior_test.dart b/packages/pinball_components/test/src/components/skill_shot/behaviors/skill_shot_ball_contact_behavior_test.dart new file mode 100644 index 00000000..48a151a3 --- /dev/null +++ b/packages/pinball_components/test/src/components/skill_shot/behaviors/skill_shot_ball_contact_behavior_test.dart @@ -0,0 +1,62 @@ +// 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/skill_shot/behaviors/behaviors.dart'; + +import '../../../../helpers/helpers.dart'; + +class _MockBall extends Mock implements Ball {} + +class _MockContact extends Mock implements Contact {} + +class _MockSkillShotCubit extends Mock implements SkillShotCubit {} + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + final flameTester = FlameTester(TestGame.new); + + group( + 'SkillShotBallContactBehavior', + () { + test('can be instantiated', () { + expect( + SkillShotBallContactBehavior(), + isA(), + ); + }); + + flameTester.testGameWidget( + 'beginContact animates pin and calls onBallContacted ' + 'when contacts with a ball', + setUp: (game, tester) async { + await game.images.load(Assets.images.skillShot.pin.keyName); + final behavior = SkillShotBallContactBehavior(); + final bloc = _MockSkillShotCubit(); + whenListen( + bloc, + const Stream.empty(), + initialState: const SkillShotState.initial(), + ); + + final skillShot = SkillShot.test(bloc: bloc); + await skillShot.addAll([behavior, PinSpriteAnimationComponent()]); + await game.ensureAdd(skillShot); + + behavior.beginContact(_MockBall(), _MockContact()); + await tester.pump(); + + expect( + skillShot.firstChild()!.playing, + isTrue, + ); + verify(skillShot.bloc.onBallContacted).called(1); + }, + ); + }, + ); +} diff --git a/packages/pinball_components/test/src/components/skill_shot/behaviors/skill_shot_blinking_behavior_test.dart b/packages/pinball_components/test/src/components/skill_shot/behaviors/skill_shot_blinking_behavior_test.dart new file mode 100644 index 00000000..e2d00f61 --- /dev/null +++ b/packages/pinball_components/test/src/components/skill_shot/behaviors/skill_shot_blinking_behavior_test.dart @@ -0,0 +1,125 @@ +// ignore_for_file: cascade_invocations + +import 'dart:async'; + +import 'package:bloc_test/bloc_test.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/skill_shot/behaviors/behaviors.dart'; + +import '../../../../helpers/helpers.dart'; + +class _MockSkillShotCubit extends Mock implements SkillShotCubit {} + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + final flameTester = FlameTester(TestGame.new); + + group( + 'SkillShotBlinkingBehavior', + () { + flameTester.testGameWidget( + 'calls switched after 0.15 seconds when isBlinking and lit', + setUp: (game, tester) async { + final behavior = SkillShotBlinkingBehavior(); + final bloc = _MockSkillShotCubit(); + final streamController = StreamController(); + whenListen( + bloc, + streamController.stream, + initialState: const SkillShotState.initial(), + ); + + final skillShot = SkillShot.test(bloc: bloc); + await skillShot.add(behavior); + await game.ensureAdd(skillShot); + + streamController.add( + const SkillShotState( + spriteState: SkillShotSpriteState.lit, + isBlinking: true, + ), + ); + await tester.pump(); + game.update(0.15); + + await streamController.close(); + verify(bloc.switched).called(1); + }, + ); + + flameTester.testGameWidget( + 'calls switched after 0.15 seconds when isBlinking and dimmed', + setUp: (game, tester) async { + final behavior = SkillShotBlinkingBehavior(); + final bloc = _MockSkillShotCubit(); + final streamController = StreamController(); + whenListen( + bloc, + streamController.stream, + initialState: const SkillShotState.initial(), + ); + + final skillShot = SkillShot.test(bloc: bloc); + await skillShot.add(behavior); + await game.ensureAdd(skillShot); + + streamController.add( + const SkillShotState( + spriteState: SkillShotSpriteState.dimmed, + isBlinking: true, + ), + ); + await tester.pump(); + game.update(0.15); + + await streamController.close(); + verify(bloc.switched).called(1); + }, + ); + + flameTester.testGameWidget( + 'calls onBlinkingFinished after all blinks complete', + setUp: (game, tester) async { + final behavior = SkillShotBlinkingBehavior(); + final bloc = _MockSkillShotCubit(); + final streamController = StreamController(); + whenListen( + bloc, + streamController.stream, + initialState: const SkillShotState.initial(), + ); + + final skillShot = SkillShot.test(bloc: bloc); + await skillShot.add(behavior); + await game.ensureAdd(skillShot); + + for (var i = 0; i <= 8; i++) { + if (i.isEven) { + streamController.add( + const SkillShotState( + spriteState: SkillShotSpriteState.lit, + isBlinking: true, + ), + ); + } else { + streamController.add( + const SkillShotState( + spriteState: SkillShotSpriteState.dimmed, + isBlinking: true, + ), + ); + } + await tester.pump(); + game.update(0.15); + } + + await streamController.close(); + verify(bloc.onBlinkingFinished).called(1); + }, + ); + }, + ); +} diff --git a/packages/pinball_components/test/src/components/skill_shot/cubit/skill_shot_cubit_test.dart b/packages/pinball_components/test/src/components/skill_shot/cubit/skill_shot_cubit_test.dart new file mode 100644 index 00000000..b165db99 --- /dev/null +++ b/packages/pinball_components/test/src/components/skill_shot/cubit/skill_shot_cubit_test.dart @@ -0,0 +1,66 @@ +// ignore_for_file: prefer_const_constructors + +import 'package:bloc_test/bloc_test.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:pinball_components/pinball_components.dart'; + +void main() { + group( + 'SkillShotCubit', + () { + blocTest( + 'onBallContacted emits lit and true', + build: SkillShotCubit.new, + act: (bloc) => bloc.onBallContacted(), + expect: () => [ + SkillShotState( + spriteState: SkillShotSpriteState.lit, + isBlinking: true, + ), + ], + ); + + blocTest( + 'switched emits lit when dimmed', + build: SkillShotCubit.new, + act: (bloc) => bloc.switched(), + expect: () => [ + isA().having( + (state) => state.spriteState, + 'spriteState', + SkillShotSpriteState.lit, + ) + ], + ); + + blocTest( + 'switched emits dimmed when lit', + build: SkillShotCubit.new, + seed: () => SkillShotState( + spriteState: SkillShotSpriteState.lit, + isBlinking: false, + ), + act: (bloc) => bloc.switched(), + expect: () => [ + isA().having( + (state) => state.spriteState, + 'spriteState', + SkillShotSpriteState.dimmed, + ) + ], + ); + + blocTest( + 'onBlinkingFinished emits dimmed and false', + build: SkillShotCubit.new, + act: (bloc) => bloc.onBlinkingFinished(), + expect: () => [ + SkillShotState( + spriteState: SkillShotSpriteState.dimmed, + isBlinking: false, + ), + ], + ); + }, + ); +} 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 new file mode 100644 index 00000000..ee6e3e0d --- /dev/null +++ b/packages/pinball_components/test/src/components/skill_shot/cubit/skill_shot_state_test.dart @@ -0,0 +1,84 @@ +// ignore_for_file: prefer_const_constructors + +import 'package:flutter_test/flutter_test.dart'; +import 'package:pinball_components/pinball_components.dart'; + +void main() { + group('SkillShotState', () { + test('supports value equality', () { + expect( + SkillShotState( + spriteState: SkillShotSpriteState.lit, + isBlinking: true, + ), + equals( + const SkillShotState( + spriteState: SkillShotSpriteState.lit, + isBlinking: true, + ), + ), + ); + }); + + group('constructor', () { + test('can be instantiated', () { + expect( + const SkillShotState( + spriteState: SkillShotSpriteState.lit, + isBlinking: true, + ), + isNotNull, + ); + }); + + test('initial is idle with mouth closed', () { + const initialState = SkillShotState( + spriteState: SkillShotSpriteState.dimmed, + isBlinking: false, + ); + expect(SkillShotState.initial(), equals(initialState)); + }); + }); + + group('copyWith', () { + test( + 'copies correctly ' + 'when no argument specified', + () { + const chromeDinoState = SkillShotState( + spriteState: SkillShotSpriteState.lit, + isBlinking: true, + ); + expect( + chromeDinoState.copyWith(), + equals(chromeDinoState), + ); + }, + ); + + test( + 'copies correctly ' + 'when all arguments specified', + () { + const chromeDinoState = SkillShotState( + spriteState: SkillShotSpriteState.lit, + isBlinking: true, + ); + final otherSkillShotState = SkillShotState( + spriteState: SkillShotSpriteState.dimmed, + isBlinking: false, + ); + expect(chromeDinoState, isNot(equals(otherSkillShotState))); + + expect( + chromeDinoState.copyWith( + spriteState: SkillShotSpriteState.dimmed, + isBlinking: false, + ), + equals(otherSkillShotState), + ); + }, + ); + }); + }); +} diff --git a/packages/pinball_components/test/src/components/skill_shot/skill_shot_test.dart b/packages/pinball_components/test/src/components/skill_shot/skill_shot_test.dart new file mode 100644 index 00000000..dabacc69 --- /dev/null +++ b/packages/pinball_components/test/src/components/skill_shot/skill_shot_test.dart @@ -0,0 +1,99 @@ +// 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/skill_shot/behaviors/behaviors.dart'; + +import '../../../helpers/helpers.dart'; + +class _MockSkillShotCubit extends Mock implements SkillShotCubit {} + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + final assets = [ + Assets.images.skillShot.decal.keyName, + Assets.images.skillShot.pin.keyName, + Assets.images.skillShot.lit.keyName, + Assets.images.skillShot.dimmed.keyName, + ]; + final flameTester = FlameTester(() => TestGame(assets)); + + group('SkillShot', () { + flameTester.test('loads correctly', (game) async { + final skillShot = SkillShot(); + await game.ensureAdd(skillShot); + expect(game.contains(skillShot), isTrue); + }); + + // TODO(alestiago): Consider refactoring once the following is merged: + // https://github.com/flame-engine/flame/pull/1538 + // ignore: public_member_api_docs + flameTester.test('closes bloc when removed', (game) async { + final bloc = _MockSkillShotCubit(); + whenListen( + bloc, + const Stream.empty(), + initialState: const SkillShotState.initial(), + ); + when(bloc.close).thenAnswer((_) async {}); + final skillShot = SkillShot.test(bloc: bloc); + + await game.ensureAdd(skillShot); + game.remove(skillShot); + await game.ready(); + + verify(bloc.close).called(1); + }); + + group('adds', () { + flameTester.test('new children', (game) async { + final component = Component(); + final skillShot = SkillShot( + children: [component], + ); + await game.ensureAdd(skillShot); + expect(skillShot.children, contains(component)); + }); + + flameTester.test('a SkillShotBallContactBehavior', (game) async { + final skillShot = SkillShot(); + await game.ensureAdd(skillShot); + expect( + skillShot.children.whereType().single, + isNotNull, + ); + }); + + flameTester.test('a SkillShotBlinkingBehavior', (game) async { + final skillShot = SkillShot(); + await game.ensureAdd(skillShot); + expect( + skillShot.children.whereType().single, + isNotNull, + ); + }); + }); + + flameTester.test( + 'pin stops animating after animation completes', + (game) async { + final skillShot = SkillShot(); + await game.ensureAdd(skillShot); + + final pinSpriteAnimationComponent = + skillShot.firstChild()!; + + pinSpriteAnimationComponent.playing = true; + game.update( + pinSpriteAnimationComponent.animation!.totalDuration() + 0.1, + ); + + expect(pinSpriteAnimationComponent.playing, isFalse); + }, + ); + }); +} diff --git a/test/game/pinball_game_test.dart b/test/game/pinball_game_test.dart index b75b3147..e1ed3084 100644 --- a/test/game/pinball_game_test.dart +++ b/test/game/pinball_game_test.dart @@ -136,6 +136,10 @@ void main() { Assets.images.flapper.flap.keyName, Assets.images.flapper.backSupport.keyName, Assets.images.flapper.frontSupport.keyName, + Assets.images.skillShot.decal.keyName, + Assets.images.skillShot.pin.keyName, + Assets.images.skillShot.lit.keyName, + Assets.images.skillShot.dimmed.keyName, ]; late GameBloc gameBloc; @@ -195,13 +199,16 @@ void main() { }, ); - flameBlocTester.test('has one FlutterForest', (game) async { - await game.ready(); - expect( - game.descendants().whereType().length, - equals(1), - ); - }); + flameBlocTester.test( + 'has one FlutterForest', + (game) async { + await game.ready(); + expect( + game.descendants().whereType().length, + equals(1), + ); + }, + ); flameBlocTester.test( 'has only one Multiballs', @@ -226,6 +233,17 @@ void main() { }, ); + flameBlocTester.test( + 'one SkillShot', + (game) async { + await game.ready(); + expect( + game.descendants().whereType().length, + equals(1), + ); + }, + ); + group('controller', () { group('listenWhen', () { flameTester.testGameWidget(