DEADSOFTWARE

Update version
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / GameProc.java
1 package ru.deadsoftware.cavedroid.game;
3 import com.badlogic.gdx.Gdx;
4 import com.badlogic.gdx.utils.Disposable;
5 import com.badlogic.gdx.utils.Timer;
6 import ru.deadsoftware.cavedroid.MainConfig;
7 import ru.deadsoftware.cavedroid.game.mobs.MobsController;
8 import ru.deadsoftware.cavedroid.game.mobs.player.Player;
9 import ru.deadsoftware.cavedroid.game.world.GameWorldBlocksLogicControllerTask;
10 import ru.deadsoftware.cavedroid.game.world.GameWorldFluidsLogicControllerTask;
11 import ru.deadsoftware.cavedroid.game.world.GameWorldMobDamageControllerTask;
13 import javax.inject.Inject;
15 @GameScope
16 public class GameProc implements Disposable {
18 private final GamePhysics mGamePhysics;
19 private final GameRenderer mGameRenderer;
20 private final MobsController mMobsController;
21 private final GameWorldFluidsLogicControllerTask mGameWorldFluidsLogicControllerTask;
22 private final GameWorldBlocksLogicControllerTask mGameWorldBlocksLogicControllerTask;
23 private final GameWorldMobDamageControllerTask mGameWorldMobDamageControllerTask;
25 private final Timer mWorldLogicTimer = new Timer();
27 @Inject
28 public GameProc(MainConfig mainConfig,
29 GamePhysics gamePhysics,
30 GameRenderer gameRenderer,
31 MobsController mobsController,
32 GameWorldFluidsLogicControllerTask gameWorldFluidsLogicControllerTask,
33 GameWorldBlocksLogicControllerTask gameWorldBlocksLogicControllerTask,
34 GameWorldMobDamageControllerTask gameWorldMobDamageControllerTask
35 ) {
36 mGamePhysics = gamePhysics;
37 mGameRenderer = gameRenderer;
38 mMobsController = mobsController;
39 mGameWorldFluidsLogicControllerTask = gameWorldFluidsLogicControllerTask;
40 mGameWorldBlocksLogicControllerTask = gameWorldBlocksLogicControllerTask;
41 mGameWorldMobDamageControllerTask = gameWorldMobDamageControllerTask;
43 mobsController.getPlayer().controlMode = mainConfig.isTouch() ? Player.ControlMode.WALK : Player.ControlMode.CURSOR;
45 mWorldLogicTimer.scheduleTask(gameWorldFluidsLogicControllerTask, 0,
46 GameWorldFluidsLogicControllerTask.FLUID_UPDATE_INTERVAL_SEC);
47 mWorldLogicTimer.scheduleTask(gameWorldBlocksLogicControllerTask, 0,
48 GameWorldBlocksLogicControllerTask.WORLD_BLOCKS_LOGIC_UPDATE_INTERVAL_SEC);
49 mWorldLogicTimer.scheduleTask(gameWorldMobDamageControllerTask, 0,
50 GameWorldMobDamageControllerTask.ENVIRONMENTAL_MOB_DAMAGE_INTERVAL_SEC);
51 }
53 public void setPlayerGameMode(int gameMode) {
54 mMobsController.getPlayer().gameMode = gameMode;
55 }
57 public void update(float delta) {
58 mGamePhysics.update(delta);
59 mGameRenderer.render(delta);
60 }
62 public void show() {
63 Gdx.input.setInputProcessor(mGameRenderer);
64 }
66 @Override
67 public void dispose() {
68 mWorldLogicTimer.stop();
69 mGameWorldFluidsLogicControllerTask.cancel();
70 mGameWorldBlocksLogicControllerTask.cancel();
71 mGameWorldMobDamageControllerTask.cancel();
72 }
73 }