DEADSOFTWARE

Add touch controls renderer to module
[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.GameInput
8 import ru.deadsoftware.cavedroid.game.GameScope
9 import ru.deadsoftware.cavedroid.misc.Assets
10 import ru.deadsoftware.cavedroid.misc.ControlMode
11 import ru.deadsoftware.cavedroid.misc.utils.ArrayMapExtensions.component1
12 import ru.deadsoftware.cavedroid.misc.utils.ArrayMapExtensions.component2
13 import javax.inject.Inject
15 @GameScope
16 class TouchControlsRenderer @Inject constructor(
17 private val mainConfig: MainConfig,
18 private val gameInput: GameInput
19 ) : IGameRenderer {
21 override val renderLayer get() = RENDER_LAYER
23 private val shadeTexture get() = Assets.textureRegions[SHADE_KEY]
25 override fun draw(spriteBatch: SpriteBatch, shapeRenderer: ShapeRenderer, viewport: Rectangle, delta: Float) {
26 if (!mainConfig.isTouch) {
27 return
28 }
30 val touchControlsMap = Assets.guiMap
32 touchControlsMap.forEach { (key, value) ->
33 val touchKey = value.rect
34 spriteBatch.draw(
35 /* region = */ Assets.textureRegions[key],
36 /* x = */ touchKey.x,
37 /* y = */ touchKey.y,
38 /* width = */ touchKey.width,
39 /* height = */ touchKey.height
40 )
41 }
43 // FIXME: Add pressed state for buttons
44 if (gameInput.controlMode == ControlMode.CURSOR) {
45 val altKeyRect = touchControlsMap.get("alt").rect
46 spriteBatch.draw(shadeTexture, altKeyRect.x, altKeyRect.y, altKeyRect.width, altKeyRect.height)
47 }
48 }
50 companion object {
51 private const val RENDER_LAYER = 100700
53 private const val SHADE_KEY = "shade"
54 }
56 }