X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2FGameProc.java;h=29062a44a07d24deff2efcefa40a2ec542a8978a;hb=cb0605053ce3de493b0d1f43cd7ec1e4a9cf0ac5;hp=ef0821107a4e520b0d56e4c21d145e9203549992;hpb=f4d52e3e4a3712050532786fca0aded5ff8b5a03;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameProc.java b/core/src/ru/deadsoftware/cavedroid/game/GameProc.java index ef08211..29062a4 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/GameProc.java +++ b/core/src/ru/deadsoftware/cavedroid/game/GameProc.java @@ -1,35 +1,81 @@ package ru.deadsoftware.cavedroid.game; +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.utils.Disposable; +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 { - - public static final int MAX_CREATIVE_SCROLL = GameItems.getItemsSize() / 8; +public class GameProc implements Disposable { - 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; - mGameWorld.startFluidsThread(); + 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(); - mGameInput.update(); - mGameWorld.update(); + mGamePhysics.update(delta); mGameRenderer.render(delta); + mContainerController.update(); + } + + public void show() { + Gdx.input.setInputProcessor(mGameRenderer); } + @Override + public void dispose() { + mWorldLogicTimer.stop(); + mGameWorldFluidsLogicControllerTask.cancel(); + mGameWorldBlocksLogicControllerTask.cancel(); + mGameWorldMobDamageControllerTask.cancel(); + } }