From 3dd6fc9f377f2f5b44cae8064f5b08d3fd240cdc Mon Sep 17 00:00:00 2001 From: Felix Koppe Date: Mon, 9 Dec 2024 03:17:28 +0100 Subject: [PATCH 1/3] Add DEBUG_MULTIPLIER --- .../client/src/main/java/pp/mdga/client/MdgaApp.java | 2 +- .../src/main/java/pp/mdga/client/ModelSynchronizer.java | 2 ++ .../java/pp/mdga/client/NotificationSynchronizer.java | 7 +++++-- .../src/main/java/pp/mdga/client/gui/DiceControl.java | 9 ++++----- .../src/main/java/pp/mdga/client/gui/GuiHandler.java | 1 + 5 files changed, 13 insertions(+), 8 deletions(-) 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 6a69b6ba..9dcf17cc 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 @@ -66,7 +66,7 @@ public class MdgaApp extends SimpleApplication { private ServerConnection networkConnection; - public static final int DEBUG_MULTIPLIER = 0; + public static final int DEBUG_MULTIPLIER = 1; public MdgaApp() { networkConnection = new NetworkSupport(this); diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/ModelSynchronizer.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/ModelSynchronizer.java index cea98141..9971038b 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/ModelSynchronizer.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/ModelSynchronizer.java @@ -83,6 +83,8 @@ public void confirm() { GameView gameView = (GameView) app.getView(); + gameView.getGuiHandler().hideText(); + if(a != null && b != null) { app.getGameLogic().selectPiece(a); app.getGameLogic().selectPiece(b); 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 7ae04de1..c90838de 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 @@ -69,7 +69,9 @@ public void update() { throw new RuntimeException("no notification expected: " + n.getClass().getName()); } - delay = 0; + if(0 == MdgaApp.DEBUG_MULTIPLIER) { + delay = 0; + } } } } @@ -151,6 +153,7 @@ private void handleGame(Notification notification) { guiHandler.showDice(); } else if (notification instanceof DrawCardNotification n) { guiHandler.drawCard(n.getColor()); + delay = STANDARD_DELAY; } else if (notification instanceof HomeMoveNotification home) { boardHandler.movePieceHomeAnim(home.getPieceId(), home.getHomeIndex()); guiHandler.hideText(); @@ -188,13 +191,13 @@ private void handleGame(Notification notification) { gameView.getGuiHandler().hideText(); if(n.getColor() == ownColor){ guiHandler.rollDice(n.getEyes(), n.isTurbo() ? n.getMultiplier() : -1); + waitForAnimation = true; } else { boardHandler.hideDice(); if (n.isTurbo()) guiHandler.showRolledDiceMult(n.getEyes(), n.getMultiplier(), n.getColor()); else guiHandler.showRolledDice(n.getEyes(), n.getColor()); } - delay = 7; } else if (notification instanceof SelectableCardsNotification n) { guiHandler.setSelectableCards(n.getCards()); gameView.showNoPower(); diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/DiceControl.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/DiceControl.java index 5c08d93d..42e356aa 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/DiceControl.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/DiceControl.java @@ -11,6 +11,7 @@ import com.jme3.scene.Spatial; import com.jme3.scene.control.AbstractControl; import pp.mdga.client.Asset; +import pp.mdga.client.MdgaApp; import java.util.Random; @@ -51,8 +52,7 @@ protected void controlUpdate(float tpf) { ); // Stop rolling when angular velocity is close to zero -// if (angularVelocity.lengthSquared() < 3f) { - if(true){ + if (angularVelocity.lengthSquared() <= 3f || MdgaApp.DEBUG_MULTIPLIER == 0) { slerp = true; } } @@ -66,14 +66,13 @@ protected void controlUpdate(float tpf) { spatial.setLocalRotation(interpolated); // Stop rolling once duration is complete -// if (timeElapsed >= 1.0f) { - if(true){ + if (timeElapsed >= 1.0f * MdgaApp.DEBUG_MULTIPLIER) { isRolling = false; slerp = false; actionAfter.run(); } } - }else if(spin){ + } else if(spin){ spinWithAngularVelocity(clampedTpf); } } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/GuiHandler.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/GuiHandler.java index c4024fbe..d57a99f1 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/GuiHandler.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/GuiHandler.java @@ -52,6 +52,7 @@ public void rollDice(int rollNum, int mult) { else actionTextHandler.ownDiceMult(rollNum, mult); hideDice(); app.getModelSynchronize().animationEnd(); + app.getModelSynchronize().animationEnd(); }); } From a7969d7a681f7f3ffd4d3bbd0842183abef2aecd Mon Sep 17 00:00:00 2001 From: Felix Koppe Date: Mon, 9 Dec 2024 03:25:04 +0100 Subject: [PATCH 2/3] Minor change+ --- .../java/pp/mdga/client/NotificationSynchronizer.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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 a51e0f9b..22516631 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 @@ -12,6 +12,8 @@ import pp.mdga.notification.*; import java.util.ArrayList; +import java.util.Timer; +import java.util.TimerTask; public class NotificationSynchronizer { private final MdgaApp app; @@ -181,7 +183,12 @@ private void handleGame(Notification notification) { if(n.getColor() == ownColor) guiHandler.playCardOwn(n.getCard()); else guiHandler.playCardEnemy(n.getColor(), n.getCard()); - app.getModelSynchronize().animationEnd(); + new Timer().schedule(new TimerTask() { + @Override + public void run() { + app.getModelSynchronize().animationEnd(); + } + }, 2200 * MdgaApp.DEBUG_MULTIPLIER); } else if (notification instanceof PlayerInGameNotification n) { boardHandler.addPlayer(n.getColor(),n.getPiecesList()); guiHandler.addPlayer(n.getColor(),n.getName()); From ecb751824c4f1298269847b4689aed3040a47e2f Mon Sep 17 00:00:00 2001 From: Fleischer Hanno Date: Mon, 9 Dec 2024 03:20:54 +0100 Subject: [PATCH 3/3] created two flags to be able to determine if a turbo card has been played --- .../java/pp/mdga/client/gamestate/TurnState.java | 12 +++++++++++- .../client/gamestate/turnstate/RollDiceState.java | 7 +++++++ .../powercardstate/ChoosePowerCardState.java | 1 + .../mdga/model/src/main/java/pp/mdga/game/Game.java | 10 ++++++++++ 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java index a24141b6..97d0238f 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java @@ -31,6 +31,7 @@ public class TurnState extends GameStates { private final PlayPowerCardState playPowerCardState = new PlayPowerCardState(this, logic); private final PowerCardState powerCardState = new PowerCardState(this, logic); private final RollDiceState rollDiceState = new RollDiceState(this, logic); + private boolean canChangeTurbo = false; public TurnState(ClientState parent, ClientGameLogic logic) { super(parent, logic); @@ -39,13 +40,14 @@ public TurnState(ClientState parent, ClientGameLogic logic) { @Override public void enter() { - this.setState(this.powerCardState); for (Piece piece : logic.getGame().getPlayerByColor(logic.getGame().getActiveColor()).getPieces()) { if (piece.isShielded() || piece.isSuppressed()){ piece.setShield(ShieldState.NONE); logic.addNotification(new RemoveShieldNotification(piece.getUuid())); } } + logic.getGame().setTurboFlag(false); + this.setState(this.powerCardState); } @Override @@ -189,4 +191,12 @@ public GameState getParent(){ public TurnStates getState(){ return state; } + + public boolean isCanChangeTurbo() { + return canChangeTurbo; + } + + public void setCanChangeTurbo(boolean canChangeTurbo) { + this.canChangeTurbo = canChangeTurbo; + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/RollDiceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/RollDiceState.java index 2d2c1258..ba6265d9 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/RollDiceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/RollDiceState.java @@ -24,6 +24,13 @@ public RollDiceState(ClientState parent, ClientGameLogic logic) { @Override public void enter() { logic.addNotification(new DiceNowNotification()); + if (logic.getGame().getTurboFlag()){ + if (parent.isCanChangeTurbo()){ + logic.getGame().setTurboFlag(false); + } else { + parent.setCanChangeTurbo(true); + } + } } @Override diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ChoosePowerCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ChoosePowerCardState.java index 17b57254..59ce519d 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ChoosePowerCardState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ChoosePowerCardState.java @@ -89,6 +89,7 @@ public void received(PlayCardMessage msg){ if(msg.getCard().getCard().equals(BonusCard.TURBO)){ logic.getGame().setDiceModifier(msg.getDiceModifier()); parent.getParent().getPlayPowerCard().setPlayCard(msg); + logic.getGame().setTurboFlag(true); parent.getParent().setState(parent.getParent().getPlayPowerCard()); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java index 88292f25..276ee777 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java @@ -78,6 +78,8 @@ public class Game { */ private int diceEyes; + private boolean turboFlag = false; + /** * This constructor creates a new Game object. */ @@ -300,6 +302,14 @@ public boolean isHost() { return this.host != -1; } + public void setTurboFlag(boolean flag) { + this.turboFlag = flag; + } + + public boolean getTurboFlag() { + return this.turboFlag; + } + /** * This method returns the players. *