Fixed miss code for reversed turn order (see Aeon Engine, #8804)

This commit is contained in:
Oleg Agafonov 2022-05-27 09:35:30 +04:00
parent 182f9ae2c7
commit 94dc91d8e1
2 changed files with 14 additions and 8 deletions

View file

@ -200,6 +200,7 @@ public class GameState implements Serializable, Copyable<GameState> {
this.commandersToStay.addAll(state.commandersToStay);
this.hasDayNight = state.hasDayNight;
this.isDaytime = state.isDaytime;
this.reverseTurnOrder = state.reverseTurnOrder;
}
public void clearOnGameRestart() {
@ -290,6 +291,7 @@ public class GameState implements Serializable, Copyable<GameState> {
this.commandersToStay = state.commandersToStay;
this.hasDayNight = state.hasDayNight;
this.isDaytime = state.isDaytime;
this.reverseTurnOrder = state.reverseTurnOrder;
}
@Override

View file

@ -25,12 +25,12 @@ public class PlayerList extends CircularList<UUID> {
public Player getNextInRange(Player basePlayer, Game game) {
UUID currentPlayerBefore = this.get();
UUID nextPlayerId = super.getNext();
UUID nextPlayerId = game.isTurnOrderReversed() ? super.getPrevious() : super.getNext();
do {
if (basePlayer.getInRange().contains(nextPlayerId)) {
return game.getPlayer(nextPlayerId);
}
nextPlayerId = super.getNext();
nextPlayerId = game.isTurnOrderReversed() ? super.getPrevious() : super.getNext();
} while (!nextPlayerId.equals(currentPlayerBefore));
return null;
}
@ -47,11 +47,7 @@ public class PlayerList extends CircularList<UUID> {
}
Player player;
while (true) {
if(game.isTurnOrderReversed()){
player = game.getPlayer(super.getPrevious());
} else{
player = game.getPlayer(super.getNext());
}
player = getAffectedNext(game);
if (player.isInGame()) {
break;
}
@ -76,7 +72,7 @@ public class PlayerList extends CircularList<UUID> {
return null;
}
while (true) {
player = game.getPlayer(super.getPrevious());
player = getAffectedPrevious(game);
if (player.isInGame()) {
break;
}
@ -88,6 +84,14 @@ public class PlayerList extends CircularList<UUID> {
return player;
}
private Player getAffectedNext(Game game) {
return game.isTurnOrderReversed() ? game.getPlayer(super.getPrevious()) : game.getPlayer(super.getNext());
}
private Player getAffectedPrevious(Game game) {
return game.isTurnOrderReversed() ? game.getPlayer(super.getNext()) : game.getPlayer(super.getPrevious());
}
@Override
public PlayerList copy() {
return new PlayerList(this);