diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameProc.java b/core/src/ru/deadsoftware/cavedroid/game/GameProc.java
index d5a1a95ad3745072fe0f2758905eb8d28cc9cf0c..29062a44a07d24deff2efcefa40a2ec542a8978a 100644 (file)
package ru.deadsoftware.cavedroid.game;
+import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.utils.Disposable;
-import ru.deadsoftware.cavedroid.game.world.GameWorld;
+import com.badlogic.gdx.utils.Timer;
+import ru.deadsoftware.cavedroid.MainConfig;
+import ru.deadsoftware.cavedroid.game.mobs.MobsController;
+import ru.deadsoftware.cavedroid.game.mobs.player.Player;
+import ru.deadsoftware.cavedroid.game.objects.container.ContainerController;
+import ru.deadsoftware.cavedroid.game.world.GameWorldBlocksLogicControllerTask;
+import ru.deadsoftware.cavedroid.game.world.GameWorldFluidsLogicControllerTask;
+import ru.deadsoftware.cavedroid.game.world.GameWorldMobDamageControllerTask;
import javax.inject.Inject;
@GameScope
public class GameProc implements Disposable {
- public static final int MAX_CREATIVE_SCROLL = GameItems.getItemsSize() / 8;
-
- private final GameWorld mGameWorld;
private final GamePhysics mGamePhysics;
- private final GameInput mGameInput;
private final GameRenderer mGameRenderer;
+ private final MobsController mMobsController;
+ private final ContainerController mContainerController;
+ private final GameItemsHolder mGameItemsHolder;
+ private final GameWorldFluidsLogicControllerTask mGameWorldFluidsLogicControllerTask;
+ private final GameWorldBlocksLogicControllerTask mGameWorldBlocksLogicControllerTask;
+ private final GameWorldMobDamageControllerTask mGameWorldMobDamageControllerTask;
+
+ private final Timer mWorldLogicTimer = new Timer();
@Inject
- public GameProc(GameWorld gameWorld,
+ public GameProc(MainConfig mainConfig,
GamePhysics gamePhysics,
- GameInput gameInput,
- GameRenderer gameRenderer) {
- mGameWorld = gameWorld;
+ GameRenderer gameRenderer,
+ MobsController mobsController,
+ ContainerController containerController,
+ GameItemsHolder gameItemsHolder,
+ GameWorldFluidsLogicControllerTask gameWorldFluidsLogicControllerTask,
+ GameWorldBlocksLogicControllerTask gameWorldBlocksLogicControllerTask,
+ GameWorldMobDamageControllerTask gameWorldMobDamageControllerTask
+ ) {
mGamePhysics = gamePhysics;
- mGameInput = gameInput;
mGameRenderer = gameRenderer;
+ mMobsController = mobsController;
+ mContainerController = containerController;
+ mGameItemsHolder = gameItemsHolder;
+ mGameWorldFluidsLogicControllerTask = gameWorldFluidsLogicControllerTask;
+ mGameWorldBlocksLogicControllerTask = gameWorldBlocksLogicControllerTask;
+ mGameWorldMobDamageControllerTask = gameWorldMobDamageControllerTask;
+
+ mobsController.getPlayer().controlMode = mainConfig.isTouch() ? Player.ControlMode.WALK : Player.ControlMode.CURSOR;
+
+ mWorldLogicTimer.scheduleTask(gameWorldFluidsLogicControllerTask, 0,
+ GameWorldFluidsLogicControllerTask.FLUID_UPDATE_INTERVAL_SEC);
+ mWorldLogicTimer.scheduleTask(gameWorldBlocksLogicControllerTask, 0,
+ GameWorldBlocksLogicControllerTask.WORLD_BLOCKS_LOGIC_UPDATE_INTERVAL_SEC);
+ mWorldLogicTimer.scheduleTask(gameWorldMobDamageControllerTask, 0,
+ GameWorldMobDamageControllerTask.ENVIRONMENTAL_MOB_DAMAGE_INTERVAL_SEC);
+ }
+
+ public void setPlayerGameMode(int gameMode) {
+ mMobsController.getPlayer().gameMode = gameMode;
}
public void update(float delta) {
mGamePhysics.update(delta);
- mGameInput.update();
- mGameWorld.update();
mGameRenderer.render(delta);
+ mContainerController.update();
+ }
+
+ public void show() {
+ Gdx.input.setInputProcessor(mGameRenderer);
}
@Override
public void dispose() {
- mGameWorld.dispose();
+ mWorldLogicTimer.stop();
+ mGameWorldFluidsLogicControllerTask.cancel();
+ mGameWorldBlocksLogicControllerTask.cancel();
+ mGameWorldMobDamageControllerTask.cancel();
}
}