From 464b7867608b04c961aaef0360f1578415db23d0 Mon Sep 17 00:00:00 2001 From: arturplaczek Date: Tue, 26 Apr 2022 23:09:35 +0200 Subject: [PATCH] chore: remove PinballTheme and use CharacterTheme --- lib/game/components/controlled_ball.dart | 8 +++--- lib/game/components/flutter_forest.dart | 2 +- lib/game/components/game_flow_controller.dart | 3 +- lib/game/pinball_game.dart | 10 +++---- lib/game/view/pinball_game_page.dart | 4 +-- .../cubit/select_character_cubit.dart | 2 +- .../cubit/select_character_state.dart | 5 ++-- .../view/character_selection_page.dart | 2 +- packages/pinball_theme/lib/pinball_theme.dart | 1 - .../pinball_theme/lib/src/pinball_theme.dart | 23 --------------- .../test/src/pinball_theme_test.dart | 28 ------------------- .../components/game_flow_controller_test.dart | 3 +- test/game/components/wall_test.dart | 8 ++++-- test/helpers/test_games.dart | 8 ++---- .../cubit/select_character_cubit_test.dart | 4 +-- 15 files changed, 28 insertions(+), 83 deletions(-) delete mode 100644 packages/pinball_theme/lib/src/pinball_theme.dart delete mode 100644 packages/pinball_theme/test/src/pinball_theme_test.dart diff --git a/lib/game/components/controlled_ball.dart b/lib/game/components/controlled_ball.dart index 4f089a7c..6468c821 100644 --- a/lib/game/components/controlled_ball.dart +++ b/lib/game/components/controlled_ball.dart @@ -15,8 +15,8 @@ class ControlledBall extends Ball with Controls { /// When a launched [Ball] is lost, it will decrease the [GameState.balls] /// count, and a new [Ball] is spawned. ControlledBall.launch({ - required PinballTheme theme, - }) : super(baseColor: theme.characterTheme.ballColor) { + required CharacterTheme characterTheme, + }) : super(baseColor: characterTheme.ballColor) { controller = BallController(this); priority = RenderPriority.ballOnLaunchRamp; layer = Layer.launcher; @@ -28,8 +28,8 @@ class ControlledBall extends Ball with Controls { /// When a bonus [Ball] is lost, the [GameState.balls] doesn't change. /// {@endtemplate} ControlledBall.bonus({ - required PinballTheme theme, - }) : super(baseColor: theme.characterTheme.ballColor) { + required CharacterTheme characterTheme, + }) : super(baseColor: characterTheme.ballColor) { controller = BallController(this); priority = RenderPriority.ballOnBoard; } diff --git a/lib/game/components/flutter_forest.dart b/lib/game/components/flutter_forest.dart index 9c8ab309..971cd700 100644 --- a/lib/game/components/flutter_forest.dart +++ b/lib/game/components/flutter_forest.dart @@ -71,7 +71,7 @@ class _FlutterForestController extends ComponentController Future _addBonusBall() async { await gameRef.add( - ControlledBall.bonus(theme: gameRef.theme) + ControlledBall.bonus(characterTheme: gameRef.characterTheme) ..initialPosition = Vector2(17.2, -52.7), ); } diff --git a/lib/game/components/game_flow_controller.dart b/lib/game/components/game_flow_controller.dart index 77afebe6..48dd5518 100644 --- a/lib/game/components/game_flow_controller.dart +++ b/lib/game/components/game_flow_controller.dart @@ -32,8 +32,7 @@ class GameFlowController extends ComponentController // next page component.firstChild()?.gameOverMode( score: state?.score ?? 0, - characterIconPath: - component.theme.characterTheme.leaderboardIcon.keyName, + characterIconPath: component.characterTheme.leaderboardIcon.keyName, ); component.firstChild()?.focusOnBackboard(); } diff --git a/lib/game/pinball_game.dart b/lib/game/pinball_game.dart index 55a6b23a..374a55a1 100644 --- a/lib/game/pinball_game.dart +++ b/lib/game/pinball_game.dart @@ -20,7 +20,7 @@ class PinballGame extends Forge2DGame HasKeyboardHandlerComponents, Controls<_GameBallsController> { PinballGame({ - required this.theme, + required this.characterTheme, required this.audio, }) { images.prefix = ''; @@ -33,7 +33,7 @@ class PinballGame extends Forge2DGame @override Color backgroundColor() => Colors.transparent; - final PinballTheme theme; + final CharacterTheme characterTheme; final PinballAudio audio; @@ -119,7 +119,7 @@ class _GameBallsController extends ComponentController void _spawnBall() { final ball = ControlledBall.launch( - theme: gameRef.theme, + characterTheme: gameRef.characterTheme, )..initialPosition = Vector2( _plunger.body.position.x, _plunger.body.position.y - Ball.size.y, @@ -137,10 +137,10 @@ class _GameBallsController extends ComponentController class DebugPinballGame extends PinballGame with FPSCounter, TapDetector { DebugPinballGame({ - required PinballTheme theme, + required CharacterTheme characterTheme, required PinballAudio audio, }) : super( - theme: theme, + characterTheme: characterTheme, audio: audio, ) { controller = _DebugGameBallsController(this); diff --git a/lib/game/view/pinball_game_page.dart b/lib/game/view/pinball_game_page.dart index 64402d75..108a2d23 100644 --- a/lib/game/view/pinball_game_page.dart +++ b/lib/game/view/pinball_game_page.dart @@ -37,8 +37,8 @@ class PinballGamePage extends StatelessWidget { final pinballAudio = context.read(); final game = isDebugMode - ? DebugPinballGame(theme: selectedCharacter, audio: audio) - : PinballGame(theme: selectedCharacter, audio: audio); + ? DebugPinballGame(characterTheme: selectedCharacter, audio: audio) + : PinballGame(characterTheme: selectedCharacter, audio: audio); final loadables = [ ...game.preLoadAssets(), diff --git a/lib/select_character/cubit/select_character_cubit.dart b/lib/select_character/cubit/select_character_cubit.dart index b81e4683..2c26d656 100644 --- a/lib/select_character/cubit/select_character_cubit.dart +++ b/lib/select_character/cubit/select_character_cubit.dart @@ -11,6 +11,6 @@ class SelectCharacterCubit extends Cubit { SelectCharacterCubit() : super(const SelectCharacterState.initial()); void characterSelected(CharacterTheme characterTheme) { - emit(SelectCharacterState(PinballTheme(characterTheme: characterTheme))); + emit(SelectCharacterState(characterTheme)); } } diff --git a/lib/select_character/cubit/select_character_state.dart b/lib/select_character/cubit/select_character_state.dart index 689bf9c5..ccb3e873 100644 --- a/lib/select_character/cubit/select_character_state.dart +++ b/lib/select_character/cubit/select_character_state.dart @@ -6,10 +6,9 @@ part of 'select_character_cubit.dart'; class SelectCharacterState extends Equatable { const SelectCharacterState(this.selectedCharacter); - const SelectCharacterState.initial() - : selectedCharacter = const PinballTheme(characterTheme: DashTheme()); + const SelectCharacterState.initial() : selectedCharacter = const DashTheme(); - final PinballTheme selectedCharacter; + final CharacterTheme selectedCharacter; @override List get props => [selectedCharacter]; diff --git a/lib/select_character/view/character_selection_page.dart b/lib/select_character/view/character_selection_page.dart index 8169f899..2c6af55e 100644 --- a/lib/select_character/view/character_selection_page.dart +++ b/lib/select_character/view/character_selection_page.dart @@ -111,7 +111,7 @@ class CharacterImageButton extends StatelessWidget { Widget build(BuildContext context) { final currentCharacterTheme = context.select( - (cubit) => cubit.state.selectedCharacter.characterTheme, + (cubit) => cubit.state.selectedCharacter, ); return GestureDetector( diff --git a/packages/pinball_theme/lib/pinball_theme.dart b/packages/pinball_theme/lib/pinball_theme.dart index 139a70dc..c8f9b53e 100644 --- a/packages/pinball_theme/lib/pinball_theme.dart +++ b/packages/pinball_theme/lib/pinball_theme.dart @@ -1,5 +1,4 @@ library pinball_theme; export 'src/generated/generated.dart'; -export 'src/pinball_theme.dart'; export 'src/themes/themes.dart'; diff --git a/packages/pinball_theme/lib/src/pinball_theme.dart b/packages/pinball_theme/lib/src/pinball_theme.dart deleted file mode 100644 index a766a129..00000000 --- a/packages/pinball_theme/lib/src/pinball_theme.dart +++ /dev/null @@ -1,23 +0,0 @@ -import 'package:equatable/equatable.dart'; -import 'package:pinball_theme/pinball_theme.dart'; - -/// {@template pinball_theme} -/// Defines all theme assets and attributes. -/// -/// Game components should have a getter specified here to load their -/// corresponding assets for the game. -/// {@endtemplate} -class PinballTheme extends Equatable { - /// {@macro pinball_theme} - const PinballTheme({ - required CharacterTheme characterTheme, - }) : _characterTheme = characterTheme; - - final CharacterTheme _characterTheme; - - /// [CharacterTheme] for the chosen character. - CharacterTheme get characterTheme => _characterTheme; - - @override - List get props => [_characterTheme]; -} diff --git a/packages/pinball_theme/test/src/pinball_theme_test.dart b/packages/pinball_theme/test/src/pinball_theme_test.dart deleted file mode 100644 index 899eec64..00000000 --- a/packages/pinball_theme/test/src/pinball_theme_test.dart +++ /dev/null @@ -1,28 +0,0 @@ -// ignore_for_file: prefer_const_constructors - -import 'package:flutter_test/flutter_test.dart'; -import 'package:pinball_theme/pinball_theme.dart'; - -void main() { - group('PinballTheme', () { - const characterTheme = SparkyTheme(); - - test('can be instantiated', () { - expect(PinballTheme(characterTheme: characterTheme), isNotNull); - }); - - test('supports value equality', () { - expect( - PinballTheme(characterTheme: characterTheme), - equals(PinballTheme(characterTheme: characterTheme)), - ); - }); - - test('characterTheme is correct', () { - expect( - PinballTheme(characterTheme: characterTheme).characterTheme, - equals(characterTheme), - ); - }); - }); -} diff --git a/test/game/components/game_flow_controller_test.dart b/test/game/components/game_flow_controller_test.dart index 4efc7174..3de04b90 100644 --- a/test/game/components/game_flow_controller_test.dart +++ b/test/game/components/game_flow_controller_test.dart @@ -57,8 +57,7 @@ void main() { when(game.firstChild).thenReturn(backboard); when(game.firstChild).thenReturn(cameraController); when(() => game.overlays).thenReturn(overlays); - when(() => game.theme) - .thenReturn(PinballTheme(characterTheme: DashTheme())); + when(() => game.characterTheme).thenReturn(DashTheme()); }); test( diff --git a/test/game/components/wall_test.dart b/test/game/components/wall_test.dart index 63a39991..92fe33ea 100644 --- a/test/game/components/wall_test.dart +++ b/test/game/components/wall_test.dart @@ -117,7 +117,9 @@ void main() { flameBlocTester.testGameWidget( 'when ball is launch', setUp: (game, tester) async { - final ball = ControlledBall.launch(theme: game.theme); + final ball = ControlledBall.launch( + characterTheme: game.characterTheme, + ); final wall = BottomWall(); await game.ensureAddAll([ball, wall]); game.addContactCallback(BottomWallBallContactCallback()); @@ -132,7 +134,9 @@ void main() { flameBlocTester.testGameWidget( 'when ball is bonus', setUp: (game, tester) async { - final ball = ControlledBall.bonus(theme: game.theme); + final ball = ControlledBall.bonus( + characterTheme: game.characterTheme, + ); final wall = BottomWall(); await game.ensureAddAll([ball, wall]); game.addContactCallback(BottomWallBallContactCallback()); diff --git a/test/helpers/test_games.dart b/test/helpers/test_games.dart index 10caa768..deeba2c3 100644 --- a/test/helpers/test_games.dart +++ b/test/helpers/test_games.dart @@ -20,9 +20,7 @@ class PinballTestGame extends PinballGame { : _assets = assets, super( audio: MockPinballAudio(), - theme: const PinballTheme( - characterTheme: DashTheme(), - ), + characterTheme: const DashTheme(), ); final List? _assets; @@ -40,9 +38,7 @@ class DebugPinballTestGame extends DebugPinballGame { : _assets = assets, super( audio: MockPinballAudio(), - theme: const PinballTheme( - characterTheme: DashTheme(), - ), + characterTheme: const DashTheme(), ); final List? _assets; diff --git a/test/select_character/cubit/select_character_cubit_test.dart b/test/select_character/cubit/select_character_cubit_test.dart index 97f61cb4..48c472fd 100644 --- a/test/select_character/cubit/select_character_cubit_test.dart +++ b/test/select_character/cubit/select_character_cubit_test.dart @@ -8,7 +8,7 @@ void main() { test('initial state has Dash character theme', () { final selectCharacterCubit = SelectCharacterCubit(); expect( - selectCharacterCubit.state.selectedCharacter.characterTheme, + selectCharacterCubit.state.selectedCharacter, equals(const DashTheme()), ); }); @@ -18,7 +18,7 @@ void main() { build: SelectCharacterCubit.new, act: (bloc) => bloc.characterSelected(const SparkyTheme()), expect: () => [ - const SelectCharacterState(PinballTheme(characterTheme: SparkyTheme())), + const SelectCharacterState(SparkyTheme()), ], ); });