From f484a4abc8526646fb11788b6bd34fac19a86157 Mon Sep 17 00:00:00 2001 From: Daniel Grigencha Date: Sun, 1 Dec 2024 23:06:02 +0100 Subject: [PATCH 1/6] Updated server states. Updated server stats by adding the logger to all states. In Addition, new joined clients should be updated correctly. --- .../mdga/server/automaton/CeremonyState.java | 2 +- .../pp/mdga/server/automaton/GameState.java | 2 +- .../mdga/server/automaton/InterruptState.java | 2 +- .../pp/mdga/server/automaton/LobbyState.java | 6 +- .../server/automaton/game/AnimationState.java | 9 ++- .../game/DetermineStartPlayerState.java | 10 ++- .../mdga/server/automaton/game/TurnState.java | 8 ++- .../automaton/game/turn/ChoosePieceState.java | 9 ++- .../automaton/game/turn/MovePieceState.java | 8 ++- .../game/turn/PlayPowerCardState.java | 10 ++- .../automaton/game/turn/PowerCardState.java | 10 ++- .../automaton/game/turn/RollDiceState.java | 72 ++++++++++++++++++- .../ChoosePieceAutomatonState.java | 1 + .../game/turn/choosepiece/NoPieceState.java | 32 ++++++++- .../game/turn/choosepiece/NoTurnState.java | 32 ++++++++- .../turn/choosepiece/SelectPieceState.java | 31 +++++++- .../turn/choosepiece/StartPieceState.java | 32 ++++++++- .../turn/choosepiece/WaitingPieceState.java | 33 ++++++++- .../game/turn/rolldice/FirstRollState.java | 2 +- .../turn/rolldice/RollDiceAutomatonState.java | 3 +- .../game/turn/rolldice/SecondRollState.java | 26 ++++++- .../game/turn/rolldice/ThirdRollState.java | 26 ++++++- 22 files changed, 337 insertions(+), 29 deletions(-) diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/CeremonyState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/CeremonyState.java index 42a48d68..4b424aa9 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/CeremonyState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/CeremonyState.java @@ -33,6 +33,6 @@ public void enter() { */ @Override public void exit() { - + LOGGER.log(System.Logger.Level.DEBUG, "Exited CeremonyState state."); } } 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 5d0830f4..10045e97 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 @@ -55,7 +55,7 @@ public void enter() { */ @Override public void exit() { - + LOGGER.log(System.Logger.Level.DEBUG, "Exited GameState state."); } /** diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/InterruptState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/InterruptState.java index 1a3ed72d..08d7ac53 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/InterruptState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/InterruptState.java @@ -41,7 +41,7 @@ public void enter() { */ @Override public void exit() { - + LOGGER.log(System.Logger.Level.DEBUG, "Exited InterruptState state."); } /** 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 c1687463..d38e7884 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 @@ -40,7 +40,7 @@ public void enter() { */ @Override public void exit() { - + LOGGER.log(System.Logger.Level.DEBUG, "Exited LobbyState state."); } /** @@ -55,7 +55,9 @@ public void received(JoinedLobbyMessage msg, int from) { Player player = new Player(msg.getName()); player.setColor(Color.getColorByIndex(this.logic.getGame().getPlayers().size())); this.logic.getGame().addPlayer(from, player); - this.logic.getServerSender().broadcast(new LobbyPlayerJoinedMessage(from, player)); + for (Map.Entry entry: this.logic.getGame().getPlayers().entrySet()) { + this.logic.getServerSender().broadcast(new LobbyPlayerJoinedMessage(entry.getKey(), entry.getValue())); + } } /** diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/AnimationState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/AnimationState.java index 2a3db194..8d6661b9 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/AnimationState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/AnimationState.java @@ -10,6 +10,11 @@ * */ public class AnimationState extends GameAutomatonState { + /** + * Create FirstRollState constants. + */ + private static final System.Logger LOGGER = System.getLogger(AnimationState.class.getName()); + /** * Constructs a server state of the specified game logic. * @@ -22,12 +27,12 @@ public AnimationState(GameState gameAutomaton, ServerGameLogic logic) { @Override public void enter() { - + LOGGER.log(System.Logger.Level.DEBUG, "Entered AnimationState state."); } @Override public void exit() { - + LOGGER.log(System.Logger.Level.DEBUG, "Exited AnimationState state."); } /** diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/DetermineStartPlayerState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/DetermineStartPlayerState.java index c72fdfb7..f6294206 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/DetermineStartPlayerState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/DetermineStartPlayerState.java @@ -5,6 +5,7 @@ import pp.mdga.message.server.DieMessage; import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.GameState; +import pp.mdga.server.automaton.game.turn.RollDiceState; import java.util.HashMap; import java.util.Map; @@ -12,6 +13,11 @@ import java.util.stream.Collectors; public class DetermineStartPlayerState extends GameAutomatonState { + /** + * Create FirstRollState constants. + */ + private static final System.Logger LOGGER = System.getLogger(DetermineStartPlayerState.class.getName()); + /** * Create DetermineStartPlayerState attributes. */ @@ -29,12 +35,12 @@ public DetermineStartPlayerState(GameState gameAutomaton, ServerGameLogic logic) @Override public void enter() { - + LOGGER.log(System.Logger.Level.DEBUG, "Entered DetermineStartPlayerState state."); } @Override public void exit() { - + LOGGER.log(System.Logger.Level.DEBUG, "Exited DetermineStartPlayerState state."); } /** 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 7f5c58a5..8a8c0f2c 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 @@ -9,6 +9,10 @@ * It will also be used as the turn automaton. */ public class TurnState extends GameAutomatonState { + /** + * Create FirstRollState constants. + */ + private static final System.Logger LOGGER = System.getLogger(TurnState.class.getName()); /** * Create TurnState states. */ @@ -36,12 +40,12 @@ public TurnState(GameState gameAutomaton, ServerGameLogic logic) { @Override public void enter() { - + LOGGER.log(System.Logger.Level.DEBUG, "Entered TurnState state."); } @Override public void exit() { - + LOGGER.log(System.Logger.Level.DEBUG, "Exited TurnState state."); } /** diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/ChoosePieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/ChoosePieceState.java index 768360c3..cb0e04c4 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/ChoosePieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/ChoosePieceState.java @@ -4,6 +4,11 @@ import pp.mdga.server.automaton.game.TurnState; public class ChoosePieceState extends TurnAutomatonState { + /** + * Create LobbyState constants. + */ + private static final System.Logger LOGGER = System.getLogger(ChoosePieceState.class.getName()); + /** * Constructs a server state of the specified game logic. * @@ -16,11 +21,11 @@ public ChoosePieceState(TurnState turnAutomaton, ServerGameLogic logic) { @Override public void enter() { - + LOGGER.log(System.Logger.Level.DEBUG, "Exited ChoosePieceState state."); } @Override public void exit() { - + LOGGER.log(System.Logger.Level.DEBUG, "Entered ChoosePieceState state."); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/MovePieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/MovePieceState.java index cede3202..ab9d8507 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/MovePieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/MovePieceState.java @@ -4,6 +4,10 @@ import pp.mdga.server.automaton.game.TurnState; public class MovePieceState extends TurnAutomatonState { + /** + * Create LobbyState constants. + */ + private static final System.Logger LOGGER = System.getLogger(MovePieceState.class.getName()); /** * Constructs a server state of the specified game logic. @@ -17,11 +21,11 @@ public MovePieceState(TurnState turnAutomaton, ServerGameLogic logic) { @Override public void enter() { - + LOGGER.log(System.Logger.Level.DEBUG, "Entered MovePieceState state."); } @Override public void exit() { - + LOGGER.log(System.Logger.Level.DEBUG, "Exited MovePieceState state."); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PlayPowerCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PlayPowerCardState.java index b4b05a5d..1a40bf37 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PlayPowerCardState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PlayPowerCardState.java @@ -1,9 +1,15 @@ package pp.mdga.server.automaton.game.turn; import pp.mdga.server.ServerGameLogic; +import pp.mdga.server.automaton.game.AnimationState; import pp.mdga.server.automaton.game.TurnState; public class PlayPowerCardState extends TurnAutomatonState { + /** + * Create FirstRollState constants. + */ + private static final System.Logger LOGGER = System.getLogger(PlayPowerCardState.class.getName()); + /** * Constructs a server state of the specified game logic. * @@ -16,11 +22,11 @@ public PlayPowerCardState(TurnState turnAutomaton, ServerGameLogic logic) { @Override public void enter() { - + LOGGER.log(System.Logger.Level.DEBUG, "Entered PlayPowerCardState state."); } @Override public void exit() { - + LOGGER.log(System.Logger.Level.DEBUG, "Exited PlayPowerCardState state."); } } 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 19d9d5b3..9f8e7ee0 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 @@ -1,9 +1,15 @@ package pp.mdga.server.automaton.game.turn; import pp.mdga.server.ServerGameLogic; +import pp.mdga.server.automaton.game.AnimationState; import pp.mdga.server.automaton.game.TurnState; public class PowerCardState extends TurnAutomatonState { + /** + * Create FirstRollState constants. + */ + private static final System.Logger LOGGER = System.getLogger(PowerCardState.class.getName()); + /** * Constructs a server state of the specified game logic. * @@ -16,11 +22,11 @@ public PowerCardState(TurnState turnAutomaton, ServerGameLogic logic) { @Override public void enter() { - + LOGGER.log(System.Logger.Level.DEBUG, "Exited PowerCardState state."); } @Override public void exit() { - + LOGGER.log(System.Logger.Level.DEBUG, "Entered PowerCardState state."); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/RollDiceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/RollDiceState.java index cf9648c2..6a0ce0f8 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/RollDiceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/RollDiceState.java @@ -2,8 +2,25 @@ import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.game.TurnState; +import pp.mdga.server.automaton.game.turn.rolldice.FirstRollState; +import pp.mdga.server.automaton.game.turn.rolldice.RollDiceAutomatonState; +import pp.mdga.server.automaton.game.turn.rolldice.SecondRollState; +import pp.mdga.server.automaton.game.turn.rolldice.ThirdRollState; public class RollDiceState extends TurnAutomatonState { + /** + * Create FirstRollState constants. + */ + private static final System.Logger LOGGER = System.getLogger(RollDiceState.class.getName()); + + /** + * Create RollDiceState attributes. + */ + private RollDiceAutomatonState currentState; + private final FirstRollState firstRollState; + private final SecondRollState secondRollState; + private final ThirdRollState thirdRollState; + /** * Constructs a server state of the specified game logic. * @@ -12,15 +29,68 @@ public class RollDiceState extends TurnAutomatonState { */ public RollDiceState(TurnState turnAutomaton, ServerGameLogic logic) { super(turnAutomaton, logic); + this.firstRollState = new FirstRollState(this, logic); + this.secondRollState = new SecondRollState(this, logic); + this.thirdRollState = new ThirdRollState(this, logic); } @Override public void enter() { - + LOGGER.log(System.Logger.Level.DEBUG, "Entered RollDiceState state."); } @Override public void exit() { + LOGGER.log(System.Logger.Level.DEBUG, "Exited RollDiceState state."); + } + /** + * This method will be used to return currentState attribute of RollDiceState class. + * + * @return currentState as a RollDiceAutomatonState object. + */ + public RollDiceAutomatonState getCurrentState() { + return this.currentState; + } + + /** + * This method will be used to return firstRollState attribute of RollDiceState class. + * + * @return firstRollState as a FirstRollState object. + */ + public FirstRollState getFirstRollStateState() { + return this.firstRollState; + } + + /** + * This method will be used to return secondRollState attribute of RollDiceState class. + * + * @return secondRollState as a SecondRollState object. + */ + public SecondRollState getSecondRollState() { + return this.secondRollState; + } + + /** + * This method will be used to return currentState attribute of RollDiceState class. + * + * @return thirdRollState as a ThirdRollState object. + */ + public ThirdRollState getThirdRollState() { + return this.thirdRollState; + } + + /** + * This method will be used to set currentState attribute of RollDiceState class to the given state parameter. + * In Addition, the currentState will be exited, changed and entered. + * + * @param state as the new currentState attribute as a RollDiceAutomatonState object. + */ + public void setCurrentState(RollDiceAutomatonState state) { + if (this.currentState != null) { + this.currentState.exit(); + } + this.currentState = state; + this.currentState.enter(); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/ChoosePieceAutomatonState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/ChoosePieceAutomatonState.java index 0f701179..ba0e2ede 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/ChoosePieceAutomatonState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/ChoosePieceAutomatonState.java @@ -13,6 +13,7 @@ public abstract class ChoosePieceAutomatonState extends ServerState { /** * Constructs a server state of the specified game logic. * + * @param choosePieceAutomaton as the automaton of the choose piece state as a ChoosePieceState object. * @param logic the game logic */ public ChoosePieceAutomatonState(ChoosePieceState choosePieceAutomaton, ServerGameLogic logic) { diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/NoPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/NoPieceState.java index 57c027f0..584940d1 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/NoPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/NoPieceState.java @@ -3,5 +3,35 @@ import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.game.turn.ChoosePieceState; -public class NoPieceState { +public class NoPieceState extends ChoosePieceAutomatonState { + /** + * Create FirstRollState constants. + */ + private static final System.Logger LOGGER = System.getLogger(NoPieceState.class.getName()); + + /** + * Constructs a server state of the specified game logic. + * + * @param choosePieceAutomaton as the automaton of the choose piece state as a ChoosePieceState object. + * @param logic the game logic + */ + public NoPieceState(ChoosePieceState choosePieceAutomaton, ServerGameLogic logic) { + super(choosePieceAutomaton, logic); + } + + /** + * This method will be used whenever this state will be entered. + */ + @Override + public void enter() { + LOGGER.log(System.Logger.Level.DEBUG, "Entered NoPieceState state."); + } + + /** + * This method will be used whenever this state will be exited. + */ + @Override + public void exit() { + LOGGER.log(System.Logger.Level.DEBUG, "Exited NoPieceState state."); + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/NoTurnState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/NoTurnState.java index a9a99841..206ae4db 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/NoTurnState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/NoTurnState.java @@ -3,5 +3,35 @@ import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.game.turn.ChoosePieceState; -public class NoTurnState { +public class NoTurnState extends ChoosePieceAutomatonState { + /** + * Create FirstRollState constants. + */ + private static final System.Logger LOGGER = System.getLogger(NoTurnState.class.getName()); + + /** + * Constructs a server state of the specified game logic. + * + * @param choosePieceAutomaton as the automaton of the choose piece state as a ChoosePieceState object. + * @param logic the game logic + */ + public NoTurnState(ChoosePieceState choosePieceAutomaton, ServerGameLogic logic) { + super(choosePieceAutomaton, logic); + } + + /** + * This method will be used whenever this state will be entered. + */ + @Override + public void enter() { + LOGGER.log(System.Logger.Level.DEBUG, "Entered NoTurnState state."); + } + + /** + * This method will be used whenever this state will be exited. + */ + @Override + public void exit() { + LOGGER.log(System.Logger.Level.DEBUG, "Exited NoTurnState state."); + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/SelectPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/SelectPieceState.java index dc668f22..c688a40a 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/SelectPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/SelectPieceState.java @@ -3,6 +3,35 @@ import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.game.turn.ChoosePieceState; -public class SelectPieceState { +public class SelectPieceState extends ChoosePieceAutomatonState { + /** + * Create FirstRollState constants. + */ + private static final System.Logger LOGGER = System.getLogger(SelectPieceState.class.getName()); + /** + * Constructs a server state of the specified game logic. + * + * @param choosePieceAutomaton as the automaton of the choose piece state as a ChoosePieceState object. + * @param logic the game logic + */ + public SelectPieceState(ChoosePieceState choosePieceAutomaton, ServerGameLogic logic) { + super(choosePieceAutomaton, logic); + } + + /** + * This method will be used whenever this state will be entered. + */ + @Override + public void enter() { + LOGGER.log(System.Logger.Level.DEBUG, "Entered SelectPieceState state."); + } + + /** + * This method will be used whenever this state will be exited. + */ + @Override + public void exit() { + LOGGER.log(System.Logger.Level.DEBUG, "Exited SelectPieceState state."); + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/StartPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/StartPieceState.java index df3771c2..6b2be8ac 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/StartPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/StartPieceState.java @@ -3,5 +3,35 @@ import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.game.turn.ChoosePieceState; -public class StartPieceState { +public class StartPieceState extends ChoosePieceAutomatonState { + /** + * Create FirstRollState constants. + */ + private static final System.Logger LOGGER = System.getLogger(StartPieceState.class.getName()); + + /** + * Constructs a server state of the specified game logic. + * + * @param choosePieceAutomaton as the automaton of the choose piece state as a ChoosePieceState object. + * @param logic the game logic + */ + public StartPieceState(ChoosePieceState choosePieceAutomaton, ServerGameLogic logic) { + super(choosePieceAutomaton, logic); + } + + /** + * This method will be used whenever this state will be entered. + */ + @Override + public void enter() { + LOGGER.log(System.Logger.Level.DEBUG, "Exited StartPieceState state."); + } + + /** + * This method will be used whenever this state will be exited. + */ + @Override + public void exit() { + LOGGER.log(System.Logger.Level.DEBUG, "Entered StartPieceState state."); + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/WaitingPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/WaitingPieceState.java index 0ee99927..ff3dc0ca 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/WaitingPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/WaitingPieceState.java @@ -2,6 +2,37 @@ import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.game.turn.ChoosePieceState; +import pp.mdga.server.automaton.game.turn.rolldice.FirstRollState; -public class WaitingPieceState { +public class WaitingPieceState extends ChoosePieceAutomatonState { + /** + * Create FirstRollState constants. + */ + private static final System.Logger LOGGER = System.getLogger(WaitingPieceState.class.getName()); + + /** + * Constructs a server state of the specified game logic. + * + * @param choosePieceAutomaton as the automaton of the choose piece state as a ChoosePieceState object. + * @param logic the game logic + */ + public WaitingPieceState(ChoosePieceState choosePieceAutomaton, ServerGameLogic logic) { + super(choosePieceAutomaton, logic); + } + + /** + * This method will be used whenever this state will be entered. + */ + @Override + public void enter() { + LOGGER.log(System.Logger.Level.DEBUG, "Entered WaitingPieceState state."); + } + + /** + * This method will be used whenever this state will be exited. + */ + @Override + public void exit() { + LOGGER.log(System.Logger.Level.DEBUG, "Exited WaitingPieceState state."); + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/FirstRollState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/FirstRollState.java index 6fed272d..09fe1093 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/FirstRollState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/FirstRollState.java @@ -26,6 +26,6 @@ public void enter() { @Override public void exit() { - LOGGER.log(System.Logger.Level.DEBUG, "Exited FirstRollStatte state."); + LOGGER.log(System.Logger.Level.DEBUG, "Exited FirstRollState state."); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/RollDiceAutomatonState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/RollDiceAutomatonState.java index ae31094f..d5dc622a 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/RollDiceAutomatonState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/RollDiceAutomatonState.java @@ -13,7 +13,8 @@ public abstract class RollDiceAutomatonState extends ServerState { /** * Constructs a server state of the specified game logic. * - * @param logic the game logic + * @param rollDiceAutomaton as the automaton of the roll dice state as a RollDiceState object. + * @param logic the game logic */ public RollDiceAutomatonState(RollDiceState rollDiceAutomaton, ServerGameLogic logic) { super(logic); diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/SecondRollState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/SecondRollState.java index 095872b8..e41eac29 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/SecondRollState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/SecondRollState.java @@ -3,5 +3,29 @@ import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.game.turn.RollDiceState; -public class SecondRollState { +public class SecondRollState extends RollDiceAutomatonState { + /** + * Create FirstRollState constants. + */ + private static final System.Logger LOGGER = System.getLogger(SecondRollState.class.getName()); + + /** + * Constructs a server state of the specified game logic. + * + * @param rollDiceAutomaton as the automaton of the roll dice state as a RollDiceState object. + * @param logic the game logic + */ + public SecondRollState(RollDiceState rollDiceAutomaton, ServerGameLogic logic) { + super(rollDiceAutomaton, logic); + } + + @Override + public void enter() { + LOGGER.log(System.Logger.Level.DEBUG, "Entered SecondRollState state."); + } + + @Override + public void exit() { + LOGGER.log(System.Logger.Level.DEBUG, "Exited SecondRollState state."); + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/ThirdRollState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/ThirdRollState.java index 7be9dced..f736ee46 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/ThirdRollState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/ThirdRollState.java @@ -3,5 +3,29 @@ import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.game.turn.RollDiceState; -public class ThirdRollState { +public class ThirdRollState extends RollDiceAutomatonState { + /** + * Create FirstRollState constants. + */ + private static final System.Logger LOGGER = System.getLogger(ThirdRollState.class.getName()); + + /** + * Constructs a server state of the specified game logic. + * + * @param rollDiceAutomaton as the automaton of the roll dice state as a RollDiceState object. + * @param logic the game logic + */ + public ThirdRollState(RollDiceState rollDiceAutomaton, ServerGameLogic logic) { + super(rollDiceAutomaton, logic); + } + + @Override + public void enter() { + LOGGER.log(System.Logger.Level.DEBUG, "Exited ThirdRollState state."); + } + + @Override + public void exit() { + LOGGER.log(System.Logger.Level.DEBUG, "Entered ThirdRollState state."); + } } From a1e51fb2f4d96c6324d6b6696bf63dc49b1c7569 Mon Sep 17 00:00:00 2001 From: Fleischer Hanno Date: Sun, 1 Dec 2024 23:08:25 +0100 Subject: [PATCH 2/6] added logic to the leave game method --- .../src/main/java/pp/mdga/client/dialogState/LobbyState.java | 3 +++ 1 file changed, 3 insertions(+) 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 9064fee0..d310436e 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 @@ -12,6 +12,7 @@ import pp.mdga.message.server.UpdateReadyMessage; import pp.mdga.message.server.UpdateTSKMessage; import pp.mdga.notification.LobbyReadyNotification; +import pp.mdga.notification.StartDialogNotification; import pp.mdga.notification.TskSelectNotification; import pp.mdga.notification.TskUnselectNotification; @@ -36,6 +37,7 @@ public void exit() { @Override public void selectLeave() { parent.setState(parent.getStartDialog()); + logic.addNotification(new StartDialogNotification()); logic.send(new LeaveGameMessage()); } @@ -72,6 +74,7 @@ public void selectStart(){ @Override public void received(ServerStartGameMessage msg){ + parent.startGame(); } From 7319f7a62cf8542c8682d9cbc7feba83256f0793 Mon Sep 17 00:00:00 2001 From: Felix Koppe Date: Sun, 1 Dec 2024 23:12:36 +0100 Subject: [PATCH 3/6] Process startMenuNotification in lobby --- .../src/main/java/pp/mdga/client/NotificationSynchronizer.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/NotificationSynchronizer.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/NotificationSynchronizer.java index c552e66d..00871dfe 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/NotificationSynchronizer.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/NotificationSynchronizer.java @@ -60,6 +60,8 @@ private void handleLobby(Notification notification) { if (notification instanceof TskSelectNotification n) { lobbyView.setTaken(n.getColor(), true, n.isSelf(), n.getName()); lobbyView.setTaken(n.getColor(), true, false, n.getName()); + } else if (notification instanceof StartDialogNotification) { + app.enter(MdgaState.MAIN); } else if (notification instanceof TskUnselectNotification n) { lobbyView.setTaken(n.getColor(), false, false, null); } else if(notification instanceof LobbyReadyNotification lobbyReadyNotification) { From aafc804c3f0f99c7da5ecc755b40484fd752ac7d Mon Sep 17 00:00:00 2001 From: Daniel Grigencha Date: Sun, 1 Dec 2024 23:26:53 +0100 Subject: [PATCH 4/6] Updated 'ChoosePieceState' class. Updated the 'ChoosePieceState' to work correctly as a state automaton. --- .../automaton/game/turn/ChoosePieceState.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/ChoosePieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/ChoosePieceState.java index cb0e04c4..0ee5f273 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/ChoosePieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/ChoosePieceState.java @@ -2,6 +2,7 @@ import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.game.TurnState; +import pp.mdga.server.automaton.game.turn.choosepiece.*; public class ChoosePieceState extends TurnAutomatonState { /** @@ -9,6 +10,16 @@ public class ChoosePieceState extends TurnAutomatonState { */ private static final System.Logger LOGGER = System.getLogger(ChoosePieceState.class.getName()); + /** + * Create ChoosePieceState attributes. + */ + private ChoosePieceAutomatonState currentState; + private final NoPieceState noPieceState; + private final NoTurnState noTurnState; + private final WaitingPieceState waitingPieceState; + private final StartPieceState startPieceState; + private final SelectPieceState selectPieceState; + /** * Constructs a server state of the specified game logic. * @@ -17,6 +28,12 @@ public class ChoosePieceState extends TurnAutomatonState { */ public ChoosePieceState(TurnState turnAutomaton, ServerGameLogic logic) { super(turnAutomaton, logic); + this.noPieceState = new NoPieceState(this, logic); + this.noTurnState = new NoTurnState(this, logic); + this.waitingPieceState = new WaitingPieceState(this, logic); + this.startPieceState = new StartPieceState(this, logic); + this.selectPieceState = new SelectPieceState(this, logic); + this.setCurrentState(this.noPieceState); } @Override @@ -28,4 +45,27 @@ public void enter() { public void exit() { LOGGER.log(System.Logger.Level.DEBUG, "Entered ChoosePieceState state."); } + + /** + * This method will be used to return currentState attribute of ChoosePieceState class. + * + * @return currentState as a + */ + public ChoosePieceAutomatonState getCurrentState() { + return this.currentState; + } + + /** + * This method will be used to set currentState attribute of ChoosePieceState class to the given state parameter. + * In Addition, the currentState will be exited, changed and entered. + * + * @param state as the new currentState attribute as a ChoosePieceAutomatonState object. + */ + public void setCurrentState(ChoosePieceAutomatonState state) { + if (this.currentState != null) { + this.currentState.exit(); + } + this.currentState = state; + this.currentState.enter(); + } } From e68369074f24177ddbab8e145e334b192fbc15fc Mon Sep 17 00:00:00 2001 From: Daniel Grigencha Date: Sun, 1 Dec 2024 23:27:45 +0100 Subject: [PATCH 5/6] Updated 'RollDiceState' class. Updated the 'RollDiceState' class by removing a spelling mistake. --- .../java/pp/mdga/server/automaton/game/turn/RollDiceState.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/RollDiceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/RollDiceState.java index 6a0ce0f8..0d4fd1e8 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/RollDiceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/RollDiceState.java @@ -32,6 +32,7 @@ public RollDiceState(TurnState turnAutomaton, ServerGameLogic logic) { this.firstRollState = new FirstRollState(this, logic); this.secondRollState = new SecondRollState(this, logic); this.thirdRollState = new ThirdRollState(this, logic); + this.setCurrentState(this.firstRollState); } @Override @@ -58,7 +59,7 @@ public RollDiceAutomatonState getCurrentState() { * * @return firstRollState as a FirstRollState object. */ - public FirstRollState getFirstRollStateState() { + public FirstRollState getFirstRollState() { return this.firstRollState; } From 02d7ef1dd8a4464c772c0855ad9629066405c1a4 Mon Sep 17 00:00:00 2001 From: Daniel Grigencha Date: Sun, 1 Dec 2024 23:28:50 +0100 Subject: [PATCH 6/6] Updated 'ChoosePieceState' class. Updated the 'ChoosePieceState' to work correctly as a state automaton. --- .../automaton/game/turn/ChoosePieceState.java | 47 ++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/ChoosePieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/ChoosePieceState.java index 0ee5f273..63479370 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/ChoosePieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/ChoosePieceState.java @@ -49,12 +49,57 @@ public void exit() { /** * This method will be used to return currentState attribute of ChoosePieceState class. * - * @return currentState as a + * @return currentState as a ChoosePieceAutomatonState object. */ public ChoosePieceAutomatonState getCurrentState() { return this.currentState; } + /** + * This method will be used to return noPieceState attribute of ChoosePieceState class. + * + * @return noPieceState as a NoOPieceState object. + */ + public NoPieceState getNoPieceState() { + return this.noPieceState; + } + + /** + * This method will be used to return noTurnState attribute of ChoosePieceState class. + * + * @return noTurnState as a NoTurnState object. + */ + public NoTurnState getNoTurnState() { + return this.noTurnState; + } + + /** + * This method will be used to return waitingPieceState attribute of ChoosePieceState class. + * + * @return waitingPieceState as a WaitingPieceState object. + */ + public WaitingPieceState getWaitingPieceState() { + return this.waitingPieceState; + } + + /** + * This method will be used to return startPieceState attribute of ChoosePieceState class. + * + * @return startPieceState as a StartPieceState object. + */ + public StartPieceState getStartPieceState() { + return this.startPieceState; + } + + /** + * This method will be used to return selectPieceState attribute of ChoosePieceState class. + * + * @return selectPieceState as a SelectPieceState object. + */ + public SelectPieceState getSelectPieceState() { + return this.selectPieceState; + } + /** * This method will be used to set currentState attribute of ChoosePieceState class to the given state parameter. * In Addition, the currentState will be exited, changed and entered.