From b83c96d77f2bf0b23cb371ff0d3e1713234067dc Mon Sep 17 00:00:00 2001 From: RuiAlonso Date: Tue, 5 Apr 2022 15:39:05 +0200 Subject: [PATCH] feat: fixed plunger assets and position --- lib/game/components/plunger.dart | 26 ++++++++++++++++++-------- lib/game/pinball_game.dart | 3 +-- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/lib/game/components/plunger.dart b/lib/game/components/plunger.dart index 750bbd8b..7e0364ea 100644 --- a/lib/game/components/plunger.dart +++ b/lib/game/components/plunger.dart @@ -1,6 +1,5 @@ import 'package:flame/components.dart'; import 'package:flame_forge2d/flame_forge2d.dart'; -import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:pinball/gen/assets.gen.dart'; import 'package:pinball_components/pinball_components.dart' hide Assets; @@ -15,11 +14,7 @@ class Plunger extends BodyComponent with KeyboardHandler, InitialPosition { /// {@macro plunger} Plunger({ required this.compressionDistance, - }) : super( - priority: 5, - // TODO(allisonryan0002): remove paint after asset is added. - paint: Paint()..color = const Color.fromARGB(255, 241, 8, 8), - ); + }) : super(priority: 5); /// Distance the plunger can lower. final double compressionDistance; @@ -90,6 +85,7 @@ class Plunger extends BodyComponent with KeyboardHandler, InitialPosition { plunger: this, anchor: anchor, ); + world.createJoint(PrismaticJoint(jointDef)); } @@ -97,6 +93,9 @@ class Plunger extends BodyComponent with KeyboardHandler, InitialPosition { Future onLoad() async { await super.onLoad(); await _anchorToJoint(); + + renderBody = false; + await _loadSprite(); } @@ -108,9 +107,10 @@ class Plunger extends BodyComponent with KeyboardHandler, InitialPosition { await add( SpriteComponent( sprite: sprite, - size: sprite.originalSize / 10, + size: Vector2(5.5, 40), anchor: Anchor.center, - position: Vector2(25.65, 0), + position: Vector2(2, 19), + angle: -0.035, ), ); } @@ -129,6 +129,16 @@ class PlungerAnchor extends JointAnchor { plunger.body.position.y - plunger.compressionDistance, ); } + + @override + Body createBody() { + final shape = CircleShape()..radius = 0.5; + final fixtureDef = FixtureDef(shape); + final bodyDef = BodyDef() + ..position = initialPosition + ..type = BodyType.static; + return world.createBody(bodyDef)..createFixture(fixtureDef); + } } /// {@template plunger_anchor_prismatic_joint_def} diff --git a/lib/game/pinball_game.dart b/lib/game/pinball_game.dart index 6f4a0c81..4f901079 100644 --- a/lib/game/pinball_game.dart +++ b/lib/game/pinball_game.dart @@ -76,8 +76,7 @@ class PinballGame extends Forge2DGame Future _addPlunger() async { plunger = Plunger(compressionDistance: 29) - ..initialPosition = - BoardDimensions.bounds.center.toVector2() + Vector2(41.5, -49); + ..initialPosition = Vector2(38, -19); await add(plunger); }