X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Frender%2FTouchControlsRenderer.kt;h=f2198aac4bfb0409960fe1b7f5cd87884a579424;hb=1e285247085ba04351feb486a0be6aa577f43093;hp=c768d5f07d1fc512d7b49fd964c0848dbb7d3618;hpb=c1b8f5c93482cb9933dd608c48f41622ce2994c6;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/render/TouchControlsRenderer.kt b/core/src/ru/deadsoftware/cavedroid/game/render/TouchControlsRenderer.kt index c768d5f..f2198aa 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/render/TouchControlsRenderer.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/render/TouchControlsRenderer.kt @@ -6,15 +6,19 @@ 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.Player.ControlMode -import ru.deadsoftware.cavedroid.game.windows.GameWindowsManager +import ru.deadsoftware.cavedroid.game.ui.windows.GameWindowsManager import ru.deadsoftware.cavedroid.misc.Assets +import ru.deadsoftware.cavedroid.misc.annotations.multibinding.BindRenderer 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 +@BindRenderer class TouchControlsRenderer @Inject constructor( private val mainConfig: MainConfig, private val mobsController: MobsController, @@ -25,6 +29,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 +72,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 {