refactor: passed theme instead of game

pull/111/head
alestiago 4 years ago
parent 466c1ce2a2
commit 94d39d092d

@ -5,6 +5,7 @@ import 'package:flame_forge2d/forge2d_game.dart';
import 'package:pinball/flame/flame.dart'; import 'package:pinball/flame/flame.dart';
import 'package:pinball/game/game.dart'; import 'package:pinball/game/game.dart';
import 'package:pinball_components/pinball_components.dart'; import 'package:pinball_components/pinball_components.dart';
import 'package:pinball_theme/pinball_theme.dart';
/// {@template controlled_ball} /// {@template controlled_ball}
/// A [Ball] with a [BallController] attached. /// A [Ball] with a [BallController] attached.
@ -21,12 +22,11 @@ abstract class _ControlledBall<T extends BallController> extends Ball
/// and a new [PlungerBall] is spawned if it's possible. /// and a new [PlungerBall] is spawned if it's possible.
/// {@endtemplate} /// {@endtemplate}
class PlungerBall extends _ControlledBall<PlungerBallController> { class PlungerBall extends _ControlledBall<PlungerBallController> {
// TODO(alestiago): Work on a better solution than passing the game.
/// {@macro plunger_ball} /// {@macro plunger_ball}
PlungerBall( PlungerBall({
PinballGame game, { required PinballTheme theme,
required Plunger plunger, required Plunger plunger,
}) : super(baseColor: game.theme.characterTheme.ballColor) { }) : super(baseColor: theme.characterTheme.ballColor) {
// TODO(alestiago): Dicuss if this is a good idea. // TODO(alestiago): Dicuss if this is a good idea.
initialPosition = Vector2( initialPosition = Vector2(
plunger.body.position.x, plunger.body.position.x,
@ -45,8 +45,9 @@ class PlungerBall extends _ControlledBall<PlungerBallController> {
/// {@endtemplate} /// {@endtemplate}
class BonusBall extends _ControlledBall<BallController> { class BonusBall extends _ControlledBall<BallController> {
/// {@macro bonus_ball} /// {@macro bonus_ball}
BonusBall(PinballGame game) BonusBall({
: super(baseColor: game.theme.characterTheme.ballColor); required PinballTheme theme,
}) : super(baseColor: theme.characterTheme.ballColor);
@override @override
BallController controllerBuilder() => BallController(this); BallController controllerBuilder() => BallController(this);

@ -33,7 +33,9 @@ class FlutterForest extends Component
super.onNewState(state); super.onNewState(state);
add( add(
BonusBall(gameRef)..initialPosition = Vector2(17.2, 52.7), BonusBall(
theme: gameRef.theme,
)..initialPosition = Vector2(17.2, 52.7),
); );
} }

@ -101,7 +101,10 @@ class PinballGame extends Forge2DGame
} }
void spawnBall() { void spawnBall() {
final ball = PlungerBall(this, plunger: plunger); final ball = PlungerBall(
theme: theme,
plunger: plunger,
);
add(ball); add(ball);
} }
} }

Loading…
Cancel
Save