diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/Color.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Color.java index 0fd652c8..5e057bce 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/Color.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/Color.java @@ -2,6 +2,8 @@ import com.jme3.network.serializing.Serializable; +import java.util.ArrayList; + /** * This enumeration represents the four different TSK colors that a player can choose. * Additionally, the NONE color indicates the absence of a color. @@ -48,15 +50,16 @@ public static Color getColorByIndex(int index) { * * @return color as a Color Enumeration. */ - public Color next() { - Color[] colors = values(); - int nextIndex = (this.ordinal() + 1) % colors.length; + public Color next(Game game) { + ArrayList colorsInGame = new ArrayList<>(); - if (colors[nextIndex] == NONE) { - nextIndex = (nextIndex + 1) % colors.length; + for(Player p : game.getPlayers().values()) { + colorsInGame.add(p.getColor()); } - return colors[nextIndex]; + int nextIndex = (this.ordinal() + 1) % colorsInGame.size(); + + return colorsInGame.get(nextIndex); } /** 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 61642456..42d96035 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 @@ -35,12 +35,12 @@ public void enter() { LOGGER.log(System.Logger.Level.DEBUG, "Entered MovePieceState state."); } - private void setActivePlayer(Color color) { - if (!logic.getGame().getPlayerByColor(color.next()).isFinished()) { - logic.getGame().setActiveColor(logic.getGame().getActiveColor().next()); - logic.getServerSender().broadcast(new ActivePlayerMessage(color.next())); + private void setActivePlayer(Color activePlayer) { + if (!logic.getGame().getPlayerByColor(activePlayer.next(logic.getGame())).isFinished()) { + logic.getGame().setActiveColor(logic.getGame().getActiveColor().next(logic.getGame())); + logic.getServerSender().broadcast(new ActivePlayerMessage(activePlayer.next(logic.getGame()))); } else { - setActivePlayer(color.next()); + setActivePlayer(activePlayer.next(logic.getGame())); } } 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 83e97d8d..368088a4 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 @@ -23,11 +23,11 @@ public NoTurnState(ChoosePieceState choosePieceAutomaton, ServerGameLogic logic) } private void setActivePlayer(Color color) { - if (!logic.getGame().getPlayerByColor(color.next()).isFinished()) { - logic.getGame().setActiveColor(logic.getGame().getActiveColor().next()); - logic.getServerSender().broadcast(new ActivePlayerMessage(color.next())); + if (!logic.getGame().getPlayerByColor(color.next(logic.getGame())).isFinished()) { + logic.getGame().setActiveColor(logic.getGame().getActiveColor().next(logic.getGame())); + logic.getServerSender().broadcast(new ActivePlayerMessage(color.next(logic.getGame()))); } else { - setActivePlayer(color.next()); + setActivePlayer(color.next(logic.getGame())); } } 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 5782f139..06bd6a6c 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 @@ -54,7 +54,7 @@ public void received(RequestDieMessage msg, int from) { if (this.logic.getGame().getNumberOfActivePlayers() == 1) { this.logic.getServerSender().broadcast(new CeremonyMessage()); } else { - this.logic.getGame().setActiveColor(this.logic.getGame().getActiveColor().next()); + this.logic.getGame().setActiveColor(this.logic.getGame().getActiveColor().next(logic.getGame())); this.logic.getServerSender().broadcast(new ActivePlayerMessage(this.logic.getGame().getActiveColor())); this.rollDiceAutomaton.getTurnAutomaton().getGameAutomaton().setCurrentState(this.rollDiceAutomaton.getTurnAutomaton().getGameAutomaton().getAnimationState()); }