|
18 | 18 | import de.amr.pacmanfx.ui.dashboard.InfoBox;
|
19 | 19 | import de.amr.pacmanfx.uilib.Ufx;
|
20 | 20 | import javafx.beans.binding.Bindings;
|
21 |
| -import javafx.beans.value.ObservableValue; |
22 | 21 | import javafx.scene.Scene;
|
23 | 22 | import javafx.scene.SubScene;
|
24 | 23 | import javafx.scene.canvas.Canvas;
|
@@ -98,7 +97,8 @@ public PlayView(GameUI ui, Scene parentScene) {
|
98 | 97 | //TODO what is the cleanest solution to hide the context menu in all needed cases?
|
99 | 98 | setOnContextMenuRequested(this::handleContextMenuRequest);
|
100 | 99 | // game scene changes: hide it
|
101 |
| - ui.propertyCurrentGameScene().addListener(this::handleGameSceneChange); |
| 100 | + ui.propertyCurrentGameScene().addListener( |
| 101 | + (obs, oldGameScene, newGameScene) -> handleGameSceneChange(parentScene, newGameScene)); |
102 | 102 | // any other mouse button clicked: hide it
|
103 | 103 | parentScene.addEventFilter(MouseEvent.MOUSE_PRESSED, e -> {
|
104 | 104 | if (e.getButton() == MouseButton.PRIMARY) {
|
@@ -128,8 +128,8 @@ public PlayView(GameUI ui, Scene parentScene) {
|
128 | 128 | actionBindings.use(ACTION_TOGGLE_PLAY_SCENE_2D_3D, DEFAULT_ACTION_BINDINGS);
|
129 | 129 | }
|
130 | 130 |
|
131 |
| - private void handleGameSceneChange(ObservableValue<? extends GameScene> obs, GameScene oldScene, GameScene newScene) { |
132 |
| - if (newScene != null) embedGameScene(newScene); |
| 131 | + private void handleGameSceneChange(Scene parentScene, GameScene newScene) { |
| 132 | + if (newScene != null) embedGameScene(parentScene, newScene); |
133 | 133 | contextMenu.hide();
|
134 | 134 | }
|
135 | 135 |
|
@@ -219,7 +219,7 @@ public void onGameEvent(GameEvent gameEvent) {
|
219 | 219 | miniGameView.onLevelCreated(ui, gameLevel);
|
220 | 220 |
|
221 | 221 | // size of game scene might have changed, so re-embed
|
222 |
| - ui.currentGameScene().ifPresent(this::embedGameScene); |
| 222 | + ui.currentGameScene().ifPresent(gameScene -> embedGameScene(parentScene, gameScene)); |
223 | 223 | }
|
224 | 224 | case GAME_STATE_CHANGED -> {
|
225 | 225 | if (ui.theGameContext().theGameState() == GameState.LEVEL_COMPLETE) {
|
@@ -257,7 +257,7 @@ public void updateGameScene(boolean reloadCurrent) {
|
257 | 257 | currentGameScene.end();
|
258 | 258 | Logger.info("Game scene ended: {}", currentGameScene.displayName());
|
259 | 259 | }
|
260 |
| - embedGameScene(nextGameScene); |
| 260 | + embedGameScene(parentScene, nextGameScene); |
261 | 261 | nextGameScene.init();
|
262 | 262 | Logger.info("Game scene initialized: {}", nextGameScene.displayName());
|
263 | 263 |
|
@@ -286,7 +286,7 @@ public void quitCurrentGameScene() {
|
286 | 286 | });
|
287 | 287 | }
|
288 | 288 |
|
289 |
| - private void embedGameScene(GameScene gameScene) { |
| 289 | + private void embedGameScene(Scene parentScene, GameScene gameScene) { |
290 | 290 | if (gameScene.optSubScene().isPresent()) {
|
291 | 291 | SubScene subScene = gameScene.optSubScene().get();
|
292 | 292 | subScene.widthProperty().bind(parentScene.widthProperty());
|
@@ -334,7 +334,8 @@ private void configureCanvasContainer() {
|
334 | 334 | // 28*TS x 36*TS = Arcade map size in pixels
|
335 | 335 | canvasContainer.setUnscaledCanvasSize(28 *TS, 36 * TS);
|
336 | 336 | canvasContainer.setBorderColor(Color.rgb(222, 222, 255));
|
337 |
| - canvasContainer.roundedBorderProperty().addListener((py, ov, nv) -> ui.currentGameScene().ifPresent(this::embedGameScene)); |
| 337 | + |
| 338 | + //canvasContainer.roundedBorderProperty().addListener((py, ov, nv) -> ui.currentGameScene().ifPresent(this::embedGameScene)); |
338 | 339 | }
|
339 | 340 |
|
340 | 341 | private void configurePropertyBindings() {
|
|
0 commit comments