DEADSOFTWARE

Add environment damage
[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;
8 import ru.deadsoftware.cavedroid.game.world.GameWorldMobDamageControllerTask;
10 import javax.inject.Inject;
12 @GameScope
13 public class GameProc implements Disposable {
15 private final GamePhysics mGamePhysics;
16 private final GameInput mGameInput;
17 private final GameRenderer mGameRenderer;
18 private final MobsController mMobsController;
19 private final GameWorldFluidsLogicControllerTask mGameWorldFluidsLogicControllerTask;
20 private final GameWorldBlocksLogicControllerTask mGameWorldBlocksLogicControllerTask;
21 private final GameWorldMobDamageControllerTask mGameWorldMobDamageControllerTask;
23 private final Timer mWorldLogicTimer = new Timer();
25 @Inject
26 public GameProc(GamePhysics gamePhysics,
27 GameInput gameInput,
28 GameRenderer gameRenderer,
29 MobsController mobsController,
30 GameWorldFluidsLogicControllerTask gameWorldFluidsLogicControllerTask,
31 GameWorldBlocksLogicControllerTask gameWorldBlocksLogicControllerTask,
32 GameWorldMobDamageControllerTask gameWorldMobDamageControllerTask
33 ) {
34 mGamePhysics = gamePhysics;
35 mGameInput = gameInput;
36 mGameRenderer = gameRenderer;
37 mMobsController = mobsController;
38 mGameWorldFluidsLogicControllerTask = gameWorldFluidsLogicControllerTask;
39 mGameWorldBlocksLogicControllerTask = gameWorldBlocksLogicControllerTask;
40 mGameWorldMobDamageControllerTask = gameWorldMobDamageControllerTask;
44 mWorldLogicTimer.scheduleTask(gameWorldFluidsLogicControllerTask, 0,
45 GameWorldFluidsLogicControllerTask.FLUID_UPDATE_INTERVAL_SEC);
46 mWorldLogicTimer.scheduleTask(gameWorldBlocksLogicControllerTask, 0,
47 GameWorldBlocksLogicControllerTask.WORLD_BLOCKS_LOGIC_UPDATE_INTERVAL_SEC);
48 mWorldLogicTimer.scheduleTask(gameWorldMobDamageControllerTask, 0,
49 GameWorldMobDamageControllerTask.ENVIRONMENTAL_MOB_DAMAGE_INTERVAL_SEC);
50 }
52 public void setPlayerGameMode(int gameMode) {
53 mMobsController.getPlayer().gameMode = gameMode;
54 }
56 public void update(float delta) {
57 mGamePhysics.update(delta);
58 mGameInput.update();
59 mGameRenderer.render(delta);
60 }
62 @Override
63 public void dispose() {
64 mWorldLogicTimer.stop();
65 mGameWorldFluidsLogicControllerTask.cancel();
66 mGameWorldBlocksLogicControllerTask.cancel();
67 mGameWorldMobDamageControllerTask.cancel();
68 }
69 }