diff --git a/packages/pinball_components/lib/src/components/google_letter.dart b/packages/pinball_components/lib/src/components/google_letter.dart index 9231ccf2..733e2b17 100644 --- a/packages/pinball_components/lib/src/components/google_letter.dart +++ b/packages/pinball_components/lib/src/components/google_letter.dart @@ -4,38 +4,15 @@ import 'package:flame_forge2d/flame_forge2d.dart'; import 'package:flutter/material.dart'; import 'package:pinball_components/pinball_components.dart'; -enum GoogleLetterOrder { - first, - second, - third, - fourth, - fifth, -} - -extension on GoogleLetterOrder { - String get path { - switch (this) { - case GoogleLetterOrder.first: - return Assets.images.googleWord.letter1.keyName; - case GoogleLetterOrder.second: - return Assets.images.googleWord.letter2.keyName; - case GoogleLetterOrder.third: - return Assets.images.googleWord.letter3.keyName; - case GoogleLetterOrder.fourth: - return Assets.images.googleWord.letter4.keyName; - case GoogleLetterOrder.fifth: - return Assets.images.googleWord.letter5.keyName; - } - } -} - /// {@template google_letter} /// Circular sensor that represents "Google" letter. /// {@endtemplate} class GoogleLetter extends BodyComponent with InitialPosition { /// {@macro google_letter} - GoogleLetter(GoogleLetterOrder order) - : _sprite = _GoogleLetterSprite(order.path); + GoogleLetter(int index) + : _sprite = _GoogleLetterSprite( + _GoogleLetterSprite.spritePaths[index], + ); final _GoogleLetterSprite _sprite; @@ -70,6 +47,15 @@ class GoogleLetter extends BodyComponent with InitialPosition { class _GoogleLetterSprite extends SpriteComponent with HasGameRef { _GoogleLetterSprite(String path) : _path = path; + static final spritePaths = [ + Assets.images.googleWord.letter1.keyName, + Assets.images.googleWord.letter2.keyName, + Assets.images.googleWord.letter3.keyName, + Assets.images.googleWord.letter4.keyName, + Assets.images.googleWord.letter5.keyName, + Assets.images.googleWord.letter6.keyName, + ]; + final String _path; // TODO(alestiago): Correctly implement activate and deactivate once the diff --git a/packages/pinball_components/sandbox/lib/stories/google_word/google_letter_game.dart b/packages/pinball_components/sandbox/lib/stories/google_word/google_letter_game.dart index 75bc74e3..ad6e556b 100644 --- a/packages/pinball_components/sandbox/lib/stories/google_word/google_letter_game.dart +++ b/packages/pinball_components/sandbox/lib/stories/google_word/google_letter_game.dart @@ -20,7 +20,7 @@ class GoogleLetterGame extends BasicBallGame { addContactCallback(_BallGoogleLetterContactCallback()); camera.followVector2(Vector2.zero()); - await add(GoogleLetter(GoogleLetterOrder.first)); + await add(GoogleLetter(0)); await traceAllBodies(); } diff --git a/packages/pinball_components/test/src/components/google_letter_test.dart b/packages/pinball_components/test/src/components/google_letter_test.dart index eb43aa24..584582ae 100644 --- a/packages/pinball_components/test/src/components/google_letter_test.dart +++ b/packages/pinball_components/test/src/components/google_letter_test.dart @@ -13,9 +13,9 @@ void main() { group('Google Letter', () { flameTester.test( - 'first loads correctly', + '0th loads correctly', (game) async { - final googleLetter = GoogleLetter(GoogleLetterOrder.first); + final googleLetter = GoogleLetter(0); await game.ready(); await game.ensureAdd(googleLetter); @@ -24,9 +24,9 @@ void main() { ); flameTester.test( - 'second loads correctly', + '1st loads correctly', (game) async { - final googleLetter = GoogleLetter(GoogleLetterOrder.second); + final googleLetter = GoogleLetter(1); await game.ready(); await game.ensureAdd(googleLetter); @@ -35,9 +35,9 @@ void main() { ); flameTester.test( - 'third loads correctly', + '2nd loads correctly', (game) async { - final googleLetter = GoogleLetter(GoogleLetterOrder.third); + final googleLetter = GoogleLetter(2); await game.ready(); await game.ensureAdd(googleLetter); @@ -46,9 +46,9 @@ void main() { ); flameTester.test( - 'fourth loads correctly', + '3d loads correctly', (game) async { - final googleLetter = GoogleLetter(GoogleLetterOrder.fourth); + final googleLetter = GoogleLetter(3); await game.ready(); await game.ensureAdd(googleLetter); @@ -57,9 +57,9 @@ void main() { ); flameTester.test( - 'fifth loads correctly', + '4th loads correctly', (game) async { - final googleLetter = GoogleLetter(GoogleLetterOrder.fifth); + final googleLetter = GoogleLetter(4); await game.ready(); await game.ensureAdd(googleLetter); @@ -67,15 +67,31 @@ void main() { }, ); + flameTester.test( + '5th loads correctly', + (game) async { + final googleLetter = GoogleLetter(5); + await game.ready(); + await game.ensureAdd(googleLetter); + + expect(game.contains(googleLetter), isTrue); + }, + ); + + test('throws error when index out of range', () { + expect(() => GoogleLetter(-1), throwsA(isA())); + expect(() => GoogleLetter(6), throwsA(isA())); + }); + group('activate', () { flameTester.test('returns normally', (game) async { - final googleLetter = GoogleLetter(GoogleLetterOrder.first); + final googleLetter = GoogleLetter(0); await game.ensureAdd(googleLetter); await expectLater(googleLetter.activate, returnsNormally); }); flameTester.test('adds an Effect', (game) async { - final googleLetter = GoogleLetter(GoogleLetterOrder.first); + final googleLetter = GoogleLetter(0); await game.ensureAdd(googleLetter); await googleLetter.activate(); await game.ready(); @@ -89,13 +105,13 @@ void main() { group('deactivate', () { flameTester.test('returns normally', (game) async { - final googleLetter = GoogleLetter(GoogleLetterOrder.first); + final googleLetter = GoogleLetter(0); await game.ensureAdd(googleLetter); await expectLater(googleLetter.deactivate, returnsNormally); }); flameTester.test('adds an Effect', (game) async { - final googleLetter = GoogleLetter(GoogleLetterOrder.first); + final googleLetter = GoogleLetter(0); await game.ensureAdd(googleLetter); await googleLetter.activate(); await game.ready();