From e6617d390754d15e6aace1f9d12632fbd8deed22 Mon Sep 17 00:00:00 2001 From: alestiago Date: Thu, 7 Apr 2022 13:57:15 +0100 Subject: [PATCH] refactor: defined FlipperSprite --- .../lib/src/components/flipper.dart | 40 ++++++++++--------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/packages/pinball_components/lib/src/components/flipper.dart b/packages/pinball_components/lib/src/components/flipper.dart index 49bd6d6f..4921d9e4 100644 --- a/packages/pinball_components/lib/src/components/flipper.dart +++ b/packages/pinball_components/lib/src/components/flipper.dart @@ -43,20 +43,7 @@ class Flipper extends BodyComponent with KeyboardHandler, InitialPosition { } /// Loads the sprite that renders with the [Flipper]. - Future _loadSprite() async { - final sprite = await gameRef.loadSprite( - (side.isLeft) - ? Assets.images.flipper.left.keyName - : Assets.images.flipper.right.keyName, - ); - final spriteComponent = SpriteComponent( - sprite: sprite, - size: size, - anchor: Anchor.center, - ); - - await add(spriteComponent); - } + Future _loadSprite() async {} /// Anchors the [Flipper] to the [RevoluteJoint] that controls its arc motion. Future _anchorToJoint() async { @@ -129,10 +116,8 @@ class Flipper extends BodyComponent with KeyboardHandler, InitialPosition { await super.onLoad(); renderBody = false; - await Future.wait([ - _loadSprite(), - _anchorToJoint(), - ]); + await _anchorToJoint(); + await add(_FlipperSprite(side: side)); } @override @@ -148,6 +133,25 @@ class Flipper extends BodyComponent with KeyboardHandler, InitialPosition { } } +class _FlipperSprite extends SpriteComponent with HasGameRef { + _FlipperSprite({required BoardSide side}) : _side = side; + + final BoardSide _side; + + @override + Future onLoad() async { + await super.onLoad(); + final sprite = await gameRef.loadSprite( + (_side.isLeft) + ? Assets.images.flipper.left.keyName + : Assets.images.flipper.right.keyName, + ); + this.sprite = sprite; + size = Flipper.size; + anchor = Anchor.center; + } +} + /// {@template flipper_anchor} /// [JointAnchor] positioned at the end of a [Flipper]. ///