DEADSOFTWARE

Add update blocks logic actions
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / GameProc.java
index f063f7a19a856c1f0d4b06e28f924f14574ced22..139a31ba61e8dbe98d54fb458944de45450a35f2 100644 (file)
@@ -1,8 +1,10 @@
 package ru.deadsoftware.cavedroid.game;
 
 import com.badlogic.gdx.utils.Disposable;
+import com.badlogic.gdx.utils.Timer;
 import ru.deadsoftware.cavedroid.game.mobs.MobsController;
-import ru.deadsoftware.cavedroid.game.world.GameWorld;
+import ru.deadsoftware.cavedroid.game.world.GameWorldBlocksLogicControllerTask;
+import ru.deadsoftware.cavedroid.game.world.GameWorldFluidsLogicControllerTask;
 
 import javax.inject.Inject;
 
@@ -11,24 +13,34 @@ public class GameProc implements Disposable {
 
     public static final int MAX_CREATIVE_SCROLL = GameItems.getItemsSize() / 8;
 
-    private final GameWorld mGameWorld;
     private final GamePhysics mGamePhysics;
     private final GameInput mGameInput;
     private final GameRenderer mGameRenderer;
     private final MobsController mMobsController;
+    private final GameWorldFluidsLogicControllerTask mGameWorldFluidsLogicControllerTask;
+    private final GameWorldBlocksLogicControllerTask mGameWorldBlocksLogicControllerTask;
+
+    private final Timer mWorldLogicTimer = new Timer();
 
     @Inject
-    public GameProc(GameWorld gameWorld,
-                    GamePhysics gamePhysics,
+    public GameProc(GamePhysics gamePhysics,
                     GameInput gameInput,
                     GameRenderer gameRenderer,
-                    MobsController mobsController
+                    MobsController mobsController,
+                    GameWorldFluidsLogicControllerTask gameWorldFluidsLogicControllerTask,
+                    GameWorldBlocksLogicControllerTask gameWorldBlocksLogicControllerTask
     ) {
-        mGameWorld = gameWorld;
         mGamePhysics = gamePhysics;
         mGameInput = gameInput;
         mGameRenderer = gameRenderer;
         mMobsController = mobsController;
+        mGameWorldFluidsLogicControllerTask = gameWorldFluidsLogicControllerTask;
+        mGameWorldBlocksLogicControllerTask = gameWorldBlocksLogicControllerTask;
+
+        mWorldLogicTimer.scheduleTask(gameWorldFluidsLogicControllerTask, 0,
+                GameWorldFluidsLogicControllerTask.FLUID_UPDATE_INTERVAL_SEC);
+        mWorldLogicTimer.scheduleTask(gameWorldBlocksLogicControllerTask, 0,
+                GameWorldBlocksLogicControllerTask.WORLD_BLOCKS_LOGIC_UPDATE_INTERVAL_SEC);
     }
 
     public void setPlayerGameMode(int gameMode) {
@@ -38,12 +50,13 @@ public class GameProc implements Disposable {
     public void update(float delta) {
         mGamePhysics.update(delta);
         mGameInput.update();
-        mGameWorld.update();
         mGameRenderer.render(delta);
     }
 
     @Override
     public void dispose() {
-        mGameWorld.dispose();
+        mWorldLogicTimer.stop();
+        mGameWorldFluidsLogicControllerTask.cancel();
+        mGameWorldBlocksLogicControllerTask.cancel();
     }
 }