X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Frender%2FHudRenderer.kt;h=b3f89909e4620db19e5b177cbe132319bad0bc96;hb=969518fd0bbde98b81c885c62f973d74ff5f61bb;hp=cea623a40d0194f6e87d13570ab9cfc75229278f;hpb=3512986410bc04017c9c15d3bebac5fe5cdd0e84;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/render/HudRenderer.kt b/core/src/ru/deadsoftware/cavedroid/game/render/HudRenderer.kt index cea623a..b3f8990 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/render/HudRenderer.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/render/HudRenderer.kt @@ -3,19 +3,16 @@ package ru.deadsoftware.cavedroid.game.render import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.glutils.ShapeRenderer import com.badlogic.gdx.math.Rectangle -import ru.deadsoftware.cavedroid.game.GameInput import ru.deadsoftware.cavedroid.game.GameScope import ru.deadsoftware.cavedroid.game.mobs.MobsController -import ru.deadsoftware.cavedroid.game.model.item.InventoryItem +import ru.deadsoftware.cavedroid.game.mobs.Player.ControlMode import ru.deadsoftware.cavedroid.game.world.GameWorld import ru.deadsoftware.cavedroid.misc.Assets -import ru.deadsoftware.cavedroid.misc.ControlMode import ru.deadsoftware.cavedroid.misc.utils.px import javax.inject.Inject @GameScope class HudRenderer @Inject constructor( - private val gameInput: GameInput, private val gameWorld: GameWorld, private val mobsController: MobsController, ) : IGameRenderer { @@ -34,7 +31,7 @@ class HudRenderer @Inject constructor( if (gameWorld.hasForeAt(cursorX, cursorY) || gameWorld.hasBackAt(cursorX, cursorY) || - gameInput.controlMode == ControlMode.CURSOR + mobsController.player.controlMode == ControlMode.CURSOR ) { spriteBatch.draw(cursorTexture, cursorX.px - viewport.x, cursorY.px - viewport.y) } @@ -59,19 +56,19 @@ class HudRenderer @Inject constructor( } } - private fun drawHotbarItems(spriteBatch: SpriteBatch, hotbarX: Float) { - mobsController.player.inventory.asSequence() - .map(InventoryItem::item) + private fun drawHotbarItems(spriteBatch: SpriteBatch, shapeRenderer: ShapeRenderer, hotbarX: Float) { + mobsController.player.inventory.asSequence().take(HotbarConfig.hotbarCells) .forEachIndexed { index, item -> - if (item.isNone()) { + if (item.item.isNone()) { return@forEachIndexed } - spriteBatch.draw( - /* region = */ item.sprite, - /* x = */ hotbarX + HotbarConfig.horizontalMargin - + index * (HotbarConfig.itemSeparatorWidth + HotbarConfig.itemSlotSpace), - /* y = */ HotbarConfig.verticalMargin, + item.draw( + spriteBatch = spriteBatch, + shapeRenderer = shapeRenderer, + x = hotbarX + HotbarConfig.horizontalMargin + + index * (HotbarConfig.itemSeparatorWidth + HotbarConfig.itemSlotSpace), + y = HotbarConfig.verticalMargin, ) } } @@ -85,19 +82,19 @@ class HudRenderer @Inject constructor( ) } - private fun drawHotbar(spriteBatch: SpriteBatch, viewport: Rectangle) { + private fun drawHotbar(spriteBatch: SpriteBatch, shapeRenderer: ShapeRenderer, viewport: Rectangle) { val hotbar = hotbarTexture val hotbarX = viewport.width / 2 - hotbar.regionWidth / 2 spriteBatch.draw(hotbar, hotbarX, 0f) drawHealth(spriteBatch, hotbarX, hotbarTexture.regionHeight.toFloat()) - drawHotbarItems(spriteBatch, hotbarX) drawHotbarSelector(spriteBatch, hotbarX) + drawHotbarItems(spriteBatch, shapeRenderer, hotbarX) } override fun draw(spriteBatch: SpriteBatch, shapeRenderer: ShapeRenderer, viewport: Rectangle, delta: Float) { drawCursor(spriteBatch, viewport) - drawHotbar(spriteBatch, viewport) + drawHotbar(spriteBatch, shapeRenderer, viewport) } companion object { @@ -114,6 +111,7 @@ class HudRenderer @Inject constructor( const val verticalMargin = 3f const val itemSeparatorWidth = 4f const val itemSlotSpace = 16f + const val hotbarCells = 9 } private data object HotbarSelectorConfig {