refactor: added ScoringBehavior on shot and bonus behaviors

pull/296/head
RuiAlonso 3 years ago
parent eafdee4943
commit 05d0d4a3ca

@ -1,4 +1,7 @@
import 'dart:async';
import 'package:flame/components.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';
@ -16,22 +19,30 @@ class RampBonusBehavior extends Component
final Points _points;
StreamSubscription? _subscription;
@override
void onMount() {
super.onMount();
parent.bloc.stream.listen((state) {
_subscription = parent.bloc.stream.listen((state) {
final achievedOneMillionPoints = state.hits % 10 == 0;
if (achievedOneMillionPoints) {
gameRef.read<GameBloc>().add(Scored(points: _points.value));
gameRef.add(
ScoreComponent(
parent.add(
ScoringBehavior(
points: _points,
position: Vector2(0, -60),
duration: 2,
),
);
}
});
}
@override
void onRemove() {
_subscription?.cancel();
super.onRemove();
}
}

@ -1,4 +1,7 @@
import 'dart:async';
import 'package:flame/components.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';
@ -16,19 +19,20 @@ class RampShotBehavior extends Component
final Points _points;
StreamSubscription? _subscription;
@override
void onMount() {
super.onMount();
parent.bloc.stream.listen((state) {
_subscription = parent.bloc.stream.listen((state) {
final achievedOneMillionPoints = state.hits % 10 == 0;
if (!achievedOneMillionPoints) {
gameRef.read<GameBloc>()
..add(const MultiplierIncreased())
..add(Scored(points: _points.value));
gameRef.add(
ScoreComponent(
gameRef.read<GameBloc>().add(const MultiplierIncreased());
parent.add(
ScoringBehavior(
points: _points,
position: Vector2(0, -45),
),
@ -36,4 +40,10 @@ class RampShotBehavior extends Component
}
});
}
@override
void onRemove() {
_subscription?.cancel();
super.onRemove();
}
}

@ -6,9 +6,11 @@ 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/game/behaviors/behaviors.dart';
import 'package:pinball/game/components/android_acres/behaviors/behaviors.dart';
import 'package:pinball/game/game.dart';
import 'package:pinball_components/pinball_components.dart';
import 'package:pinball_flame/pinball_flame.dart';
import '../../../../helpers/helpers.dart';
@ -72,15 +74,14 @@ void main() {
bloc: bloc,
);
await game.ensureAdd(parent);
await game.ensureAdd(ZCanvasComponent(children: [parent]));
await parent.ensureAdd(behavior);
streamController.add(SpaceshipRampState(hits: 10));
final scores = game.descendants().whereType<ScoreComponent>();
final scores = game.descendants().whereType<ScoringBehavior>();
await game.ready();
verify(() => gameBloc.add(Scored(points: shotPoints.value))).called(1);
expect(scores.length, 1);
},
);
@ -103,17 +104,14 @@ void main() {
bloc: bloc,
);
await game.ensureAdd(parent);
await game.ensureAdd(ZCanvasComponent(children: [parent]));
await parent.ensureAdd(behavior);
streamController.add(
SpaceshipRampState(hits: 1),
);
streamController.add(SpaceshipRampState(hits: 1));
final scores = game.descendants().whereType<ScoreComponent>();
final scores = game.descendants().whereType<ScoringBehavior>();
await game.ready();
verifyNever(() => gameBloc.add(Scored(points: shotPoints.value)));
expect(scores.length, 0);
},
);

@ -6,9 +6,11 @@ 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/game/behaviors/behaviors.dart';
import 'package:pinball/game/components/android_acres/behaviors/behaviors.dart';
import 'package:pinball/game/game.dart';
import 'package:pinball_components/pinball_components.dart';
import 'package:pinball_flame/pinball_flame.dart';
import '../../../../helpers/helpers.dart';
@ -72,16 +74,15 @@ void main() {
bloc: bloc,
);
await game.ensureAdd(parent);
await game.ensureAdd(ZCanvasComponent(children: [parent]));
await parent.ensureAdd(behavior);
streamController.add(SpaceshipRampState(hits: 1));
final scores = game.descendants().whereType<ScoreComponent>();
final scores = game.descendants().whereType<ScoringBehavior>();
await game.ready();
verify(() => gameBloc.add(MultiplierIncreased())).called(1);
verify(() => gameBloc.add(Scored(points: shotPoints.value))).called(1);
expect(scores.length, 1);
},
);
@ -104,16 +105,15 @@ void main() {
bloc: bloc,
);
await game.ensureAdd(parent);
await game.ensureAdd(ZCanvasComponent(children: [parent]));
await parent.ensureAdd(behavior);
streamController.add(SpaceshipRampState(hits: 10));
final scores = game.descendants().whereType<ScoreComponent>();
final scores = game.children.whereType<ScoringBehavior>();
await game.ready();
verifyNever(() => gameBloc.add(MultiplierIncreased()));
verifyNever(() => gameBloc.add(Scored(points: shotPoints.value)));
expect(scores.length, 0);
},
);

Loading…
Cancel
Save