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
12 private val gameDataDirectoryPath: String,
13 private val isTouchScreen: Boolean,
14 private val isDebug: Boolean,
15 private val preferencesStore: PreferencesStore,
18 private val mainComponent: MainComponent
19 private val mainConfig: MainConfig
21 private val assetLoader: AssetLoader
24 mainComponent = DaggerMainComponent.builder()
26 .preferencesStore(preferencesStore)
29 mainConfig = mainComponent.mainConfig
30 assetLoader = mainComponent.assetLoader
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 ->
48 Gdx.graphics.setFullscreenMode(Gdx.graphics.displayMode);
50 Gdx.graphics.setWindowedMode(width.toInt(), height.toInt());
55 fun newGame(gameMode: Int) {
56 setScreen(mainComponent.gameScreen.apply { newGame(gameMode) })
60 setScreen(mainComponent.gameScreen.apply { loadGame() })
65 setScreen(mainComponent.menuScreen)
68 override fun create() {
69 Gdx.files.absolute(gameDataDirectoryPath).mkdirs()
72 Assets.load(assetLoader)
73 setScreen(mainComponent.menuScreen)
76 override fun dispose() {
83 private const val TAG = "CaveGame"
84 private const val DEFAULT_VIEWPORT_WIDTH = 480f
86 const val VERSION = "alpha 0.9.2"