X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2FGameProc.java;h=ea5296a4f226aa93c4d3bb594d0071de41c8ec91;hb=cfadf32a4a39d1e437b141b88e103610561ce6ef;hp=ff6d1740534b89923916c4a91c1307fbcba96646;hpb=17c1be4c02b27fefa1bf6abd0547ac7e9743d493;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameProc.java b/core/src/ru/deadsoftware/cavedroid/game/GameProc.java index ff6d174..ea5296a 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/GameProc.java +++ b/core/src/ru/deadsoftware/cavedroid/game/GameProc.java @@ -10,6 +10,7 @@ import ru.deadsoftware.cavedroid.game.mobs.Player; import ru.deadsoftware.cavedroid.game.objects.Drop; import ru.deadsoftware.cavedroid.misc.ControlMode; +import javax.annotation.Nullable; import java.io.Serializable; import java.util.LinkedList; @@ -23,22 +24,15 @@ public class GameProc implements Serializable, Disposable { static boolean DO_UPD = false; static int UPD_X = -1, UPD_Y = -1; - - private transient GameFluidsThread fluidThread; + public final Player player; + public final LinkedList mobs; + final LinkedList drops; public transient GameWorld world; public transient GameRenderer renderer; public transient GameInput input; - transient GamePhysics physics; - public ControlMode controlMode; - public final Player player; - public final LinkedList mobs; - final LinkedList drops; - - public void resetRenderer() { - int scale = CaveGame.TOUCH ? 320 : 480; - renderer = new GameRenderer(scale, scale * GameScreen.getHeight() / GameScreen.getWidth()); - } + transient GamePhysics physics; + @Nullable private transient GameFluidsThread fluidThread; public GameProc(int gameMode) { world = new GameWorld(WORLD_WIDTH, WORLD_HEIGHT); @@ -48,10 +42,16 @@ public class GameProc implements Serializable, Disposable { physics = new GamePhysics(); input = new GameInput(); controlMode = CaveGame.TOUCH ? ControlMode.WALK : ControlMode.CURSOR; - resetRenderer(); + renderer = resetRenderer(); startFluidThread(); } + public GameRenderer resetRenderer() { + int scale = CaveGame.TOUCH ? 320 : 480; + renderer = new GameRenderer(scale, scale * GameScreen.getHeight() / GameScreen.getWidth()); + return renderer; + } + private void startFluidThread() { fluidThread = new GameFluidsThread(); fluidThread.start(); @@ -104,11 +104,15 @@ public class GameProc implements Serializable, Disposable { physics.update(); input.update(); blockUpdater(); - if (fluidThread == null || !fluidThread.isAlive()) startFluidThread(); + if (fluidThread == null || !fluidThread.isAlive()) { + startFluidThread(); + } } @Override public void dispose() { - fluidThread.interrupt(); + if (fluidThread != null) { + fluidThread.interrupt(); + } } }