DEADSOFTWARE

Restructure project and use kotlin dsl
[cavedroid.git] / core / src / main / kotlin / ru / deadsoftware / cavedroid / CaveGame.kt
1 package ru.deadsoftware.cavedroid
3 import com.badlogic.gdx.Application
4 import com.badlogic.gdx.Game
5 import com.badlogic.gdx.Gdx
6 import ru.deadsoftware.cavedroid.misc.Assets
7 import ru.deadsoftware.cavedroid.misc.utils.AssetLoader
8 import ru.deadsoftware.cavedroid.misc.utils.ratio
9 import ru.deadsoftware.cavedroid.prefs.PreferencesStore
11 class CaveGame(
12 private val gameDataDirectoryPath: String,
13 private val isTouchScreen: Boolean,
14 private val isDebug: Boolean,
15 private val preferencesStore: PreferencesStore,
16 ) : Game() {
18 private val mainComponent: MainComponent
19 private val mainConfig: MainConfig
21 private val assetLoader: AssetLoader
23 init {
24 mainComponent = DaggerMainComponent.builder()
25 .caveGame(this)
26 .preferencesStore(preferencesStore)
27 .build()
29 mainConfig = mainComponent.mainConfig
30 assetLoader = mainComponent.assetLoader
31 }
33 private fun initMainConfig() {
34 val width = DEFAULT_VIEWPORT_WIDTH
35 val height = width / Gdx.graphics.ratio
37 mainConfig.mainComponent = mainComponent
38 mainConfig.gameFolder = gameDataDirectoryPath
39 mainConfig.isTouch = isTouchScreen
40 mainConfig.width = width
41 mainConfig.height = height
42 mainConfig.isShowInfo = isDebug
44 Gdx.app.logLevel = if (isDebug) Application.LOG_DEBUG else Application.LOG_ERROR
46 mainConfig.setFullscreenToggleListener { isFullscreen ->
47 if (isFullscreen) {
48 Gdx.graphics.setFullscreenMode(Gdx.graphics.displayMode);
49 } else {
50 Gdx.graphics.setWindowedMode(width.toInt(), height.toInt());
51 }
52 }
53 }
55 fun newGame(gameMode: Int) {
56 setScreen(mainComponent.gameScreen.apply { newGame(gameMode) })
57 }
59 fun loadGame() {
60 setScreen(mainComponent.gameScreen.apply { loadGame() })
61 }
63 fun quitGame() {
64 screen?.dispose()
65 setScreen(mainComponent.menuScreen)
66 }
68 override fun create() {
69 Gdx.files.absolute(gameDataDirectoryPath).mkdirs()
70 initMainConfig()
72 Assets.load(assetLoader)
73 setScreen(mainComponent.menuScreen)
74 }
76 override fun dispose() {
77 screen?.dispose()
78 Assets.dispose()
79 }
82 companion object {
83 private const val TAG = "CaveGame"
84 private const val DEFAULT_VIEWPORT_WIDTH = 480f
86 const val VERSION = "alpha 0.9.2"
87 }
89 }