diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/MdgaApp.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/MdgaApp.java index 9efceb3e..8c3cd992 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/MdgaApp.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/MdgaApp.java @@ -119,4 +119,6 @@ public ModelSyncronizer getModelSyncronizer() { } public InputSynchronizer getInputSyncronizer() { return inputSynchronizer; } + + public NotificationSynchronizer getNotificationSynchronizer() { return notificationSynchronizer; } } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/ModelSyncronizer.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/ModelSyncronizer.java index 83515559..fb1c2cfd 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/ModelSyncronizer.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/ModelSyncronizer.java @@ -1,76 +1,98 @@ package pp.mdga.client; import pp.mdga.client.view.CeremonyView; +import pp.mdga.client.view.GameView; import pp.mdga.client.view.LobbyView; +import pp.mdga.game.BonusCard; import pp.mdga.game.Color; +import pp.mdga.notification.AcquireCardNotification; +import pp.mdga.notification.DrawCardNotification; +import pp.mdga.notification.TskSelectNotification; + +import java.util.UUID; +import java.util.logging.Level; +import java.util.logging.Logger; public class ModelSyncronizer { + private static final Logger LOGGER = Logger.getLogger(ModelSyncronizer.class.getName()); private MdgaApp app; ModelSyncronizer(MdgaApp app) { this.app = app; } - public void selectPiece() { - //TODO call from somewhere - System.out.println("selectPiece"); + public void animationEnd() { + } - public void selectCard() { - //TODO call from somewhere - System.out.println("selectCard"); + public void selectSwap(UUID a, UUID b) { + // TODO call from somewhere + LOGGER.log(Level.INFO, "selectPiece"); + } + + public void selectPiece(UUID piece) { + // TODO call from somewhere + LOGGER.log(Level.INFO, "selectPiece"); + } + + public void selectCard(BonusCard card) { + // TODO call from somewhere + LOGGER.log(Level.INFO, "selectCard"); + } + + public void confirm() { + LOGGER.log(Level.INFO, "confirm"); } public void selectTsk(Color color) { - //TODO call from somewhere - System.out.println("selectTsk: " + color); + // TODO call from somewhere + LOGGER.log(Level.INFO, "selectTsk: {0}", color); LobbyView view = (LobbyView) app.getView(); view.setTaken(color, true, true, "OwnPlayerName"); } public void unselectTsk() { - //TODO call from somewhere - System.out.println("unselectTsk"); + // TODO call from somewhere + LOGGER.log(Level.INFO, "unselectTsk"); } public void rolledDice() { - //TODO call from somewhere - System.out.println("rolledDice"); + // TODO call from somewhere + LOGGER.log(Level.INFO, "rolledDice"); } public void setName(String name) { - //TODO call from somewhere - System.out.println("setName:" + name); + // TODO call from somewhere + LOGGER.log(Level.INFO, "setName: {0}", name); } public void setReady() { - //TODO call from somewhere - System.out.println("setReady"); - app.enter(MdgaState.GAME); + LOGGER.log(Level.INFO, "setReady"); + enter(MdgaState.GAME); } public void setHost(int port) { - //TODO call from somewhere - System.out.println("setHost: " + port); - app.enter(MdgaState.LOBBY); + // TODO call from somewhere + LOGGER.log(Level.INFO, "setHost: {0}", port); + enter(MdgaState.LOBBY); } public void setJoin(String ip, int port) { - //TODO call from somewhere - System.out.println("setJoin"); - app.enter(MdgaState.LOBBY); + // TODO call from somewhere + LOGGER.log(Level.INFO, "setJoin with IP: {0}, Port: {1}", new Object[]{ip, port}); + enter(MdgaState.LOBBY); } public void leave() { - System.out.println("leave"); - app.enter(MdgaState.MAIN); + LOGGER.log(Level.INFO, "leave"); + enter(MdgaState.MAIN); } public void enter(MdgaState state) { - System.out.println("enter:" + state); + LOGGER.log(Level.INFO, "enter: {0}", state); app.enter(state); - if(state == MdgaState.CEREMONY) { + if (state == MdgaState.CEREMONY) { CeremonyView ceremonyView = (CeremonyView) app.getView(); ceremonyView.addCeremonyParticipant(Color.AIRFORCE, 1, "ugidffdg"); ceremonyView.addCeremonyParticipant(Color.ARMY, 2, "ugidffdg"); @@ -83,5 +105,19 @@ public void enter(MdgaState state) { ceremonyView.addStatisticsRow("player sdgsd", 1, 2, 3, 4, 5, 6); ceremonyView.addStatisticsRow("Gesamt", 1, 2, 3, 4, 5, 6); } + + if (state == MdgaState.GAME) { + GameView gameView = (GameView) app.getView(); + + app.getNotificationSynchronizer().addTestNotification(new DrawCardNotification(Color.AIRFORCE, BonusCard.SHIELD)); + } + + if (state == MdgaState.LOBBY) { + LobbyView lobbyView = (LobbyView) app.getView(); + + app.getNotificationSynchronizer().addTestNotification(new TskSelectNotification(Color.CYBER, "blablabupp", false)); + app.getNotificationSynchronizer().addTestNotification(new TskSelectNotification(Color.ARMY, "Spieler 2", false)); + lobbyView.setReady(Color.ARMY, true); + } } } 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 0ae3da2e..25cd9f56 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 @@ -57,12 +57,12 @@ private void handleMain(Notification notification) { private void handleLobby(Notification notification) { LobbyView lobbyView = (LobbyView) app.getView(); - if (notification instanceof TskSelectNotification) { - TskSelectNotification n = (TskSelectNotification)notification; - lobbyView.setTaken(n.getColor(), true, n.isSelf(), n.getName()); - } else if (notification instanceof TskUnselectNotification) { - TskUnselectNotification n = (TskUnselectNotification)notification; - lobbyView.setTaken(n.getColor(), false, false, null); + if (notification instanceof TskSelectNotification tskSelectNotification) { + lobbyView.setTaken(tskSelectNotification.getColor(), true, tskSelectNotification.isSelf(), tskSelectNotification.getName()); + } else if (notification instanceof TskUnselectNotification tskUnselectNotification) { + lobbyView.setTaken(tskUnselectNotification.getColor(), false, false, null); + //} else if(notification instanceof LobbyReadyNotification lobbyReadyNotification) { + // lobbyView.setReady(lobbyReadyNotification.getColor(), lobbyReadyNotification.isReady()): } else if (notification instanceof GameNotification) { app.enter(MdgaState.GAME); } else { diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/button/LobbyButton.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/button/LobbyButton.java index 1ee3b882..5264327c 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/button/LobbyButton.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/button/LobbyButton.java @@ -21,6 +21,12 @@ public enum Taken { OTHER, } + static final ColorRGBA LOBBY_TAKEN = ColorRGBA.fromRGBA255(193,58,59, 25); + static final ColorRGBA LOBBY_READY = ColorRGBA.fromRGBA255(55,172,190, 25); + static final ColorRGBA LOBBY_READY_HOVER = ColorRGBA.fromRGBA255(17,211,218, 25); + static final ColorRGBA LOBBY_SELF_NORMAL = ColorRGBA.fromRGBA255(34,103,24, 25); + static final ColorRGBA LOBBY_SELF_HOVER = ColorRGBA.fromRGBA255(42,151,19, 25); + static final float WIDTH = 4.0f; private final Node node3d; @@ -33,6 +39,8 @@ public enum Taken { private LabelButton label; + private boolean isReady = false; + public LobbyButton(MdgaApp app, Node node, Node node3d, Runnable action, Color tsk) { super(app, node, action, "", new Vector2f(WIDTH, 7), new Vector2f(0, 0)); @@ -89,17 +97,23 @@ public LobbyButton(MdgaApp app, Node node, Node node3d, Runnable action, Color t @Override public void onHover() { - /*switch (taken) { + ColorRGBA buttonPressed = BUTTON_PRESSED.clone(); + + switch (taken) { case NOT: + buttonPressed.a = 0.3f; break; case SELF: + buttonPressed = LOBBY_SELF_HOVER; break; case OTHER: + buttonPressed = LOBBY_TAKEN; break; - }*/ + } - ColorRGBA buttonPressed = BUTTON_PRESSED.clone(); - buttonPressed.a = 0.3f; + if(isReady) { + buttonPressed = LOBBY_READY_HOVER; + } QuadBackgroundComponent background = new QuadBackgroundComponent(buttonPressed); instance.setBackground(background); @@ -109,17 +123,23 @@ public void onHover() { @Override public void onUnHover() { - /*switch (taken) { + ColorRGBA buttonNormal = ColorRGBA.Gray.clone();// BUTTON_NORMAL.clone(); + + switch (taken) { case NOT: + buttonNormal.a = 0.1f; break; case SELF: + buttonNormal = LOBBY_SELF_NORMAL; break; case OTHER: + buttonNormal = LOBBY_TAKEN; break; - }*/ + } - ColorRGBA buttonNormal = ColorRGBA.Gray.clone();// BUTTON_NORMAL.clone(); - buttonNormal.a = 0.1f; + if(isReady) { + buttonNormal = LOBBY_READY; + } QuadBackgroundComponent background = new QuadBackgroundComponent(buttonNormal); instance.setBackground(background); @@ -184,8 +204,15 @@ public void setTaken(Taken taken, String name) { if(taken == Taken.NOT) { label.setText("- leer -"); + isReady = false; } else { label.setText(name); } + + onUnHover(); + } + + public void setReady(boolean isReady) { + this.isReady = isReady; } } 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 5946658c..3822a465 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 @@ -32,6 +32,7 @@ public class GameView extends MdgaView { private ButtonRight cheatButton; //TODO private ButtonLeft leaveButton; + private ButtonRight confirmButton; private Color ownColor = null; @@ -41,7 +42,9 @@ public GameView(MdgaApp app) { super(app); cheatButton = new ButtonRight(app, settingsNode, () -> app.getModelSyncronizer().enter(MdgaState.CEREMONY), "CHEAT", 1); + leaveButton = new ButtonLeft(app, settingsNode, () -> app.getModelSyncronizer().leave(), "Spiel verlassen", 1); + confirmButton = new ButtonRight(app, settingsNode, () -> app.getModelSyncronizer().confirm(), "Bestätigen", 1); fpp = new FilterPostProcessor(app.getAssetManager()); this.camera = new CameraHandler(app, fpp); diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/view/LobbyView.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/view/LobbyView.java index b97baf84..0c7df2f9 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/view/LobbyView.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/view/LobbyView.java @@ -139,6 +139,23 @@ public void setTaken(Color color, boolean isTaken, boolean isSelf, String name) } } + public void setReady(Color color, boolean isReady) { + switch (color) { + case CYBER: + cyberButton.setReady(isReady); + break; + case AIRFORCE: + airforceButton.setReady(isReady); + break; + case ARMY: + armyButton.setReady(isReady); + break; + case NAVY: + navyButton.setReady(isReady); + break; + } + } + private void toggleTsk(Color color) { LobbyButton.Taken taken = LobbyButton.Taken.NOT;