From aafc804c3f0f99c7da5ecc755b40484fd752ac7d Mon Sep 17 00:00:00 2001 From: Daniel Grigencha Date: Sun, 1 Dec 2024 23:26:53 +0100 Subject: [PATCH] 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(); + } }