Fix color.next

This commit is contained in:
Felix Koppe
2024-12-08 14:16:14 +01:00
parent ee94d901f4
commit f9f381ac2d
4 changed files with 19 additions and 16 deletions

View File

@@ -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<Color> 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);
}
/**

View File

@@ -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()));
}
}

View File

@@ -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()));
}
}

View File

@@ -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());
}