DEADSOFTWARE

3a2244052b1c8b1353ea104751570aea671fe055
[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.misc.utils.AssetLoader;
10 import javax.inject.Inject;
12 @GameScope
13 public class GameProc implements Disposable {
15 public static final int MAX_CREATIVE_SCROLL = GameItems.getItemsSize() / 8;
17 private final GamePhysics mGamePhysics;
18 private final GameInput mGameInput;
19 private final GameRenderer mGameRenderer;
20 private final MobsController mMobsController;
21 private final GameWorldFluidsLogicControllerTask mGameWorldFluidsLogicControllerTask;
22 private final GameWorldBlocksLogicControllerTask mGameWorldBlocksLogicControllerTask;
23 private final GameItemsHolder mGameItemsHolder;
25 private final Timer mWorldLogicTimer = new Timer();
27 @Inject
28 public GameProc(GamePhysics gamePhysics,
29 GameInput gameInput,
30 GameRenderer gameRenderer,
31 MobsController mobsController,
32 GameWorldFluidsLogicControllerTask gameWorldFluidsLogicControllerTask,
33 GameWorldBlocksLogicControllerTask gameWorldBlocksLogicControllerTask,
34 GameItemsHolder gameItemsHolder,
35 AssetLoader assetLoader
36 ) {
37 mGamePhysics = gamePhysics;
38 mGameInput = gameInput;
39 mGameRenderer = gameRenderer;
40 mMobsController = mobsController;
41 mGameWorldFluidsLogicControllerTask = gameWorldFluidsLogicControllerTask;
42 mGameWorldBlocksLogicControllerTask = gameWorldBlocksLogicControllerTask;
43 mGameItemsHolder = gameItemsHolder;
45 mGameItemsHolder.initialize();
47 mWorldLogicTimer.scheduleTask(gameWorldFluidsLogicControllerTask, 0,
48 GameWorldFluidsLogicControllerTask.FLUID_UPDATE_INTERVAL_SEC);
49 mWorldLogicTimer.scheduleTask(gameWorldBlocksLogicControllerTask, 0,
50 GameWorldBlocksLogicControllerTask.WORLD_BLOCKS_LOGIC_UPDATE_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 mGameInput.update();
60 mGameRenderer.render(delta);
61 }
63 @Override
64 public void dispose() {
65 mWorldLogicTimer.stop();
66 mGameWorldFluidsLogicControllerTask.cancel();
67 mGameWorldBlocksLogicControllerTask.cancel();
68 }
69 }