DEADSOFTWARE

184e376cba5c448991c67c303e73f132c613cb3a
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / GameProc.java
1 package ru.deadsoftware.cavedroid.game;
3 import com.badlogic.gdx.utils.Disposable;
4 import com.badlogic.gdx.utils.Timer;
5 import ru.deadsoftware.cavedroid.game.mobs.MobsController;
6 import ru.deadsoftware.cavedroid.game.world.GameWorldBlocksLogicControllerTask;
7 import ru.deadsoftware.cavedroid.game.world.GameWorldFluidsLogicControllerTask;
9 import javax.inject.Inject;
11 @GameScope
12 public class GameProc implements Disposable {
14 private final GamePhysics mGamePhysics;
15 private final GameInput mGameInput;
16 private final GameRenderer mGameRenderer;
17 private final MobsController mMobsController;
18 private final GameWorldFluidsLogicControllerTask mGameWorldFluidsLogicControllerTask;
19 private final GameWorldBlocksLogicControllerTask mGameWorldBlocksLogicControllerTask;
21 private final Timer mWorldLogicTimer = new Timer();
23 @Inject
24 public GameProc(GamePhysics gamePhysics,
25 GameInput gameInput,
26 GameRenderer gameRenderer,
27 MobsController mobsController,
28 GameWorldFluidsLogicControllerTask gameWorldFluidsLogicControllerTask,
29 GameWorldBlocksLogicControllerTask gameWorldBlocksLogicControllerTask
30 ) {
31 mGamePhysics = gamePhysics;
32 mGameInput = gameInput;
33 mGameRenderer = gameRenderer;
34 mMobsController = mobsController;
35 mGameWorldFluidsLogicControllerTask = gameWorldFluidsLogicControllerTask;
36 mGameWorldBlocksLogicControllerTask = gameWorldBlocksLogicControllerTask;
40 mWorldLogicTimer.scheduleTask(gameWorldFluidsLogicControllerTask, 0,
41 GameWorldFluidsLogicControllerTask.FLUID_UPDATE_INTERVAL_SEC);
42 mWorldLogicTimer.scheduleTask(gameWorldBlocksLogicControllerTask, 0,
43 GameWorldBlocksLogicControllerTask.WORLD_BLOCKS_LOGIC_UPDATE_INTERVAL_SEC);
44 }
46 public void setPlayerGameMode(int gameMode) {
47 mMobsController.getPlayer().gameMode = gameMode;
48 }
50 public void update(float delta) {
51 mGamePhysics.update(delta);
52 mGameInput.update();
53 mGameRenderer.render(delta);
54 }
56 @Override
57 public void dispose() {
58 mWorldLogicTimer.stop();
59 mGameWorldFluidsLogicControllerTask.cancel();
60 mGameWorldBlocksLogicControllerTask.cancel();
61 }
62 }