DEADSOFTWARE

Fix codestyle
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / GameFluidsThread.java
index d404c43aca84b79aaca1bd7b5aac1d1db923238b..d069a4058b171a259f57ab6e8a0de86266424c5b 100644 (file)
@@ -1,13 +1,15 @@
 package ru.deadsoftware.cavedroid.game;
 
+import com.badlogic.gdx.utils.TimeUtils;
+
 import java.util.Arrays;
 
 import static ru.deadsoftware.cavedroid.GameScreen.GP;
 import static ru.deadsoftware.cavedroid.game.GameItems.*;
 
-public class GameFluidsThread extends Thread {
+class GameFluidsThread extends Thread {
 
-    private static final int FLUID_UPDATE_INTERVAL_MS = 150;
+    private static final int FLUID_UPDATE_INTERVAL_MS = 100;
     private static final int FLUID_STATES = 5;
 
     private static final int[] WATER_IDS = {8, 60, 61, 62, 63};
@@ -32,7 +34,9 @@ public class GameFluidsThread extends Thread {
 
     private int getNextBlockStateId(int id) {
         int nextState = getNextBlockState(id);
-        if (nextState == -1) return 0;
+        if (nextState == -1) {
+            return 0;
+        }
         if (isWater(id)) {
             return WATER_IDS[nextState];
         }
@@ -98,27 +102,38 @@ public class GameFluidsThread extends Thread {
     }
 
     private void updateFluids(int x, int y) {
-        if (!isFluid(id(x, y))) return;
-        if (drainFluid(x, y)) return;
+        if (!isFluid(id(x, y))) {
+            return;
+        }
+        if (drainFluid(x, y)) {
+            return;
+        }
         flowFluid(x, y);
     }
 
     private void fluidUpdater() {
         int midScreen = (int) (GP.renderer.getCamX() + GP.renderer.getWidth() / 2) / 16;
-        for (int y = 0; y < GP.world.getHeight(); y++) {
-            for (int x = 0; x < (int) (GP.renderer.getWidth() / 2) / 16 + 1; x++) {
+        for (int y = GP.world.getHeight() - 1; y >= 0; y--) {
+            for (int x = 0; x <= GP.world.getWidth() / 2; x++) {
                 updateFluids(midScreen + x, y);
                 updateFluids(midScreen - x, y);
             }
         }
     }
 
+    private boolean timeToUpdate() {
+        if (TimeUtils.timeSinceMillis(fluidLastUpdateTimestamp) >= FLUID_UPDATE_INTERVAL_MS) {
+            fluidLastUpdateTimestamp = TimeUtils.millis();
+            return true;
+        }
+        return false;
+    }
+
     @Override
     public void run() {
         while (!this.isInterrupted()) {
-            if (System.currentTimeMillis() - fluidLastUpdateTimestamp > FLUID_UPDATE_INTERVAL_MS) {
+            if (timeToUpdate()) {
                 fluidUpdater();
-                fluidLastUpdateTimestamp = System.currentTimeMillis();
             }
         }
     }