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
;
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();
28 public GameProc(MainConfig mainConfig
,
29 GamePhysics gamePhysics
,
30 GameRenderer gameRenderer
,
31 MobsController mobsController
,
32 GameWorldFluidsLogicControllerTask gameWorldFluidsLogicControllerTask
,
33 GameWorldBlocksLogicControllerTask gameWorldBlocksLogicControllerTask
,
34 GameWorldMobDamageControllerTask gameWorldMobDamageControllerTask
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
);
53 public void setPlayerGameMode(int gameMode
) {
54 mMobsController
.getPlayer().gameMode
= gameMode
;
57 public void update(float delta
) {
58 mGamePhysics
.update(delta
);
59 mGameRenderer
.render(delta
);
63 Gdx
.input
.setInputProcessor(mGameRenderer
);
67 public void dispose() {
68 mWorldLogicTimer
.stop();
69 mGameWorldFluidsLogicControllerTask
.cancel();
70 mGameWorldBlocksLogicControllerTask
.cancel();
71 mGameWorldMobDamageControllerTask
.cancel();