Cleanup and meta updates
[troll.git] / src / main / java / com / codingame / game / Referee.java
index b56cade..979e283 100644 (file)
@@ -30,21 +30,24 @@ public class Referee extends AbstractReferee {
         gameManager.getPlayer(0).model = model.p0;
         gameManager.getPlayer(1).model = model.p1;
 
-        for (Player p : gameManager.getPlayers()) {
-            p.sendInputLine(String.format("%d %d", model.roadLength, model.initialStones));
+        for (Player p: gameManager.getPlayers()) {
+            p.sendInputLine(String.format("%d %d",
+                                          model.roadLength,
+                                          model.initialStones));
         }
 
         view.init(model);
         gameManager.getPlayer(0).view = view.p0;
         gameManager.getPlayer(1).view = view.p1;
-
-        gameManager.setFrameDuration(2000); // XXX
+        gameManager.setFrameDuration(2000);
     }
 
     @Override
     public void gameTurn(int turn) {
         // System.err.println("Starting turn " + turn);
 
+        view.startTurn();
+
         boolean disqual = false;
         boolean victory = false;
         boolean exhausted = false;
@@ -53,14 +56,16 @@ public class Referee extends AbstractReferee {
         for (Player player : gameManager.getActivePlayers()) {
             Model.Player p = player.model;
             {
-                int trollDistance = p.getTrollDistance();
-                int stones = p.getStones();
-                int oppStones = p.getOppStones();
-                player.sendInputLine(String.format("%d %d %d", trollDistance, stones, oppStones));
+                player.sendInputLine(String.format("%d %d %d",
+                                                   p.getTrollDistance(),
+                                                   p.getStones(),
+                                                   p.getOppStones()));
             }
             player.execute();
         }
 
+        // SDK @#%^&! arbitrary sequence point: last input < first output
+
         for (Player player : gameManager.getActivePlayers()) {
             Model.Player p = player.model;
 
@@ -87,6 +92,7 @@ public class Referee extends AbstractReferee {
                 }
                 else if (stones > 0) {
                     player.view.animateStones(stones);
+                    player.view.updateStoneCounter();
                 }
             }
             catch (InvalidAction e) {
@@ -131,8 +137,8 @@ public class Referee extends AbstractReferee {
             }
 
             if (model.haveWinner()) {
-                int winner = model.getWinner();
-                gameManager.addToGameSummary(GameManager.formatErrorMessage("Troll destroys " + gameManager.getPlayer(winner).getNicknameToken()));
+                int loser = model.getLoser();
+                gameManager.addToGameSummary(GameManager.formatErrorMessage("Troll destroys " + gameManager.getPlayer(loser).getNicknameToken()) + ".");
                 victory = true;
             }
             else if (model.exhausted()) exhausted = true;
@@ -151,11 +157,11 @@ public class Referee extends AbstractReferee {
         int s1 = p1.getScore();
 
         if (s0 > s1) {
-            gameManager.addToGameSummary(GameManager.formatSuccessMessage(p0.getNicknameToken() + " wins"));
+            gameManager.addToGameSummary(GameManager.formatSuccessMessage(p0.getNicknameToken() + " wins."));
             p1.view.destroy();
         }
         else if (s0 < s1) {
-            gameManager.addToGameSummary(GameManager.formatSuccessMessage(p1.getNicknameToken() + " wins"));
+            gameManager.addToGameSummary(GameManager.formatSuccessMessage(p1.getNicknameToken() + " wins."));
             p0.view.destroy();
         }
         else if (s0 < 0) {