From a2f57bcaaed1b2ef28a94abb829c182c257977e5 Mon Sep 17 00:00:00 2001 From: Cedric Beck Date: Mon, 9 Dec 2024 17:52:48 +0100 Subject: [PATCH 1/6] deleted node unselect in BoardHandler clearSelectable --- Projekte/.run/MdgaApp.run.xml | 19 ------------------- .../pp/mdga/client/board/BoardHandler.java | 2 ++ 2 files changed, 2 insertions(+), 19 deletions(-) delete mode 100644 Projekte/.run/MdgaApp.run.xml diff --git a/Projekte/.run/MdgaApp.run.xml b/Projekte/.run/MdgaApp.run.xml deleted file mode 100644 index f0626a72..00000000 --- a/Projekte/.run/MdgaApp.run.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - \ No newline at end of file diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/board/BoardHandler.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/BoardHandler.java index 8022ea36..97ed6c60 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/board/BoardHandler.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/BoardHandler.java @@ -721,6 +721,8 @@ public void clearSelectable(){ p.unHighlight(); p.setSelectable(false); p.setHoverable(false); + selectedPieceNodeMap.get(p).unSelect(); + selectedPieceNodeMap.get(p).unHighlight(); } for(PieceControl p : selectableOwnPieces) { p.unSelect(); From 0be25ecb29275a884d5c02a83704fa72a21193a4 Mon Sep 17 00:00:00 2001 From: Fleischer Hanno Date: Mon, 9 Dec 2024 18:11:21 +0100 Subject: [PATCH 2/6] made Intro state work with more PowerCards on the hand --- .../gamestate/determinestartplayerstate/Intro.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/determinestartplayerstate/Intro.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/determinestartplayerstate/Intro.java index 26ea3d3d..f3642f78 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/determinestartplayerstate/Intro.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/determinestartplayerstate/Intro.java @@ -4,6 +4,7 @@ import pp.mdga.client.ClientState; import pp.mdga.client.gamestate.DetermineStartPlayerState; import pp.mdga.game.Player; +import pp.mdga.game.card.PowerCard; import pp.mdga.message.client.AnimationEndMessage; import pp.mdga.notification.AcquireCardNotification; import pp.mdga.notification.ActivePlayerNotification; @@ -48,10 +49,12 @@ public void enter() { logic.getGame().getBoard().getInfield()[entry.getValue().getStartNodeIndex()].setOccupant(entry.getValue().getPieces()[0]); entry.getValue().getWaitingArea()[0] = null; animationCounter++; - if(entry.getKey() == logic.getOwnPlayerId()){ - logic.addNotification(new AcquireCardNotification(entry.getValue().getHandCards().get(0).getCard())); - } else { - logic.addNotification(new DrawCardNotification(entry.getValue().getColor(), entry.getValue().getHandCards().get(0).getCard())); + for (PowerCard card : entry.getValue().getHandCards()){ + if(entry.getKey() == logic.getOwnPlayerId()){ + logic.addNotification(new AcquireCardNotification(card.getCard())); + } else { + logic.addNotification(new DrawCardNotification(entry.getValue().getColor(), card.getCard())); + } } } } From ec77b9a6efe434a51662b06cc6d6daa600324975 Mon Sep 17 00:00:00 2001 From: Cedric Beck Date: Mon, 9 Dec 2024 18:11:45 +0100 Subject: [PATCH 3/6] added more start cards for testing --- .../mdga/model/src/main/java/pp/mdga/game/Die.java | 6 +++--- .../mdga/model/src/main/java/pp/mdga/game/Game.java | 6 +++--- .../java/pp/mdga/server/automaton/LobbyState.java | 13 +++++++++++++ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/Die.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Die.java index c3b99cf5..dc8a026e 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/Die.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/Die.java @@ -18,17 +18,17 @@ public class Die { /** * The probability of rolling a zero eye. */ - public static final double ZERO_EYE = 0.2; + public static final double ZERO_EYE = 0; /** * The probability of rolling a normal eye. */ - public static final double NORMAL_EYE = 0.2; + public static final double NORMAL_EYE = 0; /** * The probability of rolling a double eye. */ - public static final double DOUBLE_EYE = 0.6; + public static final double DOUBLE_EYE = 1; /** * The modifier applied to the die roll. 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 7e4eba00..ddf0da9c 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,7 +87,7 @@ public Game() { gameStatistics = new Statistic(); initializeDrawPile(); board = new Board(); - die = new Die(); + die = new Die(1,6,6,6,6); } /** @@ -95,8 +95,8 @@ public Game() { */ 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 SwapCard(), AMOUNT_OF_SWAP_CARDS); +// this.addBonusCards(new ShieldCard(), AMOUNT_OF_SHIELD_CARDS); Collections.shuffle(this.drawPile); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java index 9ae89659..0465ca58 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java @@ -4,6 +4,10 @@ import pp.mdga.game.Piece; import pp.mdga.game.PieceState; import pp.mdga.game.Player; +import pp.mdga.game.card.PowerCard; +import pp.mdga.game.card.ShieldCard; +import pp.mdga.game.card.SwapCard; +import pp.mdga.game.card.TurboCard; import pp.mdga.message.client.*; import pp.mdga.message.server.*; import pp.mdga.server.ServerGameLogic; @@ -52,6 +56,15 @@ public void initializeGame() { for (var player : this.logic.getGame().getPlayers().values()) { player.initialize(); player.addHandCard(this.logic.getGame().draw()); + //TODO + player.addHandCard(new ShieldCard()); + player.addHandCard(new ShieldCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new SwapCard()); + player.addHandCard(new SwapCard()); + + Piece piece = player.getPieces()[0]; player.getWaitingArea()[0] = null; piece.setState(PieceState.ACTIVE); From ceb9e48f550841cfc1a9f2e5be3f8800c152016b Mon Sep 17 00:00:00 2001 From: Hanno Fleischer Date: Mon, 9 Dec 2024 18:36:42 +0100 Subject: [PATCH 4/6] updated Error messages --- Projekte/mdga/model/src/main/resources/mdga.properties | 8 ++++---- Projekte/mdga/model/src/main/resources/mdga_de.properties | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Projekte/mdga/model/src/main/resources/mdga.properties b/Projekte/mdga/model/src/main/resources/mdga.properties index 0495f73c..2357a3b3 100644 --- a/Projekte/mdga/model/src/main/resources/mdga.properties +++ b/Projekte/mdga/model/src/main/resources/mdga.properties @@ -2,10 +2,10 @@ lobby.deny.join=The lobby is already full. server.shutdown=The server has shut down. incorrect.request.0=The selected TSK is already occupied. incorrect.request.1=No TSK is available for selection. -incorrect.request.2=Test -incorrect.request.3=Test -incorrect.request.4=Test -incorrect.request.5=Test +incorrect.request.2=Chosen PowerCard cannot be played. +incorrect.request.3=Selected to many or wrong pieces. +incorrect.request.4=Did not select exactly 2 pieces or selected wrong pieces. +incorrect.request.5=Cannot start game because not everyone is ready. diff --git a/Projekte/mdga/model/src/main/resources/mdga_de.properties b/Projekte/mdga/model/src/main/resources/mdga_de.properties index c2103b99..3410701a 100644 --- a/Projekte/mdga/model/src/main/resources/mdga_de.properties +++ b/Projekte/mdga/model/src/main/resources/mdga_de.properties @@ -2,7 +2,7 @@ lobby.deny.join=Die Lobby ist bereits voll. server.shutdown=Der Server wurde heruntergefahren. incorrect.request.0=Die ausgewählte TSK ist bereits belegt. incorrect.request.1=Es gibt keine freie TSK mehr, welche ausgewählt werden kann. -incorrect.request.2=Test -incorrect.request.3=Test -incorrect.request.4=Test -incorrect.request.5=Test +incorrect.request.2=Die ausgewälte Powerkarte kann nicht eingesetzt werden. +incorrect.request.3=Du hast zuviele, oder eine falsche Figur ausgewählt. +incorrect.request.4=Du hast nicht genau zwei Figuren, oder falsche Figuren ausgewählt. +incorrect.request.5=Du kannst das Spiel nicht starten, da nicht alle Spieler bereit sind. From afec74416fc11b01975c68f9a14191cabb2d9279 Mon Sep 17 00:00:00 2001 From: Cedric Beck Date: Mon, 9 Dec 2024 18:45:00 +0100 Subject: [PATCH 5/6] fixed ChoosePowerCardState --- Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java | 2 +- .../game/turn/powercard/ChoosePowerCardState.java | 9 ++++++++- .../src/main/java/pp/mdga/visitor/ServerCardVisitor.java | 6 +++--- 3 files changed, 12 insertions(+), 5 deletions(-) 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 ddf0da9c..bf601717 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,7 +87,7 @@ public Game() { gameStatistics = new Statistic(); initializeDrawPile(); board = new Board(); - die = new Die(1,6,6,6,6); + die = new Die(1,2,3,4,5); } /** diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/ChoosePowerCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/ChoosePowerCardState.java index 3958a338..577ebc2f 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/ChoosePowerCardState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/ChoosePowerCardState.java @@ -1,6 +1,8 @@ package pp.mdga.server.automaton.game.turn.powercard; +import pp.mdga.game.BonusCard; import pp.mdga.game.card.HiddenCard; +import pp.mdga.game.card.PowerCard; import pp.mdga.game.card.ShieldCard; import pp.mdga.game.card.SwapCard; import pp.mdga.game.card.TurboCard; @@ -12,6 +14,8 @@ import pp.mdga.server.automaton.game.turn.PowerCardState; import pp.mdga.visitor.Visitor; +import java.util.List; + public class ChoosePowerCardState extends PowerCardAutomatonState implements Visitor { private static final System.Logger LOGGER = System.getLogger(ChoosePowerCardState.class.getName()); @@ -44,7 +48,10 @@ public void exit() { @Override public void received(SelectCardMessage msg, int from) { - if (this.powerCardAutomaton.getVisitor().getCards().contains(msg.getCard())) { + BonusCard receivedCard = msg.getCard().getCard(); + List acceptedCards = powerCardAutomaton.getVisitor().getCards().stream().map(PowerCard::getCard).toList(); + + if (acceptedCards.contains(receivedCard)) { this.powerCardAutomaton.setSelectedCard(msg.getCard()); msg.getCard().accept(this); } else { diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/visitor/ServerCardVisitor.java b/Projekte/mdga/model/src/main/java/pp/mdga/visitor/ServerCardVisitor.java index 000828c1..b4964fef 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/visitor/ServerCardVisitor.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/visitor/ServerCardVisitor.java @@ -43,7 +43,7 @@ public ServerCardVisitor(ServerGameLogic logic) { public void visit(TurboCard card) { for (Piece piece : this.logic.getGame().getActivePlayer().getPieces()) { if (piece.getState() == PieceState.ACTIVE) { - if (!this.cards.contains(card)) { + if (!this.cards.stream().map(PowerCard::getCard).toList().contains(card.getCard())) { this.cards.add(card); } } @@ -82,7 +82,7 @@ public void visit(SwapCard card) { if (!possibleOtherPieces.isEmpty() && !possibleOwnPieces.isEmpty()) { this.swapOwnPieces.addAll(possibleOwnPieces); this.swapOtherPieces.addAll(possibleOtherPieces); - if (!this.cards.contains(card)) { + if (!this.cards.stream().map(PowerCard::getCard).toList().contains(card.getCard())) { this.cards.add(card); } } @@ -100,7 +100,7 @@ public void visit(ShieldCard card) { if (!this.shieldPieces.contains(piece)) { this.shieldPieces.add(piece); } - if (!this.cards.contains(card)) { + if (!this.cards.stream().map(PowerCard::getCard).toList().contains(card.getCard())) { this.cards.add(card); } } From 06cb25b6a99576120636a067da99d85ba9a87f9d Mon Sep 17 00:00:00 2001 From: Hanno Fleischer Date: Mon, 9 Dec 2024 18:45:23 +0100 Subject: [PATCH 6/6] fixed card selection, to use an already selected and discarded card --- .../java/pp/mdga/client/gamestate/WaitingState.java | 10 +--------- .../client/gamestate/turnstate/PlayPowerCardState.java | 4 ++-- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/WaitingState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/WaitingState.java index 82a7d1dc..002d7e7e 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/WaitingState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/WaitingState.java @@ -48,8 +48,6 @@ public void received(DieMessage msg) { else { logic.addNotification(new RollDiceNotification(logic.getGame().getActiveColor(), msg.getDiceEye())); } -// logic.addNotification(new RollDiceNotification(logic.getGame().getActiveColor(), logic.getGame().getDiceEyes())); - //stats if (msg.getDiceEye() == 6) { @@ -76,13 +74,6 @@ public void received(ActivePlayerMessage msg) { } } -// @Override -// public void received(DrawCardMessage msg){ -// logic.addNotification(new DrawCardNotification(logic.getGame().getActiveColor(), msg.getCard().getCard())); -// logic.getGame().getPlayerByColor(logic.getGame().getActiveColor()).getPlayerStatistic().increaseActivatedBonusNodes(); -// logic.getGame().getGameStatistics().increaseActivatedBonusNodes(); -// } - @Override public void received(MoveMessage msg) { Piece piece = logic.getGame().getPieceThroughUUID(msg.getPiece().getUuid()); @@ -111,6 +102,7 @@ public void received(MoveMessage msg) { //set new node logic.getGame().getBoard().getInfield()[msg.getTargetIndex()].setOccupant(piece); } + System.out.println("send AnimationEndMessage"); logic.getGame().setTurboFlag(false); parent.setState(parent.getAnimation()); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/PlayPowerCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/PlayPowerCardState.java index d67f8b03..38c7b2e4 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/PlayPowerCardState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/PlayPowerCardState.java @@ -24,12 +24,12 @@ public PlayPowerCardState(ClientState parent, ClientGameLogic logic) { @Override public void enter() { - if(playCardMessage.getCard() instanceof SwapCard) { + if(playCardMessage.getCard().getCard().equals(BonusCard.SWAP)) { extraAnimationCounter++; } logic.addNotification(new PlayCardNotification(logic.getGame().getActiveColor() , playCardMessage.getCard().getCard())); - + logic.getGame().getActivePlayer().removeHandCard(playCardMessage.getCard()); handlePowerCard(playCardMessage); }