DEADSOFTWARE

Update README
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / render / TouchControlsRenderer.kt
1 package ru.deadsoftware.cavedroid.game.render
3 import com.badlogic.gdx.graphics.g2d.SpriteBatch
4 import com.badlogic.gdx.graphics.glutils.ShapeRenderer
5 import com.badlogic.gdx.math.Rectangle
6 import ru.deadsoftware.cavedroid.MainConfig
7 import ru.deadsoftware.cavedroid.game.GameScope
8 import ru.deadsoftware.cavedroid.game.GameUiWindow
9 import ru.deadsoftware.cavedroid.game.mobs.MobsController
10 import ru.deadsoftware.cavedroid.game.mobs.Player.ControlMode
11 import ru.deadsoftware.cavedroid.game.windows.GameWindowsManager
12 import ru.deadsoftware.cavedroid.misc.Assets
13 import ru.deadsoftware.cavedroid.misc.utils.ArrayMapExtensions.component1
14 import ru.deadsoftware.cavedroid.misc.utils.ArrayMapExtensions.component2
15 import javax.inject.Inject
17 @GameScope
18 class TouchControlsRenderer @Inject constructor(
19 private val mainConfig: MainConfig,
20 private val mobsController: MobsController,
21 private val gameWindowsManager: GameWindowsManager,
22 ) : IGameRenderer {
24 override val renderLayer get() = RENDER_LAYER
26 private val shadeTexture get() = Assets.textureRegions[SHADE_KEY]
28 override fun draw(spriteBatch: SpriteBatch, shapeRenderer: ShapeRenderer, viewport: Rectangle, delta: Float) {
29 if (!mainConfig.isTouch || gameWindowsManager.getCurrentWindow() != GameUiWindow.NONE) {
30 return
31 }
33 val touchControlsMap = Assets.guiMap
35 touchControlsMap.forEach { (key, value) ->
36 val touchKey = value.rect
37 spriteBatch.draw(
38 /* region = */ Assets.textureRegions[key],
39 /* x = */ touchKey.x,
40 /* y = */ touchKey.y,
41 /* width = */ touchKey.width,
42 /* height = */ touchKey.height
43 )
44 }
46 // FIXME: Add pressed state for buttons
47 if (mobsController.player.controlMode == ControlMode.CURSOR) {
48 val altKeyRect = touchControlsMap.get("alt").rect
49 spriteBatch.draw(shadeTexture, altKeyRect.x, altKeyRect.y, altKeyRect.width, altKeyRect.height)
50 }
51 }
53 companion object {
54 private const val RENDER_LAYER = 100700
56 private const val SHADE_KEY = "shade"
57 }
59 }