From ff6656b0557d5389a44f516f35cd7c8b093f27d1 Mon Sep 17 00:00:00 2001 From: alestiago Date: Tue, 29 Mar 2022 17:19:06 +0100 Subject: [PATCH] feat: included FlutterSignPost --- lib/game/components/flutter_forest.dart | 3 ++ .../lib/src/components/components.dart | 1 + .../lib/src/components/flutter_sign_post.dart | 40 +++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 packages/pinball_components/lib/src/components/flutter_sign_post.dart diff --git a/lib/game/components/flutter_forest.dart b/lib/game/components/flutter_forest.dart index 31ea8c2b..6218eedb 100644 --- a/lib/game/components/flutter_forest.dart +++ b/lib/game/components/flutter_forest.dart @@ -43,6 +43,8 @@ class FlutterForest extends Component Future onLoad() async { gameRef.addContactCallback(DashNestBumperBallContactCallback()); + final signPost = FlutterSignPost()..initialPosition = Vector2(8.35, 58.3); + // TODO(alestiago): adjust positioning once sprites are added. final smallLeftNest = SmallDashNestBumper(id: 'small_left_nest') ..initialPosition = Vector2(8.95, 51.95); @@ -52,6 +54,7 @@ class FlutterForest extends Component ..initialPosition = Vector2(18.55, 59.35); await addAll([ + signPost, smallLeftNest, smallRightNest, bigNest, diff --git a/packages/pinball_components/lib/src/components/components.dart b/packages/pinball_components/lib/src/components/components.dart index a55f9566..81f44f6c 100644 --- a/packages/pinball_components/lib/src/components/components.dart +++ b/packages/pinball_components/lib/src/components/components.dart @@ -1,5 +1,6 @@ export 'ball.dart'; export 'fire_effect.dart'; +export 'flutter_sign_post.dart'; export 'initial_position.dart'; export 'layer.dart'; export 'shapes/shapes.dart'; diff --git a/packages/pinball_components/lib/src/components/flutter_sign_post.dart b/packages/pinball_components/lib/src/components/flutter_sign_post.dart new file mode 100644 index 00000000..a0582be7 --- /dev/null +++ b/packages/pinball_components/lib/src/components/flutter_sign_post.dart @@ -0,0 +1,40 @@ +import 'package:flame/components.dart'; +import 'package:flame_forge2d/flame_forge2d.dart'; +import 'package:flutter/material.dart'; +import 'package:pinball_components/pinball_components.dart'; + +/// {@template flutter_sign_post} +/// A sign, found at the FlutterForest. +/// {@endtemplate} +// TODO(alestiago): Revisit doc comment if FlutterForest is moved to package. +class FlutterSignPost extends BodyComponent with InitialPosition { + Future _loadSprite() async { + final sprite = await gameRef.loadSprite( + Assets.images.flutterSignPost.keyName, + ); + final spriteComponent = SpriteComponent( + sprite: sprite, + size: Vector2(8.8, 16.5), + anchor: Anchor.bottomCenter, + )..position = Vector2(0.65, 0.45); + await add(spriteComponent); + } + + @override + Future onLoad() async { + await super.onLoad(); + paint = Paint() + ..color = Colors.blue.withOpacity(0.5) + ..style = PaintingStyle.fill; + await _loadSprite(); + } + + @override + Body createBody() { + final shape = CircleShape()..radius = 0.25; + final fixtureDef = FixtureDef(shape); + final bodyDef = BodyDef()..position = initialPosition; + + return world.createBody(bodyDef)..createFixture(fixtureDef); + } +}