diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/CeremonyState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/CeremonyState.java index 38541512..cf6e5e5a 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/CeremonyState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/CeremonyState.java @@ -18,7 +18,7 @@ public CeremonyState(ClientState parent, ClientGameLogic logic) { @Override public void enter() { - currentState = podiumState; + setState(podiumState); logic.addNotification(createCeremonyNotification()); } @@ -28,7 +28,9 @@ public void exit() { } public void setState(CeremonyStates state){ - this.currentState.exit(); + if(this.currentState != null){ + this.currentState.exit(); + } state.enter(); currentState = state; } 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 c3f33c97..c8578cd3 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 @@ -30,13 +30,15 @@ public void exit(){ @Override public void enter(){ - currentState = startDialogState; + setState(startDialogState); ownPlayerID = 0; ownPlayerName = null; } public void setState(DialogStates newState){ - currentState.exit(); + if(currentState != null){ + currentState.exit(); + } newState.enter(); currentState = newState; } @@ -69,11 +71,6 @@ public StartDialogState getStartDialog() { return startDialogState; } - public void startGame(){ - exit(); - logic.setState(logic.getGameState()); - } - @Override public void selectLeave(){ currentState.selectLeave(); 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 af449db8..31b3f340 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 @@ -27,7 +27,6 @@ public class GameState extends ClientState { */ public GameState(ClientState parent, ClientGameLogic logic) { super(parent, logic); - state = determineStartPlayerState; } /** @@ -35,7 +34,7 @@ public GameState(ClientState parent, ClientGameLogic logic) { */ @Override public void enter() { - + this.setState(this.determineStartPlayerState); } /** @@ -52,8 +51,10 @@ public void exit() { * @param newState the state to be set */ public void setState(GameStates newState){ - state.exit(); - state.enter(); + if(this.state != null){ + this.state.exit(); + } + newState.enter(); state = newState; } 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 6d70ba50..2d48cbe1 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 @@ -95,7 +95,7 @@ public void received(ServerStartGameMessage msg){ } logic.addNotification(new PlayerInGameNotification(entry.getKey(), pieceList , logic.getGame().getPlayerByColor(entry.getKey()).getName())); } - parent.startGame(); + logic.setState(logic.getGameState()); } @Override 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 4b95fe68..4794785a 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 @@ -34,7 +34,9 @@ public void exit() { } public void setState(DetermineStartPlayerStates state) { - this.state.exit(); + if(this.state != null){ + this.state.exit(); + } state.enter(); this.state = state; } 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 b59a35b8..5f075eff 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,7 +31,7 @@ public TurnState(ClientState parent, ClientGameLogic logic) { @Override public void enter() { - state = powerCardState; + this.setState(this.powerCardState); } @Override @@ -40,7 +40,9 @@ public void exit() { } public void setState(TurnStates state){ - this.state.exit(); + if(this.state != null){ + this.state.exit(); + } state.enter(); this.state = state; } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/determineStartPlayerState/RollRankingDiceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/determineStartPlayerState/RollRankingDiceState.java index 3c1ec5b9..e6a98522 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/determineStartPlayerState/RollRankingDiceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/determineStartPlayerState/RollRankingDiceState.java @@ -6,6 +6,7 @@ import pp.mdga.message.client.RequestDieMessage; import pp.mdga.message.server.DieMessage; import pp.mdga.notification.DiceNowNotification; +import pp.mdga.notification.RollDiceNotification; public class RollRankingDiceState extends DetermineStartPlayerStates { @@ -23,16 +24,17 @@ public void enter() { @Override public void exit() { - } @Override public void selectDice(){ + System.out.println("selectDice"); logic.send(new RequestDieMessage()); } @Override public void received(DieMessage msg){ + logic.addNotification(new RollDiceNotification(logic.getGame().getPlayerById(logic.getDialogs().getOwnPlayerId()).getColor(), msg.getDiceEye(),true)); parent.setState(parent.getWaitRanking()); } } 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 b1a0c7e3..47dce439 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 @@ -24,7 +24,7 @@ public ChoosePieceState(ClientState parent, ClientGameLogic logic) { @Override public void enter() { - currentState = noPieceState; + this.setState(this.noPieceState); } @Override @@ -34,9 +34,11 @@ public void exit() { } public void setState(ChoosePieceStates state){ - currentState.exit(); + if(currentState != null){ + currentState.exit(); + } + state.enter(); currentState = state; - currentState.enter(); } @Override 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 fd80b68d..5a5fd5c3 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 @@ -31,7 +31,7 @@ public PowerCardState(ClientState parent, ClientGameLogic logic) { @Override public void enter() { - state = choosePowerCardState; + this.setState(this.choosePowerCardState); } public void exit() { @@ -40,7 +40,9 @@ public void exit() { } public void setState(PowerCardStates state) { - this.state.exit(); + if(this.state != null){ + this.state.exit(); + } state.enter(); this.state = state; }