diff --git a/packages/pinball_components/lib/src/components/components.dart b/packages/pinball_components/lib/src/components/components.dart index 2781030e..c7e08656 100644 --- a/packages/pinball_components/lib/src/components/components.dart +++ b/packages/pinball_components/lib/src/components/components.dart @@ -25,7 +25,7 @@ export 'multiplier/multiplier.dart'; export 'plunger.dart'; export 'render_priority.dart'; export 'rocket.dart'; -export 'score_text.dart'; +export 'score_component.dart'; export 'shapes/shapes.dart'; export 'signpost.dart'; export 'slingshot.dart'; diff --git a/packages/pinball_components/lib/src/components/score_text.dart b/packages/pinball_components/lib/src/components/score_text.dart deleted file mode 100644 index 9fca353f..00000000 --- a/packages/pinball_components/lib/src/components/score_text.dart +++ /dev/null @@ -1,184 +0,0 @@ -// ignore_for_file: public_member_api_docs - -import 'dart:async'; - -import 'package:flame/components.dart'; -import 'package:flame/effects.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} -/// A [TextComponent] that spawns at a given [position] with a moving animation. -/// {@endtemplate} -class ScoreText extends SpriteComponent with HasGameRef { - /// {@macro score_text} - ScoreText({ - required this.score, - required Vector2 position, - }) : super( - position: position, - anchor: Anchor.center, - priority: RenderPriority.scoreText, - ); - - late final Effect _effect; - - late Score score; - - @override - Future onLoad() async { - await super.onLoad(); - final sprite = Sprite( - gameRef.images.fromCache(score.asset), - ); - this.sprite = sprite; - size = sprite.originalSize / 55; - - await add( - _effect = MoveEffect.by( - Vector2(0, -5), - EffectController(duration: 1), - ), - ); - } - - @override - void update(double dt) { - super.update(dt); - - if (_effect.controller.completed) { - removeFromParent(); - } - } -} - -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; - } - } -}