More debug utility
[troll.git] / src / main / java / com / codingame / game / View.java
index f39bbb8..29570b6 100644 (file)
@@ -193,6 +193,7 @@ class View {
     Sprite troll;
     Text trollPositionGauge;
     Player p0 = new Player(), p1 = new Player();
     Sprite troll;
     Text trollPositionGauge;
     Player p0 = new Player(), p1 = new Player();
+    Text turnCounter; int _turns = 0;
 
     void init(Model m) {
         model = m;
 
     void init(Model m) {
         model = m;
@@ -218,6 +219,8 @@ class View {
     void startTurn() {
         p0.startTurn();
         p1.startTurn();
     void startTurn() {
         p0.startTurn();
         p1.startTurn();
+
+        animateTurnCounter();
     }
 
     private class Pos {
     }
 
     private class Pos {
@@ -230,6 +233,39 @@ class View {
                 .setImage("background.png")
                 .setAnchor(0);
 
                 .setImage("background.png")
                 .setAnchor(0);
 
+        int numMountains = random.nextInt(5);
+        while (numMountains --> 0) {
+            final int pngWidth = 366;
+            double scale = 0.5 * (1 + random.nextDouble());
+            int x = random.nextInt(1920 + (int) (scale*pngWidth))
+                - (int) (scale*pngWidth/2);
+            int baseTint = 64 + random.nextInt(128);
+            Sprite mountain = graphicEntityModule.createSprite()
+                .setImage("mountain.png")
+                .setX(x)
+                .setY(680)
+                .setAnchorX(0.5)
+                .setAnchorY(283.0 / 321.0)
+                .setRotation((random.nextDouble() - 0.5) * Math.PI / 1800)
+                .setScaleX(random.nextInt(2) == 0 ? scale : -scale)
+                .setScaleY(scale * (1 + (random.nextDouble() - 0.5) / 2))
+                .setSkewX((random.nextDouble() - 0.5) / 4)
+                .setSkewY((random.nextDouble() - 0.5) / 8)
+                .setTint((baseTint + random.nextInt(16) - 8) * 0x010000
+                         + (baseTint + random.nextInt(16) - 8) * 0x0100
+                         + (baseTint + random.nextInt(16) - 8) * 0x01);
+            graphicEntityModule.createSprite().setImage("mountaintop.png")
+                .setX(mountain.getX())
+                .setY(mountain.getY())
+                .setAnchorX(mountain.getAnchorX())
+                .setAnchorY(mountain.getAnchorY())
+                .setRotation(mountain.getRotation())
+                .setScaleX(mountain.getScaleX())
+                .setScaleY(mountain.getScaleY())
+                .setSkewX(mountain.getSkewX())
+                .setSkewY(mountain.getSkewY());
+        }
+
         int numTrees = random.nextInt(21);
         ArrayList<Pos> poss = new ArrayList<Pos>(numTrees);
         while (numTrees --> 0) {
         int numTrees = random.nextInt(21);
         ArrayList<Pos> poss = new ArrayList<Pos>(numTrees);
         while (numTrees --> 0) {
@@ -308,6 +344,15 @@ class View {
         trollPositionGauge.setX(troll.getX());
     }
 
         trollPositionGauge.setX(troll.getX());
     }
 
+    void animateTurnCounter() {
+        for (int i = 0; i < 10; i++) {
+            turnCounter.setText("T" + _turns + "." + i);
+            // The following line is likely not a bug.
+            graphicEntityModule.commitEntityState((double) i/9, turnCounter);
+        }
+        _turns++;
+    }
+
     void drawDebug() {
         String[] debugModePngs = graphicEntityModule.createSpriteSheetSplitter()
             .setSourceImage("debug.png")
     void drawDebug() {
         String[] debugModePngs = graphicEntityModule.createSpriteSheetSplitter()
             .setSourceImage("debug.png")
@@ -326,5 +371,18 @@ class View {
             .setAnchorX(0.5)
             .setLoop(true);
         toggleModule.displayOnToggleState(debugMode, "debug", true);
             .setAnchorX(0.5)
             .setLoop(true);
         toggleModule.displayOnToggleState(debugMode, "debug", true);
+
+        turnCounter = graphicEntityModule.createText()
+            .setAnchorX(0.5)
+            .setAnchorY(0)
+            .setX(1920 / 2)
+            .setY(280)
+            .setStrokeColor(0xff0080)
+            .setFillColor(0xff0080)
+            .setFontFamily("monospace")
+            .setFontWeight(Text.FontWeight.BOLD)
+            .setFontSize(100);
+        toggleModule.displayOnToggleState(turnCounter, "debug", true);
+        animateTurnCounter();
     }
 }
     }
 }