diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameFluidsThread.java b/core/src/ru/deadsoftware/cavedroid/game/GameFluidsThread.java
index d404c43aca84b79aaca1bd7b5aac1d1db923238b..d069a4058b171a259f57ab6e8a0de86266424c5b 100644 (file)
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};
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];
}
}
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();
}
}
}