From 422e94ec4814ebb08d69a3159495cd0644aa624e Mon Sep 17 00:00:00 2001 From: Fleischer Hanno Date: Sat, 30 Nov 2024 19:49:52 +0100 Subject: [PATCH] Dialog state machine is now fully functional --- .../java/pp/mdga/client/ClientGameLogic.java | 4 +- .../main/java/pp/mdga/client/ClientState.java | 2 +- .../java/pp/mdga/client/DialogsState.java | 51 +++++++++++++++++-- .../mdga/client/dialogState/LobbyState.java | 8 ++- .../gameState/turnState/ChoosePieceState.java | 1 + .../gameState/turnState/MovePieceState.java | 30 +++++++++++ .../turnState/PlayPowerCardState.java | 10 +++- .../gameState/turnState/PowerCardState.java | 2 +- .../gameState/turnState/RollDiceState.java | 21 ++++++++ .../turnState/powerCardState/ShieldState.java | 2 +- .../turnState/powerCardState/SwapState.java | 2 +- .../pp/mdga/message/server/DieMessage.java | 16 ------ 12 files changed, 121 insertions(+), 28 deletions(-) diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientGameLogic.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientGameLogic.java index ad560205..a50ecf53 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientGameLogic.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientGameLogic.java @@ -247,8 +247,8 @@ public void selectLeave(){ state.selectLeave(); } - public void selectJoin(String name){ - state.selectJoin(name); + public void selectJoin(String ip){ + state.selectJoin(ip); } public void selectAnimationEnd(){ diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientState.java index e16b9c91..190e4c45 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientState.java @@ -207,7 +207,7 @@ public void selectHost(String name) { LOGGER.log(Level.DEBUG, "Selecting host not allowed."); } - public void selectJoin(String name) { + public void selectJoin(String string) { LOGGER.log(Level.DEBUG, "Selecting join not allowed."); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/DialogsState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/DialogsState.java index ca8cb4ef..39ca5170 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/DialogsState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/DialogsState.java @@ -4,11 +4,9 @@ import pp.mdga.client.dialogState.LobbyState; import pp.mdga.client.dialogState.NetworkDialogState; import pp.mdga.client.dialogState.StartDialogState; +import pp.mdga.game.Color; import pp.mdga.game.Player; -import pp.mdga.message.server.LobbyPlayerJoinMessage; -import pp.mdga.message.server.LobbyPlayerLeaveMessage; -import pp.mdga.message.server.UpdateReadyMessage; -import pp.mdga.message.server.UpdateTSKMessage; +import pp.mdga.message.server.*; public class DialogsState extends ClientState { @@ -73,6 +71,46 @@ public void startGame(){ logic.setState(logic.getGameState()); } + @Override + public void selectLeave(){ + currentState.selectLeave(); + } + + @Override + public void selectTSK(Color color){ + currentState.selectTSK(color); + } + + @Override + public void deselectTSK(Color color){ + currentState.deselectTSK(color); + } + + @Override + public void selectReady(boolean ready){ + currentState.selectReady(ready); + } + + @Override + public void selectUnready(){ + currentState.selectUnready(); + } + + @Override + public void selectStart(){ + currentState.selectStart(); + } + + @Override + public void selectJoin(String string){ + currentState.selectJoin(string); + } + + @Override + public void selectHost(String name){ + currentState.selectHost(name); + } + @Override public void received(LobbyPlayerJoinMessage msg){ currentState.received(msg); @@ -93,6 +131,11 @@ public void received(UpdateReadyMessage msg){ currentState.received(msg); } + @Override + public void received(ServerStartGameMessage msg){ + currentState.received(msg); + } + public DialogStates getState() { return currentState; } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/LobbyState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/LobbyState.java index 81c5fa6c..5ced9a3d 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/LobbyState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/LobbyState.java @@ -58,7 +58,13 @@ public void selectUnready(){ @Override public void selectStart(){ - logic.send(new StartGameMessage()); + if(logic.isHost() && logic.getGame().allReady()){ + logic.send(new StartGameMessage(false)); + } else if(logic.isHost() && !logic.getGame().allReady()) { + logic.send(new StartGameMessage(true)); + } else { + LOGGER.log(System.Logger.Level.ERROR, "You are not the host"); + } } @Override diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/ChoosePieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/ChoosePieceState.java index 1c501853..6861399f 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/ChoosePieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/ChoosePieceState.java @@ -27,6 +27,7 @@ public void enter() { @Override public void exit() { + currentState.exit(); currentState= null; } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/MovePieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/MovePieceState.java index 9747e656..f6e2ff0c 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/MovePieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/MovePieceState.java @@ -2,10 +2,16 @@ import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; +import pp.mdga.client.gameState.TurnState; +import pp.mdga.message.server.*; public class MovePieceState extends TurnStates { + + private final TurnState parent; + public MovePieceState(ClientState parent, ClientGameLogic logic) { super(parent, logic); + this.parent = (TurnState) parent; } @Override @@ -17,4 +23,28 @@ public void enter() { public void exit() { } + + @Override + public void received(CeremonyMessage msg){ + logic.setState(logic.getCeremony()); + } + + @Override + public void received(EndOfTurnMessage msg){ + parent.getParent().setState(parent.getParent().getWaiting()); + } + + @Override + public void received(SpectatorMessage msg){ + parent.getParent().setState(parent.getParent().getSpectator()); + } + + @Override + public void received(DiceAgainMessage msg){ + parent.setState(parent.getRollDice()); + } + + public TurnState getParent() { + return parent; + } } 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 4457dd72..ef69c671 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 @@ -3,7 +3,9 @@ import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; import pp.mdga.client.gameState.TurnState; +import pp.mdga.message.client.AnimationEndMessage; import pp.mdga.message.server.PlayCardMessage; +import pp.mdga.notification.PlayCardNotification; public class PlayPowerCardState extends TurnStates { @@ -18,7 +20,7 @@ public PlayPowerCardState(ClientState parent, ClientGameLogic logic) { @Override public void enter() { - + logic.addNotification(new PlayCardNotification(null , playCardMessage.getCard())); //TODO: get color } @Override @@ -29,4 +31,10 @@ public void exit() { public void setPlayCard(PlayCardMessage playCardMessage) { this.playCardMessage = playCardMessage; } + + @Override + public void selectAnimationEnd(){ + parent.setState(parent.getRollDice()); + logic.send(new AnimationEndMessage()); + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/PowerCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/PowerCardState.java index b2cc1c7f..9ff3a521 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/PowerCardState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/PowerCardState.java @@ -28,8 +28,8 @@ public void enter() { state = choosePowerCardState; } - @Override public void exit() { + state.exit(); state = null; } 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 f83ba268..dbdecae3 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 @@ -2,10 +2,17 @@ import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; +import pp.mdga.client.gameState.TurnState; +import pp.mdga.message.server.DieMessage; +import pp.mdga.message.server.NoTurnMessage; public class RollDiceState extends TurnStates { + + private final TurnState parent; + public RollDiceState(ClientState parent, ClientGameLogic logic) { super(parent, logic); + this.parent = (TurnState) parent; } @Override @@ -15,6 +22,20 @@ public void enter() { @Override public void exit() { + logic.getGame().setDiceModifier(1); + } + public TurnState getParent() { + return parent; + } + + public void received(DieMessage msg){ + logic.getGame().setDiceEyes(msg.getDiceEye()); + parent.setState(parent.getChoosePiece()); + } + + @Override + public void received(NoTurnMessage msg){ + parent.getParent().setState(parent.getParent().getWaiting()); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/powerCardState/ShieldState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/powerCardState/ShieldState.java index dfe1fc04..870d6add 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/powerCardState/ShieldState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/powerCardState/ShieldState.java @@ -46,7 +46,7 @@ public void selectPiece(Piece piece) { @Override public void received(PlayCardMessage msg) { - parent.getParent().setState(parent.getParent().getPlayPowerCard()); parent.getParent().getPlayPowerCard().setPlayCard(msg); + parent.getParent().setState(parent.getParent().getPlayPowerCard()); } } 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 cce1556e..93914db8 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 @@ -57,7 +57,7 @@ public void selectPiece(Piece piece){ @Override public void received(PlayCardMessage msg) { - parent.getParent().setState(parent.getParent().getPlayPowerCard()); parent.getParent().getPlayPowerCard().setPlayCard(msg); + parent.getParent().setState(parent.getParent().getPlayPowerCard()); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/DieMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/DieMessage.java index d4d8c896..11cf206e 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/DieMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/DieMessage.java @@ -14,11 +14,6 @@ public class DieMessage extends ServerMessage { */ private final int diceEye; - /** - * The pieces that can be moved - */ - private final List moveablePieces; - /** * Constructor for Dice * @@ -28,7 +23,6 @@ public class DieMessage extends ServerMessage { public DieMessage(int diceEye, List moveablePieces) { super(); this.diceEye = diceEye; - this.moveablePieces = moveablePieces; } /** @@ -36,7 +30,6 @@ public DieMessage(int diceEye, List moveablePieces) { */ private DieMessage() { diceEye = 0; - moveablePieces = null; } /** @@ -69,15 +62,6 @@ public int getDiceEye() { return diceEye; } - /** - * Getter for the pieces that can be moved - * - * @return the pieces that can be moved - */ - public List getMoveablePieces() { - return moveablePieces; - } - /** * Accepts a visitor to process this message. *