From db29e5c7b1acc708201c6a40626c6e0d67a36e87 Mon Sep 17 00:00:00 2001 From: Allison Ryan <77211884+allisonryan0002@users.noreply.github.com> Date: Thu, 24 Mar 2022 15:13:42 -0500 Subject: [PATCH] refactor: position and dimension google letters (#93) * refactor: relative positions * chore: remove unused code * test: fix failing tests * refactor: position logic * refactor: position logic * chore: clean up bonus word * refactor: use relative positions * refactor: await adding letters * refactor: remove local variable * chore: remove empty line Co-authored-by: Alejandro Santiago --- lib/game/components/bonus_word.dart | 40 +++++++++++++++-------- lib/game/pinball_game.dart | 4 +-- test/game/components/bonus_word_test.dart | 2 +- 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/lib/game/components/bonus_word.dart b/lib/game/components/bonus_word.dart index 9dc9b0b0..e7f1626a 100644 --- a/lib/game/components/bonus_word.dart +++ b/lib/game/components/bonus_word.dart @@ -73,18 +73,32 @@ class BonusWord extends Component with BlocComponent { @override Future onLoad() async { await super.onLoad(); - final letters = GameBloc.bonusWord.split(''); - - for (var i = 0; i < letters.length; i++) { - unawaited( - add( - BonusLetter( - letter: letters[i], - index: i, - )..initialPosition = _position - Vector2(16 - (i * 6), -30), - ), + + final offsets = [ + Vector2(-12.92, -1.82), + Vector2(-8.33, 0.65), + Vector2(-2.88, 1.75), + ]; + offsets.addAll( + offsets.reversed + .map( + (offset) => Vector2(-offset.x, offset.y), + ) + .toList(), + ); + assert(offsets.length == GameBloc.bonusWord.length, 'Invalid positions'); + + final letters = []; + for (var i = 0; i < GameBloc.bonusWord.length; i++) { + letters.add( + BonusLetter( + letter: GameBloc.bonusWord[i], + index: i, + )..initialPosition = _position + offsets[i], ); } + + await addAll(letters); } } @@ -103,8 +117,8 @@ class BonusLetter extends BodyComponent paint = Paint()..color = _disableColor; } - /// The area size of this [BonusLetter]. - static final areaSize = Vector2.all(4); + /// The size of the [BonusLetter]. + static final size = Vector2.all(3.7); static const _activeColor = Colors.green; static const _disableColor = Colors.red; @@ -136,7 +150,7 @@ class BonusLetter extends BodyComponent @override Body createBody() { - final shape = CircleShape()..radius = areaSize.x / 2; + final shape = CircleShape()..radius = size.x / 2; final fixtureDef = FixtureDef(shape)..isSensor = true; diff --git a/lib/game/pinball_game.dart b/lib/game/pinball_game.dart index 681a6431..39cecb61 100644 --- a/lib/game/pinball_game.dart +++ b/lib/game/pinball_game.dart @@ -74,8 +74,8 @@ class PinballGame extends Forge2DGame await add( BonusWord( position: Vector2( - boardBounds.center.dx, - boardBounds.bottom + 10, + boardBounds.center.dx - 3.07, + boardBounds.center.dy - 2.4, ), ), ); diff --git a/test/game/components/bonus_word_test.dart b/test/game/components/bonus_word_test.dart index afd69935..17b702dc 100644 --- a/test/game/components/bonus_word_test.dart +++ b/test/game/components/bonus_word_test.dart @@ -187,7 +187,7 @@ void main() { final fixture = bonusLetter.body.fixtures[0]; expect(fixture.shape.shapeType, equals(ShapeType.circle)); - expect(fixture.shape.radius, equals(2)); + expect(fixture.shape.radius, equals(1.85)); }, ); });