@ -81,7 +81,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 ) {
@ -94,9 +94,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 ( ) ;
}
}
@ -107,23 +108,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 ) ;
}
}
}
}
}
}