From 2732a89da61bf5685cd78a0183a0b82842318138 Mon Sep 17 00:00:00 2001 From: Cedric Beck Date: Sun, 1 Dec 2024 17:47:04 +0100 Subject: [PATCH] fixed error with SelectObjectOutliner --- .../mdga/client/NotificationSynchronizer.java | 5 +- .../board/Outline/SelectObjectOutliner.java | 46 +++++++++++-------- .../pp/mdga/client/board/OutlineControl.java | 6 +-- .../java/pp/mdga/client/gui/CardControl.java | 3 -- .../java/pp/mdga/client/gui/CardLayer.java | 4 +- .../java/pp/mdga/client/view/GameView.java | 26 +++++++++++ .../notification/AcquireCardNotification.java | 13 +----- 7 files changed, 60 insertions(+), 43 deletions(-) diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/NotificationSynchronizer.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/NotificationSynchronizer.java index be112418..e0314c46 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/NotificationSynchronizer.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/NotificationSynchronizer.java @@ -66,7 +66,6 @@ private void handleLobby(Notification notification) { //lobbyView.setReady(lobbyReadyNotification.getColor(), lobbyReadyNotification.isReady()): } else if (notification instanceof GameNotification n) { app.enter(MdgaState.GAME); - ((GameView) app.getView()).setOwnColor(n.getOwnColor()); } else { throw new RuntimeException("notification not expected: " + notification.toString()); } @@ -77,8 +76,8 @@ private void handleGame(Notification notification) { GuiHandler guiHandler = gameView.getGuiHandler(); BoardHandler boardHandler = gameView.getBoardHandler(); - if (notification instanceof AcquireCardNotification) { - // Handle AcquireCardNotification + if (notification instanceof AcquireCardNotification n) { + guiHandler.addCard(n.getBonusCard()); } else if (notification instanceof ActivePlayerNotification n) { gameView.getGuiHandler().setActivePlayer(n.getColor()); } else if (notification instanceof CeremonyNotification ceremonyNotification) { diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/board/Outline/SelectObjectOutliner.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/Outline/SelectObjectOutliner.java index 1a20e865..95e0e4eb 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/board/Outline/SelectObjectOutliner.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/Outline/SelectObjectOutliner.java @@ -7,6 +7,7 @@ import com.jme3.renderer.RenderManager; import com.jme3.renderer.ViewPort; import com.jme3.scene.Spatial; +import pp.mdga.client.MdgaApp; public class SelectObjectOutliner { @@ -19,14 +20,16 @@ public class SelectObjectOutliner { private ViewPort outlineViewport = null; // private OutlineFilter outlineFilter = null; private OutlineProFilter outlineFilter = null; + private final MdgaApp app; - public SelectObjectOutliner(int width, FilterPostProcessor fpp, RenderManager renderManager, AssetManager assetManager, Camera cam) { + public SelectObjectOutliner(int width, FilterPostProcessor fpp, RenderManager renderManager, AssetManager assetManager, Camera cam, MdgaApp app) { this.selected = false; this.fpp = fpp; this.renderManager = renderManager; this.assetManager = assetManager; this.cam = cam; this.width = width; + this.app = app; } public void deselect(Spatial model) { @@ -51,30 +54,35 @@ public void select(Spatial model, ColorRGBA color, int width) { } private void hideOutlineFilterEffect(Spatial model) { - outlineFilter.setEnabled(false); - outlineFilter.getOutlinePreFilter().setEnabled(false); - fpp.removeFilter(outlineFilter); - outlineViewport.detachScene(model); - outlineViewport.clearProcessors(); - renderManager.removePreView(outlineViewport); - outlineViewport = null; + app.enqueue(() -> { + outlineFilter.setEnabled(false); + outlineFilter.getOutlinePreFilter().setEnabled(false); + fpp.removeFilter(outlineFilter); + outlineViewport.detachScene(model); + outlineViewport.clearProcessors(); + renderManager.removePreView(outlineViewport); + outlineViewport = null; + return null; + }); } private void showOutlineFilterEffect(Spatial model, int width, ColorRGBA color) { - outlineViewport = renderManager.createPreView("outlineViewport", cam); - FilterPostProcessor outlineFpp = new FilterPostProcessor(assetManager); + app.enqueue(() -> { + outlineViewport = renderManager.createPreView("outlineViewport", cam); + FilterPostProcessor outlineFpp = new FilterPostProcessor(assetManager); - OutlinePreFilter outlinePreFilter = new OutlinePreFilter(); - outlineFpp.addFilter(outlinePreFilter); + OutlinePreFilter outlinePreFilter = new OutlinePreFilter(); + outlineFpp.addFilter(outlinePreFilter); - outlineViewport.attachScene(model); - outlineViewport.addProcessor(outlineFpp); + outlineViewport.attachScene(model); + outlineViewport.addProcessor(outlineFpp); -// outlineFilter = new OutlineFilter(outlinePreFilter); - outlineFilter = new OutlineProFilter(outlinePreFilter); - outlineFilter.setOutlineColor(color); - outlineFilter.setOutlineWidth(width); + outlineFilter = new OutlineProFilter(outlinePreFilter); + outlineFilter.setOutlineColor(color); + outlineFilter.setOutlineWidth(width); - fpp.addFilter(outlineFilter); + fpp.addFilter(outlineFilter); + return null; + }); } } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/board/OutlineControl.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/OutlineControl.java index 385d1007..1e0f0501 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/board/OutlineControl.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/OutlineControl.java @@ -18,17 +18,17 @@ public class OutlineControl extends AbstractControl { public OutlineControl(MdgaApp app, FilterPostProcessor fpp){ this.app = app; - outlineOwn = new SelectObjectOutliner(THICKNESS_DEFAULT, fpp, app.getRenderManager(), app.getAssetManager(), app.getCamera()); + outlineOwn = new SelectObjectOutliner(THICKNESS_DEFAULT, fpp, app.getRenderManager(), app.getAssetManager(), app.getCamera(), app); } public OutlineControl(MdgaApp app, FilterPostProcessor fpp, Camera cam){ this.app = app; - outlineOwn = new SelectObjectOutliner(THICKNESS_DEFAULT, fpp, app.getRenderManager(), app.getAssetManager(), cam); + outlineOwn = new SelectObjectOutliner(THICKNESS_DEFAULT, fpp, app.getRenderManager(), app.getAssetManager(), cam, app); } public OutlineControl(MdgaApp app, FilterPostProcessor fpp, Camera cam, int thickness){ this.app = app; - outlineOwn = new SelectObjectOutliner(thickness, fpp, app.getRenderManager(), app.getAssetManager(), cam); + outlineOwn = new SelectObjectOutliner(thickness, fpp, app.getRenderManager(), app.getAssetManager(), cam, app); } public void outline(ColorRGBA color){ diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/CardControl.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/CardControl.java index af62cba8..f07e7e69 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/CardControl.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/CardControl.java @@ -84,9 +84,6 @@ public Node getRoot() { public void initSpatial(){ } - - - public void outline(){ super.outline(OUTLINE_COLOR); } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/CardLayer.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/CardLayer.java index 655adc24..71fd625a 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/CardLayer.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/CardLayer.java @@ -88,8 +88,6 @@ public void render(RenderManager rm) { @Override public void update( float tpf ) { - - if (init && !cardBuffer.isEmpty()) { for(Spatial spatial : cardBuffer){ root.attachChild(spatial); @@ -114,4 +112,4 @@ public Camera getOverlayCam(){ public Node getRootNode(){ return root; } -} \ No newline at end of file +} diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/view/GameView.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/view/GameView.java index e4236576..a84fe762 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/view/GameView.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/view/GameView.java @@ -9,9 +9,14 @@ import pp.mdga.client.button.ButtonLeft; import pp.mdga.client.button.ButtonRight; import pp.mdga.client.gui.GuiHandler; +import pp.mdga.game.BonusCard; import pp.mdga.game.Color; +import pp.mdga.notification.AcquireCardNotification; import pp.mdga.notification.GameNotification; +import pp.mdga.notification.MovePieceNotification; import pp.mdga.notification.PlayerInGameNotification; +import pp.mdga.notification.SelectableCardsNotification; +import pp.mdga.notification.SelectableMoveNotification; import java.util.ArrayList; import java.util.List; @@ -44,6 +49,27 @@ public GameView(MdgaApp app) { this.boardHandler = new BoardHandler(app, rootNode, fpp); guiHandler = new GuiHandler(app, guiNode, ownColor); + + //Test + setOwnColor(Color.AIRFORCE); + + List uuid1 = new ArrayList<>(); + UUID p1 = UUID.randomUUID(); + UUID p2 = UUID.randomUUID(); + uuid1.add(p1); + uuid1.add(p2); + uuid1.add(UUID.randomUUID()); + uuid1.add(UUID.randomUUID()); + + + app.getNotificationSynchronizer().addTestNotification(new PlayerInGameNotification(Color.AIRFORCE, uuid1, "Cedric")); + app.getNotificationSynchronizer().addTestNotification(new MovePieceNotification(p1, 0, true)); + app.getNotificationSynchronizer().addTestNotification(new SelectableMoveNotification(List.of(p1), List.of(4), List.of(false))); + app.getNotificationSynchronizer().addTestNotification(new AcquireCardNotification(BonusCard.SHIELD)); + app.getNotificationSynchronizer().addTestNotification(new SelectableCardsNotification(List.of(BonusCard.SHIELD))); + + + } @Override diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/notification/AcquireCardNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/AcquireCardNotification.java index 5a4afff7..fdff397a 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/notification/AcquireCardNotification.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/notification/AcquireCardNotification.java @@ -9,24 +9,13 @@ */ public class AcquireCardNotification extends Notification{ - private UUID cardId; private BonusCard bonusCard; /** * Constructor. - * @param cardId The id of the card that was acquired. */ - public AcquireCardNotification(BonusCard bonusCard, UUID cardId) { + public AcquireCardNotification(BonusCard bonusCard) { this.bonusCard = bonusCard; - this.cardId = cardId; - } - - /** - * Get the id of the card that was acquired. - * @return The id of the card that was acquired. - */ - public UUID getCardId() { - return cardId; } public BonusCard getBonusCard() {