From 8b27ccce22ef86b9c8dd7e768bf66c0ac2c7d8db Mon Sep 17 00:00:00 2001 From: Hanno Fleischer Date: Sun, 8 Dec 2024 03:08:47 +0100 Subject: [PATCH] adjusted stattransition methods to work correctly --- .../main/java/pp/mdga/client/GameState.java | 5 +++++ .../gamestate/DetermineStartPlayerState.java | 10 ++++++---- .../pp/mdga/client/gamestate/TurnState.java | 5 +++++ .../powercardstate/ChoosePowerCardState.java | 7 ++++--- .../turnstate/powercardstate/SwapState.java | 5 +++++ .../message/server/PossiblePieceMessage.java | 18 ++++++++++-------- .../pp/mdga/server/automaton/GameState.java | 4 ++++ .../mdga/server/automaton/game/TurnState.java | 4 ++++ .../automaton/game/turn/PowerCardState.java | 5 +++++ .../game/turn/powercard/ShieldCardState.java | 3 ++- .../game/turn/powercard/SwapCardState.java | 7 ++++++- .../game/turn/powercard/TurboCardState.java | 2 +- 12 files changed, 57 insertions(+), 18 deletions(-) diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java index be38d370..8dd15db2 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java @@ -275,6 +275,11 @@ public void received(ActivePlayerMessage msg){ state.received(msg); } + @Override + public void received(PossiblePieceMessage msg){ + state.received(msg); + } + /** * This method returns the current state * diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/DetermineStartPlayerState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/DetermineStartPlayerState.java index f16eff99..95e77f4f 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/DetermineStartPlayerState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/DetermineStartPlayerState.java @@ -8,10 +8,7 @@ import pp.mdga.client.gamestate.determinestartplayerstate.RollRankingDiceState; import pp.mdga.client.gamestate.determinestartplayerstate.WaitRankingState; import pp.mdga.message.client.AnimationEndMessage; -import pp.mdga.message.server.ActivePlayerMessage; -import pp.mdga.message.server.DieMessage; -import pp.mdga.message.server.RankingResponseMessage; -import pp.mdga.message.server.RankingRollAgainMessage; +import pp.mdga.message.server.*; public class DetermineStartPlayerState extends GameStates { @@ -80,6 +77,11 @@ public void received(DieMessage msg){ state.received(msg); } + @Override + public void received(DiceNowMessage msg){ + state.received(msg); + } + @Override public void received(RankingRollAgainMessage msg){ state.received(msg); 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 1c7f8bf8..fddbb07e 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 @@ -132,6 +132,11 @@ public void received(DieMessage msg){ state.received(msg); } + @Override + public void received(PossiblePieceMessage msg){ + state.received(msg); + } + public ChoosePieceState getChoosePiece() { return choosePieceState; } 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 4f9720ba..1a90cda8 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 @@ -106,11 +106,12 @@ public void received(DiceNowMessage msg){ @Override public void received(PossiblePieceMessage msg){ if (msg.getEnemyPossiblePieces().isEmpty()){ - parent.getShield().setPossiblePieces(msg.getOwnPossiblePieces().stream().map(piece -> logic.getGame().getPieceThroughUUID(piece)).collect(Collectors.toCollection(ArrayList::new))); + parent.getShield().setPossiblePieces(msg.getOwnPossiblePieces().stream().map(piece -> logic.getGame().getPieceThroughUUID(piece.getUuid())).collect(Collectors.toCollection(ArrayList::new))); parent.setState(parent.getShield()); } else { - parent.getSwap().setPossibleOwnPieces(msg.getOwnPossiblePieces().stream().map(piece -> logic.getGame().getPieceThroughUUID(piece)).collect(Collectors.toCollection(ArrayList::new))); - parent.getSwap().setPossibleEnemyPieces(msg.getEnemyPossiblePieces().stream().map(piece -> logic.getGame().getPieceThroughUUID(piece)).collect(Collectors.toCollection(ArrayList::new))); + System.out.println("Should enter Swap State"); + parent.getSwap().setPossibleOwnPieces(msg.getOwnPossiblePieces().stream().map(piece -> logic.getGame().getPieceThroughUUID(piece.getUuid())).collect(Collectors.toCollection(ArrayList::new))); + parent.getSwap().setPossibleEnemyPieces(msg.getEnemyPossiblePieces().stream().map(piece -> logic.getGame().getPieceThroughUUID(piece.getUuid())).collect(Collectors.toCollection(ArrayList::new))); parent.setState(parent.getSwap()); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/SwapState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/SwapState.java index c499cb84..ee3c1b1f 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/SwapState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/SwapState.java @@ -5,6 +5,7 @@ import pp.mdga.client.gamestate.turnstate.PowerCardState; import pp.mdga.game.Piece; import pp.mdga.message.client.RequestPlayCardMessage; +import pp.mdga.message.client.SelectCardMessage; import pp.mdga.message.server.PlayCardMessage; import pp.mdga.notification.SelectableSwapNotification; @@ -13,6 +14,8 @@ public class SwapState extends PowerCardStates { + private final System.Logger LOGGER = System.getLogger(this.getClass().getName()); + private final PowerCardState parent; private ArrayList possibleOwnPieces; @@ -29,6 +32,7 @@ public SwapState(ClientState parent, ClientGameLogic logic) { @Override public void enter() { + LOGGER.log(System.Logger.Level.INFO, "Entering SwapState"); ArrayList ownPieces = new ArrayList<>(possibleOwnPieces.stream().map(Piece::getUuid).toList()); ArrayList enemyPieces = new ArrayList<>(possibleEnemyPieces.stream().map(Piece::getUuid).toList()); logic.addNotification(new SelectableSwapNotification(ownPieces, enemyPieces)); @@ -36,6 +40,7 @@ public void enter() { @Override public void exit() { + LOGGER.log(System.Logger.Level.INFO, "Exiting SwapState"); possibleOwnPieces = null; possibleEnemyPieces = null; } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PossiblePieceMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PossiblePieceMessage.java index 504840a1..68bc2172 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PossiblePieceMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PossiblePieceMessage.java @@ -1,7 +1,9 @@ package pp.mdga.message.server; import com.jme3.network.serializing.Serializable; +import pp.mdga.game.Piece; +import java.io.PipedOutputStream; import java.util.ArrayList; import java.util.List; import java.util.UUID; @@ -14,12 +16,12 @@ public class PossiblePieceMessage extends ServerMessage { /** * The list of possible own pieces */ - private final List possibleOwnPieces; + private final List possibleOwnPieces; /** * The list of possible enemy pieces */ - private final List possibleEnemyPieces; + private final List possibleEnemyPieces; /** * Constructor for PossiblePiece @@ -37,7 +39,7 @@ public PossiblePieceMessage() { * @param possibleEnemyPieces the list of possible enemy pieces * @return the swapped possible pieces */ - public static PossiblePieceMessage swapPossiblePieces(ArrayList possibleOwnPieces, ArrayList possibleEnemyPieces) { + public static PossiblePieceMessage swapPossiblePieces(List possibleOwnPieces, List possibleEnemyPieces) { PossiblePieceMessage possiblePieceMessage = new PossiblePieceMessage(); possiblePieceMessage.possibleOwnPieces.addAll(possibleOwnPieces); possiblePieceMessage.possibleEnemyPieces.addAll(possibleEnemyPieces); @@ -50,7 +52,7 @@ public static PossiblePieceMessage swapPossiblePieces(ArrayList possibleOw * @param possibleOwnPieces the list of possible own pieces * @return the possible pieces for the shield */ - public static PossiblePieceMessage shieldPossiblePieces(ArrayList possibleOwnPieces) { + public static PossiblePieceMessage shieldPossiblePieces(List possibleOwnPieces) { PossiblePieceMessage possiblePieceMessage = new PossiblePieceMessage(); possiblePieceMessage.possibleOwnPieces.addAll(possibleOwnPieces); return possiblePieceMessage; @@ -61,7 +63,7 @@ public static PossiblePieceMessage shieldPossiblePieces(ArrayList possible * * @param piece the piece to add */ - public void addOwnPossiblePiece(UUID piece) { + public void addOwnPossiblePiece(Piece piece) { this.possibleOwnPieces.add(piece); } @@ -70,7 +72,7 @@ public void addOwnPossiblePiece(UUID piece) { * * @param piece the piece to add */ - public void addEnemyPossiblePiece(UUID piece) { + public void addEnemyPossiblePiece(Piece piece) { this.possibleEnemyPieces.add(piece); } @@ -79,7 +81,7 @@ public void addEnemyPossiblePiece(UUID piece) { * * @return the list of possible pieces */ - public List getOwnPossiblePieces() { + public List getOwnPossiblePieces() { return possibleOwnPieces; } @@ -88,7 +90,7 @@ public List getOwnPossiblePieces() { * * @return the list of possible enemy pieces */ - public List getEnemyPossiblePieces() { + public List getEnemyPossiblePieces() { return possibleEnemyPieces; } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/GameState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/GameState.java index e2dc4962..c3e6c621 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/GameState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/GameState.java @@ -90,6 +90,10 @@ public void received(NoPowerCardMessage msg, int from){ this.currentState.received(msg, from); } + public void received(SelectCardMessage msg, int from){ + currentState.received(msg, from); + } + /** * This method will be called whenever the server received a RequestDieMessage message. * It will also get the client id of the player who send this message. diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/TurnState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/TurnState.java index 82e254e2..c135410e 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/TurnState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/TurnState.java @@ -113,6 +113,10 @@ public void received(AnimationEndMessage msg, int from) { this.currentState.received(msg, from); } + public void received(SelectCardMessage msg, int from){ + currentState.received(msg, from); + } + /** * This method will be used to return currentState attribute of TurnState class. * diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PowerCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PowerCardState.java index b83a6c43..f043d590 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PowerCardState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PowerCardState.java @@ -3,6 +3,7 @@ import pp.mdga.game.Piece; import pp.mdga.game.card.PowerCard; import pp.mdga.message.client.NoPowerCardMessage; +import pp.mdga.message.client.SelectCardMessage; import pp.mdga.message.client.SelectedPiecesMessage; import pp.mdga.message.server.DiceNowMessage; import pp.mdga.message.server.PossibleCardsMessage; @@ -92,6 +93,10 @@ public void addSelectedPiece(Piece piece) { this.selectedPieces.add(piece); } + public void received(SelectCardMessage msg, int from){ + currentState.received(msg, from); + } + /** * This method will be called whenever the server received an SelectedPiecesMessage message. * It will also get the client id of the player who send this message. diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/ShieldCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/ShieldCardState.java index 77a2b75d..1d095895 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/ShieldCardState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/ShieldCardState.java @@ -6,6 +6,7 @@ import pp.mdga.message.client.SelectedPiecesMessage; import pp.mdga.message.server.IncorrectRequestMessage; import pp.mdga.message.server.PlayCardMessage; +import pp.mdga.message.server.PossiblePieceMessage; import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.game.turn.PowerCardState; @@ -27,7 +28,7 @@ public ShieldCardState(PowerCardState powerCardAutomaton, ServerGameLogic logic) */ @Override public void enter() { - + logic.getServerSender().send(logic.getGame().getActivePlayerId(), PossiblePieceMessage.shieldPossiblePieces(this.powerCardAutomaton.getVisitor().getShieldPieces())); } /** diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/SwapCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/SwapCardState.java index 51aad9e3..8972df5e 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/SwapCardState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/SwapCardState.java @@ -3,10 +3,14 @@ import pp.mdga.game.Piece; import pp.mdga.message.client.SelectedPiecesMessage; import pp.mdga.message.server.IncorrectRequestMessage; +import pp.mdga.message.server.PossiblePieceMessage; import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.game.turn.PowerCardState; public class SwapCardState extends PowerCardAutomatonState { + + private final System.Logger LOGGER = System.getLogger(this.getClass().getName()); + /** * Constructs a server state of the specified game logic. * @@ -22,7 +26,8 @@ public SwapCardState(PowerCardState powerCardAutomaton, ServerGameLogic logic) { */ @Override public void enter() { - + LOGGER.log(System.Logger.Level.INFO, "Entered SwapCardState"); + logic.getServerSender().send(logic.getGame().getActivePlayerId(), PossiblePieceMessage.swapPossiblePieces(this.powerCardAutomaton.getVisitor().getSwapOwnPieces(), this.powerCardAutomaton.getVisitor().getSwapOtherPieces())); } /** diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/TurboCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/TurboCardState.java index 093aacb9..6cbf91ec 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/TurboCardState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/TurboCardState.java @@ -24,7 +24,7 @@ public TurboCardState(PowerCardState powerCardAutomaton, ServerGameLogic logic) @Override public void enter() { this.logic.getGame().getDie().modify(); - this.logic.getGame().setDiceModifier(this.logic.getGame().getDiceModifier()); + this.logic.getGame().setDiceModifier(this.logic.getGame().getDie().getDieModifier()); this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new PlayCardMessage(this.powerCardAutomaton.getSelectedCard(), new ArrayList<>(), this.logic.getGame().getDiceModifier())); this.powerCardAutomaton.getTurnAutomaton().setCurrentState(this.powerCardAutomaton.getTurnAutomaton().getPlayPowerCardState()); }