Hotfix: (from @pb4) a dead player isn't granted an early termination
authorJBM <jbm@codingame.com>
Mon, 8 Jun 2020 10:05:19 +0000 (12:05 +0200)
committerJBM <jbm@codingame.com>
Mon, 8 Jun 2020 10:05:19 +0000 (12:05 +0200)
This is an unfortunate consequence of the migration to multiround:
I can't count on gameManager.getActivePlayers() anymore since I
don't deactivate players simply for losing a round.

I'm getting closer and closer to wrapping GameManager.

src/main/java/com/codingame/game/Referee.java

index dfa3324..3aef88d 100644 (file)
@@ -172,6 +172,8 @@ public class Referee extends AbstractReferee {
         boolean noStones = true;
         int delta = 0;
         for (Player player : gameManager.getActivePlayers()) {
         boolean noStones = true;
         int delta = 0;
         for (Player player : gameManager.getActivePlayers()) {
+            if (model.haveWinner() && player.getIndex() == model.getLoser())
+                continue;
             player.stoneThrow = player.model.getStones();
             player.model.setStones(0);
             delta += player.stoneThrow * player.model.getMultiplier();
             player.stoneThrow = player.model.getStones();
             player.model.setStones(0);
             delta += player.stoneThrow * player.model.getMultiplier();