feat: added paths to pinball game

pull/40/head
RuiAlonso 4 years ago
parent 70f2af6ff0
commit 06f17d9d8c

@ -1,11 +1,13 @@
import 'dart:async'; import 'dart:async';
import 'dart:ui';
import 'dart:math' as math;
import 'package:flame/input.dart'; import 'package:flame/input.dart';
import 'package:flame_bloc/flame_bloc.dart'; import 'package:flame_bloc/flame_bloc.dart';
import 'package:flame_forge2d/flame_forge2d.dart'; import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:pinball/game/game.dart'; import 'package:pinball/game/game.dart';
class PinballGame extends Forge2DGame class PinballGame extends Forge2DGame
with FlameBloc, HasKeyboardHandlerComponents { with FlameBloc, HasKeyboardHandlerComponents, TapDetector {
// TODO(erickzanardo): Change to the plumber position // TODO(erickzanardo): Change to the plumber position
late final ballStartingPosition = screenToWorld( late final ballStartingPosition = screenToWorld(
Vector2( Vector2(
@ -18,6 +20,29 @@ class PinballGame extends Forge2DGame
// TODO(alestiago): Change to the design position. // TODO(alestiago): Change to the design position.
late final flippersPosition = ballStartingPosition - Vector2(0, 5); late final flippersPosition = ballStartingPosition - Vector2(0, 5);
late final launcherRampPosition = screenToWorld(
Vector2(
camera.viewport.effectiveSize.x / 2,
camera.viewport.effectiveSize.y / 2,
) +
Vector2(369, -155),
);
late final jetpackRampPosition = screenToWorld(
Vector2(
camera.viewport.effectiveSize.x / 2,
camera.viewport.effectiveSize.y / 2,
) +
Vector2(-150, -150),
);
late final sparkyRampPosition = screenToWorld(
Vector2(
camera.viewport.effectiveSize.x / 2,
camera.viewport.effectiveSize.y / 2,
) +
Vector2(80, -100),
);
@override @override
void onAttach() { void onAttach() {
super.onAttach(); super.onAttach();
@ -36,6 +61,8 @@ class PinballGame extends Forge2DGame
addContactCallback(BottomWallBallContactCallback()); addContactCallback(BottomWallBallContactCallback());
unawaited(_addFlippers()); unawaited(_addFlippers());
unawaited(_addPaths());
} }
Future<void> _addFlippers() async { Future<void> _addFlippers() async {
@ -97,4 +124,39 @@ class PinballGame extends Forge2DGame
), ),
); );
} }
Future<void> _addPaths() async {
await add(
Pathway.straight(
color: const Color.fromARGB(255, 34, 255, 0),
position: launcherRampPosition,
start: Vector2(0, 0),
end: Vector2(0, 600),
width: 80,
),
);
await add(
JetpackRamp(
position: jetpackRampPosition,
),
);
await add(
SparkyRamp(
position: sparkyRampPosition,
),
);
}
@override
void onTapDown(TapDownInfo details) {
super.onTapDown(details);
final tapPosition = details.eventPosition.game;
add(
Ball(
position: tapPosition,
),
);
}
} }

Loading…
Cancel
Save