From e97806bb8d47b2f8878df34ee263767ac1d3a1fe Mon Sep 17 00:00:00 2001 From: Tom Arra Date: Sun, 8 May 2022 20:32:13 -0500 Subject: [PATCH 1/2] fix: update repo name (#427) --- lib/more_information/more_information_dialog.dart | 2 +- packages/pinball_components/sandbox/lib/common/add_game.dart | 2 +- packages/share_repository/lib/src/share_repository.dart | 2 +- test/more_information/more_information_dialog_test.dart | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/more_information/more_information_dialog.dart b/lib/more_information/more_information_dialog.dart index b9a9ddbb..ca04db4e 100644 --- a/lib/more_information/more_information_dialog.dart +++ b/lib/more_information/more_information_dialog.dart @@ -204,7 +204,7 @@ class _MadeWithFlutterAndFirebase extends StatelessWidget { abstract class _MoreInformationUrl { static const flutterWebsite = 'https://flutter.dev'; static const firebaseWebsite = 'https://firebase.google.com'; - static const openSourceCode = 'https://github.com/VGVentures/pinball'; + static const openSourceCode = 'https://github.com/flutter/pinball'; static const googleIOEvent = 'https://events.google.com/io/'; static const flutterGamesWebsite = 'http://flutter.dev/games'; static const howItsMadeArticle = diff --git a/packages/pinball_components/sandbox/lib/common/add_game.dart b/packages/pinball_components/sandbox/lib/common/add_game.dart index 5b6388d3..04e08c01 100644 --- a/packages/pinball_components/sandbox/lib/common/add_game.dart +++ b/packages/pinball_components/sandbox/lib/common/add_game.dart @@ -3,7 +3,7 @@ import 'package:flame/game.dart'; import 'package:sandbox/common/common.dart'; const _path = - 'https://github.com/VGVentures/pinball/tree/main/packages/pinball_components/sandbox/lib/stories/'; + 'https://github.com/flutter/pinball/tree/main/packages/pinball_components/sandbox/lib/stories/'; extension StoryAddGame on Story { void addGame({ diff --git a/packages/share_repository/lib/src/share_repository.dart b/packages/share_repository/lib/src/share_repository.dart index 9aff112a..a3f0f942 100644 --- a/packages/share_repository/lib/src/share_repository.dart +++ b/packages/share_repository/lib/src/share_repository.dart @@ -12,7 +12,7 @@ class ShareRepository { final String _appUrl; /// Url to the Github Open Source Pinball project. - static const openSourceCode = 'https://github.com/VGVentures/pinball'; + static const openSourceCode = 'https://github.com/flutter/pinball'; /// Url to the Google IO Event. static const googleIOEvent = 'https://events.google.com/io/'; diff --git a/test/more_information/more_information_dialog_test.dart b/test/more_information/more_information_dialog_test.dart index f87ec84c..cf7ba149 100644 --- a/test/more_information/more_information_dialog_test.dart +++ b/test/more_information/more_information_dialog_test.dart @@ -138,7 +138,7 @@ void main() { ); { - 'Open Source Code': 'https://github.com/VGVentures/pinball', + 'Open Source Code': 'https://github.com/flutter/pinball', 'Google I/O': 'https://events.google.com/io/', 'Flutter Games': 'http://flutter.dev/games', 'How it’s made': From 37f35dc60fac0bb004fdd788ac0357e53508496e Mon Sep 17 00:00:00 2001 From: Allison Ryan <77211884+allisonryan0002@users.noreply.github.com> Date: Sun, 8 May 2022 20:40:48 -0500 Subject: [PATCH 2/2] feat: google bonus ball and multiball sync (#425) --- .../behaviors/google_word_bonus_behavior.dart | 2 + .../behaviors/multiballs_behavior.dart | 3 +- .../multiball_blinking_behavior.dart | 4 +- .../multiball_blinking_behavior_test.dart | 8 ++-- .../google_word_bonus_behavior_test.dart | 47 +++++++++++++++++++ .../behaviors/multiballs_behavior_test.dart | 20 +++++++- 6 files changed, 75 insertions(+), 9 deletions(-) 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 index abb6de1e..787fcefc 100644 --- a/lib/game/components/google_gallery/behaviors/google_word_bonus_behavior.dart +++ b/lib/game/components/google_gallery/behaviors/google_word_bonus_behavior.dart @@ -1,5 +1,6 @@ import 'package:flame/components.dart'; import 'package:flame_bloc/flame_bloc.dart'; +import 'package:pinball/game/behaviors/behaviors.dart'; import 'package:pinball/game/game.dart'; import 'package:pinball_components/pinball_components.dart'; import 'package:pinball_flame/pinball_flame.dart'; @@ -17,6 +18,7 @@ class GoogleWordBonusBehavior extends Component { readBloc() .add(const BonusActivated(GameBonus.googleWord)); readBloc().onBonusAwarded(); + add(BonusBallSpawningBehavior()); }, ), ); diff --git a/lib/game/components/multiballs/behaviors/multiballs_behavior.dart b/lib/game/components/multiballs/behaviors/multiballs_behavior.dart index b01c32e1..1d3aa16c 100644 --- a/lib/game/components/multiballs/behaviors/multiballs_behavior.dart +++ b/lib/game/components/multiballs/behaviors/multiballs_behavior.dart @@ -11,7 +11,8 @@ class MultiballsBehavior extends Component bool listenWhen(GameState? previousState, GameState newState) { final hasChanged = previousState?.bonusHistory != newState.bonusHistory; final lastBonusIsMultiball = newState.bonusHistory.isNotEmpty && - newState.bonusHistory.last == GameBonus.dashNest; + (newState.bonusHistory.last == GameBonus.dashNest || + newState.bonusHistory.last == GameBonus.googleWord); return hasChanged && lastBonusIsMultiball; } diff --git a/packages/pinball_components/lib/src/components/multiball/behaviors/multiball_blinking_behavior.dart b/packages/pinball_components/lib/src/components/multiball/behaviors/multiball_blinking_behavior.dart index 48c90552..b974f33c 100644 --- a/packages/pinball_components/lib/src/components/multiball/behaviors/multiball_blinking_behavior.dart +++ b/packages/pinball_components/lib/src/components/multiball/behaviors/multiball_blinking_behavior.dart @@ -9,9 +9,9 @@ import 'package:pinball_flame/pinball_flame.dart'; class MultiballBlinkingBehavior extends TimerComponent with ParentIsA { /// {@macro multiball_blinking_behavior} - MultiballBlinkingBehavior() : super(period: 0.1); + MultiballBlinkingBehavior() : super(period: 0.18); - final _maxBlinks = 10; + final _maxBlinks = 28; int _blinksCounter = 0; diff --git a/packages/pinball_components/test/src/components/multiball/behaviors/multiball_blinking_behavior_test.dart b/packages/pinball_components/test/src/components/multiball/behaviors/multiball_blinking_behavior_test.dart index 379f8610..0fcf7668 100644 --- a/packages/pinball_components/test/src/components/multiball/behaviors/multiball_blinking_behavior_test.dart +++ b/packages/pinball_components/test/src/components/multiball/behaviors/multiball_blinking_behavior_test.dart @@ -21,7 +21,7 @@ void main() { 'MultiballBlinkingBehavior', () { flameTester.testGameWidget( - 'calls onBlink every 0.1 seconds when animation state is animated', + 'calls onBlink every 0.18 seconds when animation state is animated', setUp: (game, tester) async { final behavior = MultiballBlinkingBehavior(); final bloc = _MockMultiballCubit(); @@ -48,7 +48,7 @@ void main() { verify(bloc.onBlink).called(1); await tester.pump(); - game.update(0.1); + game.update(0.18); await streamController.close(); verify(bloc.onBlink).called(1); @@ -124,7 +124,7 @@ void main() { ); flameTester.testGameWidget( - 'onTick stops after 10 blinks repetitions', + 'onTick stops after 28 blinks', setUp: (game, tester) async { final behavior = MultiballBlinkingBehavior(); final bloc = _MockMultiballCubit(); @@ -148,7 +148,7 @@ void main() { ); await tester.pump(); - for (var i = 0; i < 10; i++) { + for (var i = 0; i < 28; i++) { behavior.onTick(); } 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 index 3d8d2b39..4b3ec2bd 100644 --- 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 @@ -8,6 +8,7 @@ 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'; @@ -116,5 +117,51 @@ void main() { verify(googleWordBloc.onBonusAwarded).called(1); }, ); + + flameTester.testGameWidget( + 'adds BonusBallSpawningBehavior to the game when all letters ' + 'in google word are activated', + 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(); + await game.ready(); + + expect( + game.descendants().whereType().length, + equals(1), + ); + }, + ); }); } diff --git a/test/game/components/multiballs/behaviors/multiballs_behavior_test.dart b/test/game/components/multiballs/behaviors/multiballs_behavior_test.dart index 139c7e47..af77ef32 100644 --- a/test/game/components/multiballs/behaviors/multiballs_behavior_test.dart +++ b/test/game/components/multiballs/behaviors/multiballs_behavior_test.dart @@ -78,8 +78,24 @@ void main() { ); test( - 'is false when the bonusHistory has changed ' - 'with a bonus different than GameBonus.dashNest', () { + 'is true when the bonusHistory has changed ' + 'with a new GameBonus.googleWord', + () { + final previous = GameState.initial(); + final state = previous.copyWith( + bonusHistory: [GameBonus.googleWord], + ); + + expect( + MultiballsBehavior().listenWhen(previous, state), + isTrue, + ); + }, + ); + + test( + 'is false when the bonusHistory has changed with a bonus other than ' + 'GameBonus.dashNest or GameBonus.googleWord', () { final previous = GameState.initial().copyWith(bonusHistory: [GameBonus.dashNest]); final state = previous.copyWith(