diff --git a/lib/game/components/android_acres/android_acres.dart b/lib/game/components/android_acres/android_acres.dart index ea904491..77f30069 100644 --- a/lib/game/components/android_acres/android_acres.dart +++ b/lib/game/components/android_acres/android_acres.dart @@ -16,18 +16,13 @@ class AndroidAcres extends Component { AndroidAcres() : super( children: [ - FlameBlocProvider( - create: SpaceshipRampCubit.new, + SpaceshipRamp( children: [ - SpaceshipRamp( - children: [ - RampShotBehavior(points: Points.fiveThousand), - RampBonusBehavior(points: Points.oneMillion), - RampProgressBehavior(), - RampMultiplierBehavior(), - RampResetBehavior(), - ], - ), + RampShotBehavior(points: Points.fiveThousand), + RampBonusBehavior(points: Points.oneMillion), + RampProgressBehavior(), + RampMultiplierBehavior(), + RampResetBehavior(), ], ), SpaceshipRail(), diff --git a/lib/game/components/android_acres/behaviors/ramp_bonus_behavior.dart b/lib/game/components/android_acres/behaviors/ramp_bonus_behavior.dart index f273319c..c40a8b08 100644 --- a/lib/game/components/android_acres/behaviors/ramp_bonus_behavior.dart +++ b/lib/game/components/android_acres/behaviors/ramp_bonus_behavior.dart @@ -9,7 +9,7 @@ import 'package:pinball_flame/pinball_flame.dart'; /// {@template ramp_bonus_behavior} /// Increases the score when a [Ball] is shot 10 times into the [SpaceshipRamp]. /// {@endtemplate} -class RampBonusBehavior extends Component with ParentIsA { +class RampBonusBehavior extends Component with ParentIsA { /// {@macro ramp_bonus_behavior} RampBonusBehavior({ required Points points, diff --git a/lib/game/components/android_acres/behaviors/ramp_multiplier_behavior.dart b/lib/game/components/android_acres/behaviors/ramp_multiplier_behavior.dart index b27a2faa..9901b7cf 100644 --- a/lib/game/components/android_acres/behaviors/ramp_multiplier_behavior.dart +++ b/lib/game/components/android_acres/behaviors/ramp_multiplier_behavior.dart @@ -10,7 +10,7 @@ import 'package:pinball_flame/pinball_flame.dart'; /// Increases the multiplier when a [Ball] is shot 5 times into the /// [SpaceshipRamp]. /// {@endtemplate} -class RampMultiplierBehavior extends Component with ParentIsA { +class RampMultiplierBehavior extends Component { /// {@macro ramp_multiplier_behavior} RampMultiplierBehavior() : super(); diff --git a/lib/game/components/android_acres/behaviors/ramp_progress_behavior.dart b/lib/game/components/android_acres/behaviors/ramp_progress_behavior.dart index c9d396c2..42762898 100644 --- a/lib/game/components/android_acres/behaviors/ramp_progress_behavior.dart +++ b/lib/game/components/android_acres/behaviors/ramp_progress_behavior.dart @@ -9,7 +9,7 @@ import 'package:pinball_flame/pinball_flame.dart'; /// {@template ramp_progress_behavior} /// Changes arrow lit when a [Ball] is shot into the [SpaceshipRamp]. /// {@endtemplate} -class RampProgressBehavior extends Component with ParentIsA { +class RampProgressBehavior extends Component { /// {@macro ramp_progress_behavior} RampProgressBehavior() : super(); diff --git a/lib/game/components/android_acres/behaviors/ramp_reset_behavior.dart b/lib/game/components/android_acres/behaviors/ramp_reset_behavior.dart index 4f56bc5b..1468fb72 100644 --- a/lib/game/components/android_acres/behaviors/ramp_reset_behavior.dart +++ b/lib/game/components/android_acres/behaviors/ramp_reset_behavior.dart @@ -7,7 +7,7 @@ import 'package:pinball_flame/pinball_flame.dart'; /// {@template ramp_reset_behavior} /// Reset [SpaceshipRamp] state when GameState.rounds changes. /// /// {@endtemplate} -class RampResetBehavior extends Component with ParentIsA { +class RampResetBehavior extends Component { /// {@macro ramp_reset_behavior} RampResetBehavior() : super(); diff --git a/lib/game/components/android_acres/behaviors/ramp_shot_behavior.dart b/lib/game/components/android_acres/behaviors/ramp_shot_behavior.dart index 9215df80..8c37dece 100644 --- a/lib/game/components/android_acres/behaviors/ramp_shot_behavior.dart +++ b/lib/game/components/android_acres/behaviors/ramp_shot_behavior.dart @@ -9,7 +9,7 @@ import 'package:pinball_flame/pinball_flame.dart'; /// {@template ramp_shot_behavior} /// Increases the score when a [Ball] is shot into the [SpaceshipRamp]. /// {@endtemplate} -class RampShotBehavior extends Component with ParentIsA { +class RampShotBehavior extends Component with ParentIsA { /// {@macro ramp_shot_behavior} RampShotBehavior({ required Points points, diff --git a/packages/pinball_components/lib/src/components/spaceship_ramp/spaceship_ramp.dart b/packages/pinball_components/lib/src/components/spaceship_ramp/spaceship_ramp.dart index 32227472..3e4c5d6e 100644 --- a/packages/pinball_components/lib/src/components/spaceship_ramp/spaceship_ramp.dart +++ b/packages/pinball_components/lib/src/components/spaceship_ramp/spaceship_ramp.dart @@ -26,20 +26,26 @@ class SpaceshipRamp extends Component { Iterable? children, }) : super( children: [ - _SpaceshipRampOpening( - outsideLayer: Layer.spaceship, - outsidePriority: ZIndexes.ballOnSpaceship, - rotation: math.pi, - ) - ..initialPosition = Vector2(-13.7, -18.6) - ..layer = Layer.spaceshipEntranceRamp, - _SpaceshipRampBackground(), - SpaceshipRampBoardOpening()..initialPosition = Vector2(3.4, -39.5), - _SpaceshipRampForegroundRailing(), - SpaceshipRampBase()..initialPosition = Vector2(3.4, -42.5), - _SpaceshipRampBackgroundRailingSpriteComponent(), - SpaceshipRampArrowSpriteComponent(), - ...?children, + FlameBlocProvider( + create: SpaceshipRampCubit.new, + children: [ + _SpaceshipRampOpening( + outsideLayer: Layer.spaceship, + outsidePriority: ZIndexes.ballOnSpaceship, + rotation: math.pi, + ) + ..initialPosition = Vector2(-13.7, -18.6) + ..layer = Layer.spaceshipEntranceRamp, + _SpaceshipRampBackground(), + SpaceshipRampBoardOpening() + ..initialPosition = Vector2(3.4, -39.5), + _SpaceshipRampForegroundRailing(), + SpaceshipRampBase()..initialPosition = Vector2(3.4, -42.5), + _SpaceshipRampBackgroundRailingSpriteComponent(), + SpaceshipRampArrowSpriteComponent(), + ...?children, + ], + ), ], ); @@ -155,8 +161,7 @@ class _SpaceshipRampBackgroundRampSpriteComponent extends SpriteComponent /// {@endtemplate} @visibleForTesting class SpaceshipRampArrowSpriteComponent - extends SpriteGroupComponent - with HasGameRef, ParentIsA, ZIndex { + extends SpriteGroupComponent with HasGameRef, ZIndex { /// {@macro spaceship_ramp_arrow_sprite_component} SpaceshipRampArrowSpriteComponent() : super( @@ -210,7 +215,7 @@ extension on ArrowLightState { } class SpaceshipRampBoardOpening extends BodyComponent - with Layered, ZIndex, InitialPosition, ParentIsA { + with Layered, ZIndex, InitialPosition { SpaceshipRampBoardOpening() : super( renderBody: false, diff --git a/packages/pinball_components/sandbox/lib/stories/android_acres/spaceship_ramp_game.dart b/packages/pinball_components/sandbox/lib/stories/android_acres/spaceship_ramp_game.dart index 9818391b..b19aef56 100644 --- a/packages/pinball_components/sandbox/lib/stories/android_acres/spaceship_ramp_game.dart +++ b/packages/pinball_components/sandbox/lib/stories/android_acres/spaceship_ramp_game.dart @@ -1,7 +1,6 @@ import 'dart:async'; import 'package:flame/input.dart'; -import 'package:flame_bloc/flame_bloc.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:pinball_components/pinball_components.dart'; @@ -38,7 +37,7 @@ class SpaceshipRampGame extends BallGame with KeyboardEvents { @override Color backgroundColor() => Colors.white; - late final SpaceshipRampCubit _bloc; + late final SpaceshipRamp _spaceshipRamp; @override Future onLoad() async { @@ -46,17 +45,8 @@ class SpaceshipRampGame extends BallGame with KeyboardEvents { camera.followVector2(Vector2(-12, -50)); - _bloc = SpaceshipRampCubit(); - await add( - FlameBlocProvider( - create: () => _bloc, - children: [ - SpaceshipRamp( - children: [SpaceshipRamp()], - ), - ], - ), - ); + _spaceshipRamp = SpaceshipRamp(); + await add(_spaceshipRamp); await traceAllBodies(); } @@ -67,7 +57,9 @@ class SpaceshipRampGame extends BallGame with KeyboardEvents { ) { if (event is RawKeyDownEvent && event.logicalKey == LogicalKeyboardKey.space) { - _bloc.onProgressed(); + _spaceshipRamp + .readBloc() + .onProgressed(); return KeyEventResult.handled; }