DEADSOFTWARE

Refactor game initialization
authorfredboy <fredboy@protonmail.com>
Mon, 30 Jun 2025 17:23:38 +0000 (00:23 +0700)
committerfredboy <fredboy@protonmail.com>
Mon, 30 Jun 2025 17:23:52 +0000 (00:23 +0700)
65 files changed:
android/build.gradle.kts
android/src/main/kotlin/ru/deadsoftware/cavedroid/AndroidLauncher.kt
core/build.gradle.kts [deleted file]
core/common/src/main/kotlin/ru/fredboy/cavedroid/common/api/ApplicationController.kt [moved from core/common/src/main/kotlin/ru/fredboy/cavedroid/common/api/GameController.kt with 81% similarity]
core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/di/ApplicationContextModule.kt [new file with mode: 0644]
core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/di/GameContextModule.kt [moved from core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/di/DataConfigurationModule.kt with 64% similarity]
core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/model/ApplicationContext.kt [new file with mode: 0644]
core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/model/GameContext.kt
core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/repository/ApplicationContextRepositoryImpl.kt [new file with mode: 0644]
core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/repository/GameContextRepositoryImpl.kt
core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/store/ApplicationContextStore.kt [new file with mode: 0644]
core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/store/GameContextStore.kt
core/domain/configuration/src/main/kotlin/ru/fredboy/cavedroid/domain/configuration/repository/ApplicationContextRepository.kt [new file with mode: 0644]
core/domain/configuration/src/main/kotlin/ru/fredboy/cavedroid/domain/configuration/repository/GameContextRepository.kt
core/entity/mob/src/main/kotlin/ru/fredboy/cavedroid/entity/mob/model/Player.kt
core/src/main/java/ru/deadsoftware/cavedroid/MainConfig.java [deleted file]
core/src/main/java/ru/deadsoftware/cavedroid/game/GameComponent.java [deleted file]
core/src/main/java/ru/deadsoftware/cavedroid/game/GameModule.java [deleted file]
core/src/main/java/ru/deadsoftware/cavedroid/game/GameScreen.java [deleted file]
core/src/main/java/ru/deadsoftware/cavedroid/menu/MenuComponent.java [deleted file]
core/src/main/java/ru/deadsoftware/cavedroid/menu/MenuScreen.java [deleted file]
core/src/main/kotlin/ru/deadsoftware/cavedroid/BaseGame.kt [deleted file]
core/src/main/kotlin/ru/deadsoftware/cavedroid/CaveGame.kt [deleted file]
core/src/main/kotlin/ru/deadsoftware/cavedroid/GameModule.kt [deleted file]
core/src/main/kotlin/ru/deadsoftware/cavedroid/MainComponent.kt [deleted file]
core/ux/controls/src/main/kotlin/ru/fredboy/cavedroid/ux/controls/GameInputProcessor.kt
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/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/java/ru/fredboy/cavedroid/ux/rendering/GameRenderer.java
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
core/zygote/build.gradle.kts
core/zygote/src/main/java/ru/fredboy/cavedroid/zygote/game/GameProc.java [moved from core/src/main/java/ru/deadsoftware/cavedroid/game/GameProc.java with 94% similarity]
core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/CaveDroidApplication.kt [new file with mode: 0644]
core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/di/ApplicationComponent.kt [new file with mode: 0644]
core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/game/GameScreen.kt [new file with mode: 0644]
core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/game/di/GameComponent.kt [new file with mode: 0644]
core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/game/di/GameModule.kt [new file with mode: 0644]
core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/menu/MenuScreen.kt [new file with mode: 0644]
core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/menu/action/ExitGameAction.kt
core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/menu/action/LoadGameAction.kt
core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/menu/action/NewGameCreativeAction.kt
core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/menu/action/NewGameSurvivalAction.kt
core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/menu/di/MenuComponent.kt [new file with mode: 0644]
core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/menu/input/MenuInputProcessor.kt
core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/menu/option/bool/DynamicCameraMenuBooleanOption.kt
core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/menu/option/bool/FullscreenMenuBooleanOption.kt
core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/menu/renderer/MenuRenderer.kt
desktop/build.gradle.kts
desktop/src/main/kotlin/ru/deadsoftware/cavedroid/desktop/DesktopLauncher.kt
settings.gradle.kts

index 969b11f4d04d98364d32a26d4c05be7dec64f3bb..ebf9914f125eefcbcc58ec31aad4739f32330eff 100644 (file)
@@ -117,7 +117,8 @@ tasks.whenTaskAdded {
 
 dependencies {
     useCommonModule()
-    implementation((project(":core")))
+    useZygoteModule()
+
     implementation(platform(Dependencies.Kotlin.bom))
 
     implementation(Dependencies.LibGDX.gdx)
index b6fff78dba96f5b80ee55a2e1e3689e648cea00a..129379aae68d8056fb27c7af76bd1b44a610ee02 100644 (file)
@@ -3,6 +3,7 @@ package ru.deadsoftware.cavedroid
 import android.os.Bundle
 import com.badlogic.gdx.backends.android.AndroidApplication
 import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration
+import ru.fredboy.cavedroid.zygote.CaveDroidApplication
 
 class AndroidLauncher : AndroidApplication() {
 
@@ -16,7 +17,7 @@ class AndroidLauncher : AndroidApplication() {
         config.useImmersiveMode = true
 
         initialize(
-            /* listener = */ CaveGame(
+            /* listener = */ CaveDroidApplication(
                 gameDataDirectoryPath = gameDataDirectoryPath,
                 isTouchScreen = true,
                 isDebug = BuildConfig.DEBUG,
diff --git a/core/build.gradle.kts b/core/build.gradle.kts
deleted file mode 100644 (file)
index 1dec1e4..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-plugins {
-    id("java-library")
-    id("org.jetbrains.kotlin.jvm")
-    id("kotlin")
-    id("idea")
-    id("org.jetbrains.kotlin.plugin.serialization") version Versions.kotlin
-    id ("com.google.devtools.ksp") version Versions.ksp
-}
-
-java.sourceCompatibility = ApplicationInfo.sourceCompatibility
-java.targetCompatibility = ApplicationInfo.sourceCompatibility
-
-sourceSets {
-    buildDir = file("_build")
-}
-
-dependencies {
-    useAutomultibind()
-    useDagger()
-    useLibgdx()
-    useKotlinxSerializationJson()
-    useKotlinxSerializationProtobuf()
-
-    useCommonModule()
-
-    useDataModules()
-    useDomainModules()
-    useEntityModules()
-    useGameModules()
-    useUxModules()
-    useZygoteModule()
-
-    implementation(Dependencies.jetbrainsAnnotations)
-}
diff --git a/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/di/ApplicationContextModule.kt b/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/di/ApplicationContextModule.kt
new file mode 100644 (file)
index 0000000..aed8055
--- /dev/null
@@ -0,0 +1,13 @@
+package ru.fredboy.cavedroid.data.configuration.di
+
+import dagger.Binds
+import dagger.Module
+import ru.fredboy.cavedroid.data.configuration.repository.ApplicationContextRepositoryImpl
+import ru.fredboy.cavedroid.domain.configuration.repository.ApplicationContextRepository
+
+@Module
+abstract class ApplicationContextModule {
+
+    @Binds
+    internal abstract fun bindApplicationContextRepository(impl: ApplicationContextRepositoryImpl): ApplicationContextRepository
+}
\ No newline at end of file
similarity index 64%
rename from core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/di/DataConfigurationModule.kt
rename to core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/di/GameContextModule.kt
index 68a4fbc409ab60693bd7c20c58626974b24bad25..5a2a512d9eb1a9af4cc2c449f410f38bc7713e2b 100644 (file)
@@ -6,9 +6,8 @@ import ru.fredboy.cavedroid.data.configuration.repository.GameContextRepositoryI
 import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
 
 @Module
-abstract class DataConfigurationModule {
+abstract class GameContextModule {
 
     @Binds
-    internal abstract fun bindGameConfigurationRepository(impl: GameContextRepositoryImpl): GameContextRepository
-
+    internal abstract fun bindGameContextRepository(impl: GameContextRepositoryImpl): GameContextRepository
 }
\ No newline at end of file
diff --git a/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/model/ApplicationContext.kt b/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/model/ApplicationContext.kt
new file mode 100644 (file)
index 0000000..02992c2
--- /dev/null
@@ -0,0 +1,9 @@
+package ru.fredboy.cavedroid.data.configuration.model
+
+class ApplicationContext(
+    internal val isDebug: Boolean,
+    internal var isTouch: Boolean,
+    internal var gameDirectory: String,
+    internal var width: Float,
+    internal var height: Float,
+)
index c03c517417fb262dfc22feef95ed9be2c9151592..d151585f375ba073fcdbb8a01e8f0a1ed6753d24 100644 (file)
@@ -3,25 +3,12 @@ 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
-}
+class GameContext(
+    internal val isLoadGame: Boolean,
+    internal var showInfo: Boolean,
+    internal var showMap: Boolean,
+    internal var isFullscreen: Boolean,
+    internal var useDynamicCamera: Boolean,
+    internal var joystick: Joystick,
+    internal var cameraContext: CameraContext
+)
diff --git a/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/repository/ApplicationContextRepositoryImpl.kt b/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/repository/ApplicationContextRepositoryImpl.kt
new file mode 100644 (file)
index 0000000..e5acbbc
--- /dev/null
@@ -0,0 +1,38 @@
+package ru.fredboy.cavedroid.data.configuration.repository
+
+import ru.fredboy.cavedroid.data.configuration.store.ApplicationContextStore
+import ru.fredboy.cavedroid.domain.configuration.repository.ApplicationContextRepository
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class ApplicationContextRepositoryImpl @Inject constructor(
+    private val applicationContextStore: ApplicationContextStore,
+) : ApplicationContextRepository {
+
+    override fun isDebug(): Boolean = applicationContextStore.isDebug
+
+    override fun isTouch(): Boolean = applicationContextStore.isTouch
+
+    override fun getGameDirectory(): String = applicationContextStore.gameDirectory
+
+    override fun getWidth(): Float = applicationContextStore.width
+
+    override fun getHeight(): Float = applicationContextStore.height
+
+    override fun setTouch(isTouch: Boolean) {
+        applicationContextStore.isTouch = isTouch
+    }
+
+    override fun setGameDirectory(path: String) {
+        applicationContextStore.gameDirectory = path
+    }
+
+    override fun setWidth(width: Float) {
+        applicationContextStore.width = width
+    }
+
+    override fun setHeight(height: Float) {
+        applicationContextStore.height = height
+    }
+}
\ No newline at end of file
index b3e2b127916472952db1fae33081ec0ff6f87b6c..0be7a2b4b9e34f9684d3ee07cc22b0dd87d13e4b 100644 (file)
@@ -1,6 +1,7 @@
 package ru.fredboy.cavedroid.data.configuration.repository
 
 import com.badlogic.gdx.Gdx
+import ru.fredboy.cavedroid.common.di.GameScope
 import ru.fredboy.cavedroid.common.model.Joystick
 import ru.fredboy.cavedroid.data.configuration.store.GameContextStore
 import ru.fredboy.cavedroid.domain.configuration.model.CameraContext
@@ -8,46 +9,24 @@ import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepositor
 import javax.inject.Inject
 import javax.inject.Singleton
 
-@Singleton
+@GameScope
 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 isLoadGame(): Boolean = gameContextStore.isLoadGame
 
     override fun shouldShowInfo(): Boolean = gameContextStore.showInfo
 
     override fun shouldShowMap(): Boolean = gameContextStore.showMap
 
-    override fun getJoystick(): Joystick? = gameContextStore.joystick
+    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 getCameraContext(): CameraContext = gameContextStore.cameraContext
 
     override fun setShowInfo(show: Boolean) {
         gameContextStore.showInfo = show
@@ -57,7 +36,7 @@ class GameContextRepositoryImpl @Inject constructor(
         gameContextStore.showMap = show
     }
 
-    override fun setJoystick(joystick: Joystick?) {
+    override fun setJoystick(joystick: Joystick) {
         gameContextStore.joystick = joystick
     }
 
@@ -65,7 +44,10 @@ class GameContextRepositoryImpl @Inject constructor(
         if (fullscreen) {
             Gdx.graphics.setFullscreenMode(Gdx.graphics.displayMode);
         } else {
-            Gdx.graphics.setWindowedMode(getWidth().toInt(), getHeight().toInt());
+            Gdx.graphics.setWindowedMode(
+                /* width = */ getCameraContext().viewport.width.toInt(),
+                /* height = */ getCameraContext().viewport.height.toInt(),
+            );
         }
         gameContextStore.isFullscreen = fullscreen
     }
@@ -74,7 +56,7 @@ class GameContextRepositoryImpl @Inject constructor(
         gameContextStore.useDynamicCamera = use
     }
 
-    override fun setCameraContext(cameraContext: CameraContext?) {
+    override fun setCameraContext(cameraContext: CameraContext) {
         gameContextStore.cameraContext = cameraContext
     }
 }
diff --git a/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/store/ApplicationContextStore.kt b/core/data/configuration/src/main/kotlin/ru/fredboy/cavedroid/data/configuration/store/ApplicationContextStore.kt
new file mode 100644 (file)
index 0000000..eaf4bee
--- /dev/null
@@ -0,0 +1,33 @@
+package ru.fredboy.cavedroid.data.configuration.store
+
+import ru.fredboy.cavedroid.data.configuration.model.ApplicationContext
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class ApplicationContextStore @Inject constructor(
+    private val applicationContext: ApplicationContext,
+) {
+
+    private val lock = Any()
+
+    val isDebug: Boolean
+        get() = synchronized(lock) { applicationContext.isDebug }
+
+    var isTouch: Boolean
+        get() = synchronized(lock) { applicationContext.isTouch }
+        set(value) = synchronized(lock) { applicationContext.isTouch = value }
+
+    var gameDirectory: String
+        get() = synchronized(lock) { applicationContext.gameDirectory }
+        set(value) = synchronized(lock) { applicationContext.gameDirectory = value }
+
+    var width: Float
+        get() = synchronized(lock) { applicationContext.width }
+        set(value) = synchronized(lock) { applicationContext.width = value }
+
+    var height: Float
+        get() = synchronized(lock) { applicationContext.height }
+        set(value) = synchronized(lock) { applicationContext.height = value }
+
+}
\ No newline at end of file
index eb35986c6bc77ee38a8cdc44b739de809719cce4..268a887eb8c37f203a4bfd065bc3e434ca92e927 100644 (file)
@@ -1,34 +1,20 @@
 package ru.fredboy.cavedroid.data.configuration.store
 
-import com.badlogic.gdx.graphics.OrthographicCamera
+import ru.fredboy.cavedroid.common.di.GameScope
 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() {
+@GameScope
+class GameContextStore @Inject constructor(
+    private val gameContext: GameContext
+) {
 
     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 }
+    val isLoadGame: Boolean
+        get() = gameContext.isLoadGame
 
     var showInfo: Boolean
         get() = synchronized(lock) { gameContext.showInfo }
@@ -38,7 +24,7 @@ class GameContextStore @Inject constructor() {
         get() = synchronized(lock) { gameContext.showMap }
         set(value) = synchronized(lock) { gameContext.showMap = value }
 
-    var joystick: Joystick?
+    var joystick: Joystick
         get() = synchronized(lock) { gameContext.joystick }
         set(value) = synchronized(lock) { gameContext.joystick = value }
 
@@ -50,7 +36,7 @@ class GameContextStore @Inject constructor() {
         get() = synchronized(lock) { gameContext.useDynamicCamera }
         set(value) = synchronized(lock) { gameContext.useDynamicCamera = value }
 
-    var cameraContext: CameraContext?
+    var cameraContext: CameraContext
         get() = synchronized(lock) { gameContext.cameraContext }
         set(value) = synchronized(lock) { gameContext.cameraContext = value }
 
diff --git a/core/domain/configuration/src/main/kotlin/ru/fredboy/cavedroid/domain/configuration/repository/ApplicationContextRepository.kt b/core/domain/configuration/src/main/kotlin/ru/fredboy/cavedroid/domain/configuration/repository/ApplicationContextRepository.kt
new file mode 100644 (file)
index 0000000..9bc739a
--- /dev/null
@@ -0,0 +1,23 @@
+package ru.fredboy.cavedroid.domain.configuration.repository
+
+interface ApplicationContextRepository {
+
+    fun isDebug(): Boolean
+
+    fun isTouch(): Boolean
+
+    fun getGameDirectory(): String
+
+    fun getWidth(): Float
+
+    fun getHeight(): Float
+
+    fun setTouch(isTouch: Boolean)
+
+    fun setGameDirectory(path: String)
+
+    fun setWidth(width: Float)
+
+    fun setHeight(height: Float)
+
+}
\ No newline at end of file
index ab393b646fffc2cd021468dc88915f58d05ccf31..2f0692d033ba27b9bbd8411179fd6ef3fed4debd 100644 (file)
@@ -5,44 +5,30 @@ import ru.fredboy.cavedroid.domain.configuration.model.CameraContext
 
 interface GameContextRepository {
 
-    fun isTouch(): Boolean
-
-    fun getGameDirectory(): String
-
-    fun getWidth(): Float
-
-    fun getHeight(): Float
+    fun isLoadGame(): Boolean
 
     fun shouldShowInfo(): Boolean
 
     fun shouldShowMap(): Boolean
 
-    fun getJoystick(): Joystick?
+    fun getJoystick(): Joystick
 
     fun isFullscreen(): Boolean
 
     fun useDynamicCamera(): Boolean
 
-    fun getCameraContext(): CameraContext?
-
-    fun setTouch(isTouch: Boolean)
-
-    fun setGameDirectory(path: String)
-
-    fun setWidth(width: Float)
-
-    fun setHeight(height: Float)
+    fun getCameraContext(): CameraContext
 
     fun setShowInfo(show: Boolean)
 
     fun setShowMap(show: Boolean)
 
-    fun setJoystick(joystick: Joystick?)
+    fun setJoystick(joystick: Joystick)
 
     fun setFullscreen(fullscreen: Boolean)
 
     fun setUseDynamicCamera(use: Boolean)
 
-    fun setCameraContext(cameraContext: CameraContext?)
+    fun setCameraContext(cameraContext: CameraContext)
 
 }
index 1bd0835a59ffac3912bdb40749997d528c7a61bf..36a8bb5b2f1fd4c8bcd6c5d385062ecffe24aad2 100644 (file)
@@ -266,7 +266,7 @@ class Player(
         const val WIDTH = 4f
         const val HEIGHT = 30f
 
-        private const val SPEED = 69.072f
+        const val SPEED = 69.072f
         private const val JUMP_VELOCITY = -133.332f
 
         private val HIT_ANIMATION_RANGE = 30f..90f
diff --git a/core/src/main/java/ru/deadsoftware/cavedroid/MainConfig.java b/core/src/main/java/ru/deadsoftware/cavedroid/MainConfig.java
deleted file mode 100644 (file)
index 4f884c0..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-package ru.deadsoftware.cavedroid;
-
-import org.jetbrains.annotations.Nullable;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-@Singleton
-public class MainConfig {
-
-    @Nullable
-    private MainComponent mMainComponent;
-
-    @Inject
-    public MainConfig() {
-    }
-
-    public MainComponent getMainComponent() {
-        assert mMainComponent != null;
-        return mMainComponent;
-    }
-
-    public void setMainComponent(MainComponent mainComponent) {
-        mMainComponent = mainComponent;
-    }
-}
diff --git a/core/src/main/java/ru/deadsoftware/cavedroid/game/GameComponent.java b/core/src/main/java/ru/deadsoftware/cavedroid/game/GameComponent.java
deleted file mode 100644 (file)
index a0b780f..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-package ru.deadsoftware.cavedroid.game;
-
-import dagger.Component;
-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.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;
-import ru.fredboy.cavedroid.game.world.di.GameWorldModule;
-
-@GameScope
-@Component(dependencies = {
-            MainComponent.class
-        },
-        modules = {GameModule.class,
-                UseItemActionsModule.class,
-                UpdateBlockActionsModule.class,
-                PlaceBlockActionsModule.class,
-                RenderModule.class,
-                KeyboardInputHandlersModule.class,
-                MouseInputHandlersModule.class,
-                UseBlockActionsModule.class,
-                GameWorldModule.class,
-                ControllerContainerModule.class,
-                ControllerDropModule.class
-        })
-public interface GameComponent {
-    GameProc getGameProc();
-
-    ItemsRepository getItemsRepository();
-
-    GameContextRepository getGameConfigurationRepository();
-
-    GameController getGameController();
-}
diff --git a/core/src/main/java/ru/deadsoftware/cavedroid/game/GameModule.java b/core/src/main/java/ru/deadsoftware/cavedroid/game/GameModule.java
deleted file mode 100644 (file)
index 2196a99..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-package ru.deadsoftware.cavedroid.game;
-
-import dagger.Module;
-import dagger.Provides;
-import ru.fredboy.cavedroid.common.di.GameScope;
-import ru.fredboy.cavedroid.domain.assets.repository.MobAssetsRepository;
-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;
-import ru.fredboy.cavedroid.domain.items.usecase.GetItemByKeyUseCase;
-import ru.fredboy.cavedroid.domain.save.model.GameMapSaveData;
-import ru.fredboy.cavedroid.domain.save.repository.SaveDataRepository;
-import ru.fredboy.cavedroid.entity.container.abstraction.ContainerFactory;
-import ru.fredboy.cavedroid.entity.container.abstraction.ContainerWorldAdapter;
-import ru.fredboy.cavedroid.entity.drop.abstraction.DropAdapter;
-import ru.fredboy.cavedroid.entity.drop.abstraction.DropWorldAdapter;
-import ru.fredboy.cavedroid.entity.mob.abstraction.MobWorldAdapter;
-import ru.fredboy.cavedroid.game.controller.container.ContainerController;
-import ru.fredboy.cavedroid.game.controller.drop.DropController;
-import ru.fredboy.cavedroid.game.controller.mob.MobController;
-import ru.fredboy.cavedroid.game.world.GameWorld;
-
-@Module
-public class GameModule {
-
-    private static boolean needLoad = false;
-
-    public static void setNeedLoad(final boolean needLoad) {
-        GameModule.needLoad = needLoad;
-    }
-
-    @Provides
-    @GameScope
-    public static DropController provideDropController(GameContextRepository gameContextRepository,
-                                                       SaveDataRepository saveDataRepository,
-                                                       ItemsRepository itemsRepository,
-                                                       DropWorldAdapter dropWorldAdapter) {
-
-        DropController controller = needLoad
-                ? saveDataRepository.loadDropController(gameContextRepository.getGameDirectory(), dropWorldAdapter)
-                : new DropController(itemsRepository, dropWorldAdapter);
-
-        return controller;
-    }
-
-    @Provides
-    @GameScope
-    public static ContainerController provideFurnaceController(GameContextRepository gameContextRepository,
-                                                               SaveDataRepository saveDataRepository,
-                                                               GetItemByKeyUseCase getItemByKeyUseCase,
-                                                               ContainerWorldAdapter containerWorldAdapter,
-                                                               ContainerFactory containerFactory,
-                                                               DropAdapter dropAdapter) {
-        ContainerController controller = needLoad
-                ? saveDataRepository.loadContainerController(gameContextRepository.getGameDirectory(), containerWorldAdapter, containerFactory, dropAdapter)
-                : new ContainerController(getItemByKeyUseCase, containerWorldAdapter, containerFactory, dropAdapter);
-
-        return controller;
-    }
-
-    @Provides
-    @GameScope
-    public static MobController provideMobsController(GameContextRepository gameContextRepository,
-                                                      SaveDataRepository saveDataRepository,
-                                                      MobAssetsRepository mobAssetsRepository,
-                                                      GetFallbackItemUseCase getFallbackItemUseCase,
-                                                      MobWorldAdapter mobWorldAdapter) {
-
-        return needLoad
-                ? saveDataRepository.loadMobController(gameContextRepository.getGameDirectory(), mobWorldAdapter)
-                : new MobController(mobAssetsRepository, getFallbackItemUseCase, mobWorldAdapter);
-    }
-
-    @Provides
-    @GameScope
-    public static GameWorld provideGameWorld(GameContextRepository gameContextRepository,
-                                             SaveDataRepository saveDataRepository,
-                                             ItemsRepository itemsRepository) {
-
-        final GameMapSaveData mapData = needLoad ? saveDataRepository.loadMap(gameContextRepository.getGameDirectory()) : null;
-
-        Block[][] fm = mapData != null ? mapData.retrieveForeMap() : null;
-        Block[][] bm = mapData != null ? mapData.retrieveBackMap() : null;
-
-        return new GameWorld(itemsRepository, fm, bm);
-    }
-
-}
diff --git a/core/src/main/java/ru/deadsoftware/cavedroid/game/GameScreen.java b/core/src/main/java/ru/deadsoftware/cavedroid/game/GameScreen.java
deleted file mode 100644 (file)
index 160c0b0..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-package ru.deadsoftware.cavedroid.game;
-
-import com.badlogic.gdx.Screen;
-import org.jetbrains.annotations.Nullable;
-import ru.deadsoftware.cavedroid.MainConfig;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-@Singleton
-public class GameScreen implements Screen {
-
-    private final MainConfig mMainConfig;
-
-    @Nullable
-    private GameProc mGameProc;
-
-    @Inject
-    public GameScreen(MainConfig mainConfig) {
-        mMainConfig = mainConfig;
-    }
-
-    public void newGame(int gameMode) {
-        if (mGameProc != null) {
-            mGameProc.dispose();
-        }
-
-        GameModule.setNeedLoad(false);
-
-        GameComponent gameComponent = DaggerGameComponent.builder()
-                .mainComponent(mMainConfig.getMainComponent()).build();
-
-        mGameProc = gameComponent.getGameProc();
-
-        mGameProc.setPlayerGameMode(gameMode);
-    }
-
-    public void loadGame() {
-        if (mGameProc != null) {
-            mGameProc.dispose();
-        }
-
-        GameModule.setNeedLoad(true);
-
-        GameComponent gameComponent = DaggerGameComponent.builder()
-                .mainComponent(mMainConfig.getMainComponent()).build();
-
-        mGameProc = gameComponent.getGameProc();
-    }
-
-    @Override
-    public void render(float delta) {
-        mGameProc.update(delta);
-    }
-
-    @Override
-    public void show() {
-//        Gdx.input.setInputProcessor(mGameInputProcessor);
-        mGameProc.show();
-    }
-
-    @Override
-    public void resize(int width, int height) {
-
-    }
-
-    @Override
-    public void pause() {
-
-    }
-
-    @Override
-    public void resume() {
-
-    }
-
-    @Override
-    public void hide() {
-
-    }
-
-    @Override
-    public void dispose() {
-        if (mGameProc != null) {
-            mGameProc.dispose();
-        }
-    }
-
-}
diff --git a/core/src/main/java/ru/deadsoftware/cavedroid/menu/MenuComponent.java b/core/src/main/java/ru/deadsoftware/cavedroid/menu/MenuComponent.java
deleted file mode 100644 (file)
index 9d7bec6..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-package ru.deadsoftware.cavedroid.menu;
-
-import dagger.Component;
-import ru.deadsoftware.cavedroid.MainComponent;
-import ru.deadsoftware.cavedroid.generated.module.MenuActionsModule;
-import ru.fredboy.cavedroid.common.di.MenuScope;
-import ru.fredboy.cavedroid.data.menu.di.DataMenuModule;
-import ru.fredboy.cavedroid.domain.menu.repository.MenuButtonRepository;
-import ru.fredboy.cavedroid.game.controller.container.di.ControllerContainerModule;
-import ru.fredboy.cavedroid.game.controller.drop.di.ControllerDropModule;
-import ru.fredboy.cavedroid.zygote.menu.input.MenuInputProcessor;
-import ru.fredboy.cavedroid.zygote.menu.renderer.MenuRenderer;
-import ru.deadsoftware.cavedroid.generated.module.MenuBooleanOptionsModule;
-
-@MenuScope
-@Component(dependencies = MainComponent.class, modules = {ControllerContainerModule.class,
-        ControllerDropModule.class, DataMenuModule.class, MenuBooleanOptionsModule.class, MenuActionsModule.class})
-public interface MenuComponent {
-
-    public MenuRenderer menuRenderer();
-
-    public MenuInputProcessor menuInputProcessor();
-
-    public MenuButtonRepository menuButtonsRepository();
-}
diff --git a/core/src/main/java/ru/deadsoftware/cavedroid/menu/MenuScreen.java b/core/src/main/java/ru/deadsoftware/cavedroid/menu/MenuScreen.java
deleted file mode 100644 (file)
index cdb9733..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-package ru.deadsoftware.cavedroid.menu;
-
-import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.Screen;
-import ru.deadsoftware.cavedroid.MainConfig;
-import ru.fredboy.cavedroid.domain.menu.repository.MenuButtonRepository;
-import ru.fredboy.cavedroid.zygote.menu.input.MenuInputProcessor;
-import ru.fredboy.cavedroid.zygote.menu.renderer.MenuRenderer;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-@Singleton
-public class MenuScreen implements Screen {
-
-    private final MenuRenderer mMenuRenderer;
-
-    private final MenuInputProcessor mMenuInputProcessor;
-
-    private final MenuButtonRepository mMenuButtonsRepository;
-
-    @Inject
-    public MenuScreen(MainConfig mainConfig) {
-        MenuComponent menuComponent = DaggerMenuComponent.builder()
-                .mainComponent(mainConfig.getMainComponent()).build();
-
-        mMenuRenderer = menuComponent.menuRenderer();
-        mMenuInputProcessor = menuComponent.menuInputProcessor();
-        mMenuButtonsRepository = menuComponent.menuButtonsRepository();
-    }
-
-    public void resetMenu() {
-        mMenuButtonsRepository.setCurrentMenu("main");
-    }
-
-    @Override
-    public void show() {
-        Gdx.input.setInputProcessor(mMenuInputProcessor);
-    }
-
-    @Override
-    public void render(float delta) {
-        mMenuRenderer.render(delta);
-    }
-
-    @Override
-    public void resize(int width, int height) {
-
-    }
-
-    @Override
-    public void pause() {
-
-    }
-
-    @Override
-    public void resume() {
-
-    }
-
-    @Override
-    public void hide() {
-
-    }
-
-    @Override
-    public void dispose() {
-
-    }
-}
diff --git a/core/src/main/kotlin/ru/deadsoftware/cavedroid/BaseGame.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/BaseGame.kt
deleted file mode 100644 (file)
index 5b5fc77..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-package ru.deadsoftware.cavedroid
-
-import com.badlogic.gdx.Game
-import ru.fredboy.cavedroid.common.api.GameController
-
-abstract class BaseGame : Game(), GameController
\ No newline at end of file
diff --git a/core/src/main/kotlin/ru/deadsoftware/cavedroid/CaveGame.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/CaveGame.kt
deleted file mode 100644 (file)
index 7c1fcba..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-package ru.deadsoftware.cavedroid
-
-import com.badlogic.gdx.Application
-import com.badlogic.gdx.Gdx
-import com.badlogic.gdx.graphics.OrthographicCamera
-import com.badlogic.gdx.math.Rectangle
-import ru.fredboy.cavedroid.common.api.PreferencesStore
-import ru.fredboy.cavedroid.common.utils.ratio
-import ru.fredboy.cavedroid.domain.configuration.model.CameraContext
-import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
-
-class CaveGame(
-    private val gameDataDirectoryPath: String,
-    private val isTouchScreen: Boolean,
-    private val isDebug: Boolean,
-    private val preferencesStore: PreferencesStore,
-) : BaseGame() {
-
-    private val mainComponent: MainComponent
-    private val mainConfig: MainConfig
-
-    private val mGameContextRepository: GameContextRepository
-
-    init {
-        mainComponent = DaggerMainComponent.builder()
-            .caveGame(this)
-            .preferencesStore(preferencesStore)
-            .build()
-
-        mainConfig = mainComponent.mainConfig
-        mGameContextRepository = mainComponent.gameContextRepository
-    }
-
-    private fun initMainConfig() {
-        val width = DEFAULT_VIEWPORT_WIDTH
-        val height = width / Gdx.graphics.ratio
-
-        mainConfig.mainComponent = mainComponent
-
-        mGameContextRepository.apply {
-            setGameDirectory(gameDataDirectoryPath)
-            setTouch(isTouchScreen)
-            setWidth(width)
-            setHeight(height)
-            setShowInfo(isDebug)
-
-            setCameraContext(
-                CameraContext(
-                    viewport = Rectangle(0f, 0f, width, height),
-                    camera = OrthographicCamera().apply {
-                        setToOrtho(true, width, height)
-                    }
-                )
-            )
-        }
-
-        Gdx.app.logLevel = if (isDebug) Application.LOG_DEBUG else Application.LOG_ERROR
-    }
-
-    fun newGame(gameMode: Int) {
-        setScreen(mainComponent.gameScreen.apply { newGame(gameMode) })
-    }
-
-    override fun newGameCreative() {
-        newGame(1)
-    }
-
-    override fun newGameSurvival() {
-        newGame(0)
-    }
-
-    override fun loadGame() {
-        setScreen(mainComponent.gameScreen.apply { loadGame() })
-    }
-
-    override fun quitGame() {
-        screen?.dispose()
-        setScreen(mainComponent.menuScreen.apply { resetMenu() })
-    }
-
-    override fun exitGame() {
-        Gdx.app.exit()
-    }
-
-    override fun create() {
-        Gdx.files.absolute(gameDataDirectoryPath).mkdirs()
-        initMainConfig()
-
-        mainComponent.initializeAssetsUseCase()
-        setScreen(mainComponent.menuScreen)
-    }
-
-    override fun dispose() {
-        screen?.dispose()
-        mainComponent.disposeAssetsUseCase()
-    }
-
-
-    companion object {
-        private const val TAG = "CaveGame"
-        private const val DEFAULT_VIEWPORT_WIDTH = 480f
-    }
-
-}
\ No newline at end of file
diff --git a/core/src/main/kotlin/ru/deadsoftware/cavedroid/GameModule.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/GameModule.kt
deleted file mode 100644 (file)
index 43e936e..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-package ru.deadsoftware.cavedroid
-
-import dagger.Binds
-import dagger.Module
-import ru.fredboy.cavedroid.common.api.GameController
-
-@Module
-abstract class GameModule {
-
-    @Binds
-    internal abstract fun bindGameController(impl: CaveGame): GameController
-
-}
\ No newline at end of file
diff --git a/core/src/main/kotlin/ru/deadsoftware/cavedroid/MainComponent.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/MainComponent.kt
deleted file mode 100644 (file)
index 5448118..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-package ru.deadsoftware.cavedroid
-
-import dagger.Component
-import ru.deadsoftware.cavedroid.game.GameScreen
-import ru.deadsoftware.cavedroid.menu.MenuScreen
-import ru.fredboy.cavedroid.common.api.PreferencesStore
-import ru.fredboy.cavedroid.common.api.GameController
-import ru.fredboy.cavedroid.data.assets.di.DataAssetsModule
-import ru.fredboy.cavedroid.data.configuration.di.DataConfigurationModule
-import ru.fredboy.cavedroid.data.items.di.DataItemsModule
-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.GameContextRepository
-import ru.fredboy.cavedroid.domain.items.repository.ItemsRepository
-import ru.fredboy.cavedroid.domain.save.repository.SaveDataRepository
-import javax.inject.Singleton
-
-@Singleton
-@Component(
-    dependencies = [CaveGame::class, PreferencesStore::class],
-    modules = [DataAssetsModule::class, DataItemsModule::class, DataSaveModule::class, DataConfigurationModule::class, GameModule::class]
-)
-interface MainComponent {
-
-    val gameScreen: GameScreen
-
-    val menuScreen: MenuScreen
-
-    val mainConfig: MainConfig
-
-    val initializeAssetsUseCase: InitializeAssetsUseCase
-
-    val disposeAssetsUseCase: DisposeAssetsUseCase
-
-    val blockAssetsRepository: BlockAssetsRepository
-
-    val blockDamageAssetsRepository: BlockDamageAssetsRepository
-
-    val fontAssetsRepository: FontAssetsRepository
-
-    val mobAssetsRepository: MobAssetsRepository
-
-    val itemAssetsRepository: ItemsAssetsRepository
-
-    val textureRegionsAssetsRepository: TextureRegionsAssetsRepository
-
-    val touchButtonsAssetsRepository: TouchButtonsAssetsRepository
-
-    val itemsRepository: ItemsRepository
-
-    val saveDataRepository: SaveDataRepository
-
-    val gameContextRepository: GameContextRepository
-
-    val gameController: GameController
-
-}
\ No newline at end of file
index ef041e36fa492fadd60396a97ab8b38e71e27bba..f3063158806cbf0492c579b85970c866991013e9 100644 (file)
@@ -9,6 +9,7 @@ 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.ApplicationContextRepository
 import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
 import ru.fredboy.cavedroid.game.controller.mob.MobController
 import ru.fredboy.cavedroid.game.window.GameWindowType
@@ -25,6 +26,7 @@ import kotlin.math.abs
 
 @GameScope
 class GameInputProcessor @Inject constructor(
+    private val applicationContextRepository: ApplicationContextRepository,
     private val gameContextRepository: GameContextRepository,
     private val mobController: MobController,
     private val getTouchButtonsUseCase: GetTouchButtonsUseCase,
@@ -38,10 +40,10 @@ class GameInputProcessor @Inject constructor(
 
     private val mouseLeftTouchButton = TouchButton(
         Rectangle(
-            /* x = */ gameContextRepository.getWidth() / 2,
+            /* x = */ applicationContextRepository.getWidth() / 2,
             /* y = */ 0f,
-            /* width = */ gameContextRepository.getWidth() / 2,
-            /* height = */ gameContextRepository.getHeight() / 2
+            /* width = */ applicationContextRepository.getWidth() / 2,
+            /* height = */ applicationContextRepository.getHeight() / 2
         ),
         Input.Buttons.LEFT,
         true
@@ -49,10 +51,10 @@ class GameInputProcessor @Inject constructor(
 
     private val mouseRightTouchButton = TouchButton(
         Rectangle(
-            /* x = */ gameContextRepository.getWidth() / 2,
-            /* y = */ gameContextRepository.getHeight() / 2,
-            /* width = */ gameContextRepository.getWidth() / 2,
-            /* height = */ gameContextRepository.getHeight() / 2
+            /* x = */ applicationContextRepository.getWidth() / 2,
+            /* y = */ applicationContextRepository.getHeight() / 2,
+            /* width = */ applicationContextRepository.getWidth() / 2,
+            /* height = */ applicationContextRepository.getHeight() / 2
         ),
         Input.Buttons.RIGHT,
         true
@@ -83,7 +85,7 @@ class GameInputProcessor @Inject constructor(
         touchDownX = touchX
         touchDownY = touchY
 
-        if (gameContextRepository.isTouch()) {
+        if (applicationContextRepository.isTouch()) {
             val touchedKey = getTouchedKey(touchX, touchY)
             return if (touchedKey.isMouse) {
                 onMouseActionEvent(
@@ -106,7 +108,7 @@ class GameInputProcessor @Inject constructor(
 
         val joy: Joystick? = gameContextRepository.getJoystick()
 
-        if (gameContextRepository.isTouch()) {
+        if (applicationContextRepository.isTouch()) {
             if (joy != null && joy.active && joy.pointer == pointer) {
                 return onMouseActionEvent(
                     mouseX = screenX,
index 0484af28896fee825c603ee25e04509618876b7a..4140e4e35b356106907174a95d0db1e7ac99c8e2 100644 (file)
@@ -1,6 +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.ApplicationContextRepository
 import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
 import ru.fredboy.cavedroid.entity.mob.model.Player
 import ru.fredboy.cavedroid.game.controller.mob.MobController
@@ -13,14 +14,14 @@ import javax.inject.Inject
 @GameScope
 @BindKeyboardInputHandler
 class FlyDownKeyboardInputHandler @Inject constructor(
-    private val gameContextRepository: GameContextRepository,
+    private val applicationContextRepository: ApplicationContextRepository,
     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 || !gameContextRepository.isTouch())
+                (mobController.player.controlMode == Player.ControlMode.WALK || !applicationContextRepository.isTouch())
     }
 
     override fun handle(action: KeyboardInputAction) {
index d01b8e205ab4e29814bc7e4f18a9a6e5fa5a58fa..267aa645a38afc9c908c7b5805e2b57dd734a94d 100644 (file)
@@ -1,6 +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.ApplicationContextRepository
 import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
 import ru.fredboy.cavedroid.entity.mob.model.Player
 import ru.fredboy.cavedroid.game.controller.mob.MobController
@@ -13,7 +14,7 @@ import javax.inject.Inject
 @GameScope
 @BindKeyboardInputHandler
 class FlyUpKeyboardInputHandler @Inject constructor(
-    private val gameContextRepository: GameContextRepository,
+    private val applicationContextRepository: ApplicationContextRepository,
     private val mobController: MobController,
 ) : IKeyboardInputHandler {
 
@@ -21,7 +22,7 @@ class FlyUpKeyboardInputHandler @Inject constructor(
         return action.actionKey is KeyboardInputActionKey.Up &&
                 !mobController.player.swim &&
                 mobController.player.isFlyMode &&
-                (mobController.player.controlMode == Player.ControlMode.WALK || !gameContextRepository.isTouch())
+                (mobController.player.controlMode == Player.ControlMode.WALK || !applicationContextRepository.isTouch())
     }
 
     override fun handle(action: KeyboardInputAction) {
index 7ae5326549fb851d9fe6146bb9bd5345792f897a..70937707d0992bc92ede5c288bd42cae9d56abf8 100644 (file)
@@ -1,6 +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.ApplicationContextRepository
 import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
 import ru.fredboy.cavedroid.entity.mob.model.Direction
 import ru.fredboy.cavedroid.entity.mob.model.Player
@@ -14,12 +15,12 @@ import javax.inject.Inject
 @GameScope
 @BindKeyboardInputHandler
 class GoLeftKeyboardInputHandler @Inject constructor(
-    private val gameContextRepository: GameContextRepository,
+    private val applicationContextRepository: ApplicationContextRepository,
     private val mobController: MobController,
 ) : IKeyboardInputHandler {
 
     override fun checkConditions(action: KeyboardInputAction): Boolean {
-        val isTouch = gameContextRepository.isTouch()
+        val isTouch = applicationContextRepository.isTouch()
         return action.actionKey is KeyboardInputActionKey.Left &&
                 (mobController.player.controlMode == Player.ControlMode.WALK || !isTouch) &&
                 (mobController.player.controlMode == Player.ControlMode.WALK || !isTouch)
index 861db288db2b9ce5b308b7b750d95ec729d0a967..dbb165d1de30469879afe2c7d5cd1a87d757a2ac 100644 (file)
@@ -1,6 +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.ApplicationContextRepository
 import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
 import ru.fredboy.cavedroid.entity.mob.model.Direction
 import ru.fredboy.cavedroid.entity.mob.model.Player
@@ -14,13 +15,13 @@ import javax.inject.Inject
 @GameScope
 @BindKeyboardInputHandler
 class GoRightKeyboardInputHandler @Inject constructor(
-    private val gameContextRepository: GameContextRepository,
+    private val applicationContextRepository: ApplicationContextRepository,
     private val mobController: MobController
 ) : IKeyboardInputHandler {
 
     override fun checkConditions(action: KeyboardInputAction): Boolean {
         return action.actionKey is KeyboardInputActionKey.Right &&
-                (mobController.player.controlMode == Player.ControlMode.WALK || !gameContextRepository.isTouch())
+                (mobController.player.controlMode == Player.ControlMode.WALK || !applicationContextRepository.isTouch())
     }
 
     override fun handle(action: KeyboardInputAction) {
index 7c644c4e453f28a9222602290c8aab6343952e7a..fbd729db5b717fef320ddb405f10b09fe4982a04 100644 (file)
@@ -1,6 +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.ApplicationContextRepository
 import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
 import ru.fredboy.cavedroid.entity.mob.model.Player
 import ru.fredboy.cavedroid.game.controller.mob.MobController
@@ -13,7 +14,7 @@ import javax.inject.Inject
 @GameScope
 @BindKeyboardInputHandler
 class JumpKeyboardInputHandler @Inject constructor(
-    private val gameContextRepository: GameContextRepository,
+    private val applicationContextRepository: ApplicationContextRepository,
     private val mobController: MobController,
 ) : IKeyboardInputHandler {
 
@@ -21,7 +22,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 || !gameContextRepository.isTouch())
+                (mobController.player.controlMode == Player.ControlMode.WALK || !applicationContextRepository.isTouch())
     }
 
     override fun handle(action: KeyboardInputAction) {
index a08e58243131042842dbfaf2ac6964f734e67815..2c74f55dafd8282a4235a188b579687c24e67a34 100644 (file)
@@ -1,6 +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.ApplicationContextRepository
 import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
 import ru.fredboy.cavedroid.entity.mob.model.Player
 import ru.fredboy.cavedroid.game.controller.mob.MobController
@@ -13,12 +14,12 @@ import javax.inject.Inject
 @GameScope
 @BindKeyboardInputHandler
 class MoveCursorControlsModeKeyboardInputHandler @Inject constructor(
-    private val gameContextRepository: GameContextRepository,
+    private val applicationContextRepository: ApplicationContextRepository,
     private val mobsController: MobController,
 ) : IKeyboardInputHandler {
 
     override fun checkConditions(action: KeyboardInputAction): Boolean {
-        return gameContextRepository.isTouch() &&
+        return applicationContextRepository.isTouch() &&
                 mobsController.player.controlMode == Player.ControlMode.CURSOR && action.isKeyDown &&
                 (action.actionKey is KeyboardInputActionKey.Left ||
                 action.actionKey is KeyboardInputActionKey.Right ||
index 2ef34642b5326b2745379467d5bb6f39cc7fd9db..25f598c1ae814e6db284f37e454359419d777182 100644 (file)
@@ -1,7 +1,8 @@
 package ru.fredboy.cavedroid.ux.controls.input.handler.keyboard
 
-import ru.fredboy.cavedroid.common.api.GameController
+import ru.fredboy.cavedroid.common.api.ApplicationController
 import ru.fredboy.cavedroid.common.di.GameScope
+import ru.fredboy.cavedroid.domain.configuration.repository.ApplicationContextRepository
 import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
 import ru.fredboy.cavedroid.domain.save.repository.SaveDataRepository
 import ru.fredboy.cavedroid.game.controller.container.ContainerController
@@ -19,8 +20,8 @@ import javax.inject.Inject
 @GameScope
 @BindKeyboardInputHandler
 class PauseGameKeyboardInputHandler @Inject constructor(
-    private val gameContextRepository: GameContextRepository,
-    private val gameController: GameController,
+    private val applicationContextRepository: ApplicationContextRepository,
+    private val gameController: ApplicationController,
     private val dropController: DropController,
     private val mobController: MobController,
     private val gameWorld: GameWorld,
@@ -40,7 +41,7 @@ class PauseGameKeyboardInputHandler @Inject constructor(
         }
 
         saveDataRepository.save(
-            gameDataFolder = gameContextRepository.getGameDirectory(),
+            gameDataFolder = applicationContextRepository.getGameDirectory(),
             dropController = dropController,
             mobController = mobController,
             containerController = containerController,
index 699de982b32db530361e61829cf009756ae0a624..85643096709644c2729c0e2cd525774be3870faa 100644 (file)
@@ -1,6 +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.ApplicationContextRepository
 import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
 import ru.fredboy.cavedroid.entity.mob.model.Player
 import ru.fredboy.cavedroid.game.controller.mob.MobController
@@ -13,14 +14,14 @@ import javax.inject.Inject
 @GameScope
 @BindKeyboardInputHandler
 class StopSwimKeyboardInputHandler @Inject constructor(
-    private val gameContextRepository: GameContextRepository,
+    private val applicationContextRepository: ApplicationContextRepository,
     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 || !gameContextRepository.isTouch())
+                (mobController.player.controlMode == Player.ControlMode.WALK || !applicationContextRepository.isTouch())
     }
 
     override fun handle(action: KeyboardInputAction) {
index e00ff62db871fa55c936d67259917eddd37ca098..5a5b67ac842abb4e4e51cfff1ebda58ade9cd07f 100644 (file)
@@ -1,6 +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.ApplicationContextRepository
 import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
 import ru.fredboy.cavedroid.entity.mob.model.Player
 import ru.fredboy.cavedroid.game.controller.mob.MobController
@@ -14,7 +15,7 @@ import javax.inject.Inject
 @GameScope
 @BindKeyboardInputHandler
 class SwimUpKeyboardInputHandler @Inject constructor(
-    private val gameContextRepository: GameContextRepository,
+    private val applicationContextRepository: ApplicationContextRepository,
     private val mobController: MobController,
     private val gameWorld: GameWorld,
 ) : IKeyboardInputHandler {
@@ -28,7 +29,7 @@ class SwimUpKeyboardInputHandler @Inject constructor(
                 !mobController.player.swim &&
                 !mobController.player.canJump &&
                 checkSwim() && !mobController.player.isFlyMode &&
-                (mobController.player.controlMode == Player.ControlMode.WALK || !gameContextRepository.isTouch())
+                (mobController.player.controlMode == Player.ControlMode.WALK || !applicationContextRepository.isTouch())
     }
 
     override fun handle(action: KeyboardInputAction) {
index cad0419c40d31a0c1a7108433f4d8b18d18e1ac8..e39c71feb1f6d74db41b96700dad9a1bdb255f9b 100644 (file)
@@ -1,6 +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.ApplicationContextRepository
 import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
 import ru.fredboy.cavedroid.entity.mob.model.Player
 import ru.fredboy.cavedroid.game.controller.mob.MobController
@@ -13,13 +14,13 @@ import javax.inject.Inject
 @GameScope
 @BindKeyboardInputHandler
 class ToggleControlsModeKeyboardInputHandler @Inject constructor(
-    private val gameContextRepository: GameContextRepository,
+    private val applicationContextRepository: ApplicationContextRepository,
     private val mobController: MobController,
 ) : IKeyboardInputHandler {
 
     override fun checkConditions(action: KeyboardInputAction): Boolean {
         return action.actionKey is KeyboardInputActionKey.SwitchControlsMode && !action.isKeyDown
-                && gameContextRepository.isTouch()
+                && applicationContextRepository.isTouch()
     }
 
     override fun handle(action: KeyboardInputAction) {
index 871055a023c0eedc576df4dae13143842e54cf56..3f69b77b02bb04d513f3005000ca2d3da378143d 100644 (file)
@@ -1,6 +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.ApplicationContextRepository
 import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
 import ru.fredboy.cavedroid.entity.mob.model.Player
 import ru.fredboy.cavedroid.game.controller.mob.MobController
@@ -13,7 +14,7 @@ import javax.inject.Inject
 @GameScope
 @BindKeyboardInputHandler
 class TurnOnFlyModeKeyboardInputHandler @Inject constructor(
-    private val gameContextRepository: GameContextRepository,
+    private val applicationContextRepository: ApplicationContextRepository,
     private val mobsController: MobController,
 ) : IKeyboardInputHandler {
 
@@ -21,7 +22,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 || !gameContextRepository.isTouch())
+                (mobsController.player.controlMode == Player.ControlMode.WALK || !applicationContextRepository.isTouch())
     }
 
     override fun handle(action: KeyboardInputAction) {
index b92550b869deffe4518f9d43dd15a0b7d2a4c51a..ef0ec2eb47ea14c22c97a1455ded758c6fdba39a 100644 (file)
@@ -3,6 +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.ApplicationContextRepository
 import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
 import ru.fredboy.cavedroid.domain.items.repository.ItemsRepository
 import ru.fredboy.cavedroid.game.window.GameWindowType
@@ -19,7 +20,7 @@ import kotlin.math.abs
 @GameScope
 @BindMouseInputHandler
 class CreativeInventoryScrollMouseInputHandler @Inject constructor(
-    private val gameContextRepository: GameContextRepository,
+    private val applicationContextRepository: ApplicationContextRepository,
     private val gameWindowsManager: GameWindowsManager,
     private val itemsRepository: ItemsRepository,
     private val textureRegions: GetTextureRegionByNameUseCase,
@@ -48,7 +49,7 @@ class CreativeInventoryScrollMouseInputHandler @Inject constructor(
     }
 
     private fun checkDragConditions(action: MouseInputAction): Boolean {
-        return gameContextRepository.isTouch() && action.actionKey is MouseInputActionKey.Dragged &&
+        return applicationContextRepository.isTouch() && action.actionKey is MouseInputActionKey.Dragged &&
                 abs(action.screenY - dragStartY) >= DRAG_SENSITIVITY
     }
 
index 903be03526ef674c9925348937c1ee58c8b84074..a8f5d1ec2b0a1bc1830eda01dfe626a26da75235 100644 (file)
@@ -5,6 +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.ApplicationContextRepository
 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
@@ -25,7 +26,7 @@ import javax.inject.Inject
 @GameScope
 @BindMouseInputHandler
 class CursorMouseInputHandler @Inject constructor(
-    private val gameContextRepository: GameContextRepository,
+    private val applicationContextRepository: ApplicationContextRepository,
     private val mobController: MobController,
     private val gameWorld: GameWorld,
     private val gameWindowsManager: GameWindowsManager,
@@ -129,13 +130,13 @@ class CursorMouseInputHandler @Inject constructor(
         val pastCursorY = player.cursorY
 
         when {
-            player.controlMode == Player.ControlMode.WALK && gameContextRepository.isTouch() -> handleWalkTouch()
-            !gameContextRepository.isTouch() -> handleMouse(action)
+            player.controlMode == Player.ControlMode.WALK && applicationContextRepository.isTouch() -> handleWalkTouch()
+            !applicationContextRepository.isTouch() -> handleMouse(action)
         }
 
         mobController.checkPlayerCursorBounds()
 
-        if (player.controlMode == Player.ControlMode.WALK && gameContextRepository.isTouch()) {
+        if (player.controlMode == Player.ControlMode.WALK && applicationContextRepository.isTouch()) {
             setPlayerDirectionToCursor()
         }
 
index 5d68933b10529b2ff27b950c8d74592112dc1361..b184d42aeb1dec500f6fc1c8c8ffe6a77e69a96e 100644 (file)
@@ -4,6 +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.ApplicationContextRepository
 import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
 import ru.fredboy.cavedroid.entity.mob.model.Direction
 import ru.fredboy.cavedroid.entity.mob.model.Player
@@ -21,6 +22,7 @@ import javax.inject.Inject
 @GameScope
 @BindMouseInputHandler
 class JoystickInputHandler @Inject constructor(
+    private val applicationContextRepository: ApplicationContextRepository,
     private val gameContextRepository: GameContextRepository,
     private val mobController: MobController,
     private val gameWindowsManager: GameWindowsManager,
@@ -55,11 +57,11 @@ class JoystickInputHandler @Inject constructor(
 
     override fun checkConditions(action: MouseInputAction): Boolean {
         return gameWindowsManager.currentWindowType == GameWindowType.NONE &&
-                gameContextRepository.isTouch() &&
+                applicationContextRepository.isTouch() &&
 //                mobsController.player.controlMode == Player.ControlMode.WALK &&
                 gameContextRepository.getJoystick() != null &&
                 (action.actionKey is MouseInputActionKey.Touch) &&
-                (action.actionKey.pointer == gameContextRepository.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,7 +70,7 @@ class JoystickInputHandler @Inject constructor(
 
     private fun handleTouchDown(action: MouseInputAction) {
         val key = action.actionKey as MouseInputActionKey.Screen
-        gameContextRepository.getJoystick()?.activate(action.screenX, action.screenY, key.pointer) ?: return
+        gameContextRepository.getJoystick().activate(action.screenX, action.screenY, key.pointer)
         active = true
     }
 
@@ -78,7 +80,7 @@ class JoystickInputHandler @Inject constructor(
     }
 
     private fun handleCursor() {
-        val joystick = gameContextRepository.getJoystick() ?: return
+        val joystick = gameContextRepository.getJoystick()
 
         if (TimeUtils.timeSinceMillis(cursorTimeoutMs) < 150L) {
             return
@@ -114,7 +116,7 @@ class JoystickInputHandler @Inject constructor(
             return
         }
 
-        val joystick = gameContextRepository.getJoystick() ?: return
+        val joystick = gameContextRepository.getJoystick()
         val joyVector = joystick.getVelocityVector()
 
         if (mobController.player.isFlyMode) {
index 20ece8d40ff0d319b021fb80eac651de6fbbed46..df3ef8d6c0b532cecc90be5cb414065e9dba84c5 100644 (file)
@@ -4,6 +4,7 @@ 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.ApplicationContextRepository
 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
@@ -11,7 +12,7 @@ import javax.inject.Inject
 
 @GameScope
 class MouseInputActionMapper @Inject constructor(
-    val gameContextRepository: GameContextRepository,
+    private val applicationContextRepository: ApplicationContextRepository,
 ) {
 
     fun map(
@@ -72,11 +73,11 @@ class MouseInputActionMapper @Inject constructor(
     }
 
     private fun getScreenX(mouseX: Float): Float {
-        return mouseX * (gameContextRepository.getWidth() / Gdx.graphics.width)
+        return mouseX * (applicationContextRepository.getWidth() / Gdx.graphics.width)
     }
 
     private fun getScreenY(mouseY: Float): Float {
-        return mouseY * (gameContextRepository.getHeight() / Gdx.graphics.height)
+        return mouseY * (applicationContextRepository.getHeight() / Gdx.graphics.height)
     }
 
 }
\ No newline at end of file
index 976e8ed298c66d64f535dd286b18a3479550ba8e..511f6d8da70c0e077f97b513e0ebb11bc2f24c2b 100644 (file)
@@ -8,6 +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.ApplicationContextRepository;
 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;
@@ -32,14 +33,14 @@ public class GamePhysics {
     private final Vector2 gravity = new Vector2(0, 444.44f);
 
     private final GameWorld mGameWorld;
-    private final GameContextRepository mGameContextRepository;
+    private final ApplicationContextRepository mGameContextRepository;
     private final MobController mMobController;
     private final DropController mDropController;
     private final GetItemByKeyUseCase mGetItemByKeyUseCase;
 
     @Inject
     public GamePhysics(GameWorld gameWorld,
-                       GameContextRepository gameContextRepository,
+                       ApplicationContextRepository gameContextRepository,
                        MobController mobController,
                        DropController dropController,
                        GetItemByKeyUseCase getItemByKeyUseCase) {
index 8d0f8667aaaf963f61c61dff65ab430d2b91caac..94bb385d110f638f46a9f9df9cb04f7327292805 100644 (file)
@@ -14,6 +14,7 @@ import ru.fredboy.cavedroid.common.utils.MeasureUnitsUtilsKt;
 import ru.fredboy.cavedroid.common.utils.RenderingUtilsKt;
 import ru.fredboy.cavedroid.domain.assets.usecase.GetFontUseCase;
 import ru.fredboy.cavedroid.domain.configuration.model.CameraContext;
+import ru.fredboy.cavedroid.domain.configuration.repository.ApplicationContextRepository;
 import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository;
 import ru.fredboy.cavedroid.entity.mob.model.Player;
 import ru.fredboy.cavedroid.game.controller.mob.MobController;
@@ -31,6 +32,7 @@ public class GameRenderer {
 
     private static final float CAMERA_SPEED = 72f;
     private static final float MAX_CAM_DISTANCE_FROM_PLAYER = 64f;
+    private final ApplicationContextRepository mApplicationContextRepository;
     private final GameContextRepository mGameContextRepository;
     private final MobController mMobsController;
     private final GameWorld mGameWorld;
@@ -44,7 +46,8 @@ public class GameRenderer {
     private final SpriteBatch spriter;
 
     @Inject
-    public GameRenderer(GameContextRepository gameContextRepository,
+    public GameRenderer(ApplicationContextRepository applicationContextRepository,
+                GameContextRepository gameContextRepository,
                  MobController mobsController,
                  GameWorld gameWorld,
                  Set<IGameRenderer> renderers,
@@ -62,6 +65,7 @@ public class GameRenderer {
             Gdx.app.error("GameRenderer", "Camera context was not set");
         }
 
+        mApplicationContextRepository = applicationContextRepository;
         mGameContextRepository = gameContextRepository;
         mMobsController = mobsController;
         mGameWorld = gameWorld;
@@ -99,10 +103,10 @@ public class GameRenderer {
     }
 
     private float getWidth() {
-        return mGameContextRepository.getWidth();
+        return mApplicationContextRepository.getWidth();
     }
     private float getHeight() {
-        return mGameContextRepository.getHeight();
+        return mApplicationContextRepository.getHeight();
     }
 
     private void setCamPos(float x, float y) {
@@ -133,7 +137,7 @@ public class GameRenderer {
 
         float camTargetX, camTargetY;
 
-        boolean followPlayer = player.getControlMode() == Player.ControlMode.WALK || !mGameContextRepository.isTouch();
+        boolean followPlayer = player.getControlMode() == Player.ControlMode.WALK || !mApplicationContextRepository.isTouch();
 
         if (followPlayer) {
             camTargetX = plTargetX + Math.min(player.getVelocity().x * 2, getWidth() / 2);
index 081caf27b8b030f6bb99c98e64f114cecda6f971..8c81624a3660f6b2d1e09b01e6ff7383c79445ea 100644 (file)
@@ -9,6 +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.ApplicationContextRepository
 import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
 import ru.fredboy.cavedroid.entity.mob.model.Player
 import ru.fredboy.cavedroid.game.controller.mob.MobController
@@ -20,6 +21,7 @@ import javax.inject.Inject
 @GameScope
 @BindRenderer
 class TouchControlsRenderer @Inject constructor(
+    private val applicationContextRepository: ApplicationContextRepository,
     private val gameContextRepository: GameContextRepository,
     private val mobController: MobController,
     private val gameWindowsManager: GameWindowsManager,
@@ -35,7 +37,7 @@ class TouchControlsRenderer @Inject constructor(
     private val joyStick = Sprite(textureRegions["joy_stick"])
 
     private fun drawJoystick(spriteBatch: SpriteBatch) {
-        val joystick = gameContextRepository.getJoystick()?.takeIf { it.active } ?: return
+        val joystick = gameContextRepository.getJoystick().takeIf { it.active } ?: return
 
         spriteBatch.drawSprite(
             sprite = joyBackground,
@@ -55,7 +57,7 @@ class TouchControlsRenderer @Inject constructor(
     }
 
     override fun draw(spriteBatch: SpriteBatch, shapeRenderer: ShapeRenderer, viewport: Rectangle, delta: Float) {
-        if (!gameContextRepository.isTouch() || gameWindowsManager.currentWindowType != GameWindowType.NONE) {
+        if (!applicationContextRepository.isTouch() || gameWindowsManager.currentWindowType != GameWindowType.NONE) {
             return
         }
 
index 66ccdf63c764eaf2fb638740a54aa565675e0d8c..8595fb507ce36ece9f99804ae9b2060b169ebf23 100644 (file)
@@ -12,6 +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.ApplicationContextRepository
 import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
 import ru.fredboy.cavedroid.entity.mob.model.Direction
 import ru.fredboy.cavedroid.game.controller.mob.MobController
@@ -23,7 +24,7 @@ import kotlin.math.atan
 
 @GameScope
 class SurvivalWindowRenderer @Inject constructor(
-    private val gameContextRepository: GameContextRepository,
+    private val applicationContextRepository: ApplicationContextRepository,
     private val mobController: MobController,
     private val gameWindowsManager: GameWindowsManager,
     private val textureRegions: GetTextureRegionByNameUseCase,
@@ -37,12 +38,12 @@ class SurvivalWindowRenderer @Inject constructor(
     private val survivalWindowTexture get() = requireNotNull(textureRegions[SURVIVAL_WINDOW_KEY])
 
     private fun setPortraitHeadRotation(portraitX: Float, portraitY: Float) {
-        if (gameContextRepository.isTouch()) {
+        if (applicationContextRepository.isTouch()) {
             return
         }
 
-        val mouseX = Gdx.input.x * (gameContextRepository.getWidth() / Gdx.graphics.width)
-        val mouseY = Gdx.input.y * (gameContextRepository.getHeight() / Gdx.graphics.height)
+        val mouseX = Gdx.input.x * (applicationContextRepository.getWidth() / Gdx.graphics.width)
+        val mouseY = Gdx.input.y * (applicationContextRepository.getHeight() / Gdx.graphics.height)
 
         val h = mouseX.toDouble() - portraitX.toDouble()
         val v = mouseY.toDouble() - portraitY.toDouble()
index 26490eeac83882a55ed718af2a3746ebe162788a..d315c7fa4b0333f2d509828ab060892943de9907 100644 (file)
@@ -12,6 +12,7 @@ dependencies {
     useDagger()
 
     useCommonModule()
+    useDataModules()
     useDomainModules()
     useEntityModules()
     useGameModules()
similarity index 94%
rename from core/src/main/java/ru/deadsoftware/cavedroid/game/GameProc.java
rename to core/zygote/src/main/java/ru/fredboy/cavedroid/zygote/game/GameProc.java
index db1d2f9ed2811377bdf52ce789d18f48c4121ced..10a729351f6860aa9f5c2e08d9c8caefe1c02c2f 100644 (file)
@@ -1,9 +1,9 @@
-package ru.deadsoftware.cavedroid.game;
+package ru.fredboy.cavedroid.zygote.game;
 
 import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.utils.Disposable;
 import com.badlogic.gdx.utils.Timer;
-import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository;
+import ru.fredboy.cavedroid.domain.configuration.repository.ApplicationContextRepository;
 import ru.fredboy.cavedroid.ux.controls.GameInputProcessor;
 import ru.fredboy.cavedroid.ux.physics.GamePhysics;
 import ru.fredboy.cavedroid.ux.physics.task.GameWorldBlocksLogicControllerTask;
@@ -32,7 +32,7 @@ public class GameProc implements Disposable {
     private final Timer mWorldLogicTimer = new Timer();
 
     @Inject
-    public GameProc(GameContextRepository gameContextRepository,
+    public GameProc(ApplicationContextRepository gameContextRepository,
                     GamePhysics gamePhysics,
                     GameRenderer gameRenderer,
                     MobController mobsController,
diff --git a/core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/CaveDroidApplication.kt b/core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/CaveDroidApplication.kt
new file mode 100644 (file)
index 0000000..0bbaa30
--- /dev/null
@@ -0,0 +1,87 @@
+package ru.fredboy.cavedroid.zygote
+
+import com.badlogic.gdx.Application
+import com.badlogic.gdx.Game
+import com.badlogic.gdx.Gdx
+import ru.fredboy.cavedroid.common.api.ApplicationController
+import ru.fredboy.cavedroid.common.api.PreferencesStore
+import ru.fredboy.cavedroid.common.utils.ratio
+import ru.fredboy.cavedroid.data.configuration.model.ApplicationContext
+import ru.fredboy.cavedroid.zygote.di.ApplicationComponent
+import ru.fredboy.cavedroid.zygote.di.DaggerApplicationComponent
+import ru.fredboy.cavedroid.zygote.game.GameScreen
+
+class CaveDroidApplication(
+    private val gameDataDirectoryPath: String,
+    private val isTouchScreen: Boolean,
+    private val isDebug: Boolean,
+    private val preferencesStore: PreferencesStore,
+) : Game(), ApplicationController {
+
+    lateinit var applicationComponent: ApplicationComponent
+        private set
+
+    private fun newGame(gameMode: Int) {
+        setScreen(applicationComponent.gameScreen.apply { newGame(gameMode) })
+    }
+
+    override fun create() {
+        val width = DEFAULT_VIEWPORT_WIDTH
+        val height = width / Gdx.graphics.ratio
+
+        applicationComponent = DaggerApplicationComponent.builder()
+            .applicationContext(
+                ApplicationContext(
+                    isDebug = isDebug,
+                    isTouch = isTouchScreen,
+                    gameDirectory = gameDataDirectoryPath,
+                    width = width,
+                    height = height,
+                )
+            )
+            .applicationController(this)
+            .preferencesStore(preferencesStore)
+            .build()
+
+        Gdx.app.logLevel = Application.LOG_DEBUG
+
+        Gdx.files.absolute(gameDataDirectoryPath).mkdirs()
+        applicationComponent.initializeAssets()
+        setScreen(applicationComponent.menuScreen)
+    }
+
+    override fun dispose() {
+        applicationComponent.menuScreen.dispose()
+        applicationComponent.gameScreen.dispose()
+        applicationComponent.disposeAssets()
+    }
+
+    override fun quitGame() {
+        (screen as? GameScreen)?.let { gameScreen ->
+            screen.dispose()
+            setScreen(applicationComponent.menuScreen)
+        } ?: Gdx.app.error(TAG, "quitGame called when active screen is not Game")
+    }
+
+    override fun newGameCreative() {
+        newGame(1)
+    }
+
+    override fun newGameSurvival() {
+        newGame(0)
+    }
+
+    override fun loadGame() {
+        setScreen(applicationComponent.gameScreen.apply { loadGame() })
+    }
+
+    override fun exitGame() {
+        setScreen(null)
+        Gdx.app.exit()
+    }
+
+    companion object {
+        private const val TAG = "CaveDroidApplication"
+        private const val DEFAULT_VIEWPORT_WIDTH = 480f
+    }
+}
\ No newline at end of file
diff --git a/core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/di/ApplicationComponent.kt b/core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/di/ApplicationComponent.kt
new file mode 100644 (file)
index 0000000..134d39a
--- /dev/null
@@ -0,0 +1,84 @@
+package ru.fredboy.cavedroid.zygote.di
+
+import dagger.BindsInstance
+import dagger.Component
+import ru.fredboy.cavedroid.common.api.ApplicationController
+import ru.fredboy.cavedroid.common.api.PreferencesStore
+import ru.fredboy.cavedroid.data.assets.di.DataAssetsModule
+import ru.fredboy.cavedroid.data.configuration.di.ApplicationContextModule
+import ru.fredboy.cavedroid.data.configuration.model.ApplicationContext
+import ru.fredboy.cavedroid.data.items.di.DataItemsModule
+import ru.fredboy.cavedroid.data.save.di.DataSaveModule
+import ru.fredboy.cavedroid.domain.assets.repository.BlockAssetsRepository
+import ru.fredboy.cavedroid.domain.assets.repository.BlockDamageAssetsRepository
+import ru.fredboy.cavedroid.domain.assets.repository.FontAssetsRepository
+import ru.fredboy.cavedroid.domain.assets.repository.ItemsAssetsRepository
+import ru.fredboy.cavedroid.domain.assets.repository.MobAssetsRepository
+import ru.fredboy.cavedroid.domain.assets.repository.TextureRegionsAssetsRepository
+import ru.fredboy.cavedroid.domain.assets.repository.TouchButtonsAssetsRepository
+import ru.fredboy.cavedroid.domain.assets.usecase.DisposeAssetsUseCase
+import ru.fredboy.cavedroid.domain.assets.usecase.InitializeAssetsUseCase
+import ru.fredboy.cavedroid.domain.configuration.repository.ApplicationContextRepository
+import ru.fredboy.cavedroid.domain.items.repository.ItemsRepository
+import ru.fredboy.cavedroid.domain.save.repository.SaveDataRepository
+import ru.fredboy.cavedroid.zygote.game.GameScreen
+import ru.fredboy.cavedroid.zygote.menu.MenuScreen
+import javax.inject.Singleton
+
+@Singleton
+@Component(
+    modules = [
+        DataAssetsModule::class,
+        DataItemsModule::class,
+        DataSaveModule::class,
+        ApplicationContextModule::class,
+    ]
+)
+interface ApplicationComponent {
+
+    val initializeAssets: InitializeAssetsUseCase
+
+    val disposeAssets: DisposeAssetsUseCase
+
+    val gameScreen: GameScreen
+
+    val menuScreen: MenuScreen
+
+    val applicationContextRepository: ApplicationContextRepository
+
+    val blockAssetsRepository: BlockAssetsRepository
+
+    val blockDamageAssetsRepository: BlockDamageAssetsRepository
+
+    val fontAssetsRepository: FontAssetsRepository
+
+    val mobAssetsRepository: MobAssetsRepository
+
+    val itemAssetsRepository: ItemsAssetsRepository
+
+    val textureRegionsAssetsRepository: TextureRegionsAssetsRepository
+
+    val touchButtonsAssetsRepository: TouchButtonsAssetsRepository
+
+    val itemsRepository: ItemsRepository
+
+    val saveDataRepository: SaveDataRepository
+
+    val applicationController: ApplicationController
+
+    @Component.Builder
+    interface Builder {
+
+        @BindsInstance
+        fun applicationContext(context: ApplicationContext): Builder
+
+        @BindsInstance
+        fun applicationController(impl: ApplicationController): Builder
+
+        @BindsInstance
+        fun preferencesStore(impl: PreferencesStore): Builder
+
+        fun build(): ApplicationComponent
+        
+    }
+}
\ No newline at end of file
diff --git a/core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/game/GameScreen.kt b/core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/game/GameScreen.kt
new file mode 100644 (file)
index 0000000..4c02ceb
--- /dev/null
@@ -0,0 +1,110 @@
+package ru.fredboy.cavedroid.zygote.game
+
+import com.badlogic.gdx.Gdx
+import com.badlogic.gdx.Screen
+import com.badlogic.gdx.graphics.OrthographicCamera
+import com.badlogic.gdx.math.Rectangle
+import ru.fredboy.cavedroid.common.model.Joystick
+import ru.fredboy.cavedroid.data.configuration.model.GameContext
+import ru.fredboy.cavedroid.domain.configuration.model.CameraContext
+import ru.fredboy.cavedroid.domain.configuration.repository.ApplicationContextRepository
+import ru.fredboy.cavedroid.entity.mob.model.Player
+import ru.fredboy.cavedroid.zygote.CaveDroidApplication
+import ru.fredboy.cavedroid.zygote.game.di.DaggerGameComponent
+import ru.fredboy.cavedroid.zygote.game.di.GameComponent
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class GameScreen @Inject constructor(
+    private val applicationContextRepository: ApplicationContextRepository,
+) : Screen {
+
+    private var gameProc: GameProc? = null
+
+    private fun getGameContext(isLoadGame: Boolean): GameContext {
+        return GameContext(
+            isLoadGame = isLoadGame,
+            showInfo = false,
+            showMap = false,
+            isFullscreen = false,
+            useDynamicCamera = false,
+            joystick = Joystick(Player.SPEED),
+            cameraContext = CameraContext(
+                viewport = Rectangle(
+                    /* x = */ 0f,
+                    /* y = */ 0f,
+                    /* width = */ applicationContextRepository.getWidth(),
+                    /* height = */ applicationContextRepository.getHeight(),
+                ),
+                camera = OrthographicCamera().apply {
+                    setToOrtho(
+                        /* yDown = */ true,
+                        /* viewportWidth = */ applicationContextRepository.getWidth(),
+                        /* viewportHeight = */ applicationContextRepository.getHeight(),
+                    )
+                }
+            )
+        )
+    }
+
+    private fun getGameComponent(isLoadGame: Boolean): GameComponent {
+        val gameContext = getGameContext(isLoadGame)
+
+        return DaggerGameComponent.builder()
+            .applicationComponent((Gdx.app.applicationListener as CaveDroidApplication).applicationComponent)
+            .gameContext(gameContext)
+            .build()
+    }
+
+    private fun resetGameProc() {
+        gameProc?.dispose()
+        gameProc = null
+    }
+
+    fun newGame(gameMode: Int) {
+        resetGameProc()
+        gameProc = getGameComponent(false).gameProc.apply {
+            setPlayerGameMode(gameMode)
+        }
+    }
+
+    fun loadGame() {
+        resetGameProc()
+        gameProc = getGameComponent(true).gameProc
+    }
+
+    override fun show() {
+        val proc = requireNotNull(gameProc) {
+            "GameScreen#show: gameProc was not set before show"
+        }
+        proc.show()
+    }
+
+    override fun render(delta: Float) {
+        val proc = requireNotNull(gameProc) {
+            "GameScreen#render: gameProc was not set before render"
+        }
+        proc.update(delta)
+    }
+
+    override fun resize(width: Int, height: Int) {
+
+    }
+
+    override fun pause() {
+
+    }
+
+    override fun resume() {
+
+    }
+
+    override fun hide() {
+
+    }
+
+    override fun dispose() {
+        resetGameProc()
+    }
+}
\ No newline at end of file
diff --git a/core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/game/di/GameComponent.kt b/core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/game/di/GameComponent.kt
new file mode 100644 (file)
index 0000000..4dd9f87
--- /dev/null
@@ -0,0 +1,47 @@
+package ru.fredboy.cavedroid.zygote.game.di
+
+import dagger.BindsInstance
+import dagger.Component
+import ru.deadsoftware.cavedroid.generated.module.*
+import ru.fredboy.cavedroid.common.di.GameScope
+import ru.fredboy.cavedroid.data.configuration.di.GameContextModule
+import ru.fredboy.cavedroid.data.configuration.model.GameContext
+import ru.fredboy.cavedroid.game.controller.container.di.ControllerContainerModule
+import ru.fredboy.cavedroid.game.controller.drop.di.ControllerDropModule
+import ru.fredboy.cavedroid.game.world.di.GameWorldModule
+import ru.fredboy.cavedroid.zygote.di.ApplicationComponent
+import ru.fredboy.cavedroid.zygote.game.GameProc
+
+@GameScope
+@Component(
+    dependencies = [ ApplicationComponent::class ],
+    modules = [
+        GameModule::class,
+        UseItemActionsModule::class,
+        UpdateBlockActionsModule::class,
+        PlaceBlockActionsModule::class,
+        RenderModule::class,
+        KeyboardInputHandlersModule::class,
+        MouseInputHandlersModule::class,
+        UseBlockActionsModule::class,
+        GameWorldModule::class,
+        ControllerContainerModule::class,
+        ControllerDropModule::class,
+        GameContextModule::class,
+    ]
+)
+interface GameComponent {
+
+    val gameProc: GameProc
+
+    @Component.Builder
+    interface Builder {
+
+        fun applicationComponent(component: ApplicationComponent): Builder
+
+        @BindsInstance
+        fun gameContext(context: GameContext): Builder
+
+        fun build(): GameComponent
+    }
+}
\ No newline at end of file
diff --git a/core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/game/di/GameModule.kt b/core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/game/di/GameModule.kt
new file mode 100644 (file)
index 0000000..7744085
--- /dev/null
@@ -0,0 +1,122 @@
+package ru.fredboy.cavedroid.zygote.game.di
+
+import dagger.Module
+import dagger.Provides
+import ru.fredboy.cavedroid.common.di.GameScope
+import ru.fredboy.cavedroid.domain.assets.repository.MobAssetsRepository
+import ru.fredboy.cavedroid.domain.configuration.repository.ApplicationContextRepository
+import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
+import ru.fredboy.cavedroid.domain.items.repository.ItemsRepository
+import ru.fredboy.cavedroid.domain.items.usecase.GetFallbackItemUseCase
+import ru.fredboy.cavedroid.domain.items.usecase.GetItemByKeyUseCase
+import ru.fredboy.cavedroid.domain.save.repository.SaveDataRepository
+import ru.fredboy.cavedroid.entity.container.abstraction.ContainerFactory
+import ru.fredboy.cavedroid.entity.container.abstraction.ContainerWorldAdapter
+import ru.fredboy.cavedroid.entity.drop.abstraction.DropAdapter
+import ru.fredboy.cavedroid.entity.drop.abstraction.DropWorldAdapter
+import ru.fredboy.cavedroid.entity.mob.abstraction.MobWorldAdapter
+import ru.fredboy.cavedroid.game.controller.container.ContainerController
+import ru.fredboy.cavedroid.game.controller.drop.DropController
+import ru.fredboy.cavedroid.game.controller.mob.MobController
+import ru.fredboy.cavedroid.game.world.GameWorld
+
+@Module
+object GameModule {
+
+    @Provides
+    @GameScope
+    fun provideDropController(
+        applicationContextRepository: ApplicationContextRepository,
+        gameContextRepository: GameContextRepository,
+        saveDataRepository: SaveDataRepository,
+        itemsRepository: ItemsRepository,
+        dropWorldAdapter: DropWorldAdapter,
+    ): DropController {
+        return if (gameContextRepository.isLoadGame()) {
+            saveDataRepository.loadDropController(
+                gameDataFolder = applicationContextRepository.getGameDirectory(),
+                dropWorldAdapter = dropWorldAdapter,
+            )
+        } else {
+            DropController(
+                itemsRepository = itemsRepository,
+                dropWorldAdapter = dropWorldAdapter,
+            )
+        }
+    }
+
+    @Provides
+    @GameScope
+    fun provideContainerController(
+        applicationContextRepository: ApplicationContextRepository,
+        gameContextRepository: GameContextRepository,
+        saveDataRepository: SaveDataRepository,
+        getItemByKeyUseCase: GetItemByKeyUseCase,
+        containerWorldAdapter: ContainerWorldAdapter,
+        containerFactory: ContainerFactory,
+        dropAdapter: DropAdapter,
+    ): ContainerController {
+        return if (gameContextRepository.isLoadGame()) {
+            saveDataRepository.loadContainerController(
+                gameDataFolder = applicationContextRepository.getGameDirectory(),
+                containerWorldAdapter = containerWorldAdapter,
+                containerFactory = containerFactory,
+                dropAdapter = dropAdapter,
+            )
+        } else {
+            ContainerController(
+                getItemByKeyUseCase = getItemByKeyUseCase,
+                containerWorldAdapter = containerWorldAdapter,
+                containerFactory = containerFactory,
+                dropAdapter = dropAdapter,
+            )
+        }
+    }
+
+    @Provides
+    @GameScope
+    fun provideMobController(
+        applicationContextRepository: ApplicationContextRepository,
+        gameContextRepository: GameContextRepository,
+        saveDataRepository: SaveDataRepository,
+        mobAssetsRepository: MobAssetsRepository,
+        getFallbackItemUseCase: GetFallbackItemUseCase,
+        mobWorldAdapter: MobWorldAdapter,
+    ): MobController {
+        return if (gameContextRepository.isLoadGame()) {
+            saveDataRepository.loadMobController(
+                gameDataFolder = applicationContextRepository.getGameDirectory(),
+                mobWorldAdapter = mobWorldAdapter,
+            )
+        } else {
+            MobController(
+                mobAssetsRepository = mobAssetsRepository,
+                getFallbackItemUseCase = getFallbackItemUseCase,
+                mobWorldAdapter = mobWorldAdapter,
+            )
+        }
+    }
+
+    @Provides
+    @GameScope
+    fun provideGameWorld(
+        applicationContextRepository: ApplicationContextRepository,
+        gameContextRepository: GameContextRepository,
+        saveDataRepository: SaveDataRepository,
+        itemsRepository: ItemsRepository,
+    ): GameWorld {
+        val mapData = if (gameContextRepository.isLoadGame()) {
+            saveDataRepository.loadMap(
+                gameDataFolder = applicationContextRepository.getGameDirectory(),
+            )
+        } else {
+            null
+        }
+
+        return GameWorld(
+            itemsRepository = itemsRepository,
+            initialForeMap = mapData?.retrieveForeMap(),
+            initialBackMap = mapData?.retrieveBackMap(),
+        )
+    }
+}
\ No newline at end of file
diff --git a/core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/menu/MenuScreen.kt b/core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/menu/MenuScreen.kt
new file mode 100644 (file)
index 0000000..6bc03e5
--- /dev/null
@@ -0,0 +1,61 @@
+package ru.fredboy.cavedroid.zygote.menu
+
+import com.badlogic.gdx.Gdx
+import com.badlogic.gdx.Screen
+import ru.fredboy.cavedroid.domain.menu.repository.MenuButtonRepository
+import ru.fredboy.cavedroid.zygote.CaveDroidApplication
+import ru.fredboy.cavedroid.zygote.menu.di.DaggerMenuComponent
+import ru.fredboy.cavedroid.zygote.menu.di.MenuComponent
+import ru.fredboy.cavedroid.zygote.menu.input.MenuInputProcessor
+import ru.fredboy.cavedroid.zygote.menu.renderer.MenuRenderer
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class MenuScreen @Inject constructor() : Screen {
+
+    private val menuRenderer: MenuRenderer
+
+    private val menuInputProcessor: MenuInputProcessor
+
+    private val menuButtonRepository: MenuButtonRepository
+
+    init {
+        val menuComponent: MenuComponent = DaggerMenuComponent.builder()
+            .applicationComponent((Gdx.app.applicationListener as CaveDroidApplication).applicationComponent)
+            .build()
+
+        menuRenderer = menuComponent.menuRenderer
+        menuInputProcessor = menuComponent.menuInputProcessor
+        menuButtonRepository = menuComponent.menuButtonRepository
+    }
+
+    fun resetMenu() {
+        menuButtonRepository.setCurrentMenu("main")
+    }
+
+    override fun show() {
+        Gdx.input.inputProcessor = menuInputProcessor
+    }
+
+    override fun render(delta: Float) {
+        menuRenderer.render(delta)
+    }
+
+    override fun resize(width: Int, height: Int) {
+    }
+
+    override fun pause() {
+    }
+
+    override fun resume() {
+    }
+
+    override fun hide() {
+    }
+
+    override fun dispose() {
+        menuRenderer.dispose()
+        menuButtonRepository.dispose()
+    }
+}
\ No newline at end of file
index c84556cdf41fe7f9e193a75dfea5c0f3d9a3d37a..6a5bb9d461c0be8027617db23a228fde89d223d7 100644 (file)
@@ -1,6 +1,6 @@
 package ru.fredboy.cavedroid.zygote.menu.action
 
-import ru.fredboy.cavedroid.common.api.GameController
+import ru.fredboy.cavedroid.common.api.ApplicationController
 import ru.fredboy.cavedroid.common.di.MenuScope
 import ru.fredboy.cavedroid.zygote.menu.action.annotation.BindsMenuAction
 import javax.inject.Inject
@@ -8,7 +8,7 @@ import javax.inject.Inject
 @MenuScope
 @BindsMenuAction(stringKey = ExitGameAction.KEY)
 class ExitGameAction @Inject constructor(
-    private val gameController: GameController,
+    private val gameController: ApplicationController,
 ) : IMenuAction {
 
     override fun perform() {
index 52d341160e2f746ca11d8068ed1637f4838340af..927771464b45743421d9cab2333a7a410982ba1e 100644 (file)
@@ -1,8 +1,8 @@
 package ru.fredboy.cavedroid.zygote.menu.action
 
-import ru.fredboy.cavedroid.common.api.GameController
+import ru.fredboy.cavedroid.common.api.ApplicationController
 import ru.fredboy.cavedroid.common.di.MenuScope
-import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
+import ru.fredboy.cavedroid.domain.configuration.repository.ApplicationContextRepository
 import ru.fredboy.cavedroid.domain.save.repository.SaveDataRepository
 import ru.fredboy.cavedroid.zygote.menu.action.annotation.BindsMenuAction
 import javax.inject.Inject
@@ -10,9 +10,9 @@ import javax.inject.Inject
 @MenuScope
 @BindsMenuAction(stringKey = LoadGameAction.KEY)
 class LoadGameAction @Inject constructor(
-    private val gameController: GameController,
+    private val applicationContextRepository: ApplicationContextRepository,
+    private val gameController: ApplicationController,
     private val saveDataRepository: SaveDataRepository,
-    private val gameContextRepository: GameContextRepository,
 ) : IMenuAction {
 
     override fun perform() {
@@ -20,7 +20,7 @@ class LoadGameAction @Inject constructor(
     }
 
     override fun canPerform(): Boolean {
-        return saveDataRepository.exists(gameContextRepository.getGameDirectory())
+        return saveDataRepository.exists(applicationContextRepository.getGameDirectory())
     }
 
     companion object {
index 5e309b4c57db7e36af3c21366e9273e10dad39d7..9cbbfc99e1a3b395b4d6f8a768cd0217e4e945a3 100644 (file)
@@ -1,6 +1,6 @@
 package ru.fredboy.cavedroid.zygote.menu.action
 
-import ru.fredboy.cavedroid.common.api.GameController
+import ru.fredboy.cavedroid.common.api.ApplicationController
 import ru.fredboy.cavedroid.common.di.MenuScope
 import ru.fredboy.cavedroid.zygote.menu.action.annotation.BindsMenuAction
 import javax.inject.Inject
@@ -8,7 +8,7 @@ import javax.inject.Inject
 @MenuScope
 @BindsMenuAction(stringKey = NewGameCreativeAction.KEY)
 class NewGameCreativeAction @Inject constructor(
-    private val gameController: GameController,
+    private val gameController: ApplicationController,
 ) : IMenuAction {
 
     override fun perform() {
index 13890bd08ec8bcc54599d3c76c601589e3b5c3e3..15fdd905eb4a0d46c3f9c8af64651a4f4ad64b2d 100644 (file)
@@ -1,6 +1,6 @@
 package ru.fredboy.cavedroid.zygote.menu.action
 
-import ru.fredboy.cavedroid.common.api.GameController
+import ru.fredboy.cavedroid.common.api.ApplicationController
 import ru.fredboy.cavedroid.common.di.MenuScope
 import ru.fredboy.cavedroid.zygote.menu.action.annotation.BindsMenuAction
 import javax.inject.Inject
@@ -8,7 +8,7 @@ import javax.inject.Inject
 @MenuScope
 @BindsMenuAction(stringKey = NewGameSurvivalAction.KEY)
 class NewGameSurvivalAction @Inject constructor(
-    private val gameController: GameController,
+    private val gameController: ApplicationController,
 ) : IMenuAction {
 
     override fun perform() {
diff --git a/core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/menu/di/MenuComponent.kt b/core/zygote/src/main/kotlin/ru/fredboy/cavedroid/zygote/menu/di/MenuComponent.kt
new file mode 100644 (file)
index 0000000..81c87eb
--- /dev/null
@@ -0,0 +1,37 @@
+package ru.fredboy.cavedroid.zygote.menu.di
+
+import dagger.Component
+import ru.deadsoftware.cavedroid.generated.module.MenuActionsModule
+import ru.deadsoftware.cavedroid.generated.module.MenuBooleanOptionsModule
+import ru.fredboy.cavedroid.common.di.MenuScope
+import ru.fredboy.cavedroid.data.menu.di.DataMenuModule
+import ru.fredboy.cavedroid.domain.menu.repository.MenuButtonRepository
+import ru.fredboy.cavedroid.zygote.di.ApplicationComponent
+import ru.fredboy.cavedroid.zygote.menu.input.MenuInputProcessor
+import ru.fredboy.cavedroid.zygote.menu.renderer.MenuRenderer
+
+@MenuScope
+@Component(
+    dependencies = [ ApplicationComponent::class ],
+    modules = [
+        DataMenuModule::class,
+        MenuBooleanOptionsModule::class,
+        MenuActionsModule::class,
+    ]
+)
+interface MenuComponent {
+
+    val menuRenderer: MenuRenderer
+
+    val menuInputProcessor: MenuInputProcessor
+
+    val menuButtonRepository: MenuButtonRepository
+
+    @Component.Builder
+    interface Builder {
+
+        fun applicationComponent(impl: ApplicationComponent): Builder
+
+        fun build(): MenuComponent
+    }
+}
index b78bc21d7e176157502563313cc612b1c57296e3..2c80a40daa082db6524552c8e36c68972b4f18c1 100644 (file)
@@ -4,7 +4,7 @@ import com.badlogic.gdx.Gdx
 import com.badlogic.gdx.InputProcessor
 import com.badlogic.gdx.math.Rectangle
 import ru.fredboy.cavedroid.common.di.MenuScope
-import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
+import ru.fredboy.cavedroid.domain.configuration.repository.ApplicationContextRepository
 import ru.fredboy.cavedroid.domain.menu.model.MenuButton
 import ru.fredboy.cavedroid.domain.menu.repository.MenuButtonRepository
 import ru.fredboy.cavedroid.zygote.menu.action.IMenuAction
@@ -13,7 +13,7 @@ import javax.inject.Inject
 
 @MenuScope
 class MenuInputProcessor @Inject constructor(
-    private val gameContextRepository: GameContextRepository,
+    private val applicationContextRepository: ApplicationContextRepository,
     private val menuButtonRepository: MenuButtonRepository,
     private val menuButtonActions: Map<String, @JvmSuppressWildcards IMenuAction>,
     private val menuButtonBooleanOption: Map<String, @JvmSuppressWildcards IMenuBooleanOption>,
@@ -25,9 +25,8 @@ class MenuInputProcessor @Inject constructor(
         pointer: Int,
         button: Int
     ): Boolean {
-        val cameraContext = gameContextRepository.getCameraContext() ?: return false
-
-        val (touchX, touchY) = cameraContext.getViewportCoordinates(screenX, screenY)
+        val touchX = applicationContextRepository.getWidth() / Gdx.graphics.width * screenX.toFloat()
+        val touchY = applicationContextRepository.getHeight() / Gdx.graphics.height * screenY.toFloat()
 
         menuButtonRepository.getCurrentMenuButtons()?.values?.forEachIndexed { index, button ->
             if (!button.isEnabled) {
@@ -36,8 +35,8 @@ class MenuInputProcessor @Inject constructor(
 
             // TODO: Fix magic numbers
             val rect = Rectangle(
-                /* x = */ gameContextRepository.getWidth() / 2 - 100,
-                /* y = */ gameContextRepository.getHeight() / 4 + index * 30,
+                /* x = */ applicationContextRepository.getWidth() / 2 - 100,
+                /* y = */ applicationContextRepository.getHeight() / 4 + index * 30,
                 /* width = */ 200f,
                 /* height = */ 20f
             )
index 2a137f223b4eb957782c95f958665a0b0d68a009..6de8ace5abe99f66fad60f9226a6188aba1e527c 100644 (file)
@@ -1,22 +1,22 @@
 package ru.fredboy.cavedroid.zygote.menu.option.bool
 
 import ru.fredboy.cavedroid.common.di.MenuScope
-import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
 import ru.fredboy.cavedroid.zygote.menu.option.annotation.BindsMenuBooleanOption
 import javax.inject.Inject
 
 @MenuScope
 @BindsMenuBooleanOption(DynamicCameraMenuBooleanOption.KEY)
 class DynamicCameraMenuBooleanOption @Inject constructor(
-    private val gameContextRepository: GameContextRepository,
+//    private val gameContextRepository: GameContextRepository,
 ) : IMenuBooleanOption {
 
     override fun getOption(): Boolean {
-        return gameContextRepository.useDynamicCamera()
+        return false
+//        return gameContextRepository.useDynamicCamera()
     }
 
     override fun toggleOption() {
-        gameContextRepository.setUseDynamicCamera(!getOption())
+//        gameContextRepository.setUseDynamicCamera(!getOption())
     }
 
     companion object {
index 3036ee0c127b08ee47dd22f81fc37f77b05a959f..1e73e1df8f13eeaf6c28211843625b48d32884ea 100644 (file)
@@ -1,22 +1,22 @@
 package ru.fredboy.cavedroid.zygote.menu.option.bool
 
 import ru.fredboy.cavedroid.common.di.MenuScope
-import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
 import ru.fredboy.cavedroid.zygote.menu.option.annotation.BindsMenuBooleanOption
 import javax.inject.Inject
 
 @MenuScope
 @BindsMenuBooleanOption(FullscreenMenuBooleanOption.KEY)
 class FullscreenMenuBooleanOption @Inject constructor(
-    private val gameContextRepository: GameContextRepository,
+//    private val gameContextRepository: GameContextRepository,
 ) : IMenuBooleanOption {
 
     override fun getOption(): Boolean {
-        return gameContextRepository.isFullscreen()
+        return false
+//        return gameContextRepository.isFullscreen()
     }
 
     override fun toggleOption() {
-        gameContextRepository.setFullscreen(!getOption())
+//        gameContextRepository.setFullscreen(!getOption())
     }
 
     companion object {
index 6d36e455479766ffdc837b6445850196c9ef13af..6c7fdd0a411f18c7396ca59d4536986a30636495 100644 (file)
@@ -1,6 +1,7 @@
 package ru.fredboy.cavedroid.zygote.menu.renderer
 
 import com.badlogic.gdx.Gdx
+import com.badlogic.gdx.graphics.OrthographicCamera
 import com.badlogic.gdx.graphics.g2d.SpriteBatch
 import com.badlogic.gdx.math.Rectangle
 import ru.fredboy.cavedroid.common.CaveDroidConstants
@@ -10,7 +11,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.GameContextRepository
+import ru.fredboy.cavedroid.domain.configuration.repository.ApplicationContextRepository
 import ru.fredboy.cavedroid.domain.menu.model.MenuButton
 import ru.fredboy.cavedroid.domain.menu.repository.MenuButtonRepository
 import ru.fredboy.cavedroid.zygote.menu.action.IMenuAction
@@ -19,8 +20,8 @@ import javax.inject.Inject
 
 @MenuScope
 class MenuRenderer @Inject constructor(
+    private val applicationContextRepository: ApplicationContextRepository,
     private val menuButtonRepository: MenuButtonRepository,
-    private val gameContextRepository: GameContextRepository,
     private val getTextureRegionByName: GetTextureRegionByNameUseCase,
     private val menuButtonActions: Map<String, @JvmSuppressWildcards IMenuAction>,
     private val buttonBooleanOptions: Map<String, @JvmSuppressWildcards IMenuBooleanOption>,
@@ -28,14 +29,19 @@ class MenuRenderer @Inject constructor(
     private val getStringWidth: GetStringWidthUseCase,
     private val getStringHeight: GetStringHeightUseCase,
 ) {
+
+    private val camera = OrthographicCamera()
+
     private val spriter = SpriteBatch()
 
     init {
-        val cameraContext = requireNotNull(gameContextRepository.getCameraContext()) {
-            "$TAG: CameraContext was not set"
-        }
+        camera.setToOrtho(
+            /* yDown = */ true,
+            /* viewportWidth = */ applicationContextRepository.getWidth(),
+            /* viewportHeight = */ applicationContextRepository.getHeight(),
+        )
 
-        spriter.projectionMatrix = cameraContext.camera.combined
+        spriter.projectionMatrix = camera.combined
     }
 
     private fun getButtonTextureRegionKey(button: MenuButton): String {
@@ -62,8 +68,8 @@ class MenuRenderer @Inject constructor(
             )
         }
 
-        val buttonX = gameContextRepository.getWidth() / 2 - textureRegion.regionWidth / 2
-        val buttonY = gameContextRepository.getHeight() / 4 + position.toFloat() * 30
+        val buttonX = applicationContextRepository.getWidth() / 2 - textureRegion.regionWidth / 2
+        val buttonY = applicationContextRepository.getHeight() / 4 + position.toFloat() * 30
 
         val buttonRect = Rectangle(
             /* x = */ buttonX,
@@ -72,17 +78,11 @@ class MenuRenderer @Inject constructor(
             /* height = */ textureRegion.regionHeight.toFloat(),
         )
 
-        val inputCoordinates = gameContextRepository.getCameraContext()?.getViewportCoordinates(
-            x = Gdx.input.x,
-            y = Gdx.input.y,
-        )
+        val inputX = applicationContextRepository.getWidth() / Gdx.graphics.width * Gdx.input.x.toFloat()
+        val inputY = applicationContextRepository.getHeight() / Gdx.graphics.height * Gdx.input.y.toFloat()
 
         spriter.draw(
-            if (button.isEnabled && inputCoordinates != null && buttonRect.contains(
-                    /* x = */ inputCoordinates.first,
-                    /* y = */ inputCoordinates.second
-                )
-            ) {
+            if (button.isEnabled && buttonRect.contains(inputX, inputY)) {
                 getTextureRegionByName[KEY_BUTTON_SELECTED_TEXTURE] ?: textureRegion
             } else {
                 textureRegion
@@ -106,8 +106,8 @@ class MenuRenderer @Inject constructor(
         val backgroundRegionWidth = backgroundRegion.regionWidth
         val backgroundRegionHeight = backgroundRegion.regionWidth
 
-        for (x in 0 .. gameContextRepository.getWidth().toInt() / backgroundRegionWidth) {
-            for (y in 0 .. gameContextRepository.getHeight().toInt() / backgroundRegionHeight) {
+        for (x in 0 .. applicationContextRepository.getWidth().toInt() / backgroundRegionWidth) {
+            for (y in 0 .. applicationContextRepository.getHeight().toInt() / backgroundRegionHeight) {
                 spriter.draw(
                     /* region = */ backgroundRegion,
                     /* x = */ x * backgroundRegionWidth.toFloat(),
@@ -118,7 +118,7 @@ class MenuRenderer @Inject constructor(
 
         spriter.draw(
             /* region = */ gameLogo,
-            /* x = */ gameContextRepository.getWidth() / 2 - gameLogo.regionWidth.toFloat() / 2,
+            /* x = */ applicationContextRepository.getWidth() / 2 - gameLogo.regionWidth.toFloat() / 2,
             /* y = */ 8f,
         )
     }
@@ -134,7 +134,7 @@ class MenuRenderer @Inject constructor(
             font = getFont(),
             str = "CaveDroid " + CaveDroidConstants.VERSION,
             x = 0f,
-            y = gameContextRepository.getHeight() - getStringHeight("CaveDroid " + CaveDroidConstants.VERSION) * 1.5f,
+            y = applicationContextRepository.getHeight() - getStringHeight("CaveDroid " + CaveDroidConstants.VERSION) * 1.5f,
         );
         spriter.end()
 
index dd418a0b16334be8077442a99ac8b63e3f5db2ea..910d67e6b7533458d1ffc30e9e8030219bd9675b 100644 (file)
@@ -39,7 +39,7 @@ tasks.register<Jar>("dist") {
 
 dependencies {
     useCommonModule()
-    implementation(project(":core"))
+    useZygoteModule()
 
     implementation(Dependencies.LibGDX.gdx)
     implementation(Dependencies.LibGDX.Desktop.backend)
index b4b3db4f8e5449a66abebffbe1f2f930d6bc0466..55eeb343b3f8a9346728a274422fba5981afc8d4 100644 (file)
@@ -3,7 +3,7 @@ package ru.deadsoftware.cavedroid.desktop
 import com.badlogic.gdx.Files
 import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application
 import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration
-import ru.deadsoftware.cavedroid.CaveGame
+import ru.fredboy.cavedroid.zygote.CaveDroidApplication
 
 internal object DesktopLauncher {
 
@@ -42,7 +42,7 @@ internal object DesktopLauncher {
             }
         }
 
-        val caveGame = CaveGame(
+        val caveGame = CaveDroidApplication(
             gameDataDirectoryPath = System.getProperty("user.home") + "/.cavedroid",
             isTouchScreen = touch,
             isDebug = debug,
index f38be2914e3d76e2e2c8991523a615ea3ae81983..189baaf84d922ec30af45ee1bf5fdce4f207a651 100644 (file)
@@ -1,6 +1,5 @@
 include("android")
 include("desktop")
-include("core")
 
 /**
  * Global modules