DEADSOFTWARE

Add chest
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / render / TouchControlsRenderer.kt
index 5c95d696c675cadba52dcaf7fd1d8186e9a79491..63aa09fd74fce303e6d45b7d976ee6edab53c8ce 100644 (file)
@@ -6,12 +6,14 @@ import com.badlogic.gdx.math.Rectangle
 import ru.deadsoftware.cavedroid.MainConfig
 import ru.deadsoftware.cavedroid.game.GameScope
 import ru.deadsoftware.cavedroid.game.GameUiWindow
+import ru.deadsoftware.cavedroid.game.input.Joystick
 import ru.deadsoftware.cavedroid.game.mobs.MobsController
-import ru.deadsoftware.cavedroid.game.mobs.Player.ControlMode
-import ru.deadsoftware.cavedroid.game.windows.GameWindowsManager
+import ru.deadsoftware.cavedroid.game.mobs.player.Player.ControlMode
+import ru.deadsoftware.cavedroid.game.ui.windows.GameWindowsManager
 import ru.deadsoftware.cavedroid.misc.Assets
 import ru.deadsoftware.cavedroid.misc.utils.ArrayMapExtensions.component1
 import ru.deadsoftware.cavedroid.misc.utils.ArrayMapExtensions.component2
+import ru.deadsoftware.cavedroid.misc.utils.drawSprite
 import javax.inject.Inject
 
 @GameScope
@@ -25,6 +27,26 @@ class TouchControlsRenderer @Inject constructor(
 
     private val shadeTexture get() = Assets.textureRegions[SHADE_KEY]
 
+    private fun drawJoystick(spriteBatch: SpriteBatch) {
+        val joystick = mainConfig.joystick?.takeIf { it.active } ?: return
+
+        spriteBatch.drawSprite(
+            sprite = Assets.joyBackground,
+            x = joystick.centerX - Joystick.RADIUS,
+            y = joystick.centerY - Joystick.RADIUS,
+            width = Joystick.SIZE,
+            height = Joystick.SIZE
+        )
+
+        spriteBatch.drawSprite(
+            sprite = Assets.joyStick,
+            x = joystick.activeX - Joystick.STICK_SIZE / 2,
+            y = joystick.activeY - Joystick.STICK_SIZE / 2,
+            width = Joystick.STICK_SIZE,
+            height = Joystick.STICK_SIZE
+        )
+    }
+
     override fun draw(spriteBatch: SpriteBatch, shapeRenderer: ShapeRenderer, viewport: Rectangle, delta: Float) {
         if (!mainConfig.isTouch || gameWindowsManager.getCurrentWindow() != GameUiWindow.NONE) {
             return
@@ -48,6 +70,8 @@ class TouchControlsRenderer @Inject constructor(
             val altKeyRect = touchControlsMap.get("alt").rect
             spriteBatch.draw(shadeTexture, altKeyRect.x, altKeyRect.y, altKeyRect.width, altKeyRect.height)
         }
+
+        drawJoystick(spriteBatch)
     }
 
     companion object {