From a21794ddc146ea5293ec012404a27b31d996c4f7 Mon Sep 17 00:00:00 2001 From: Cedric Beck Date: Mon, 9 Dec 2024 17:03:35 +0100 Subject: [PATCH 1/5] added new card order in CardLayerHandler --- .../src/main/java/pp/mdga/client/MdgaApp.java | 2 +- .../pp/mdga/client/gui/CardLayerHandler.java | 35 +++++++++++++------ .../java/pp/mdga/client/gui/DiceControl.java | 2 +- .../src/main/java/pp/mdga/game/Game.java | 6 ++-- 4 files changed, 30 insertions(+), 15 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 9dcf17cc..6a69b6ba 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 = 1; + public static final int DEBUG_MULTIPLIER = 0; public MdgaApp() { networkConnection = new NetworkSupport(this); diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/CardLayerHandler.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/CardLayerHandler.java index 88b2351d..eda19ab4 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/CardLayerHandler.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/CardLayerHandler.java @@ -29,6 +29,7 @@ public class CardLayerHandler { private DiceControl diceControl; private final Map bonusCardControlMap = new HashMap<>(); + private final List cardOrder = new ArrayList<>(); private final Map bonusCardIntegerMap = new HashMap<>(); private final Set selectableCards = new HashSet<>(); @@ -80,14 +81,13 @@ public void addCard(BonusCard card) { if (card == BonusCard.HIDDEN) throw new RuntimeException("Can't add hidden card to GUI"); if (!bonusCardControlMap.containsKey(card)) { - CardControl control = createCard(bonusToAsset(card), nextPos()); - bonusCardControlMap.put(card, control); - cardLayer.addSpatial(control.getRoot()); + cardOrder.add(card); } int newNum = bonusCardIntegerMap.getOrDefault(card, 0) + 1; bonusCardIntegerMap.put(card, newNum); - bonusCardControlMap.get(card).setNumCard(newNum); + + updateCard(); } public void removeCard(BonusCard card){ @@ -95,12 +95,11 @@ public void removeCard(BonusCard card){ bonusCardIntegerMap.put(card, bonusCardIntegerMap.get(card) - 1); if(bonusCardIntegerMap.get(card) <= 0){ - cardLayer.deleteSpatial(bonusCardControlMap.get(card).getRoot()); bonusCardIntegerMap.remove(card); - bonusCardControlMap.remove(card); + cardOrder.remove(card); } - - } + updateCard(); + } else throw new RuntimeException("card is not in bonusCardControlMap"); } public void clearSelectableCards() { @@ -114,6 +113,22 @@ public void clearSelectableCards() { cardSelect = null; } + private void updateCard(){ + for(BonusCard card : bonusCardControlMap.keySet()){ + CardControl control = bonusCardControlMap.get(card); + cardLayer.deleteSpatial(control.getRoot()); + } + bonusCardControlMap.clear(); + + for(int i = 0; i < cardOrder.size(); i++){ + BonusCard card = cardOrder.get(i); + CardControl control = createCard(bonusToAsset(card), nextPos(i)); + control.setNumCard(bonusCardIntegerMap.get(card)); + cardLayer.addSpatial(control.getRoot()); + bonusCardControlMap.put(card, control); + } + } + public void setSelectableCards(List select) { for (BonusCard card : select) { selectableCards.add(bonusCardControlMap.get(card)); @@ -171,8 +186,8 @@ private Asset bonusToAsset(BonusCard card) { }; } - private Vector3f nextPos() { - return START.add(MARGIN.mult(bonusCardControlMap.size())); + private Vector3f nextPos(int i) { + return START.add(MARGIN.mult(i)); } private Camera createOverlayCam() { 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 a8c4fb3c..e90f20f5 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 @@ -21,7 +21,7 @@ public class DiceControl extends AbstractControl { private Quaternion targetRotation; private final Vector3f angularVelocity = new Vector3f(); - private float deceleration = 1.7f; + private float deceleration = 1f; private float timeElapsed = 0.0f; private float rollDuration = 1f; private static final int ANGULAR_MIN = 5; 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 5e297189..7897d7f0 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 @@ -87,16 +87,16 @@ public Game() { gameStatistics = new Statistic(); initializeDrawPile(); board = new Board(); - die = new Die(2,1,6,2,1,3); + die = new Die(2,4,5,5,1,3); } /** * This method initializes the draw pile with the predefined number of bonus cards. */ private void initializeDrawPile() { -// this.addBonusCards(new TurboCard(), AMOUNT_OF_TURBO_CARDS); -// this.addBonusCards(new SwapCard(), AMOUNT_OF_SWAP_CARDS); this.addBonusCards(new ShieldCard(), AMOUNT_OF_SHIELD_CARDS); + this.addBonusCards(new TurboCard(), AMOUNT_OF_TURBO_CARDS); + this.addBonusCards(new SwapCard(), AMOUNT_OF_SWAP_CARDS); Collections.shuffle(this.drawPile); } From 189e8a7ec3e1b87a04dc1d7b0317a0154e71e3eb Mon Sep 17 00:00:00 2001 From: Hanno Fleischer Date: Mon, 9 Dec 2024 17:11:30 +0100 Subject: [PATCH 2/5] fixed client shield state animation --- .../choosepiecestate/SelectPieceState.java | 12 ++++++++++++ .../choosepiecestate/StartPieceState.java | 15 +++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/SelectPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/SelectPieceState.java index 99ab6da4..21eee439 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/SelectPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/SelectPieceState.java @@ -4,12 +4,15 @@ import pp.mdga.client.ClientState; import pp.mdga.client.gamestate.turnstate.ChoosePieceState; import pp.mdga.game.Piece; +import pp.mdga.game.ShieldState; import pp.mdga.game.PieceState; import pp.mdga.message.client.RequestMoveMessage; import pp.mdga.message.client.SelectedPiecesMessage; import pp.mdga.message.server.MoveMessage; import pp.mdga.notification.HomeMoveNotification; import pp.mdga.notification.MovePieceNotification; +import pp.mdga.notification.ShieldActiveNotification; +import pp.mdga.notification.ShieldSuppressedNotification; import pp.mdga.notification.ThrowPieceNotification; import java.util.ArrayList; @@ -107,6 +110,15 @@ public void received(MoveMessage msg) { logic.getGame().getBoard().getInfield()[logic.getGame().getBoard().getInfieldIndexOfPiece(piece)].clearOccupant(); //set new node logic.getGame().getBoard().getInfield()[msg.getTargetIndex()].setOccupant(piece); + if (logic.getGame().getBoard().getInfield()[msg.getTargetIndex()].isStart()){ + if (piece.isShielded()){ + piece.setShield(ShieldState.SUPPRESSED); + logic.addNotification(new ShieldSuppressedNotification(piece.getUuid())); + } + } else if (piece.isSuppressed()){ + piece.setShield(ShieldState.ACTIVE); + logic.addNotification(new ShieldActiveNotification(piece.getUuid())); + } } logic.getGame().setTurboFlag(false); parent.getParent().setState(parent.getParent().getMovePiece()); diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/StartPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/StartPieceState.java index 9594e356..1ad5972b 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/StartPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/StartPieceState.java @@ -5,10 +5,14 @@ import pp.mdga.client.gamestate.turnstate.ChoosePieceState; import pp.mdga.game.Node; import pp.mdga.game.Piece; +import pp.mdga.game.ShieldState; import pp.mdga.message.client.RequestMoveMessage; import pp.mdga.message.client.SelectedPiecesMessage; import pp.mdga.message.server.MoveMessage; import pp.mdga.notification.MovePieceNotification; +import pp.mdga.notification.RemoveShieldNotification; +import pp.mdga.notification.ShieldActiveNotification; +import pp.mdga.notification.ShieldSuppressedNotification; import pp.mdga.notification.ThrowPieceNotification; import java.util.ArrayList; @@ -63,6 +67,17 @@ public void received(MoveMessage msg){ logic.addNotification(new ThrowPieceNotification(occ.getUuid(), piece.getColor())); } + if (targetNode.isStart()){ + if (piece.isShielded()){ + piece.setShield(ShieldState.SUPPRESSED); + logic.addNotification(new ShieldSuppressedNotification(piece.getUuid())); + } + } else if (piece.isSuppressed()){ + piece.setShield(ShieldState.ACTIVE); + logic.addNotification(new RemoveShieldNotification(piece.getUuid())); + logic.addNotification(new ShieldActiveNotification(piece.getUuid())); + } + targetNode.setOccupant(msg.getPiece()); logic.addNotification(new MovePieceNotification(msg.getPiece().getUuid(), oldIndex, targetIndex)); logic.getGame().setTurboFlag(false); From ac719c55e63092527b80a4b5d8d6aeb31f7d25ce Mon Sep 17 00:00:00 2001 From: Cedric Beck Date: Mon, 9 Dec 2024 17:20:34 +0100 Subject: [PATCH 3/5] revert commit --- .../pp/mdga/client/gui/CardLayerHandler.java | 35 ++++++------------- .../src/main/java/pp/mdga/game/Game.java | 13 +++++-- 2 files changed, 21 insertions(+), 27 deletions(-) diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/CardLayerHandler.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/CardLayerHandler.java index eda19ab4..88b2351d 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/CardLayerHandler.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/CardLayerHandler.java @@ -29,7 +29,6 @@ public class CardLayerHandler { private DiceControl diceControl; private final Map bonusCardControlMap = new HashMap<>(); - private final List cardOrder = new ArrayList<>(); private final Map bonusCardIntegerMap = new HashMap<>(); private final Set selectableCards = new HashSet<>(); @@ -81,13 +80,14 @@ public void addCard(BonusCard card) { if (card == BonusCard.HIDDEN) throw new RuntimeException("Can't add hidden card to GUI"); if (!bonusCardControlMap.containsKey(card)) { - cardOrder.add(card); + CardControl control = createCard(bonusToAsset(card), nextPos()); + bonusCardControlMap.put(card, control); + cardLayer.addSpatial(control.getRoot()); } int newNum = bonusCardIntegerMap.getOrDefault(card, 0) + 1; bonusCardIntegerMap.put(card, newNum); - - updateCard(); + bonusCardControlMap.get(card).setNumCard(newNum); } public void removeCard(BonusCard card){ @@ -95,11 +95,12 @@ public void removeCard(BonusCard card){ bonusCardIntegerMap.put(card, bonusCardIntegerMap.get(card) - 1); if(bonusCardIntegerMap.get(card) <= 0){ + cardLayer.deleteSpatial(bonusCardControlMap.get(card).getRoot()); bonusCardIntegerMap.remove(card); - cardOrder.remove(card); + bonusCardControlMap.remove(card); } - updateCard(); - } else throw new RuntimeException("card is not in bonusCardControlMap"); + + } } public void clearSelectableCards() { @@ -113,22 +114,6 @@ public void clearSelectableCards() { cardSelect = null; } - private void updateCard(){ - for(BonusCard card : bonusCardControlMap.keySet()){ - CardControl control = bonusCardControlMap.get(card); - cardLayer.deleteSpatial(control.getRoot()); - } - bonusCardControlMap.clear(); - - for(int i = 0; i < cardOrder.size(); i++){ - BonusCard card = cardOrder.get(i); - CardControl control = createCard(bonusToAsset(card), nextPos(i)); - control.setNumCard(bonusCardIntegerMap.get(card)); - cardLayer.addSpatial(control.getRoot()); - bonusCardControlMap.put(card, control); - } - } - public void setSelectableCards(List select) { for (BonusCard card : select) { selectableCards.add(bonusCardControlMap.get(card)); @@ -186,8 +171,8 @@ private Asset bonusToAsset(BonusCard card) { }; } - private Vector3f nextPos(int i) { - return START.add(MARGIN.mult(i)); + private Vector3f nextPos() { + return START.add(MARGIN.mult(bonusCardControlMap.size())); } private Camera createOverlayCam() { 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 7897d7f0..7e4eba00 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 @@ -87,16 +87,16 @@ public Game() { gameStatistics = new Statistic(); initializeDrawPile(); board = new Board(); - die = new Die(2,4,5,5,1,3); + die = new Die(); } /** * This method initializes the draw pile with the predefined number of bonus cards. */ private void initializeDrawPile() { - this.addBonusCards(new ShieldCard(), AMOUNT_OF_SHIELD_CARDS); this.addBonusCards(new TurboCard(), AMOUNT_OF_TURBO_CARDS); this.addBonusCards(new SwapCard(), AMOUNT_OF_SWAP_CARDS); + this.addBonusCards(new ShieldCard(), AMOUNT_OF_SHIELD_CARDS); Collections.shuffle(this.drawPile); } @@ -210,6 +210,15 @@ public Player getPlayerByColor(Color color) { return null; } + /** + * This method will be used to the get the active player + * + * @return the active player + */ + public Player getActivePlayer(){ + return getPlayerByColor(activeColor); + } + /** * This method will be used to return all connected players as a list. * From 13948ec4bb2012db5a04d6a2c88ee871ea9d7716 Mon Sep 17 00:00:00 2001 From: Felix Koppe Date: Mon, 9 Dec 2024 17:47:03 +0100 Subject: [PATCH 4/5] Fix error --- Projekte/.run/MdgaApp.run.xml | 4 ++-- .../main/java/pp/mdga/client/NotificationSynchronizer.java | 2 +- .../src/main/java/pp/mdga/client/board/BoardHandler.java | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Projekte/.run/MdgaApp.run.xml b/Projekte/.run/MdgaApp.run.xml index f0626a72..c396b585 100644 --- a/Projekte/.run/MdgaApp.run.xml +++ b/Projekte/.run/MdgaApp.run.xml @@ -1,9 +1,9 @@ -