DEADSOFTWARE

Extract input handling from renderer
authorfredboy <fredboy@protonmail.com>
Fri, 27 Jun 2025 11:45:41 +0000 (18:45 +0700)
committerfredboy <fredboy@protonmail.com>
Fri, 27 Jun 2025 11:45:41 +0000 (18:45 +0700)
43 files changed:
core/data/configuration/build.gradle.kts
core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/di/DataConfigurationModule.kt
core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/model/GameConfiguration.kt [deleted file]
core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/model/GameContext.kt [new file with mode: 0644]
core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/repository/GameConfigurationRepositoryImpl.kt [deleted file]
core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/repository/GameContextRepositoryImpl.kt [new file with mode: 0644]
core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/store/GameConfigurationStore.kt [deleted file]
core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/store/GameContextStore.kt [new file with mode: 0644]
core/domain/configuration/build.gradle.kts
core/domain/configuration/src/main/kotlin/ru/fredboy/cavedroid/domain/configuration/model/CameraContext.kt [new file with mode: 0644]
core/domain/configuration/src/main/kotlin/ru/fredboy/cavedroid/domain/configuration/repository/GameContextRepository.kt [moved from core/domain/configuration/src/main/kotlin/ru/fredboy/cavedroid/domain/configuration/repository/GameConfigurationRepository.kt with 78% similarity]
core/src/main/java/ru/deadsoftware/cavedroid/game/GameComponent.java
core/src/main/java/ru/deadsoftware/cavedroid/game/GameModule.java
core/src/main/java/ru/deadsoftware/cavedroid/game/GameProc.java
core/src/main/java/ru/deadsoftware/cavedroid/game/GameRenderer.java
core/src/main/java/ru/deadsoftware/cavedroid/menu/MenuProc.java
core/src/main/java/ru/deadsoftware/cavedroid/menu/submenus/MenuMain.java
core/src/main/java/ru/deadsoftware/cavedroid/misc/Renderer.java
core/src/main/kotlin/ru/deadsoftware/cavedroid/CaveGame.kt
core/src/main/kotlin/ru/deadsoftware/cavedroid/MainComponent.kt
core/src/main/kotlin/ru/deadsoftware/cavedroid/menu/submenus/MenusFactory.kt
core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/GameInputProcessor.kt [new file with mode: 0644]
core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/FlyDownKeyboardInputHandler.kt
core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/FlyUpKeyboardInputHandler.kt
core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/GoLeftKeyboardInputHandler.kt
core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/GoRightKeyboardInputHandler.kt
core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/JumpKeyboardInputHandler.kt
core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/MoveCursorControlsModeKeyboardInputHandler.kt
core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/PauseGameKeyboardInputHandler.kt
core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/StopSwimKeyboardInputHandler.kt
core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/SwimUpKeyboardInputHandler.kt
core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/ToggleControlsModeKeyboardInputHandler.kt
core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/ToggleDebugInfoKeyboardInputHandler.kt
core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/ToggleMinimapKeyboardInputHandler.kt
core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/keyboard/TurnOnFlyModeKeyboardInputHandler.kt
core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/mouse/CreativeInventoryScrollMouseInputHandler.kt
core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/mouse/CursorMouseInputHandler.kt
core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/handler/touch/JoystickInputHandler.kt
core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/input/mapper/MouseInputActionMapper.kt
core/ux/physics/src/main/java/ru/fredboy/cavedroid/ux/physics/GamePhysics.java
core/ux/rendering/src/main/kotlin/ru/fredboy/cavedroid/ux/rendering/DebugRenderer.kt
core/ux/rendering/src/main/kotlin/ru/fredboy/cavedroid/ux/rendering/TouchControlsRenderer.kt
core/ux/rendering/src/main/kotlin/ru/fredboy/cavedroid/ux/rendering/windows/SurvivalWindowRenderer.kt

index 9d1d0f1253b4c2320aa96bac7e0d974a03959bc2..2092f364ec616113c9f35f030b3885ef2032a9cf 100644 (file)
@@ -8,6 +8,7 @@ java.targetCompatibility = ApplicationInfo.sourceCompatibility
 
 dependencies {
     useDagger()
+    useLibgdx()
     useCommonModule()
     useModule(":core:domain:configuration")
 }
index 52d2765cec76e3be0cea45dee3b82545a2917ad0..68a4fbc409ab60693bd7c20c58626974b24bad25 100644 (file)
@@ -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 (file)
index df88c3d..0000000
+++ /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 (file)
index 0000000..c03c517
--- /dev/null
@@ -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 (file)
index 2c45253..0000000
+++ /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 (file)
index 0000000..fb7b2a5
--- /dev/null
@@ -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 (file)
index 430e9f5..0000000
+++ /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 (file)
index 0000000..eb35986
--- /dev/null
@@ -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"
+    }
+}
index cfe9e180b397baf81378814a575c2c243c707a26..86474f1008d30aee5787f738cf500808fddcdbc6 100644 (file)
@@ -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 (file)
index 0000000..f97bac1
--- /dev/null
@@ -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<Float, Float> {
+        return xOnViewport(x) to yOnViewport(y)
+    }
+}
\ No newline at end of file
@@ -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?)
+
 }
index 396bba6e25e90980d4fdeaeedfff6771e4a68fc1..a0b780f12fec3cc605f708bcc56ce0e5e04d18f5 100644 (file)
@@ -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();
 }
index 0b0466576fe3ee7af0710b896957c0f0b4846a4d..2196a9986900550190ed8ef83368dc9be7af907f 100644 (file)
@@ -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;
index 46eb2ff5187d6104c4025493870832382b1719d5..f6310d620a2120ee31b6d3048e33396243179d0b 100644 (file)
@@ -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
index efb7d35aab1ef03ff0724b64bd7dfefeb8c8019d..e8e556ba75444ee6c7bc154b9a12dc3b5809aab9 100644 (file)
@@ -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<IGameRenderer> mRenderers;
-    private final CursorMouseInputHandler mCursorMouseInputHandler;
-    private final MouseInputActionMapper mMouseInputActionMapper;
-    private final KeyboardInputActionMapper mKeyboardInputActionMapper;
-    private final Set<IMouseInputHandler> mMouseInputHandlers;
-    private final Set<IKeyboardInputHandler> 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<IGameRenderer> renderers,
-                 CursorMouseInputHandler cursorMouseInputHandler,
-                 MouseInputActionMapper mouseInputActionMapper,
-                 KeyboardInputActionMapper keyboardInputActionMapper,
-                 Set<IMouseInputHandler> mouseInputHandlers,
-                 Set<IKeyboardInputHandler> 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<String, TouchButton> 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()))
             );
         }
 
index 4906b1be633a73a93e91f0d79ce69de81e7c07b7..5449437ff43f9f89287dfebe49363ddf3c53c138 100644 (file)
@@ -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;
index 50f9d18ac4fd82945471d1743f811bfe685a8af5..24dc1daf5a10a881f90c5a81e44f1a25f8bcc366 100644 (file)
@@ -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);
         }
     }
index 4c9bdadc4a539a4f101635010fe88b214f027ce9..b74c3bf6b8cab6bcea4fcecae348c815869c01b6 100644 (file)
@@ -52,6 +52,10 @@ public abstract class Renderer implements InputProcessor {
         mCameraViewport.y = y;
     }
 
+    public OrthographicCamera getCamera() {
+        return camera;
+    }
+
     public Rectangle getCameraViewport() {
         return mCameraViewport;
     }
index 8ef2175632cb2e48167242df4ba3c8537bf87466..1e02c0b855e58cb1f758f9a90f7ece7e3545dc5f 100644 (file)
@@ -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)
index 678d09aa70a81ed40b4c991754d6ea5d096c7bdc..b528e15c2519377f48f22d131100b378931925c2 100644 (file)
@@ -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
 
index db9f48ee303e773a2d099ab97d80b332258aadb6..85abca98e2327d9f48b87e997426101b5df1d03d 100644 (file)
@@ -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 (file)
index 0000000..ef041e3
--- /dev/null
@@ -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
index 06b7e1228c32fe42d54c737d9d9336888b1cea71..0484af28896fee825c603ee25e04509618876b7a 100644 (file)
@@ -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) {
index e7de01de375c253efa884a2dfef5eced7234ac0b..d01b8e205ab4e29814bc7e4f18a9a6e5fa5a58fa 100644 (file)
@@ -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) {
index bac9c81df55221598266cf1ffa6bbc103a138aa8..7ae5326549fb851d9fe6146bb9bd5345792f897a 100644 (file)
@@ -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)
index 3da55563096958bc6dede777f8df3bc4d32d7c17..861db288db2b9ce5b308b7b750d95ec729d0a967 100644 (file)
@@ -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) {
index bac67d4de7e87ef11d2d7e87cab6bb0483bf5513..7c644c4e453f28a9222602290c8aab6343952e7a 100644 (file)
@@ -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) {
index b7ee8dd9c78979fbe705d370fc6cd943ad3dff3d..a08e58243131042842dbfaf2ac6964f734e67815 100644 (file)
@@ -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 ||
index 6e71d7ee7672eb44484f6fe67c0bad7c7678489e..2ef34642b5326b2745379467d5bb6f39cc7fd9db 100644 (file)
@@ -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,
index 77619bc21ad7b1f563101fb4b92c69cd5decea6f..699de982b32db530361e61829cf009756ae0a624 100644 (file)
@@ -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) {
index 9f9779f9477c8e51acfebea0350714c01f34beb0..e00ff62db871fa55c936d67259917eddd37ca098 100644 (file)
@@ -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) {
index dd06c6fa00205436f61ce24ec8f18abe029ace44..cad0419c40d31a0c1a7108433f4d8b18d18e1ac8 100644 (file)
@@ -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) {
index e470a2b6a61488ed9277c93623a41452b06f01f1..14b6aa46a7a54d5479f0af64ec7a44cec7dfe9d2 100644 (file)
@@ -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
index f55a8d2367c3fb23e1c85bea930cc04718c492a3..792bfeb7e8df8d770015f51547ca91e8dfb9de2e 100644 (file)
@@ -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
index 5ba72d3330ab42845c284899bb52236213fedc79..871055a023c0eedc576df4dae13143842e54cf56 100644 (file)
@@ -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) {
index 228c049c02aba7c1e1140608c6d83aa7bb43106e..b92550b869deffe4518f9d43dd15a0b7d2a4c51a 100644 (file)
@@ -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
     }
 
index a42ebcec55578c76c3d2302486e1c4fa273b1787..903be03526ef674c9925348937c1ee58c8b84074 100644 (file)
@@ -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()
         }
 
index ca36909c43236c6bbfa8fd56fdc334f668166b59..5d68933b10529b2ff27b950c8d74592112dc1361 100644 (file)
@@ -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) {
index 3990375a18cf06862531da41bc514076057201c3..20ece8d40ff0d319b021fb80eac651de6fbbed46 100644 (file)
@@ -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
index 697ed5a2f98cd1cc7891862f8c0184c6c903136a..976e8ed298c66d64f535dd286b18a3479550ba8e 100644 (file)
@@ -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);
         }
index 12f8eb0f678298ba53f9385ecd43cd51e88b6a0a..7d15758fb4473b3b1dc930132de9707379848b2c 100644 (file)
@@ -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,
index 90096205a1025f4c00014a2388f71d7d74c124d6..081caf27b8b030f6bb99c98e64f114cecda6f971 100644 (file)
@@ -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
         }
 
index 62dd38d728d27754c02c181637dc5626c844d062..66ccdf63c764eaf2fb638740a54aa565675e0d8c 100644 (file)
@@ -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()