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
;
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();
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
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
);
60 public void setPlayerGameMode(int gameMode
) {
61 mMobsController
.getPlayer().gameMode
= gameMode
;
64 public void update(float delta
) {
65 mGamePhysics
.update(delta
);
66 mGameRenderer
.render(delta
);
67 mContainerController
.update();
71 Gdx
.input
.setInputProcessor(mGameRenderer
);
75 public void dispose() {
76 mWorldLogicTimer
.stop();
77 mGameWorldFluidsLogicControllerTask
.cancel();
78 mGameWorldBlocksLogicControllerTask
.cancel();
79 mGameWorldMobDamageControllerTask
.cancel();