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.objects.container.ContainerController;
10 import ru.deadsoftware.cavedroid.game.world.GameWorldBlocksLogicControllerTask;
11 import ru.deadsoftware.cavedroid.game.world.GameWorldFluidsLogicControllerTask;
12 import ru.deadsoftware.cavedroid.game.world.GameWorldMobDamageControllerTask;
14 import javax.inject.Inject;
16 @GameScope
17 public class GameProc implements Disposable {
19 private final GamePhysics mGamePhysics;
20 private final GameRenderer mGameRenderer;
21 private final MobsController mMobsController;
22 private final ContainerController mContainerController;
23 private final GameItemsHolder mGameItemsHolder;
24 private final GameWorldFluidsLogicControllerTask mGameWorldFluidsLogicControllerTask;
25 private final GameWorldBlocksLogicControllerTask mGameWorldBlocksLogicControllerTask;
26 private final GameWorldMobDamageControllerTask mGameWorldMobDamageControllerTask;
28 private final Timer mWorldLogicTimer = new Timer();
30 @Inject
31 public GameProc(MainConfig mainConfig,
32 GamePhysics gamePhysics,
33 GameRenderer gameRenderer,
34 MobsController mobsController,
35 ContainerController containerController,
36 GameItemsHolder gameItemsHolder,
37 GameWorldFluidsLogicControllerTask gameWorldFluidsLogicControllerTask,
38 GameWorldBlocksLogicControllerTask gameWorldBlocksLogicControllerTask,
39 GameWorldMobDamageControllerTask gameWorldMobDamageControllerTask
40 ) {
41 mGamePhysics = gamePhysics;
42 mGameRenderer = gameRenderer;
43 mMobsController = mobsController;
44 mContainerController = containerController;
45 mGameItemsHolder = gameItemsHolder;
46 mGameWorldFluidsLogicControllerTask = gameWorldFluidsLogicControllerTask;
47 mGameWorldBlocksLogicControllerTask = gameWorldBlocksLogicControllerTask;
48 mGameWorldMobDamageControllerTask = gameWorldMobDamageControllerTask;
50 mobsController.getPlayer().controlMode = mainConfig.isTouch() ? Player.ControlMode.WALK : Player.ControlMode.CURSOR;
52 mWorldLogicTimer.scheduleTask(gameWorldFluidsLogicControllerTask, 0,
53 GameWorldFluidsLogicControllerTask.FLUID_UPDATE_INTERVAL_SEC);
54 mWorldLogicTimer.scheduleTask(gameWorldBlocksLogicControllerTask, 0,
55 GameWorldBlocksLogicControllerTask.WORLD_BLOCKS_LOGIC_UPDATE_INTERVAL_SEC);
56 mWorldLogicTimer.scheduleTask(gameWorldMobDamageControllerTask, 0,
57 GameWorldMobDamageControllerTask.ENVIRONMENTAL_MOB_DAMAGE_INTERVAL_SEC);
58 }
60 public void setPlayerGameMode(int gameMode) {
61 mMobsController.getPlayer().gameMode = gameMode;
62 }
64 public void update(float delta) {
65 mGamePhysics.update(delta);
66 mGameRenderer.render(delta);
67 mContainerController.update();
68 }
70 public void show() {
71 Gdx.input.setInputProcessor(mGameRenderer);
72 }
74 @Override
75 public void dispose() {
76 mWorldLogicTimer.stop();
77 mGameWorldFluidsLogicControllerTask.cancel();
78 mGameWorldBlocksLogicControllerTask.cancel();
79 mGameWorldMobDamageControllerTask.cancel();
80 }
81 }