|
|
@ -77,7 +77,7 @@ class PinballGame extends PinballForge2DGame
|
|
|
|
await super.onLoad();
|
|
|
|
await super.onLoad();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BoardSide? focusedBoardSide;
|
|
|
|
final focusedBoardSide = <int, BoardSide>{};
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
@override
|
|
|
|
void onTapDown(int pointerId, TapDownInfo info) {
|
|
|
|
void onTapDown(int pointerId, TapDownInfo info) {
|
|
|
@ -90,9 +90,10 @@ class PinballGame extends PinballForge2DGame
|
|
|
|
descendants().whereType<Plunger>().single.pullFor(2);
|
|
|
|
descendants().whereType<Plunger>().single.pullFor(2);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
final leftSide = info.eventPosition.widget.x < canvasSize.x / 2;
|
|
|
|
final leftSide = info.eventPosition.widget.x < canvasSize.x / 2;
|
|
|
|
focusedBoardSide = leftSide ? BoardSide.left : BoardSide.right;
|
|
|
|
focusedBoardSide[pointerId] =
|
|
|
|
|
|
|
|
leftSide ? BoardSide.left : BoardSide.right;
|
|
|
|
final flippers = descendants().whereType<Flipper>().where((flipper) {
|
|
|
|
final flippers = descendants().whereType<Flipper>().where((flipper) {
|
|
|
|
return flipper.side == focusedBoardSide;
|
|
|
|
return flipper.side == focusedBoardSide[pointerId];
|
|
|
|
});
|
|
|
|
});
|
|
|
|
flippers.first.moveUp();
|
|
|
|
flippers.first.moveUp();
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -103,23 +104,23 @@ class PinballGame extends PinballForge2DGame
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
@override
|
|
|
|
void onTapUp(int pointerId, TapUpInfo info) {
|
|
|
|
void onTapUp(int pointerId, TapUpInfo info) {
|
|
|
|
_moveFlippersDown();
|
|
|
|
_moveFlippersDown(pointerId);
|
|
|
|
super.onTapUp(pointerId, info);
|
|
|
|
super.onTapUp(pointerId, info);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
@override
|
|
|
|
void onTapCancel(int pointerId) {
|
|
|
|
void onTapCancel(int pointerId) {
|
|
|
|
_moveFlippersDown();
|
|
|
|
_moveFlippersDown(pointerId);
|
|
|
|
super.onTapCancel(pointerId);
|
|
|
|
super.onTapCancel(pointerId);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void _moveFlippersDown() {
|
|
|
|
void _moveFlippersDown(int pointerId) {
|
|
|
|
if (focusedBoardSide != null) {
|
|
|
|
if (focusedBoardSide[pointerId] != null) {
|
|
|
|
final flippers = descendants().whereType<Flipper>().where((flipper) {
|
|
|
|
final flippers = descendants().whereType<Flipper>().where((flipper) {
|
|
|
|
return flipper.side == focusedBoardSide;
|
|
|
|
return flipper.side == focusedBoardSide[pointerId];
|
|
|
|
});
|
|
|
|
});
|
|
|
|
flippers.first.moveDown();
|
|
|
|
flippers.first.moveDown();
|
|
|
|
focusedBoardSide = null;
|
|
|
|
focusedBoardSide.remove(pointerId);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|