From: fredboy Date: Fri, 27 Jun 2025 11:45:41 +0000 (+0700) Subject: Extract input handling from renderer X-Git-Tag: alpha0.9.3~17 X-Git-Url: http://deadsoftware.ru/gitweb?a=commitdiff_plain;h=0d6a50d1378d4222e48a89ae3f079cabd692b1c7;p=cavedroid.git Extract input handling from renderer --- diff --git a/core/data/configuration/build.gradle.kts b/core/data/configuration/build.gradle.kts index 9d1d0f1..2092f36 100644 --- a/core/data/configuration/build.gradle.kts +++ b/core/data/configuration/build.gradle.kts @@ -8,6 +8,7 @@ java.targetCompatibility = ApplicationInfo.sourceCompatibility dependencies { useDagger() + useLibgdx() useCommonModule() useModule(":core:domain:configuration") } diff --git a/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/di/DataConfigurationModule.kt b/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/di/DataConfigurationModule.kt index 52d2765..68a4fbc 100644 --- a/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/di/DataConfigurationModule.kt +++ b/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/di/DataConfigurationModule.kt @@ -2,13 +2,13 @@ package ru.fredboy.cavedroid.data.configuration.di import dagger.Binds import dagger.Module -import ru.fredboy.cavedroid.data.configuration.repository.GameConfigurationRepositoryImpl -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.data.configuration.repository.GameContextRepositoryImpl +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository @Module abstract class DataConfigurationModule { @Binds - internal abstract fun bindGameConfigurationRepository(impl: GameConfigurationRepositoryImpl): GameConfigurationRepository + internal abstract fun bindGameConfigurationRepository(impl: GameContextRepositoryImpl): GameContextRepository } \ No newline at end of file diff --git a/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/model/GameConfiguration.kt b/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/model/GameConfiguration.kt deleted file mode 100644 index df88c3d..0000000 --- a/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/model/GameConfiguration.kt +++ /dev/null @@ -1,15 +0,0 @@ -package ru.fredboy.cavedroid.data.configuration.model - -import ru.fredboy.cavedroid.common.model.Joystick - -internal data class GameConfiguration( - var isTouch: Boolean = false, - var gameDirectory: String = "", - var width: Float = 0f, - var height: Float = 0f, - var showInfo: Boolean = false, - var showMap: Boolean = false, - var joystick: Joystick? = null, - var isFullscreen: Boolean = false, - var useDynamicCamera: Boolean = false, -) diff --git a/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/model/GameContext.kt b/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/model/GameContext.kt new file mode 100644 index 0000000..c03c517 --- /dev/null +++ b/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/model/GameContext.kt @@ -0,0 +1,27 @@ +package ru.fredboy.cavedroid.data.configuration.model + +import ru.fredboy.cavedroid.common.model.Joystick +import ru.fredboy.cavedroid.domain.configuration.model.CameraContext + +internal class GameContext { + + var isTouch: Boolean = false + + var gameDirectory: String = "" + + var width: Float = 0f + + var height: Float = 0f + + var showInfo: Boolean = false + + var showMap: Boolean = false + + var joystick: Joystick? = null + + var isFullscreen: Boolean = false + + var useDynamicCamera: Boolean = false + + var cameraContext: CameraContext? = null +} diff --git a/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/repository/GameConfigurationRepositoryImpl.kt b/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/repository/GameConfigurationRepositoryImpl.kt deleted file mode 100644 index 2c45253..0000000 --- a/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/repository/GameConfigurationRepositoryImpl.kt +++ /dev/null @@ -1,67 +0,0 @@ -package ru.fredboy.cavedroid.data.configuration.repository - -import ru.fredboy.cavedroid.common.model.Joystick -import ru.fredboy.cavedroid.data.configuration.store.GameConfigurationStore -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository -import javax.inject.Inject -import javax.inject.Singleton - -@Singleton -class GameConfigurationRepositoryImpl @Inject constructor( - private val gameConfigurationStore: GameConfigurationStore -) : GameConfigurationRepository { - - override fun isTouch(): Boolean = gameConfigurationStore.isTouch - - override fun getGameDirectory(): String = gameConfigurationStore.gameDirectory - - override fun getWidth(): Float = gameConfigurationStore.width - - override fun getHeight(): Float = gameConfigurationStore.height - - override fun shouldShowInfo(): Boolean = gameConfigurationStore.showInfo - - override fun shouldShowMap(): Boolean = gameConfigurationStore.showMap - - override fun getJoystick(): Joystick? = gameConfigurationStore.joystick - - override fun isFullscreen(): Boolean = gameConfigurationStore.isFullscreen - - override fun useDynamicCamera(): Boolean = gameConfigurationStore.useDynamicCamera - - override fun setTouch(isTouch: Boolean) { - gameConfigurationStore.isTouch = isTouch - } - - override fun setGameDirectory(path: String) { - gameConfigurationStore.gameDirectory = path - } - - override fun setWidth(width: Float) { - gameConfigurationStore.width = width - } - - override fun setHeight(height: Float) { - gameConfigurationStore.height = height - } - - override fun setShowInfo(show: Boolean) { - gameConfigurationStore.showInfo = show - } - - override fun setShowMap(show: Boolean) { - gameConfigurationStore.showMap = show - } - - override fun setJoystick(joystick: Joystick?) { - gameConfigurationStore.joystick = joystick - } - - override fun setFullscreen(fullscreen: Boolean) { - gameConfigurationStore.isFullscreen = fullscreen - } - - override fun setUseDynamicCamera(use: Boolean) { - gameConfigurationStore.useDynamicCamera = use - } -} diff --git a/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/repository/GameContextRepositoryImpl.kt b/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/repository/GameContextRepositoryImpl.kt new file mode 100644 index 0000000..fb7b2a5 --- /dev/null +++ b/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/repository/GameContextRepositoryImpl.kt @@ -0,0 +1,74 @@ +package ru.fredboy.cavedroid.data.configuration.repository + +import ru.fredboy.cavedroid.common.model.Joystick +import ru.fredboy.cavedroid.data.configuration.store.GameContextStore +import ru.fredboy.cavedroid.domain.configuration.model.CameraContext +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class GameContextRepositoryImpl @Inject constructor( + private val gameContextStore: GameContextStore +) : GameContextRepository { + + override fun isTouch(): Boolean = gameContextStore.isTouch + + override fun getGameDirectory(): String = gameContextStore.gameDirectory + + override fun getWidth(): Float = gameContextStore.width + + override fun getHeight(): Float = gameContextStore.height + + override fun shouldShowInfo(): Boolean = gameContextStore.showInfo + + override fun shouldShowMap(): Boolean = gameContextStore.showMap + + override fun getJoystick(): Joystick? = gameContextStore.joystick + + override fun isFullscreen(): Boolean = gameContextStore.isFullscreen + + override fun useDynamicCamera(): Boolean = gameContextStore.useDynamicCamera + + override fun getCameraContext(): CameraContext? = gameContextStore.cameraContext + + override fun setTouch(isTouch: Boolean) { + gameContextStore.isTouch = isTouch + } + + override fun setGameDirectory(path: String) { + gameContextStore.gameDirectory = path + } + + override fun setWidth(width: Float) { + gameContextStore.width = width + } + + override fun setHeight(height: Float) { + gameContextStore.height = height + } + + override fun setShowInfo(show: Boolean) { + gameContextStore.showInfo = show + } + + override fun setShowMap(show: Boolean) { + gameContextStore.showMap = show + } + + override fun setJoystick(joystick: Joystick?) { + gameContextStore.joystick = joystick + } + + override fun setFullscreen(fullscreen: Boolean) { + gameContextStore.isFullscreen = fullscreen + } + + override fun setUseDynamicCamera(use: Boolean) { + gameContextStore.useDynamicCamera = use + } + + override fun setCameraContext(cameraContext: CameraContext?) { + gameContextStore.cameraContext = cameraContext + } +} diff --git a/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/store/GameConfigurationStore.kt b/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/store/GameConfigurationStore.kt deleted file mode 100644 index 430e9f5..0000000 --- a/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/store/GameConfigurationStore.kt +++ /dev/null @@ -1,54 +0,0 @@ -package ru.fredboy.cavedroid.data.configuration.store - -import ru.fredboy.cavedroid.common.model.Joystick -import ru.fredboy.cavedroid.data.configuration.model.GameConfiguration -import javax.inject.Inject -import javax.inject.Singleton - -@Singleton -class GameConfigurationStore @Inject constructor() { - - private val lock = Any() - - private val gameConfiguration = GameConfiguration() - - var isTouch: Boolean - get() = synchronized(lock) { gameConfiguration.isTouch } - set(value) = synchronized(lock) { gameConfiguration.isTouch = value } - - var gameDirectory: String - get() = synchronized(lock) { gameConfiguration.gameDirectory } - set(value) = synchronized(lock) { gameConfiguration.gameDirectory = value } - - var width: Float - get() = synchronized(lock) { gameConfiguration.width } - set(value) = synchronized(lock) { gameConfiguration.width = value } - - var height: Float - get() = synchronized(lock) { gameConfiguration.height } - set(value) = synchronized(lock) { gameConfiguration.height = value } - - var showInfo: Boolean - get() = synchronized(lock) { gameConfiguration.showInfo } - set(value) = synchronized(lock) { gameConfiguration.showInfo = value } - - var showMap: Boolean - get() = synchronized(lock) { gameConfiguration.showMap } - set(value) = synchronized(lock) { gameConfiguration.showMap = value } - - var joystick: Joystick? - get() = synchronized(lock) { gameConfiguration.joystick } - set(value) = synchronized(lock) { gameConfiguration.joystick = value } - - var isFullscreen: Boolean - get() = synchronized(lock) { gameConfiguration.isFullscreen } - set(value) = synchronized(lock) { gameConfiguration.isFullscreen = value } - - var useDynamicCamera: Boolean - get() = synchronized(lock) { gameConfiguration.useDynamicCamera } - set(value) = synchronized(lock) { gameConfiguration.useDynamicCamera = value } - - companion object { - private const val TAG = "GameConfigurationStore" - } -} diff --git a/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/store/GameContextStore.kt b/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/store/GameContextStore.kt new file mode 100644 index 0000000..eb35986 --- /dev/null +++ b/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/store/GameContextStore.kt @@ -0,0 +1,60 @@ +package ru.fredboy.cavedroid.data.configuration.store + +import com.badlogic.gdx.graphics.OrthographicCamera +import ru.fredboy.cavedroid.common.model.Joystick +import ru.fredboy.cavedroid.domain.configuration.model.CameraContext +import ru.fredboy.cavedroid.data.configuration.model.GameContext +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class GameContextStore @Inject constructor() { + + private val lock = Any() + + private val gameContext = GameContext() + + var isTouch: Boolean + get() = synchronized(lock) { gameContext.isTouch } + set(value) = synchronized(lock) { gameContext.isTouch = value } + + var gameDirectory: String + get() = synchronized(lock) { gameContext.gameDirectory } + set(value) = synchronized(lock) { gameContext.gameDirectory = value } + + var width: Float + get() = synchronized(lock) { gameContext.width } + set(value) = synchronized(lock) { gameContext.width = value } + + var height: Float + get() = synchronized(lock) { gameContext.height } + set(value) = synchronized(lock) { gameContext.height = value } + + var showInfo: Boolean + get() = synchronized(lock) { gameContext.showInfo } + set(value) = synchronized(lock) { gameContext.showInfo = value } + + var showMap: Boolean + get() = synchronized(lock) { gameContext.showMap } + set(value) = synchronized(lock) { gameContext.showMap = value } + + var joystick: Joystick? + get() = synchronized(lock) { gameContext.joystick } + set(value) = synchronized(lock) { gameContext.joystick = value } + + var isFullscreen: Boolean + get() = synchronized(lock) { gameContext.isFullscreen } + set(value) = synchronized(lock) { gameContext.isFullscreen = value } + + var useDynamicCamera: Boolean + get() = synchronized(lock) { gameContext.useDynamicCamera } + set(value) = synchronized(lock) { gameContext.useDynamicCamera = value } + + var cameraContext: CameraContext? + get() = synchronized(lock) { gameContext.cameraContext } + set(value) = synchronized(lock) { gameContext.cameraContext = value } + + companion object { + private const val TAG = "GameConfigurationStore" + } +} diff --git a/core/domain/configuration/build.gradle.kts b/core/domain/configuration/build.gradle.kts index cfe9e18..86474f1 100644 --- a/core/domain/configuration/build.gradle.kts +++ b/core/domain/configuration/build.gradle.kts @@ -7,5 +7,6 @@ java.sourceCompatibility = ApplicationInfo.sourceCompatibility java.targetCompatibility = ApplicationInfo.sourceCompatibility dependencies { + useLibgdx() useCommonModule() } diff --git a/core/domain/configuration/src/main/kotlin/ru/fredboy/cavedroid/domain/configuration/model/CameraContext.kt b/core/domain/configuration/src/main/kotlin/ru/fredboy/cavedroid/domain/configuration/model/CameraContext.kt new file mode 100644 index 0000000..f97bac1 --- /dev/null +++ b/core/domain/configuration/src/main/kotlin/ru/fredboy/cavedroid/domain/configuration/model/CameraContext.kt @@ -0,0 +1,19 @@ +package ru.fredboy.cavedroid.domain.configuration.model + +import com.badlogic.gdx.Gdx +import com.badlogic.gdx.graphics.Camera +import com.badlogic.gdx.math.Rectangle + +data class CameraContext( + val viewport: Rectangle, + val camera: Camera, +) { + + fun xOnViewport(x: Int) = viewport.width / Gdx.graphics.width * x.toFloat() + + fun yOnViewport(y: Int) = viewport.height / Gdx.graphics.height * y.toFloat() + + fun getViewportCoordinates(x: Int, y: Int): Pair { + return xOnViewport(x) to yOnViewport(y) + } +} \ No newline at end of file diff --git a/core/domain/configuration/src/main/kotlin/ru/fredboy/cavedroid/domain/configuration/repository/GameConfigurationRepository.kt b/core/domain/configuration/src/main/kotlin/ru/fredboy/cavedroid/domain/configuration/repository/GameContextRepository.kt similarity index 78% rename from core/domain/configuration/src/main/kotlin/ru/fredboy/cavedroid/domain/configuration/repository/GameConfigurationRepository.kt rename to core/domain/configuration/src/main/kotlin/ru/fredboy/cavedroid/domain/configuration/repository/GameContextRepository.kt index 64bb0a8..ab393b6 100644 --- a/core/domain/configuration/src/main/kotlin/ru/fredboy/cavedroid/domain/configuration/repository/GameConfigurationRepository.kt +++ b/core/domain/configuration/src/main/kotlin/ru/fredboy/cavedroid/domain/configuration/repository/GameContextRepository.kt @@ -1,8 +1,9 @@ package ru.fredboy.cavedroid.domain.configuration.repository import ru.fredboy.cavedroid.common.model.Joystick +import ru.fredboy.cavedroid.domain.configuration.model.CameraContext -interface GameConfigurationRepository { +interface GameContextRepository { fun isTouch(): Boolean @@ -22,6 +23,8 @@ interface GameConfigurationRepository { fun useDynamicCamera(): Boolean + fun getCameraContext(): CameraContext? + fun setTouch(isTouch: Boolean) fun setGameDirectory(path: String) @@ -40,4 +43,6 @@ interface GameConfigurationRepository { fun setUseDynamicCamera(use: Boolean) + fun setCameraContext(cameraContext: CameraContext?) + } diff --git a/core/src/main/java/ru/deadsoftware/cavedroid/game/GameComponent.java b/core/src/main/java/ru/deadsoftware/cavedroid/game/GameComponent.java index 396bba6..a0b780f 100644 --- a/core/src/main/java/ru/deadsoftware/cavedroid/game/GameComponent.java +++ b/core/src/main/java/ru/deadsoftware/cavedroid/game/GameComponent.java @@ -5,8 +5,7 @@ import ru.deadsoftware.cavedroid.MainComponent; import ru.deadsoftware.cavedroid.generated.module.*; import ru.fredboy.cavedroid.common.api.GameController; import ru.fredboy.cavedroid.common.di.GameScope; -import ru.fredboy.cavedroid.data.configuration.di.DataConfigurationModule; -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository; +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository; import ru.fredboy.cavedroid.domain.items.repository.ItemsRepository; import ru.fredboy.cavedroid.game.controller.container.di.ControllerContainerModule; import ru.fredboy.cavedroid.game.controller.drop.di.ControllerDropModule; @@ -33,7 +32,7 @@ public interface GameComponent { ItemsRepository getItemsRepository(); - GameConfigurationRepository getGameConfigurationRepository(); + GameContextRepository getGameConfigurationRepository(); GameController getGameController(); } diff --git a/core/src/main/java/ru/deadsoftware/cavedroid/game/GameModule.java b/core/src/main/java/ru/deadsoftware/cavedroid/game/GameModule.java index 0b04665..2196a99 100644 --- a/core/src/main/java/ru/deadsoftware/cavedroid/game/GameModule.java +++ b/core/src/main/java/ru/deadsoftware/cavedroid/game/GameModule.java @@ -2,10 +2,9 @@ package ru.deadsoftware.cavedroid.game; import dagger.Module; import dagger.Provides; -import ru.deadsoftware.cavedroid.MainConfig; import ru.fredboy.cavedroid.common.di.GameScope; import ru.fredboy.cavedroid.domain.assets.repository.MobAssetsRepository; -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository; +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository; import ru.fredboy.cavedroid.domain.items.model.block.Block; import ru.fredboy.cavedroid.domain.items.repository.ItemsRepository; import ru.fredboy.cavedroid.domain.items.usecase.GetFallbackItemUseCase; @@ -33,13 +32,13 @@ public class GameModule { @Provides @GameScope - public static DropController provideDropController(GameConfigurationRepository gameConfigurationRepository, + public static DropController provideDropController(GameContextRepository gameContextRepository, SaveDataRepository saveDataRepository, ItemsRepository itemsRepository, DropWorldAdapter dropWorldAdapter) { DropController controller = needLoad - ? saveDataRepository.loadDropController(gameConfigurationRepository.getGameDirectory(), dropWorldAdapter) + ? saveDataRepository.loadDropController(gameContextRepository.getGameDirectory(), dropWorldAdapter) : new DropController(itemsRepository, dropWorldAdapter); return controller; @@ -47,14 +46,14 @@ public class GameModule { @Provides @GameScope - public static ContainerController provideFurnaceController(GameConfigurationRepository gameConfigurationRepository, + public static ContainerController provideFurnaceController(GameContextRepository gameContextRepository, SaveDataRepository saveDataRepository, GetItemByKeyUseCase getItemByKeyUseCase, ContainerWorldAdapter containerWorldAdapter, ContainerFactory containerFactory, DropAdapter dropAdapter) { ContainerController controller = needLoad - ? saveDataRepository.loadContainerController(gameConfigurationRepository.getGameDirectory(), containerWorldAdapter, containerFactory, dropAdapter) + ? saveDataRepository.loadContainerController(gameContextRepository.getGameDirectory(), containerWorldAdapter, containerFactory, dropAdapter) : new ContainerController(getItemByKeyUseCase, containerWorldAdapter, containerFactory, dropAdapter); return controller; @@ -62,24 +61,24 @@ public class GameModule { @Provides @GameScope - public static MobController provideMobsController(GameConfigurationRepository gameConfigurationRepository, + public static MobController provideMobsController(GameContextRepository gameContextRepository, SaveDataRepository saveDataRepository, MobAssetsRepository mobAssetsRepository, GetFallbackItemUseCase getFallbackItemUseCase, MobWorldAdapter mobWorldAdapter) { return needLoad - ? saveDataRepository.loadMobController(gameConfigurationRepository.getGameDirectory(), mobWorldAdapter) + ? saveDataRepository.loadMobController(gameContextRepository.getGameDirectory(), mobWorldAdapter) : new MobController(mobAssetsRepository, getFallbackItemUseCase, mobWorldAdapter); } @Provides @GameScope - public static GameWorld provideGameWorld(GameConfigurationRepository gameConfigurationRepository, + public static GameWorld provideGameWorld(GameContextRepository gameContextRepository, SaveDataRepository saveDataRepository, ItemsRepository itemsRepository) { - final GameMapSaveData mapData = needLoad ? saveDataRepository.loadMap(gameConfigurationRepository.getGameDirectory()) : null; + final GameMapSaveData mapData = needLoad ? saveDataRepository.loadMap(gameContextRepository.getGameDirectory()) : null; Block[][] fm = mapData != null ? mapData.retrieveForeMap() : null; Block[][] bm = mapData != null ? mapData.retrieveBackMap() : null; diff --git a/core/src/main/java/ru/deadsoftware/cavedroid/game/GameProc.java b/core/src/main/java/ru/deadsoftware/cavedroid/game/GameProc.java index 46eb2ff..f6310d6 100644 --- a/core/src/main/java/ru/deadsoftware/cavedroid/game/GameProc.java +++ b/core/src/main/java/ru/deadsoftware/cavedroid/game/GameProc.java @@ -3,8 +3,8 @@ 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.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository; +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository; +import ru.fredboy.cavedroid.ux.controls.GameInputProcessor; import ru.fredboy.cavedroid.ux.physics.GamePhysics; import ru.fredboy.cavedroid.ux.physics.task.GameWorldBlocksLogicControllerTask; import ru.fredboy.cavedroid.ux.physics.task.GameWorldFluidsLogicControllerTask; @@ -26,18 +26,20 @@ public class GameProc implements Disposable { private final GameWorldFluidsLogicControllerTask mGameWorldFluidsLogicControllerTask; private final GameWorldBlocksLogicControllerTask mGameWorldBlocksLogicControllerTask; private final GameWorldMobDamageControllerTask mGameWorldMobDamageControllerTask; + private final GameInputProcessor mGameInputProcessor; private final Timer mWorldLogicTimer = new Timer(); @Inject - public GameProc(GameConfigurationRepository gameConfigurationRepository, + public GameProc(GameContextRepository gameContextRepository, GamePhysics gamePhysics, GameRenderer gameRenderer, MobController mobsController, ContainerController containerController, GameWorldFluidsLogicControllerTask gameWorldFluidsLogicControllerTask, GameWorldBlocksLogicControllerTask gameWorldBlocksLogicControllerTask, - GameWorldMobDamageControllerTask gameWorldMobDamageControllerTask + GameWorldMobDamageControllerTask gameWorldMobDamageControllerTask, + GameInputProcessor gameInputProcessor ) { mGamePhysics = gamePhysics; mGameRenderer = gameRenderer; @@ -46,8 +48,9 @@ public class GameProc implements Disposable { mGameWorldFluidsLogicControllerTask = gameWorldFluidsLogicControllerTask; mGameWorldBlocksLogicControllerTask = gameWorldBlocksLogicControllerTask; mGameWorldMobDamageControllerTask = gameWorldMobDamageControllerTask; + mGameInputProcessor = gameInputProcessor; - mobsController.getPlayer().setControlMode(gameConfigurationRepository.isTouch() ? Player.ControlMode.WALK : Player.ControlMode.CURSOR); + mobsController.getPlayer().setControlMode(gameContextRepository.isTouch() ? Player.ControlMode.WALK : Player.ControlMode.CURSOR); mWorldLogicTimer.scheduleTask(gameWorldFluidsLogicControllerTask, 0, GameWorldFluidsLogicControllerTask.FLUID_UPDATE_INTERVAL_SEC); @@ -64,12 +67,13 @@ public class GameProc implements Disposable { public void update(float delta) { mMobsController.update(delta); mGamePhysics.update(delta); + mGameInputProcessor.update(delta); mGameRenderer.render(delta); mContainerController.update(delta); } public void show() { - Gdx.input.setInputProcessor(mGameRenderer); + Gdx.input.setInputProcessor(mGameInputProcessor); } @Override diff --git a/core/src/main/java/ru/deadsoftware/cavedroid/game/GameRenderer.java b/core/src/main/java/ru/deadsoftware/cavedroid/game/GameRenderer.java index efb7d35..e8e556b 100644 --- a/core/src/main/java/ru/deadsoftware/cavedroid/game/GameRenderer.java +++ b/core/src/main/java/ru/deadsoftware/cavedroid/game/GameRenderer.java @@ -1,65 +1,40 @@ package ru.deadsoftware.cavedroid.game; import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.Input; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.GL20; -import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.TimeUtils; -import org.jetbrains.annotations.Nullable; -import ru.deadsoftware.cavedroid.MainConfig; -import ru.fredboy.cavedroid.common.model.Joystick; -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository; -import ru.fredboy.cavedroid.game.window.GameWindowType; -import ru.fredboy.cavedroid.game.window.GameWindowsManager; -import ru.fredboy.cavedroid.game.window.TooltipManager; -import ru.fredboy.cavedroid.ux.controls.input.IKeyboardInputHandler; -import ru.fredboy.cavedroid.ux.controls.input.IMouseInputHandler; -import ru.fredboy.cavedroid.ux.controls.input.action.KeyboardInputAction; -import ru.fredboy.cavedroid.ux.controls.input.action.MouseInputAction; -import ru.fredboy.cavedroid.ux.controls.input.action.keys.MouseInputActionKey; -import ru.fredboy.cavedroid.ux.controls.input.handler.mouse.CursorMouseInputHandler; -import ru.fredboy.cavedroid.ux.controls.input.mapper.KeyboardInputActionMapper; -import ru.fredboy.cavedroid.ux.controls.input.mapper.MouseInputActionMapper; -import ru.fredboy.cavedroid.ux.rendering.IGameRenderer; import ru.deadsoftware.cavedroid.misc.Renderer; import ru.fredboy.cavedroid.common.di.GameScope; import ru.fredboy.cavedroid.common.utils.MeasureUnitsUtilsKt; import ru.fredboy.cavedroid.common.utils.RenderingUtilsKt; -import ru.fredboy.cavedroid.domain.assets.model.TouchButton; import ru.fredboy.cavedroid.domain.assets.usecase.GetFontUseCase; -import ru.fredboy.cavedroid.domain.assets.usecase.GetTouchButtonsUseCase; +import ru.fredboy.cavedroid.domain.configuration.model.CameraContext; +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository; import ru.fredboy.cavedroid.entity.mob.model.Player; import ru.fredboy.cavedroid.game.controller.mob.MobController; +import ru.fredboy.cavedroid.game.window.TooltipManager; import ru.fredboy.cavedroid.game.world.GameWorld; +import ru.fredboy.cavedroid.ux.rendering.IGameRenderer; import javax.inject.Inject; -import java.util.*; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Set; @GameScope public class GameRenderer extends Renderer { private static final float CAMERA_SPEED = 72f; private static final float MAX_CAM_DISTANCE_FROM_PLAYER = 64f; - private static final float DRAG_THRESHOLD = 1f; - private static final TouchButton nullButton = new TouchButton(new Rectangle(), -1, true); - - private final GameConfigurationRepository mGameConfigurationRepository; + private final GameContextRepository mGameContextRepository; private final MobController mMobsController; private final GameWorld mGameWorld; private final List mRenderers; - private final CursorMouseInputHandler mCursorMouseInputHandler; - private final MouseInputActionMapper mMouseInputActionMapper; - private final KeyboardInputActionMapper mKeyboardInputActionMapper; - private final Set mMouseInputHandlers; - private final Set mKeyboardInputHandlers; - private final GameWindowsManager mGameWindowsManager; private final TooltipManager mTooltipManager; private final GetFontUseCase mGetFontUseCase; - private final GetTouchButtonsUseCase mGetTouchButtonsUseCase; - - private final TouchButton mouseLeftTouchButton, mouseRightTouchButton; private final Vector2 mCamCenterToPlayer = new Vector2(); @@ -67,22 +42,15 @@ public class GameRenderer extends Renderer { private long mCameraDelayMs = 0L; @Inject - GameRenderer(GameConfigurationRepository gameConfigurationRepository, + GameRenderer(GameContextRepository gameContextRepository, MobController mobsController, GameWorld gameWorld, Set renderers, - CursorMouseInputHandler cursorMouseInputHandler, - MouseInputActionMapper mouseInputActionMapper, - KeyboardInputActionMapper keyboardInputActionMapper, - Set mouseInputHandlers, - Set keyboardInputHandlers, - GameWindowsManager gameWindowsManager, TooltipManager tooltipManager, - GetFontUseCase getFontUseCase, - GetTouchButtonsUseCase getTouchButtonsUseCase) { - super(gameConfigurationRepository.getWidth(), gameConfigurationRepository.getHeight()); + GetFontUseCase getFontUseCase) { + super(gameContextRepository.getWidth(), gameContextRepository.getHeight()); - mGameConfigurationRepository = gameConfigurationRepository; + mGameContextRepository = gameContextRepository; mMobsController = mobsController; mGameWorld = gameWorld; mRenderers = new ArrayList<>(renderers); @@ -92,20 +60,10 @@ public class GameRenderer extends Renderer { return o1.getRenderLayer() - o2.getRenderLayer(); } }); - mCursorMouseInputHandler = cursorMouseInputHandler; - mMouseInputActionMapper = mouseInputActionMapper; - mKeyboardInputActionMapper = keyboardInputActionMapper; - mMouseInputHandlers = mouseInputHandlers; - mKeyboardInputHandlers = keyboardInputHandlers; - mGameWindowsManager = gameWindowsManager; mTooltipManager = tooltipManager; mGetFontUseCase = getFontUseCase; - mGetTouchButtonsUseCase = getTouchButtonsUseCase; - - mouseLeftTouchButton = new TouchButton(new Rectangle(getWidth() / 2, 0f, getWidth() / 2, getHeight() / 2), Input.Buttons.LEFT, true); - mouseRightTouchButton = new TouchButton(new Rectangle(getWidth() / 2, getHeight() / 2, getWidth() / 2, getHeight() / 2), Input.Buttons.RIGHT, true); - mGameConfigurationRepository.setJoystick(new Joystick(mMobsController.getPlayer().getSpeed())); + mGameContextRepository.setCameraContext(new CameraContext(getCameraViewport(), getCamera())); Gdx.gl.glClearColor(0f, .6f, .6f, 1f); } @@ -121,7 +79,7 @@ public class GameRenderer extends Renderer { float camTargetX, camTargetY; - boolean followPlayer = player.getControlMode() == Player.ControlMode.WALK || !mGameConfigurationRepository.isTouch(); + boolean followPlayer = player.getControlMode() == Player.ControlMode.WALK || !mGameContextRepository.isTouch(); if (followPlayer) { camTargetX = plTargetX + Math.min(player.getVelocity().x * 2, getWidth() / 2); @@ -195,7 +153,7 @@ public class GameRenderer extends Renderer { } private void updateCameraPosition(float delta) { - if (mGameConfigurationRepository.useDynamicCamera()) { + if (mGameContextRepository.useDynamicCamera()) { updateDynamicCameraPosition(delta); } else { updateStaticCameraPosition(); @@ -211,19 +169,9 @@ public class GameRenderer extends Renderer { } private void handleMousePosition() { - final Rectangle viewport = getCameraViewport(); - final float screenX = transformScreenX(Gdx.input.getX()); final float screenY = transformScreenY(Gdx.input.getY()); - final MouseInputAction action = new MouseInputAction( - screenX, - screenY, - MouseInputActionKey.None.INSTANCE, - viewport); - - mCursorMouseInputHandler.handle(action); - if (!mTooltipManager.getCurrentMouseTooltip().isEmpty()) { RenderingUtilsKt.drawString(spriter, mGetFontUseCase.invoke(), mTooltipManager.getCurrentMouseTooltip(), screenX + 1, screenY + 1, Color.BLACK); @@ -232,157 +180,14 @@ public class GameRenderer extends Renderer { } } - private boolean handleMouseAction(@Nullable MouseInputAction action) { - if (action == null) { - return false; - } - - boolean anyProcessed = false; - - for (IMouseInputHandler handler : mMouseInputHandlers) { - final boolean conditions = handler.checkConditions(action); - if (conditions) { - anyProcessed = true; - handler.handle(action); - break; - } -// anyProcessed = anyProcessed || conditions; - } - return anyProcessed; - } - - private boolean onMouseActionEvent(int mouseX, int mouseY, int button, boolean touchUp, int pointer) { - @Nullable MouseInputAction action = mMouseInputActionMapper - .map((float) mouseX, (float) mouseY, getCameraViewport(), button, touchUp, pointer); - return handleMouseAction(action); - } - - @Override - public boolean touchUp(int screenX, int screenY, int pointer, int button) { - float touchX = transformScreenX(screenX); - float touchY = transformScreenY(screenY); - - final Joystick joy = mGameConfigurationRepository.getJoystick(); - - if (mGameConfigurationRepository.isTouch()) { - if (joy != null && joy.getActive() && joy.getPointer() == pointer) { - return onMouseActionEvent(screenX, screenY, nullButton.getCode(), true, pointer); - } - - TouchButton touchedKey = getTouchedKey(touchX, touchY); - if (touchedKey.isMouse()) { - return onMouseActionEvent(screenX, screenY, touchedKey.getCode(), true, pointer); - } else { - return keyUp(touchedKey.getCode()); - } - } - - return onMouseActionEvent(screenX, screenY, button, true, pointer); - } - - private TouchButton getTouchedKey(float touchX, float touchY) { - if (mGameWindowsManager.getCurrentWindowType() != GameWindowType.NONE) { - return nullButton; - } - for (Map.Entry entry : mGetTouchButtonsUseCase.invoke().entrySet()) { - TouchButton button = entry.getValue(); - if (button.getRectangle().contains(touchX, touchY)) { - return button; - } - } - - if (mouseLeftTouchButton.getRectangle().contains(touchX, touchY)) { - return mouseLeftTouchButton; - } - - if (mouseRightTouchButton.getRectangle().contains(touchX, touchY)) { - return mouseRightTouchButton; - } - - return nullButton; - } - - @Override - public boolean touchDown(int screenX, int screenY, int pointer, int button) { - float touchX = transformScreenX(screenX); - float touchY = transformScreenY(screenY); - - mTouchDownX = touchX; - mTouchDownY = touchY; - - if (mGameConfigurationRepository.isTouch()) { - TouchButton touchedKey = getTouchedKey(touchX, touchY); - if (touchedKey.isMouse()) { - return onMouseActionEvent(screenX, screenY, touchedKey.getCode(), false, pointer); - } else { - return keyDown(touchedKey.getCode()); - } - } - - return onMouseActionEvent(screenX, screenY, button, false, pointer); - } - - @Override - public boolean touchDragged(int screenX, int screenY, int pointer) { - float touchX = transformScreenX(screenX); - float touchY = transformScreenY(screenY); - - if (Math.abs(touchX - mTouchDownX) < 16 && Math.abs(touchY - mTouchDownY) < DRAG_THRESHOLD) { - return false; - } - - @Nullable MouseInputAction action = - mMouseInputActionMapper.mapDragged(screenX, screenY, getCameraViewport(), pointer); - return handleMouseAction(action); - } - - @Override - public boolean scrolled(float amountX, float amountY) { - @Nullable MouseInputAction action = mMouseInputActionMapper - .mapScrolled(Gdx.input.getX(), Gdx.input.getY(), amountX, amountY, getCameraViewport()); - return handleMouseAction(action); - } - - private boolean handleKeyboardAction(int keycode, boolean isKeyDown) { - @Nullable final KeyboardInputAction action = mKeyboardInputActionMapper - .map(keycode, isKeyDown); - - if (action == null) { - return false; - } - - boolean anyProcessed = false; - - for (IKeyboardInputHandler handler : mKeyboardInputHandlers) { - final boolean conditions = handler.checkConditions(action); - if (conditions) { - anyProcessed = true; - handler.handle(action); - break; - } - } - - return anyProcessed; - } - - @Override - public boolean keyDown(int keycode) { - return handleKeyboardAction(keycode, true); - } - - @Override - public boolean keyUp(int keycode) { - return handleKeyboardAction(keycode, false); - } - @Override public void render(float delta) { updateCameraPosition(delta); - if (mGameConfigurationRepository.getJoystick() != null && mGameConfigurationRepository.getJoystick().getActive()) { - mGameConfigurationRepository.getJoystick().updateState( - transformScreenX(Gdx.input.getX(mGameConfigurationRepository.getJoystick().getPointer())), - transformScreenY(Gdx.input.getY(mGameConfigurationRepository.getJoystick().getPointer())) + if (mGameContextRepository.getJoystick() != null && mGameContextRepository.getJoystick().getActive()) { + mGameContextRepository.getJoystick().updateState( + transformScreenX(Gdx.input.getX(mGameContextRepository.getJoystick().getPointer())), + transformScreenY(Gdx.input.getY(mGameContextRepository.getJoystick().getPointer())) ); } diff --git a/core/src/main/java/ru/deadsoftware/cavedroid/menu/MenuProc.java b/core/src/main/java/ru/deadsoftware/cavedroid/menu/MenuProc.java index 4906b1b..5449437 100644 --- a/core/src/main/java/ru/deadsoftware/cavedroid/menu/MenuProc.java +++ b/core/src/main/java/ru/deadsoftware/cavedroid/menu/MenuProc.java @@ -12,7 +12,7 @@ import ru.fredboy.cavedroid.domain.assets.usecase.GetFontUseCase; import ru.fredboy.cavedroid.domain.assets.usecase.GetStringHeightUseCase; import ru.fredboy.cavedroid.domain.assets.usecase.GetStringWidthUseCase; import ru.fredboy.cavedroid.domain.assets.usecase.GetTextureRegionByNameUseCase; -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository; +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository; import javax.inject.Inject; @@ -63,7 +63,7 @@ public class MenuProc extends Renderer { private final MainConfig mMainConfig; - private final GameConfigurationRepository mGameConfigurationRepository; + private final GameContextRepository mGameContextRepository; private final MenuMain mMenuMain; private final MenuNewGame mMenuNewGame; @@ -80,17 +80,17 @@ public class MenuProc extends Renderer { @Inject public MenuProc( MainConfig mainConfig, - GameConfigurationRepository gameConfigurationRepository, + GameContextRepository gameContextRepository, MenusFactory menusFactory, GetFontUseCase getFontUseCase, GetStringWidthUseCase getStringWidthUseCase, GetStringHeightUseCase getStringHeightUseCase, GetTextureRegionByNameUseCase getTextureRegionByNameUseCase ) { - super(gameConfigurationRepository.getWidth(), gameConfigurationRepository.getHeight()); + super(gameContextRepository.getWidth(), gameContextRepository.getHeight()); mMainConfig = mainConfig; - mGameConfigurationRepository = gameConfigurationRepository; + mGameContextRepository = gameContextRepository; mGetFontUseCase = getFontUseCase; mGetStringWidthUseCase = getStringWidthUseCase; mGetStringHeightUseCase = getStringHeightUseCase; diff --git a/core/src/main/java/ru/deadsoftware/cavedroid/menu/submenus/MenuMain.java b/core/src/main/java/ru/deadsoftware/cavedroid/menu/submenus/MenuMain.java index 50f9d18..24dc1da 100644 --- a/core/src/main/java/ru/deadsoftware/cavedroid/menu/submenus/MenuMain.java +++ b/core/src/main/java/ru/deadsoftware/cavedroid/menu/submenus/MenuMain.java @@ -7,7 +7,7 @@ import ru.deadsoftware.cavedroid.menu.objects.ButtonEventListener; import ru.deadsoftware.cavedroid.menu.objects.ButtonRenderer; import ru.deadsoftware.cavedroid.misc.utils.AssetLoader; import ru.fredboy.cavedroid.domain.assets.usecase.GetTextureRegionByNameUseCase; -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository; +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository; import ru.fredboy.cavedroid.domain.save.repository.SaveDataRepository; import java.util.HashMap; @@ -16,7 +16,7 @@ public class MenuMain extends Menu { private final SaveDataRepository mSaveDataRepository; - private final GameConfigurationRepository mGameConfigurationRepository; + private final GameContextRepository mGameContextRepository; public MenuMain(float width, float height, @@ -26,10 +26,10 @@ public class MenuMain extends Menu { AssetLoader assetLoader, GetTextureRegionByNameUseCase getTextureRegionByNameUseCase, SaveDataRepository saveDataRepository, - GameConfigurationRepository gameConfigurationRepository) { + GameContextRepository gameContextRepository) { super(width, height, buttonRenderer, mainConfig, menuInput, assetLoader, getTextureRegionByNameUseCase); mSaveDataRepository = saveDataRepository; - mGameConfigurationRepository = gameConfigurationRepository; + mGameContextRepository = gameContextRepository; } @Override @@ -45,7 +45,7 @@ public class MenuMain extends Menu { @Override protected void initButtons() { loadButtonsFromJson(mAssetLoader.getAssetHandle("json/menu_main_buttons.json")); - if (mSaveDataRepository.exists(mGameConfigurationRepository.getGameDirectory())) { + if (mSaveDataRepository.exists(mGameContextRepository.getGameDirectory())) { getButtons().get("load_game").setType(Button.NORMAL); } } diff --git a/core/src/main/java/ru/deadsoftware/cavedroid/misc/Renderer.java b/core/src/main/java/ru/deadsoftware/cavedroid/misc/Renderer.java index 4c9bdad..b74c3bf 100644 --- a/core/src/main/java/ru/deadsoftware/cavedroid/misc/Renderer.java +++ b/core/src/main/java/ru/deadsoftware/cavedroid/misc/Renderer.java @@ -52,6 +52,10 @@ public abstract class Renderer implements InputProcessor { mCameraViewport.y = y; } + public OrthographicCamera getCamera() { + return camera; + } + public Rectangle getCameraViewport() { return mCameraViewport; } diff --git a/core/src/main/kotlin/ru/deadsoftware/cavedroid/CaveGame.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/CaveGame.kt index 8ef2175..1e02c0b 100644 --- a/core/src/main/kotlin/ru/deadsoftware/cavedroid/CaveGame.kt +++ b/core/src/main/kotlin/ru/deadsoftware/cavedroid/CaveGame.kt @@ -5,7 +5,7 @@ import com.badlogic.gdx.Gdx import ru.deadsoftware.cavedroid.misc.utils.AssetLoader import ru.deadsoftware.cavedroid.prefs.PreferencesStore import ru.fredboy.cavedroid.common.utils.ratio -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository class CaveGame( private val gameDataDirectoryPath: String, @@ -17,7 +17,7 @@ class CaveGame( private val mainComponent: MainComponent private val mainConfig: MainConfig - private val gameConfigurationRepository: GameConfigurationRepository + private val mGameContextRepository: GameContextRepository private val assetLoader: AssetLoader @@ -29,7 +29,7 @@ class CaveGame( mainConfig = mainComponent.mainConfig assetLoader = mainComponent.assetLoader - gameConfigurationRepository = mainComponent.gameConfigurationRepository + mGameContextRepository = mainComponent.gameContextRepository } private fun initMainConfig() { @@ -38,7 +38,7 @@ class CaveGame( mainConfig.mainComponent = mainComponent - gameConfigurationRepository.apply { + mGameContextRepository.apply { setGameDirectory(gameDataDirectoryPath) setTouch(isTouchScreen) setWidth(width) diff --git a/core/src/main/kotlin/ru/deadsoftware/cavedroid/MainComponent.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/MainComponent.kt index 678d09a..b528e15 100644 --- a/core/src/main/kotlin/ru/deadsoftware/cavedroid/MainComponent.kt +++ b/core/src/main/kotlin/ru/deadsoftware/cavedroid/MainComponent.kt @@ -13,7 +13,7 @@ import ru.fredboy.cavedroid.data.save.di.DataSaveModule import ru.fredboy.cavedroid.domain.assets.repository.* import ru.fredboy.cavedroid.domain.assets.usecase.DisposeAssetsUseCase import ru.fredboy.cavedroid.domain.assets.usecase.InitializeAssetsUseCase -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.domain.items.repository.ItemsRepository import ru.fredboy.cavedroid.domain.save.repository.SaveDataRepository import javax.inject.Singleton @@ -55,7 +55,7 @@ interface MainComponent { val saveDataRepository: SaveDataRepository - val gameConfigurationRepository: GameConfigurationRepository + val gameContextRepository: GameContextRepository val gameController: GameController diff --git a/core/src/main/kotlin/ru/deadsoftware/cavedroid/menu/submenus/MenusFactory.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/menu/submenus/MenusFactory.kt index db9f48e..85abca9 100644 --- a/core/src/main/kotlin/ru/deadsoftware/cavedroid/menu/submenus/MenusFactory.kt +++ b/core/src/main/kotlin/ru/deadsoftware/cavedroid/menu/submenus/MenusFactory.kt @@ -6,7 +6,7 @@ import ru.deadsoftware.cavedroid.menu.MenuScope import ru.deadsoftware.cavedroid.menu.objects.ButtonRenderer import ru.deadsoftware.cavedroid.misc.utils.AssetLoader import ru.fredboy.cavedroid.domain.assets.usecase.GetTextureRegionByNameUseCase -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.domain.save.repository.SaveDataRepository import javax.inject.Inject @@ -16,7 +16,7 @@ class MenusFactory @Inject constructor( private val assetLoader: AssetLoader, private val getTextureRegionByName: GetTextureRegionByNameUseCase, private val saveDataRepository: SaveDataRepository, - private val gameConfigurationRepository: GameConfigurationRepository, + private val gameContextRepository: GameContextRepository, ) { fun getMainMenu( @@ -34,7 +34,7 @@ class MenusFactory @Inject constructor( assetLoader, getTextureRegionByName, saveDataRepository, - gameConfigurationRepository, + gameContextRepository, ).apply { init() } } diff --git a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/GameInputProcessor.kt b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/GameInputProcessor.kt new file mode 100644 index 0000000..ef041e3 --- /dev/null +++ b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/GameInputProcessor.kt @@ -0,0 +1,291 @@ +package ru.fredboy.cavedroid.ux.controls + +import com.badlogic.gdx.Gdx +import com.badlogic.gdx.Input +import com.badlogic.gdx.InputProcessor +import com.badlogic.gdx.math.Rectangle +import ru.fredboy.cavedroid.common.di.GameScope +import ru.fredboy.cavedroid.common.model.Joystick +import ru.fredboy.cavedroid.domain.assets.model.TouchButton +import ru.fredboy.cavedroid.domain.assets.usecase.GetTouchButtonsUseCase +import ru.fredboy.cavedroid.domain.configuration.model.CameraContext +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository +import ru.fredboy.cavedroid.game.controller.mob.MobController +import ru.fredboy.cavedroid.game.window.GameWindowType +import ru.fredboy.cavedroid.game.window.GameWindowsManager +import ru.fredboy.cavedroid.ux.controls.input.IKeyboardInputHandler +import ru.fredboy.cavedroid.ux.controls.input.IMouseInputHandler +import ru.fredboy.cavedroid.ux.controls.input.action.MouseInputAction +import ru.fredboy.cavedroid.ux.controls.input.action.keys.MouseInputActionKey +import ru.fredboy.cavedroid.ux.controls.input.handler.mouse.CursorMouseInputHandler +import ru.fredboy.cavedroid.ux.controls.input.mapper.KeyboardInputActionMapper +import ru.fredboy.cavedroid.ux.controls.input.mapper.MouseInputActionMapper +import javax.inject.Inject +import kotlin.math.abs + +@GameScope +class GameInputProcessor @Inject constructor( + private val gameContextRepository: GameContextRepository, + private val mobController: MobController, + private val getTouchButtonsUseCase: GetTouchButtonsUseCase, + private val cursorMouseInputHandler: CursorMouseInputHandler, + private val mouseInputActionMapper: MouseInputActionMapper, + private val keyboardInputActionMapper: KeyboardInputActionMapper, + private val mouseInputHandlers: Set<@JvmSuppressWildcards IMouseInputHandler>, + private val keyboardInputHandlers: Set<@JvmSuppressWildcards IKeyboardInputHandler>, + private val gameWindowsManager: GameWindowsManager, +) : InputProcessor { + + private val mouseLeftTouchButton = TouchButton( + Rectangle( + /* x = */ gameContextRepository.getWidth() / 2, + /* y = */ 0f, + /* width = */ gameContextRepository.getWidth() / 2, + /* height = */ gameContextRepository.getHeight() / 2 + ), + Input.Buttons.LEFT, + true + ) + + private val mouseRightTouchButton = TouchButton( + Rectangle( + /* x = */ gameContextRepository.getWidth() / 2, + /* y = */ gameContextRepository.getHeight() / 2, + /* width = */ gameContextRepository.getWidth() / 2, + /* height = */ gameContextRepository.getHeight() / 2 + ), + Input.Buttons.RIGHT, + true + ) + + private var touchDownX = 0f + private var touchDownY = 0f + + init { + gameContextRepository.setJoystick(Joystick(mobController.player.speed)) + } + + override fun keyDown(keycode: Int): Boolean { + return handleKeyboardAction(keycode, true) + } + + override fun keyUp(keycode: Int): Boolean { + return handleKeyboardAction(keycode, false) + } + + override fun keyTyped(p0: Char): Boolean { + return false; + } + + override fun touchDown(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean { + val (touchX, touchY) = requireCameraContext().getViewportCoordinates(screenX, screenY) + + touchDownX = touchX + touchDownY = touchY + + if (gameContextRepository.isTouch()) { + val touchedKey = getTouchedKey(touchX, touchY) + return if (touchedKey.isMouse) { + onMouseActionEvent( + mouseX = screenX, + mouseY = screenY, + button = touchedKey.code, + touchUp = false, + pointer = pointer, + ) + } else { + keyDown(touchedKey.code) + } + } + + return onMouseActionEvent(screenX, screenY, button, false, pointer) + } + + override fun touchUp(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean { + val (touchX, touchY) = requireCameraContext().getViewportCoordinates(screenX, screenY) + + val joy: Joystick? = gameContextRepository.getJoystick() + + if (gameContextRepository.isTouch()) { + if (joy != null && joy.active && joy.pointer == pointer) { + return onMouseActionEvent( + mouseX = screenX, + mouseY = screenY, + button = nullButton.code, + touchUp = true, + pointer = pointer, + ) + } + + val touchedKey: TouchButton = getTouchedKey(touchX, touchY) + + return if (touchedKey.isMouse) { + onMouseActionEvent( + mouseX = screenX, + mouseY = screenY, + button = touchedKey.code, + touchUp = true, + pointer = pointer + ) + } else { + keyUp(touchedKey.code) + } + } + + return onMouseActionEvent( + mouseX = screenX, + mouseY = screenY, + button = button, + touchUp = true, + pointer = pointer, + ) + } + + override fun touchCancelled(p0: Int, p1: Int, p2: Int, p3: Int): Boolean { + return false + } + + override fun touchDragged(screenX: Int, screenY: Int, pointer: Int): Boolean { + val (touchX, touchY) = requireCameraContext().getViewportCoordinates(screenX, screenY) + + if (abs(touchX - touchDownX) < 16 && abs(touchY - touchDownY) < DRAG_THRESHOLD) { + return false + } + + val action = mouseInputActionMapper.mapDragged( + mouseX = screenX.toFloat(), + mouseY = screenY.toFloat(), + cameraViewport = requireCameraContext().viewport, + pointer = pointer, + ) + + return handleMouseAction(action) + } + + override fun mouseMoved(p0: Int, p1: Int): Boolean { + return false + } + + override fun scrolled(amountX: Float, amountY: Float): Boolean { + val action: MouseInputAction? = mouseInputActionMapper + .mapScrolled( + mouseX = Gdx.input.x.toFloat(), + mouseY = Gdx.input.y.toFloat(), + amountX = amountX, + amountY = amountY, + cameraViewport = requireCameraContext().viewport, + ) + return handleMouseAction(action) + } + + + fun update(delta: Float) { + handleMousePosition() + } + + private fun getTouchedKey(touchX: Float, touchY: Float): TouchButton { + if (gameWindowsManager.currentWindowType != GameWindowType.NONE) { + return nullButton + } + + for (entry in getTouchButtonsUseCase().entries) { + val button = entry.value + if (button.rectangle.contains(touchX, touchY)) { + return button + } + } + + if (mouseLeftTouchButton.rectangle.contains(touchX, touchY)) { + return mouseLeftTouchButton + } + + if (mouseRightTouchButton.rectangle.contains(touchX, touchY)) { + return mouseRightTouchButton + } + + return nullButton + } + + private fun handleMouseAction(action: MouseInputAction?): Boolean { + if (action == null) { + return false + } + + var anyProcessed = false + + for (handler in mouseInputHandlers) { + val conditions: Boolean = handler.checkConditions(action) + if (conditions) { + anyProcessed = true + handler.handle(action) + break + } + } + + return anyProcessed + } + + private fun handleKeyboardAction(keycode: Int, isKeyDown: Boolean): Boolean { + val action = keyboardInputActionMapper.map(keycode, isKeyDown) + + if (action == null) { + return false + } + + var anyProcessed = false + + for (handler in keyboardInputHandlers) { + val conditions: Boolean = handler.checkConditions(action) + if (conditions) { + anyProcessed = true + handler.handle(action) + break + } + } + + return anyProcessed + } + + private fun onMouseActionEvent(mouseX: Int, mouseY: Int, button: Int, touchUp: Boolean, pointer: Int): Boolean { + val action: MouseInputAction? = mouseInputActionMapper.map( + mouseX = mouseX.toFloat(), + mouseY = mouseY.toFloat(), + cameraViewport = requireNotNull(gameContextRepository.getCameraContext()?.viewport), + button = button, + touchUp = touchUp, + pointer = pointer, + ) + return handleMouseAction(action) + } + + private fun handleMousePosition() { + val cameraContext = gameContextRepository.getCameraContext() ?: run { + Gdx.app.error(TAG, "CameraContext was not set") + return + } + + val screenX = cameraContext.xOnViewport(Gdx.input.x) + val screenY = cameraContext.yOnViewport(Gdx.input.y) + + val action = MouseInputAction( + screenX = screenX, + screenY = screenY, + actionKey = MouseInputActionKey.None, + cameraViewport = cameraContext.viewport, + ) + + cursorMouseInputHandler.handle(action) + } + + private fun requireCameraContext(): CameraContext { + return requireNotNull(gameContextRepository.getCameraContext()) { "CameraContext was not set" } + } + + companion object { + private const val TAG = "GameInputProcessor" + + private const val DRAG_THRESHOLD = 1f + + private val nullButton = TouchButton(Rectangle(), -1, true) + } +} \ No newline at end of file diff --git a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/FlyDownKeyboardInputHandler.kt b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/FlyDownKeyboardInputHandler.kt index 06b7e12..0484af2 100644 --- a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/FlyDownKeyboardInputHandler.kt +++ b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/FlyDownKeyboardInputHandler.kt @@ -1,7 +1,7 @@ package ru.fredboy.cavedroid.ux.controls.input.handler.keyboard import ru.fredboy.cavedroid.common.di.GameScope -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.entity.mob.model.Player import ru.fredboy.cavedroid.game.controller.mob.MobController import ru.fredboy.cavedroid.ux.controls.input.IKeyboardInputHandler @@ -13,14 +13,14 @@ import javax.inject.Inject @GameScope @BindKeyboardInputHandler class FlyDownKeyboardInputHandler @Inject constructor( - private val gameConfigurationRepository: GameConfigurationRepository, + private val gameContextRepository: GameContextRepository, private val mobController: MobController, ) : IKeyboardInputHandler { override fun checkConditions(action: KeyboardInputAction): Boolean { return action.actionKey is KeyboardInputActionKey.Down && mobController.player.isFlyMode && - (mobController.player.controlMode == Player.ControlMode.WALK || !gameConfigurationRepository.isTouch()) + (mobController.player.controlMode == Player.ControlMode.WALK || !gameContextRepository.isTouch()) } override fun handle(action: KeyboardInputAction) { diff --git a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/FlyUpKeyboardInputHandler.kt b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/FlyUpKeyboardInputHandler.kt index e7de01d..d01b8e2 100644 --- a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/FlyUpKeyboardInputHandler.kt +++ b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/FlyUpKeyboardInputHandler.kt @@ -1,7 +1,7 @@ package ru.fredboy.cavedroid.ux.controls.input.handler.keyboard import ru.fredboy.cavedroid.common.di.GameScope -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.entity.mob.model.Player import ru.fredboy.cavedroid.game.controller.mob.MobController import ru.fredboy.cavedroid.ux.controls.input.IKeyboardInputHandler @@ -13,7 +13,7 @@ import javax.inject.Inject @GameScope @BindKeyboardInputHandler class FlyUpKeyboardInputHandler @Inject constructor( - private val gameConfigurationRepository: GameConfigurationRepository, + private val gameContextRepository: GameContextRepository, private val mobController: MobController, ) : IKeyboardInputHandler { @@ -21,7 +21,7 @@ class FlyUpKeyboardInputHandler @Inject constructor( return action.actionKey is KeyboardInputActionKey.Up && !mobController.player.swim && mobController.player.isFlyMode && - (mobController.player.controlMode == Player.ControlMode.WALK || !gameConfigurationRepository.isTouch()) + (mobController.player.controlMode == Player.ControlMode.WALK || !gameContextRepository.isTouch()) } override fun handle(action: KeyboardInputAction) { diff --git a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/GoLeftKeyboardInputHandler.kt b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/GoLeftKeyboardInputHandler.kt index bac9c81..7ae5326 100644 --- a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/GoLeftKeyboardInputHandler.kt +++ b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/GoLeftKeyboardInputHandler.kt @@ -1,7 +1,7 @@ package ru.fredboy.cavedroid.ux.controls.input.handler.keyboard import ru.fredboy.cavedroid.common.di.GameScope -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.entity.mob.model.Direction import ru.fredboy.cavedroid.entity.mob.model.Player import ru.fredboy.cavedroid.game.controller.mob.MobController @@ -14,12 +14,12 @@ import javax.inject.Inject @GameScope @BindKeyboardInputHandler class GoLeftKeyboardInputHandler @Inject constructor( - private val gameConfigurationRepository: GameConfigurationRepository, + private val gameContextRepository: GameContextRepository, private val mobController: MobController, ) : IKeyboardInputHandler { override fun checkConditions(action: KeyboardInputAction): Boolean { - val isTouch = gameConfigurationRepository.isTouch() + val isTouch = gameContextRepository.isTouch() return action.actionKey is KeyboardInputActionKey.Left && (mobController.player.controlMode == Player.ControlMode.WALK || !isTouch) && (mobController.player.controlMode == Player.ControlMode.WALK || !isTouch) diff --git a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/GoRightKeyboardInputHandler.kt b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/GoRightKeyboardInputHandler.kt index 3da5556..861db28 100644 --- a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/GoRightKeyboardInputHandler.kt +++ b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/GoRightKeyboardInputHandler.kt @@ -1,7 +1,7 @@ package ru.fredboy.cavedroid.ux.controls.input.handler.keyboard import ru.fredboy.cavedroid.common.di.GameScope -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.entity.mob.model.Direction import ru.fredboy.cavedroid.entity.mob.model.Player import ru.fredboy.cavedroid.game.controller.mob.MobController @@ -14,13 +14,13 @@ import javax.inject.Inject @GameScope @BindKeyboardInputHandler class GoRightKeyboardInputHandler @Inject constructor( - private val gameConfigurationRepository: GameConfigurationRepository, + private val gameContextRepository: GameContextRepository, private val mobController: MobController ) : IKeyboardInputHandler { override fun checkConditions(action: KeyboardInputAction): Boolean { return action.actionKey is KeyboardInputActionKey.Right && - (mobController.player.controlMode == Player.ControlMode.WALK || !gameConfigurationRepository.isTouch()) + (mobController.player.controlMode == Player.ControlMode.WALK || !gameContextRepository.isTouch()) } override fun handle(action: KeyboardInputAction) { diff --git a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/JumpKeyboardInputHandler.kt b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/JumpKeyboardInputHandler.kt index bac67d4..7c644c4 100644 --- a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/JumpKeyboardInputHandler.kt +++ b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/JumpKeyboardInputHandler.kt @@ -1,7 +1,7 @@ package ru.fredboy.cavedroid.ux.controls.input.handler.keyboard import ru.fredboy.cavedroid.common.di.GameScope -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.entity.mob.model.Player import ru.fredboy.cavedroid.game.controller.mob.MobController import ru.fredboy.cavedroid.ux.controls.input.IKeyboardInputHandler @@ -13,7 +13,7 @@ import javax.inject.Inject @GameScope @BindKeyboardInputHandler class JumpKeyboardInputHandler @Inject constructor( - private val gameConfigurationRepository: GameConfigurationRepository, + private val gameContextRepository: GameContextRepository, private val mobController: MobController, ) : IKeyboardInputHandler { @@ -21,7 +21,7 @@ class JumpKeyboardInputHandler @Inject constructor( return action.actionKey is KeyboardInputActionKey.Up && mobController.player.canJump && !mobController.player.isFlyMode && action.isKeyDown && - (mobController.player.controlMode == Player.ControlMode.WALK || !gameConfigurationRepository.isTouch()) + (mobController.player.controlMode == Player.ControlMode.WALK || !gameContextRepository.isTouch()) } override fun handle(action: KeyboardInputAction) { diff --git a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/MoveCursorControlsModeKeyboardInputHandler.kt b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/MoveCursorControlsModeKeyboardInputHandler.kt index b7ee8dd..a08e582 100644 --- a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/MoveCursorControlsModeKeyboardInputHandler.kt +++ b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/MoveCursorControlsModeKeyboardInputHandler.kt @@ -1,7 +1,7 @@ package ru.fredboy.cavedroid.ux.controls.input.handler.keyboard import ru.fredboy.cavedroid.common.di.GameScope -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.entity.mob.model.Player import ru.fredboy.cavedroid.game.controller.mob.MobController import ru.fredboy.cavedroid.ux.controls.input.IKeyboardInputHandler @@ -13,12 +13,12 @@ import javax.inject.Inject @GameScope @BindKeyboardInputHandler class MoveCursorControlsModeKeyboardInputHandler @Inject constructor( - private val gameConfigurationRepository: GameConfigurationRepository, + private val gameContextRepository: GameContextRepository, private val mobsController: MobController, ) : IKeyboardInputHandler { override fun checkConditions(action: KeyboardInputAction): Boolean { - return gameConfigurationRepository.isTouch() && + return gameContextRepository.isTouch() && mobsController.player.controlMode == Player.ControlMode.CURSOR && action.isKeyDown && (action.actionKey is KeyboardInputActionKey.Left || action.actionKey is KeyboardInputActionKey.Right || diff --git a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/PauseGameKeyboardInputHandler.kt b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/PauseGameKeyboardInputHandler.kt index 6e71d7e..2ef3464 100644 --- a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/PauseGameKeyboardInputHandler.kt +++ b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/PauseGameKeyboardInputHandler.kt @@ -2,7 +2,7 @@ package ru.fredboy.cavedroid.ux.controls.input.handler.keyboard import ru.fredboy.cavedroid.common.api.GameController import ru.fredboy.cavedroid.common.di.GameScope -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.domain.save.repository.SaveDataRepository import ru.fredboy.cavedroid.game.controller.container.ContainerController import ru.fredboy.cavedroid.game.controller.drop.DropController @@ -19,7 +19,7 @@ import javax.inject.Inject @GameScope @BindKeyboardInputHandler class PauseGameKeyboardInputHandler @Inject constructor( - private val gameConfigurationRepository: GameConfigurationRepository, + private val gameContextRepository: GameContextRepository, private val gameController: GameController, private val dropController: DropController, private val mobController: MobController, @@ -40,7 +40,7 @@ class PauseGameKeyboardInputHandler @Inject constructor( } saveDataRepository.save( - gameDataFolder = gameConfigurationRepository.getGameDirectory(), + gameDataFolder = gameContextRepository.getGameDirectory(), dropController = dropController, mobController = mobController, containerController = containerController, diff --git a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/StopSwimKeyboardInputHandler.kt b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/StopSwimKeyboardInputHandler.kt index 77619bc..699de98 100644 --- a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/StopSwimKeyboardInputHandler.kt +++ b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/StopSwimKeyboardInputHandler.kt @@ -1,7 +1,7 @@ package ru.fredboy.cavedroid.ux.controls.input.handler.keyboard import ru.fredboy.cavedroid.common.di.GameScope -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.entity.mob.model.Player import ru.fredboy.cavedroid.game.controller.mob.MobController import ru.fredboy.cavedroid.ux.controls.input.IKeyboardInputHandler @@ -13,14 +13,14 @@ import javax.inject.Inject @GameScope @BindKeyboardInputHandler class StopSwimKeyboardInputHandler @Inject constructor( - private val gameConfigurationRepository: GameConfigurationRepository, + private val gameContextRepository: GameContextRepository, private val mobController: MobController, ) : IKeyboardInputHandler { override fun checkConditions(action: KeyboardInputAction): Boolean { return action.actionKey is KeyboardInputActionKey.Up && !action.isKeyDown && mobController.player.swim && - (mobController.player.controlMode == Player.ControlMode.WALK || !gameConfigurationRepository.isTouch()) + (mobController.player.controlMode == Player.ControlMode.WALK || !gameContextRepository.isTouch()) } override fun handle(action: KeyboardInputAction) { diff --git a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/SwimUpKeyboardInputHandler.kt b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/SwimUpKeyboardInputHandler.kt index 9f9779f..e00ff62 100644 --- a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/SwimUpKeyboardInputHandler.kt +++ b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/SwimUpKeyboardInputHandler.kt @@ -1,7 +1,7 @@ package ru.fredboy.cavedroid.ux.controls.input.handler.keyboard import ru.fredboy.cavedroid.common.di.GameScope -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.entity.mob.model.Player import ru.fredboy.cavedroid.game.controller.mob.MobController import ru.fredboy.cavedroid.game.world.GameWorld @@ -14,7 +14,7 @@ import javax.inject.Inject @GameScope @BindKeyboardInputHandler class SwimUpKeyboardInputHandler @Inject constructor( - private val gameConfigurationRepository: GameConfigurationRepository, + private val gameContextRepository: GameContextRepository, private val mobController: MobController, private val gameWorld: GameWorld, ) : IKeyboardInputHandler { @@ -28,7 +28,7 @@ class SwimUpKeyboardInputHandler @Inject constructor( !mobController.player.swim && !mobController.player.canJump && checkSwim() && !mobController.player.isFlyMode && - (mobController.player.controlMode == Player.ControlMode.WALK || !gameConfigurationRepository.isTouch()) + (mobController.player.controlMode == Player.ControlMode.WALK || !gameContextRepository.isTouch()) } override fun handle(action: KeyboardInputAction) { diff --git a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/ToggleControlsModeKeyboardInputHandler.kt b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/ToggleControlsModeKeyboardInputHandler.kt index dd06c6f..cad0419 100644 --- a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/ToggleControlsModeKeyboardInputHandler.kt +++ b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/ToggleControlsModeKeyboardInputHandler.kt @@ -1,7 +1,7 @@ package ru.fredboy.cavedroid.ux.controls.input.handler.keyboard import ru.fredboy.cavedroid.common.di.GameScope -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.entity.mob.model.Player import ru.fredboy.cavedroid.game.controller.mob.MobController import ru.fredboy.cavedroid.ux.controls.input.IKeyboardInputHandler @@ -13,13 +13,13 @@ import javax.inject.Inject @GameScope @BindKeyboardInputHandler class ToggleControlsModeKeyboardInputHandler @Inject constructor( - private val gameConfigurationRepository: GameConfigurationRepository, + private val gameContextRepository: GameContextRepository, private val mobController: MobController, ) : IKeyboardInputHandler { override fun checkConditions(action: KeyboardInputAction): Boolean { return action.actionKey is KeyboardInputActionKey.SwitchControlsMode && !action.isKeyDown - && gameConfigurationRepository.isTouch() + && gameContextRepository.isTouch() } override fun handle(action: KeyboardInputAction) { diff --git a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/ToggleDebugInfoKeyboardInputHandler.kt b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/ToggleDebugInfoKeyboardInputHandler.kt index e470a2b..14b6aa4 100644 --- a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/ToggleDebugInfoKeyboardInputHandler.kt +++ b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/ToggleDebugInfoKeyboardInputHandler.kt @@ -1,7 +1,7 @@ package ru.fredboy.cavedroid.ux.controls.input.handler.keyboard import ru.fredboy.cavedroid.common.di.GameScope -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.ux.controls.input.IKeyboardInputHandler import ru.fredboy.cavedroid.ux.controls.input.action.KeyboardInputAction import ru.fredboy.cavedroid.ux.controls.input.action.keys.KeyboardInputActionKey @@ -11,7 +11,7 @@ import javax.inject.Inject @GameScope @BindKeyboardInputHandler class ToggleDebugInfoKeyboardInputHandler @Inject constructor( - private val gameConfigurationRepository: GameConfigurationRepository, + private val gameContextRepository: GameContextRepository, ) : IKeyboardInputHandler { override fun checkConditions(action: KeyboardInputAction): Boolean { @@ -19,6 +19,6 @@ class ToggleDebugInfoKeyboardInputHandler @Inject constructor( } override fun handle(action: KeyboardInputAction) { - gameConfigurationRepository.setShowInfo(!gameConfigurationRepository.shouldShowInfo()) + gameContextRepository.setShowInfo(!gameContextRepository.shouldShowInfo()) } } \ No newline at end of file diff --git a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/ToggleMinimapKeyboardInputHandler.kt b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/ToggleMinimapKeyboardInputHandler.kt index f55a8d2..792bfeb 100644 --- a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/ToggleMinimapKeyboardInputHandler.kt +++ b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/ToggleMinimapKeyboardInputHandler.kt @@ -1,7 +1,7 @@ package ru.fredboy.cavedroid.ux.controls.input.handler.keyboard import ru.fredboy.cavedroid.common.di.GameScope -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.ux.controls.input.IKeyboardInputHandler import ru.fredboy.cavedroid.ux.controls.input.action.KeyboardInputAction import ru.fredboy.cavedroid.ux.controls.input.action.keys.KeyboardInputActionKey @@ -11,7 +11,7 @@ import javax.inject.Inject @GameScope @BindKeyboardInputHandler class ToggleMinimapKeyboardInputHandler @Inject constructor( - private val gameConfigurationRepository: GameConfigurationRepository, + private val gameContextRepository: GameContextRepository, ) : IKeyboardInputHandler { override fun checkConditions(action: KeyboardInputAction): Boolean { @@ -19,6 +19,6 @@ class ToggleMinimapKeyboardInputHandler @Inject constructor( } override fun handle(action: KeyboardInputAction) { - gameConfigurationRepository.setShowMap(!gameConfigurationRepository.shouldShowMap()) + gameContextRepository.setShowMap(!gameContextRepository.shouldShowMap()) } } \ No newline at end of file diff --git a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/TurnOnFlyModeKeyboardInputHandler.kt b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/TurnOnFlyModeKeyboardInputHandler.kt index 5ba72d3..871055a 100644 --- a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/TurnOnFlyModeKeyboardInputHandler.kt +++ b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/TurnOnFlyModeKeyboardInputHandler.kt @@ -1,7 +1,7 @@ package ru.fredboy.cavedroid.ux.controls.input.handler.keyboard import ru.fredboy.cavedroid.common.di.GameScope -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.entity.mob.model.Player import ru.fredboy.cavedroid.game.controller.mob.MobController import ru.fredboy.cavedroid.ux.controls.input.IKeyboardInputHandler @@ -13,7 +13,7 @@ import javax.inject.Inject @GameScope @BindKeyboardInputHandler class TurnOnFlyModeKeyboardInputHandler @Inject constructor( - private val gameConfigurationRepository: GameConfigurationRepository, + private val gameContextRepository: GameContextRepository, private val mobsController: MobController, ) : IKeyboardInputHandler { @@ -21,7 +21,7 @@ class TurnOnFlyModeKeyboardInputHandler @Inject constructor( return mobsController.player.gameMode == 1 && action.actionKey is KeyboardInputActionKey.Up && !mobsController.player.swim && !mobsController.player.isFlyMode && !mobsController.player.canJump && action.isKeyDown && - (mobsController.player.controlMode == Player.ControlMode.WALK || !gameConfigurationRepository.isTouch()) + (mobsController.player.controlMode == Player.ControlMode.WALK || !gameContextRepository.isTouch()) } override fun handle(action: KeyboardInputAction) { diff --git a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/mouse/CreativeInventoryScrollMouseInputHandler.kt b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/mouse/CreativeInventoryScrollMouseInputHandler.kt index 228c049..b92550b 100644 --- a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/mouse/CreativeInventoryScrollMouseInputHandler.kt +++ b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/mouse/CreativeInventoryScrollMouseInputHandler.kt @@ -3,7 +3,7 @@ package ru.fredboy.cavedroid.ux.controls.input.handler.mouse import com.badlogic.gdx.math.MathUtils import ru.fredboy.cavedroid.common.di.GameScope import ru.fredboy.cavedroid.domain.assets.usecase.GetTextureRegionByNameUseCase -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.domain.items.repository.ItemsRepository import ru.fredboy.cavedroid.game.window.GameWindowType import ru.fredboy.cavedroid.game.window.GameWindowsManager @@ -19,7 +19,7 @@ import kotlin.math.abs @GameScope @BindMouseInputHandler class CreativeInventoryScrollMouseInputHandler @Inject constructor( - private val gameConfigurationRepository: GameConfigurationRepository, + private val gameContextRepository: GameContextRepository, private val gameWindowsManager: GameWindowsManager, private val itemsRepository: ItemsRepository, private val textureRegions: GetTextureRegionByNameUseCase, @@ -48,7 +48,7 @@ class CreativeInventoryScrollMouseInputHandler @Inject constructor( } private fun checkDragConditions(action: MouseInputAction): Boolean { - return gameConfigurationRepository.isTouch() && action.actionKey is MouseInputActionKey.Dragged && + return gameContextRepository.isTouch() && action.actionKey is MouseInputActionKey.Dragged && abs(action.screenY - dragStartY) >= DRAG_SENSITIVITY } diff --git a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/mouse/CursorMouseInputHandler.kt b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/mouse/CursorMouseInputHandler.kt index a42ebce..903be03 100644 --- a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/mouse/CursorMouseInputHandler.kt +++ b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/mouse/CursorMouseInputHandler.kt @@ -5,7 +5,7 @@ import ru.fredboy.cavedroid.common.di.GameScope import ru.fredboy.cavedroid.domain.assets.usecase.GetTextureRegionByNameUseCase import ru.fredboy.cavedroid.common.utils.bl import ru.fredboy.cavedroid.common.utils.px -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.domain.items.model.block.Block import ru.fredboy.cavedroid.domain.items.usecase.GetItemByIndexUseCase import ru.fredboy.cavedroid.entity.mob.model.Direction @@ -25,7 +25,7 @@ import javax.inject.Inject @GameScope @BindMouseInputHandler class CursorMouseInputHandler @Inject constructor( - private val gameConfigurationRepository: GameConfigurationRepository, + private val gameContextRepository: GameContextRepository, private val mobController: MobController, private val gameWorld: GameWorld, private val gameWindowsManager: GameWindowsManager, @@ -129,13 +129,13 @@ class CursorMouseInputHandler @Inject constructor( val pastCursorY = player.cursorY when { - player.controlMode == Player.ControlMode.WALK && gameConfigurationRepository.isTouch() -> handleWalkTouch() - !gameConfigurationRepository.isTouch() -> handleMouse(action) + player.controlMode == Player.ControlMode.WALK && gameContextRepository.isTouch() -> handleWalkTouch() + !gameContextRepository.isTouch() -> handleMouse(action) } mobController.checkPlayerCursorBounds() - if (player.controlMode == Player.ControlMode.WALK && gameConfigurationRepository.isTouch()) { + if (player.controlMode == Player.ControlMode.WALK && gameContextRepository.isTouch()) { setPlayerDirectionToCursor() } diff --git a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/touch/JoystickInputHandler.kt b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/touch/JoystickInputHandler.kt index ca36909..5d68933 100644 --- a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/touch/JoystickInputHandler.kt +++ b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/touch/JoystickInputHandler.kt @@ -4,7 +4,7 @@ import com.badlogic.gdx.utils.TimeUtils import ru.fredboy.cavedroid.common.di.GameScope import ru.fredboy.cavedroid.common.model.Joystick import ru.fredboy.cavedroid.domain.assets.usecase.GetTextureRegionByNameUseCase -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.entity.mob.model.Direction import ru.fredboy.cavedroid.entity.mob.model.Player import ru.fredboy.cavedroid.game.controller.mob.MobController @@ -21,7 +21,7 @@ import javax.inject.Inject @GameScope @BindMouseInputHandler class JoystickInputHandler @Inject constructor( - private val gameConfigurationRepository: GameConfigurationRepository, + private val gameContextRepository: GameContextRepository, private val mobController: MobController, private val gameWindowsManager: GameWindowsManager, private val gameWorld: GameWorld, @@ -55,11 +55,11 @@ class JoystickInputHandler @Inject constructor( override fun checkConditions(action: MouseInputAction): Boolean { return gameWindowsManager.currentWindowType == GameWindowType.NONE && - gameConfigurationRepository.isTouch() && + gameContextRepository.isTouch() && // mobsController.player.controlMode == Player.ControlMode.WALK && - gameConfigurationRepository.getJoystick() != null && + gameContextRepository.getJoystick() != null && (action.actionKey is MouseInputActionKey.Touch) && - (action.actionKey.pointer == gameConfigurationRepository.getJoystick()?.pointer || !active) && + (action.actionKey.pointer == gameContextRepository.getJoystick()?.pointer || !active) && ((action.actionKey is MouseInputActionKey.Dragged) || (action.screenX < action.cameraViewport.width / 2 && !action.actionKey.touchUp || active)) && !(action.actionKey is MouseInputActionKey.Screen && action.isInsideHotbar(textureRegions)) @@ -68,17 +68,17 @@ class JoystickInputHandler @Inject constructor( private fun handleTouchDown(action: MouseInputAction) { val key = action.actionKey as MouseInputActionKey.Screen - gameConfigurationRepository.getJoystick()?.activate(action.screenX, action.screenY, key.pointer) ?: return + gameContextRepository.getJoystick()?.activate(action.screenX, action.screenY, key.pointer) ?: return active = true } private fun handleTouchUp(action: MouseInputAction) { - gameConfigurationRepository.getJoystick()?.deactivate() + gameContextRepository.getJoystick()?.deactivate() active = false } private fun handleCursor() { - val joystick = gameConfigurationRepository.getJoystick() ?: return + val joystick = gameContextRepository.getJoystick() ?: return if (TimeUtils.timeSinceMillis(cursorTimeoutMs) < 150L) { return @@ -114,7 +114,7 @@ class JoystickInputHandler @Inject constructor( return } - val joystick = gameConfigurationRepository.getJoystick() ?: return + val joystick = gameContextRepository.getJoystick() ?: return val joyVector = joystick.getVelocityVector() if (mobController.player.isFlyMode) { diff --git a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/mapper/MouseInputActionMapper.kt b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/mapper/MouseInputActionMapper.kt index 3990375..20ece8d 100644 --- a/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/mapper/MouseInputActionMapper.kt +++ b/core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/mapper/MouseInputActionMapper.kt @@ -4,14 +4,14 @@ import com.badlogic.gdx.Gdx import com.badlogic.gdx.Input import com.badlogic.gdx.math.Rectangle import ru.fredboy.cavedroid.common.di.GameScope -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.ux.controls.input.action.MouseInputAction import ru.fredboy.cavedroid.ux.controls.input.action.keys.MouseInputActionKey import javax.inject.Inject @GameScope class MouseInputActionMapper @Inject constructor( - val gameConfigurationRepository: GameConfigurationRepository, + val gameContextRepository: GameContextRepository, ) { fun map( @@ -72,11 +72,11 @@ class MouseInputActionMapper @Inject constructor( } private fun getScreenX(mouseX: Float): Float { - return mouseX * (gameConfigurationRepository.getWidth() / Gdx.graphics.width) + return mouseX * (gameContextRepository.getWidth() / Gdx.graphics.width) } private fun getScreenY(mouseY: Float): Float { - return mouseY * (gameConfigurationRepository.getHeight() / Gdx.graphics.height) + return mouseY * (gameContextRepository.getHeight() / Gdx.graphics.height) } } \ No newline at end of file diff --git a/core/ux/physics/src/main/java/ru/fredboy/cavedroid/ux/physics/GamePhysics.java b/core/ux/physics/src/main/java/ru/fredboy/cavedroid/ux/physics/GamePhysics.java index 697ed5a..976e8ed 100644 --- a/core/ux/physics/src/main/java/ru/fredboy/cavedroid/ux/physics/GamePhysics.java +++ b/core/ux/physics/src/main/java/ru/fredboy/cavedroid/ux/physics/GamePhysics.java @@ -8,7 +8,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import ru.fredboy.cavedroid.common.di.GameScope; import ru.fredboy.cavedroid.common.utils.MeasureUnitsUtilsKt; -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository; +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository; import ru.fredboy.cavedroid.domain.items.model.block.Block; import ru.fredboy.cavedroid.domain.items.model.inventory.InventoryItem; import ru.fredboy.cavedroid.domain.items.usecase.GetItemByKeyUseCase; @@ -32,19 +32,19 @@ public class GamePhysics { private final Vector2 gravity = new Vector2(0, 444.44f); private final GameWorld mGameWorld; - private final GameConfigurationRepository mGameConfigurationRepository; + private final GameContextRepository mGameContextRepository; private final MobController mMobController; private final DropController mDropController; private final GetItemByKeyUseCase mGetItemByKeyUseCase; @Inject public GamePhysics(GameWorld gameWorld, - GameConfigurationRepository gameConfigurationRepository, + GameContextRepository gameContextRepository, MobController mobController, DropController dropController, GetItemByKeyUseCase getItemByKeyUseCase) { mGameWorld = gameWorld; - mGameConfigurationRepository = gameConfigurationRepository; + mGameContextRepository = gameContextRepository; mMobController = mobController; mDropController = dropController; mGetItemByKeyUseCase = getItemByKeyUseCase; @@ -280,7 +280,7 @@ public class GamePhysics { } if (getBlock(player).isFluid()) { - if (mGameConfigurationRepository.isTouch() && player.getVelocity().x != 0 && !player.getSwim() && !player.isFlyMode()) { + if (mGameContextRepository.isTouch() && player.getVelocity().x != 0 && !player.getSwim() && !player.isFlyMode()) { player.setSwim(true); } if (!player.getSwim()) { @@ -310,7 +310,7 @@ public class GamePhysics { mobXColl(player); - if (mGameConfigurationRepository.isTouch() && !player.isFlyMode() && player.getCanJump() && player.getVelocity().x != 0 && checkJump(player)) { + if (mGameContextRepository.isTouch() && !player.isFlyMode() && player.getCanJump() && player.getVelocity().x != 0 && checkJump(player)) { player.jump(); player.setCanJump(false); } diff --git a/core/ux/rendering/src/main/kotlin/ru/fredboy/cavedroid/ux/rendering/DebugRenderer.kt b/core/ux/rendering/src/main/kotlin/ru/fredboy/cavedroid/ux/rendering/DebugRenderer.kt index 12f8eb0..7d15758 100644 --- a/core/ux/rendering/src/main/kotlin/ru/fredboy/cavedroid/ux/rendering/DebugRenderer.kt +++ b/core/ux/rendering/src/main/kotlin/ru/fredboy/cavedroid/ux/rendering/DebugRenderer.kt @@ -10,7 +10,7 @@ import ru.fredboy.cavedroid.common.utils.bl import ru.fredboy.cavedroid.common.utils.drawString import ru.fredboy.cavedroid.common.utils.forEachBlockInArea import ru.fredboy.cavedroid.common.utils.px -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.domain.items.model.block.Block import ru.fredboy.cavedroid.game.controller.mob.MobController import ru.fredboy.cavedroid.game.world.GameWorld @@ -20,7 +20,7 @@ import javax.inject.Inject @GameScope @BindRenderer class DebugRenderer @Inject constructor( - private val gameConfigurationRepository: GameConfigurationRepository, + private val gameContextRepository: GameContextRepository, private val gameWorld: GameWorld, private val mobController: MobController, private val debugInfoStringsProvider: DebugInfoStringsProvider, @@ -89,11 +89,11 @@ class DebugRenderer @Inject constructor( } override fun draw(spriteBatch: SpriteBatch, shapeRenderer: ShapeRenderer, viewport: Rectangle, delta: Float) { - if (gameConfigurationRepository.shouldShowInfo()) { + if (gameContextRepository.shouldShowInfo()) { drawDebugInfo(spriteBatch) } - if (gameConfigurationRepository.shouldShowMap()) { + if (gameContextRepository.shouldShowMap()) { drawMinimap( spriteBatch = spriteBatch, shapeRenderer = shapeRenderer, diff --git a/core/ux/rendering/src/main/kotlin/ru/fredboy/cavedroid/ux/rendering/TouchControlsRenderer.kt b/core/ux/rendering/src/main/kotlin/ru/fredboy/cavedroid/ux/rendering/TouchControlsRenderer.kt index 9009620..081caf2 100644 --- a/core/ux/rendering/src/main/kotlin/ru/fredboy/cavedroid/ux/rendering/TouchControlsRenderer.kt +++ b/core/ux/rendering/src/main/kotlin/ru/fredboy/cavedroid/ux/rendering/TouchControlsRenderer.kt @@ -9,7 +9,7 @@ import ru.fredboy.cavedroid.common.model.Joystick import ru.fredboy.cavedroid.common.utils.drawSprite import ru.fredboy.cavedroid.domain.assets.usecase.GetTextureRegionByNameUseCase import ru.fredboy.cavedroid.domain.assets.usecase.GetTouchButtonsUseCase -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.entity.mob.model.Player import ru.fredboy.cavedroid.game.controller.mob.MobController import ru.fredboy.cavedroid.game.window.GameWindowType @@ -20,7 +20,7 @@ import javax.inject.Inject @GameScope @BindRenderer class TouchControlsRenderer @Inject constructor( - private val gameConfigurationRepository: GameConfigurationRepository, + private val gameContextRepository: GameContextRepository, private val mobController: MobController, private val gameWindowsManager: GameWindowsManager, private val textureRegions: GetTextureRegionByNameUseCase, @@ -35,7 +35,7 @@ class TouchControlsRenderer @Inject constructor( private val joyStick = Sprite(textureRegions["joy_stick"]) private fun drawJoystick(spriteBatch: SpriteBatch) { - val joystick = gameConfigurationRepository.getJoystick()?.takeIf { it.active } ?: return + val joystick = gameContextRepository.getJoystick()?.takeIf { it.active } ?: return spriteBatch.drawSprite( sprite = joyBackground, @@ -55,7 +55,7 @@ class TouchControlsRenderer @Inject constructor( } override fun draw(spriteBatch: SpriteBatch, shapeRenderer: ShapeRenderer, viewport: Rectangle, delta: Float) { - if (!gameConfigurationRepository.isTouch() || gameWindowsManager.currentWindowType != GameWindowType.NONE) { + if (!gameContextRepository.isTouch() || gameWindowsManager.currentWindowType != GameWindowType.NONE) { return } diff --git a/core/ux/rendering/src/main/kotlin/ru/fredboy/cavedroid/ux/rendering/windows/SurvivalWindowRenderer.kt b/core/ux/rendering/src/main/kotlin/ru/fredboy/cavedroid/ux/rendering/windows/SurvivalWindowRenderer.kt index 62dd38d..66ccdf6 100644 --- a/core/ux/rendering/src/main/kotlin/ru/fredboy/cavedroid/ux/rendering/windows/SurvivalWindowRenderer.kt +++ b/core/ux/rendering/src/main/kotlin/ru/fredboy/cavedroid/ux/rendering/windows/SurvivalWindowRenderer.kt @@ -12,7 +12,7 @@ import ru.fredboy.cavedroid.domain.assets.usecase.GetFontUseCase import ru.fredboy.cavedroid.domain.assets.usecase.GetStringHeightUseCase import ru.fredboy.cavedroid.domain.assets.usecase.GetStringWidthUseCase import ru.fredboy.cavedroid.domain.assets.usecase.GetTextureRegionByNameUseCase -import ru.fredboy.cavedroid.domain.configuration.repository.GameConfigurationRepository +import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository import ru.fredboy.cavedroid.entity.mob.model.Direction import ru.fredboy.cavedroid.game.controller.mob.MobController import ru.fredboy.cavedroid.game.window.GameWindowsConfigs @@ -23,7 +23,7 @@ import kotlin.math.atan @GameScope class SurvivalWindowRenderer @Inject constructor( - private val gameConfigurationRepository: GameConfigurationRepository, + private val gameContextRepository: GameContextRepository, private val mobController: MobController, private val gameWindowsManager: GameWindowsManager, private val textureRegions: GetTextureRegionByNameUseCase, @@ -37,12 +37,12 @@ class SurvivalWindowRenderer @Inject constructor( private val survivalWindowTexture get() = requireNotNull(textureRegions[SURVIVAL_WINDOW_KEY]) private fun setPortraitHeadRotation(portraitX: Float, portraitY: Float) { - if (gameConfigurationRepository.isTouch()) { + if (gameContextRepository.isTouch()) { return } - val mouseX = Gdx.input.x * (gameConfigurationRepository.getWidth() / Gdx.graphics.width) - val mouseY = Gdx.input.y * (gameConfigurationRepository.getHeight() / Gdx.graphics.height) + val mouseX = Gdx.input.x * (gameContextRepository.getWidth() / Gdx.graphics.width) + val mouseY = Gdx.input.y * (gameContextRepository.getHeight() / Gdx.graphics.height) val h = mouseX.toDouble() - portraitX.toDouble() val v = mouseY.toDouble() - portraitY.toDouble()