refactor: score enum to Points

pull/276/head
RuiAlonso 3 years ago
parent 514963373d
commit b5f2bedb07

@ -16,17 +16,17 @@ class AndroidAcres extends Blueprint {
components: [
AndroidBumper.a(
children: [
ScoringBehavior(points: Score.points_20k),
ScoringBehavior(points: Points.points_20k),
],
)..initialPosition = Vector2(-25, 1.3),
AndroidBumper.b(
children: [
ScoringBehavior(points: Score.points_20k),
ScoringBehavior(points: Points.points_20k),
],
)..initialPosition = Vector2(-32.8, -9.2),
AndroidBumper.cow(
children: [
ScoringBehavior(points: Score.points_20k),
ScoringBehavior(points: Points.points_20k),
],
)..initialPosition = Vector2(-20.5, -13.8),
],

@ -49,7 +49,7 @@ class _BottomGroupSide extends Component {
final kicker = Kicker(
side: _side,
children: [
ScoringBehavior(points: Score.points_5k),
ScoringBehavior(points: Points.points_5k),
],
)..initialPosition = Vector2(
(22.4 * direction) + centerXAdjustment,

@ -18,22 +18,22 @@ class FlutterForest extends Component {
children: [
Signpost(
children: [
ScoringBehavior(points: Score.points_5k),
ScoringBehavior(points: Points.points_5k),
],
)..initialPosition = Vector2(8.35, -58.3),
DashNestBumper.main(
children: [
ScoringBehavior(points: Score.points_200k),
ScoringBehavior(points: Points.points_200k),
],
)..initialPosition = Vector2(18.55, -59.35),
DashNestBumper.a(
children: [
ScoringBehavior(points: Score.points_20k),
ScoringBehavior(points: Points.points_20k),
],
)..initialPosition = Vector2(8.95, -51.95),
DashNestBumper.b(
children: [
ScoringBehavior(points: Score.points_20k),
ScoringBehavior(points: Points.points_20k),
],
)..initialPosition = Vector2(23.3, -46.75),
DashAnimatronic()..position = Vector2(20, -66),

@ -15,27 +15,27 @@ class GoogleWord extends Component {
children: [
GoogleLetter(
0,
children: [ScoringBehavior(points: Score.points_5k)],
children: [ScoringBehavior(points: Points.points_5k)],
)..initialPosition = position + Vector2(-12.92, 1.82),
GoogleLetter(
1,
children: [ScoringBehavior(points: Score.points_5k)],
children: [ScoringBehavior(points: Points.points_5k)],
)..initialPosition = position + Vector2(-8.33, -0.65),
GoogleLetter(
2,
children: [ScoringBehavior(points: Score.points_5k)],
children: [ScoringBehavior(points: Points.points_5k)],
)..initialPosition = position + Vector2(-2.88, -1.75),
GoogleLetter(
3,
children: [ScoringBehavior(points: Score.points_5k)],
children: [ScoringBehavior(points: Points.points_5k)],
)..initialPosition = position + Vector2(2.88, -1.75),
GoogleLetter(
4,
children: [ScoringBehavior(points: Score.points_5k)],
children: [ScoringBehavior(points: Points.points_5k)],
)..initialPosition = position + Vector2(8.33, -0.65),
GoogleLetter(
5,
children: [ScoringBehavior(points: Score.points_5k)],
children: [ScoringBehavior(points: Points.points_5k)],
)..initialPosition = position + Vector2(12.92, 1.82),
GoogleWordBonusBehavior(),
],

@ -12,10 +12,10 @@ import 'package:pinball_flame/pinball_flame.dart';
class ScoringBehavior extends ContactBehavior with HasGameRef<PinballGame> {
/// {@macro scoring_behavior}
ScoringBehavior({
required Score points,
required Points points,
}) : _points = points;
final Score _points;
final Points _points;
@override
void beginContact(Object other, Contact contact) {
@ -26,7 +26,7 @@ class ScoringBehavior extends ContactBehavior with HasGameRef<PinballGame> {
gameRef.audio.score();
gameRef.add(
ScoreComponent(
score: _points,
points: _points,
position: other.body.position,
),
);

@ -16,17 +16,17 @@ class SparkyScorch extends Blueprint {
components: [
SparkyBumper.a(
children: [
ScoringBehavior(points: Score.points_20k),
ScoringBehavior(points: Points.points_20k),
],
)..initialPosition = Vector2(-22.9, -41.65),
SparkyBumper.b(
children: [
ScoringBehavior(points: Score.points_20k),
ScoringBehavior(points: Points.points_20k),
],
)..initialPosition = Vector2(-21.25, -57.9),
SparkyBumper.c(
children: [
ScoringBehavior(points: Score.points_20k),
ScoringBehavior(points: Points.points_20k),
],
)..initialPosition = Vector2(-3.3, -52.55),
SparkyComputerSensor()..initialPosition = Vector2(-13, -49.8),
@ -49,7 +49,7 @@ class SparkyComputerSensor extends BodyComponent
: super(
renderBody: false,
children: [
ScoringBehavior(points: Score.points_20k),
ScoringBehavior(points: Points.points_20k),
],
);

@ -110,10 +110,10 @@ abstract class RenderPriority {
static const int androidBumper = _above + ballOnBoard;
// Score Text
// Score
static const int scoreText = _above + spaceshipRampForegroundRailing;
static const int score = _above + spaceshipRampForegroundRailing;
// Debug information
static const int debugInfo = _above + scoreText;
static const int debugInfo = _above + score;
}

@ -6,7 +6,7 @@ import 'package:flame/components.dart';
import 'package:flame/effects.dart';
import 'package:pinball_components/pinball_components.dart';
enum Score {
enum Points {
points_5k,
points_10k,
points_15k,
@ -39,23 +39,23 @@ enum Score {
class ScoreComponent extends SpriteComponent with HasGameRef {
/// {@macro score_component}
ScoreComponent({
required this.score,
required this.points,
required Vector2 position,
}) : super(
position: position,
anchor: Anchor.center,
priority: RenderPriority.scoreText,
priority: RenderPriority.score,
);
late final Effect _effect;
late Score score;
late Points points;
@override
Future<void> onLoad() async {
await super.onLoad();
final sprite = Sprite(
gameRef.images.fromCache(score.asset),
gameRef.images.fromCache(points.asset),
);
this.sprite = sprite;
size = sprite.originalSize / 55;
@ -78,107 +78,107 @@ class ScoreComponent extends SpriteComponent with HasGameRef {
}
}
extension ScoredX on Score {
extension PointsX on Points {
int get value {
switch (this) {
case Score.points_5k:
case Points.points_5k:
return 5000;
case Score.points_10k:
case Points.points_10k:
return 10000;
case Score.points_15k:
case Points.points_15k:
return 15000;
case Score.points_20k:
case Points.points_20k:
return 20000;
case Score.points_25k:
case Points.points_25k:
return 25000;
case Score.points_30k:
case Points.points_30k:
return 30000;
case Score.points_40k:
case Points.points_40k:
return 40000;
case Score.points_50k:
case Points.points_50k:
return 50000;
case Score.points_60k:
case Points.points_60k:
return 60000;
case Score.points_80k:
case Points.points_80k:
return 80000;
case Score.points_100k:
case Points.points_100k:
return 100000;
case Score.points_120k:
case Points.points_120k:
return 120000;
case Score.points_200k:
case Points.points_200k:
return 200000;
case Score.points_400k:
case Points.points_400k:
return 400000;
case Score.points_600k:
case Points.points_600k:
return 600000;
case Score.points_800k:
case Points.points_800k:
return 800000;
case Score.points_1m:
case Points.points_1m:
return 1000000;
case Score.points_1m2:
case Points.points_1m2:
return 1200000;
case Score.points_2m:
case Points.points_2m:
return 2000000;
case Score.points_3m:
case Points.points_3m:
return 3000000;
case Score.points_4m:
case Points.points_4m:
return 4000000;
case Score.points_5m:
case Points.points_5m:
return 5000000;
case Score.points_6m:
case Points.points_6m:
return 6000000;
}
}
}
extension on Score {
extension on Points {
String get asset {
switch (this) {
case Score.points_5k:
case Points.points_5k:
return Assets.images.score.points5k.keyName;
case Score.points_10k:
case Points.points_10k:
return Assets.images.score.points10k.keyName;
case Score.points_15k:
case Points.points_15k:
return Assets.images.score.points15k.keyName;
case Score.points_20k:
case Points.points_20k:
return Assets.images.score.points20k.keyName;
case Score.points_25k:
case Points.points_25k:
return Assets.images.score.points25k.keyName;
case Score.points_30k:
case Points.points_30k:
return Assets.images.score.points30k.keyName;
case Score.points_40k:
case Points.points_40k:
return Assets.images.score.points40k.keyName;
case Score.points_50k:
case Points.points_50k:
return Assets.images.score.points50k.keyName;
case Score.points_60k:
case Points.points_60k:
return Assets.images.score.points60k.keyName;
case Score.points_80k:
case Points.points_80k:
return Assets.images.score.points80k.keyName;
case Score.points_100k:
case Points.points_100k:
return Assets.images.score.points100k.keyName;
case Score.points_120k:
case Points.points_120k:
return Assets.images.score.points120k.keyName;
case Score.points_200k:
case Points.points_200k:
return Assets.images.score.points200k.keyName;
case Score.points_400k:
case Points.points_400k:
return Assets.images.score.points400k.keyName;
case Score.points_600k:
case Points.points_600k:
return Assets.images.score.points600k.keyName;
case Score.points_800k:
case Points.points_800k:
return Assets.images.score.points800k.keyName;
case Score.points_1m:
case Points.points_1m:
return Assets.images.score.points1m.keyName;
case Score.points_1m2:
case Points.points_1m2:
return Assets.images.score.points1m2.keyName;
case Score.points_2m:
case Points.points_2m:
return Assets.images.score.points2m.keyName;
case Score.points_3m:
case Points.points_3m:
return Assets.images.score.points3m.keyName;
case Score.points_4m:
case Points.points_4m:
return Assets.images.score.points4m.keyName;
case Score.points_5m:
case Points.points_5m:
return Assets.images.score.points5m.keyName;
case Score.points_6m:
case Points.points_6m:
return Assets.images.score.points6m.keyName;
}
}

@ -69,7 +69,7 @@ class BackboardGameOverGame extends AssetsGame
onSubmit: (initials) {
add(
components.ScoreComponent(
score: components.Score.values
points: components.Points.values
.firstWhere((element) => element.value == score),
position: Vector2(0, 50),
),

@ -17,8 +17,8 @@ void addBackboardStories(Dashbook dashbook) {
gameBuilder: (context) => BackboardGameOverGame(
context.listProperty(
'Score',
Score.values.first.value,
Score.values.map((score) => score.value).toList(),
Points.values.first.value,
Points.values.map((score) => score.value).toList(),
),
context.listProperty(
'Character',

@ -8,14 +8,7 @@ class ScoreGame extends AssetsGame with TapDetector {
ScoreGame()
: super(
imagesFileNames: [
Assets.images.score.points1m.keyName,
Assets.images.score.points1m2.keyName,
Assets.images.score.points2m.keyName,
Assets.images.score.points3m.keyName,
Assets.images.score.points4m.keyName,
Assets.images.score.points5k.keyName,
Assets.images.score.points5m.keyName,
Assets.images.score.points6m.keyName,
Assets.images.score.points10k.keyName,
Assets.images.score.points15k.keyName,
Assets.images.score.points20k.keyName,
@ -31,6 +24,13 @@ class ScoreGame extends AssetsGame with TapDetector {
Assets.images.score.points400k.keyName,
Assets.images.score.points600k.keyName,
Assets.images.score.points800k.keyName,
Assets.images.score.points1m.keyName,
Assets.images.score.points1m2.keyName,
Assets.images.score.points2m.keyName,
Assets.images.score.points3m.keyName,
Assets.images.score.points4m.keyName,
Assets.images.score.points5m.keyName,
Assets.images.score.points6m.keyName,
],
);
@ -50,12 +50,12 @@ class ScoreGame extends AssetsGame with TapDetector {
@override
void onTapUp(TapUpInfo info) {
final index = random.nextInt(Score.values.length);
final score = Score.values[index];
final index = random.nextInt(Points.values.length);
final score = Points.values[index];
add(
ScoreComponent(
score: score,
points: score,
position: info.eventPosition.game..multiply(Vector2(1, -1)),
),
);

@ -9,16 +9,10 @@ import 'package:pinball_components/pinball_components.dart';
import '../../helpers/helpers.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
TestWidgetsFlutterBinding.ensureInitialized();
final assets = [
Assets.images.score.points1m.keyName,
Assets.images.score.points1m2.keyName,
Assets.images.score.points2m.keyName,
Assets.images.score.points3m.keyName,
Assets.images.score.points4m.keyName,
Assets.images.score.points5k.keyName,
Assets.images.score.points5m.keyName,
Assets.images.score.points6m.keyName,
Assets.images.score.points10k.keyName,
Assets.images.score.points15k.keyName,
Assets.images.score.points20k.keyName,
@ -34,9 +28,46 @@ void main() {
Assets.images.score.points400k.keyName,
Assets.images.score.points600k.keyName,
Assets.images.score.points800k.keyName,
Assets.images.score.points1m.keyName,
Assets.images.score.points1m2.keyName,
Assets.images.score.points2m.keyName,
Assets.images.score.points3m.keyName,
Assets.images.score.points4m.keyName,
Assets.images.score.points5m.keyName,
Assets.images.score.points6m.keyName,
];
final flameTester = FlameTester(() => TestGame(assets));
group('ScoreText', () {
group('ScoreComponent', () {
group('renders correctly', () {
flameTester.testGameWidget(
'one million points',
setUp: (game, tester) async {
await game.images.loadAll(assets);
await game.ensureAdd(
ScoreComponent(
points: Points.points_1m,
position: Vector2.zero(),
),
);
game.camera
..followVector2(Vector2.zero())
..zoom = 8;
await tester.pump();
},
verify: (game, tester) async {
await expectLater(
find.byGame<TestGame>(),
matchesGoldenFile('golden/score/1m.png'),
);
},
);
});
});
group('Effects', () {
final flameTester = FlameTester(() => TestGame(assets));
flameTester.testGameWidget(
@ -46,7 +77,7 @@ void main() {
game.camera.followVector2(Vector2.zero());
await game.ensureAdd(
ScoreComponent(
score: Score.points_6m,
points: Points.points_6m,
position: Vector2.zero(),
),
);
@ -64,7 +95,7 @@ void main() {
game.camera.followVector2(Vector2.zero());
await game.ensureAdd(
ScoreComponent(
score: Score.points_6m,
points: Points.points_6m,
position: Vector2.zero(),
),
);
@ -78,8 +109,6 @@ void main() {
},
);
// TODO(ruimiguel): review why this test is failing after ScoreComponent
// refactor.
flameTester.testGameWidget(
'is removed once finished',
setUp: (game, tester) async {
@ -87,13 +116,14 @@ void main() {
game.camera.followVector2(Vector2.zero());
await game.ensureAdd(
ScoreComponent(
score: Score.points_6m,
points: Points.points_6m,
position: Vector2.zero(),
),
);
game.update(1);
game.update(0); // Ensure all component removals
await tester.pump();
},
verify: (game, tester) async {
expect(game.children.length, equals(0));

@ -83,7 +83,7 @@ void main() {
flameBlocTester.testGameWidget(
'emits Scored event with points',
setUp: (game, tester) async {
const points = Score.points_6m;
const points = Points.points_6m;
final scoringBehavior = ScoringBehavior(points: points);
await parent.add(scoringBehavior);
await game.ensureAdd(parent);
@ -102,7 +102,7 @@ void main() {
'plays score sound',
setUp: (game, tester) async {
const points = 20;
final scoringBehavior = ScoringBehavior(points: Score.points_6m);
final scoringBehavior = ScoringBehavior(points: Points.points_6m);
await parent.add(scoringBehavior);
await game.ensureAdd(parent);
@ -115,7 +115,7 @@ void main() {
flameBlocTester.testGameWidget(
"adds a ScoreText component at Ball's position with points",
setUp: (game, tester) async {
const points = Score.points_6m;
const points = Points.points_6m;
final scoringBehavior = ScoringBehavior(points: points);
await parent.add(scoringBehavior);
await game.ensureAdd(parent);
@ -126,7 +126,7 @@ void main() {
final scoreText = game.descendants().whereType<ScoreComponent>();
expect(scoreText.length, equals(1));
expect(
scoreText.first.score,
scoreText.first.points,
equals(points),
);
expect(

Loading…
Cancel
Save