diff --git a/core/src/ru/deadsoftware/cavedroid/game/render/HudRenderer.kt b/core/src/ru/deadsoftware/cavedroid/game/render/HudRenderer.kt
index 911df5a301749aefd61ed385d9f1f456037cf7f3..b3f89909e4620db19e5b177cbe132319bad0bc96 100644 (file)
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 {
private val halfHeartTexture get() = requireNotNull(Assets.textureRegions[HALF_HEART_KEY])
private fun drawCursor(spriteBatch: SpriteBatch, viewport: Rectangle) {
- if (gameWorld.hasForeAt(gameInput.curX, gameInput.curY) ||
- gameWorld.hasBackAt(gameInput.curX, gameInput.curY) ||
- gameInput.controlMode == ControlMode.CURSOR
+ val cursorX = mobsController.player.cursorX
+ val cursorY = mobsController.player.cursorY
+
+ if (gameWorld.hasForeAt(cursorX, cursorY) ||
+ gameWorld.hasBackAt(cursorX, cursorY) ||
+ mobsController.player.controlMode == ControlMode.CURSOR
) {
- spriteBatch.draw(cursorTexture, gameInput.curX.px - viewport.x, gameInput.curY.px - viewport.y)
+ spriteBatch.draw(cursorTexture, cursorX.px - viewport.x, cursorY.px - viewport.y)
}
}
}
}
- 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,
)
}
}
)
}
- 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 {
const val verticalMargin = 3f
const val itemSeparatorWidth = 4f
const val itemSlotSpace = 16f
+ const val hotbarCells = 9
}
private data object HotbarSelectorConfig {