refactor: modified scoretext component to show sprite with the score

pull/276/head
RuiAlonso 3 years ago
parent 87055b9e3c
commit 4940afe62b

@ -1,21 +1,99 @@
// ignore_for_file: public_member_api_docs
import 'dart:async'; import 'dart:async';
import 'package:flame/components.dart'; import 'package:flame/components.dart';
import 'package:flame/effects.dart'; import 'package:flame/effects.dart';
import 'package:flutter/material.dart';
import 'package:pinball_components/pinball_components.dart'; import 'package:pinball_components/pinball_components.dart';
enum Score {
points_5k,
points_10k,
points_15k,
points_20k,
points_25k,
points_30k,
points_40k,
points_50k,
points_60k,
points_80k,
points_100k,
points_120k,
points_200k,
points_400k,
points_600k,
points_800k,
points_1m,
points_1m2,
points_2m,
points_3m,
points_4m,
points_5m,
points_6m,
}
extension ScoredX on Score {
int get value {
switch (this) {
case Score.points_5k:
return 5000;
case Score.points_10k:
return 10000;
case Score.points_15k:
return 15000;
case Score.points_20k:
return 20000;
case Score.points_25k:
return 25000;
case Score.points_30k:
return 30000;
case Score.points_40k:
return 40000;
case Score.points_50k:
return 50000;
case Score.points_60k:
return 60000;
case Score.points_80k:
return 80000;
case Score.points_100k:
return 100000;
case Score.points_120k:
return 120000;
case Score.points_200k:
return 200000;
case Score.points_400k:
return 400000;
case Score.points_600k:
return 600000;
case Score.points_800k:
return 800000;
case Score.points_1m:
return 1000000;
case Score.points_1m2:
return 1200000;
case Score.points_2m:
return 2000000;
case Score.points_3m:
return 3000000;
case Score.points_4m:
return 4000000;
case Score.points_5m:
return 5000000;
case Score.points_6m:
return 6000000;
}
}
}
/// {@template score_text} /// {@template score_text}
/// A [TextComponent] that spawns at a given [position] with a moving animation. /// A [TextComponent] that spawns at a given [position] with a moving animation.
/// {@endtemplate} /// {@endtemplate}
class ScoreText extends TextComponent { class ScoreText extends SpriteComponent with HasGameRef {
/// {@macro score_text} /// {@macro score_text}
ScoreText({ ScoreText({
required String text, required this.score,
required Vector2 position, required Vector2 position,
this.color = Colors.black,
}) : super( }) : super(
text: text,
position: position, position: position,
anchor: Anchor.center, anchor: Anchor.center,
priority: RenderPriority.scoreText, priority: RenderPriority.scoreText,
@ -23,18 +101,16 @@ class ScoreText extends TextComponent {
late final Effect _effect; late final Effect _effect;
/// The [text]'s [Color]. late Score score;
final Color color;
@override @override
Future<void> onLoad() async { Future<void> onLoad() async {
textRenderer = TextPaint( await super.onLoad();
style: TextStyle( final sprite = Sprite(
fontFamily: PinballFonts.pixeloidMono, gameRef.images.fromCache(score.asset),
color: color,
fontSize: 4,
),
); );
this.sprite = sprite;
size = sprite.originalSize / 55;
await add( await add(
_effect = MoveEffect.by( _effect = MoveEffect.by(
@ -53,3 +129,56 @@ class ScoreText extends TextComponent {
} }
} }
} }
extension on Score {
String get asset {
switch (this) {
case Score.points_5k:
return Assets.images.score.points5k.keyName;
case Score.points_10k:
return Assets.images.score.points10k.keyName;
case Score.points_15k:
return Assets.images.score.points15k.keyName;
case Score.points_20k:
return Assets.images.score.points20k.keyName;
case Score.points_25k:
return Assets.images.score.points25k.keyName;
case Score.points_30k:
return Assets.images.score.points30k.keyName;
case Score.points_40k:
return Assets.images.score.points40k.keyName;
case Score.points_50k:
return Assets.images.score.points50k.keyName;
case Score.points_60k:
return Assets.images.score.points60k.keyName;
case Score.points_80k:
return Assets.images.score.points80k.keyName;
case Score.points_100k:
return Assets.images.score.points100k.keyName;
case Score.points_120k:
return Assets.images.score.points120k.keyName;
case Score.points_200k:
return Assets.images.score.points200k.keyName;
case Score.points_400k:
return Assets.images.score.points400k.keyName;
case Score.points_600k:
return Assets.images.score.points600k.keyName;
case Score.points_800k:
return Assets.images.score.points800k.keyName;
case Score.points_1m:
return Assets.images.score.points1m.keyName;
case Score.points_1m2:
return Assets.images.score.points1m2.keyName;
case Score.points_2m:
return Assets.images.score.points2m.keyName;
case Score.points_3m:
return Assets.images.score.points3m.keyName;
case Score.points_4m:
return Assets.images.score.points4m.keyName;
case Score.points_5m:
return Assets.images.score.points5m.keyName;
case Score.points_6m:
return Assets.images.score.points6m.keyName;
}
}
}

Loading…
Cancel
Save