diff --git a/core/src/ru/deadsoftware/cavedroid/game/render/HudRenderer.kt b/core/src/ru/deadsoftware/cavedroid/game/render/HudRenderer.kt
index b3f89909e4620db19e5b177cbe132319bad0bc96..a2570e25f3120f8208233038f3b85e4738409dc4 100644 (file)
import com.badlogic.gdx.math.Rectangle
import ru.deadsoftware.cavedroid.game.GameScope
import ru.deadsoftware.cavedroid.game.mobs.MobsController
import com.badlogic.gdx.math.Rectangle
import ru.deadsoftware.cavedroid.game.GameScope
import ru.deadsoftware.cavedroid.game.mobs.MobsController
-import ru.deadsoftware.cavedroid.game.mobs.Player.ControlMode
+import ru.deadsoftware.cavedroid.game.mobs.player.Player
+import ru.deadsoftware.cavedroid.game.mobs.player.Player.ControlMode
+import ru.deadsoftware.cavedroid.game.ui.TooltipManager
import ru.deadsoftware.cavedroid.game.world.GameWorld
import ru.deadsoftware.cavedroid.misc.Assets
import ru.deadsoftware.cavedroid.game.world.GameWorld
import ru.deadsoftware.cavedroid.misc.Assets
+import ru.deadsoftware.cavedroid.misc.utils.drawString
import ru.deadsoftware.cavedroid.misc.utils.px
import javax.inject.Inject
import ru.deadsoftware.cavedroid.misc.utils.px
import javax.inject.Inject
class HudRenderer @Inject constructor(
private val gameWorld: GameWorld,
private val mobsController: MobsController,
class HudRenderer @Inject constructor(
private val gameWorld: GameWorld,
private val mobsController: MobsController,
+ private val tooltipManager: TooltipManager,
) : IGameRenderer {
override val renderLayer = RENDER_LAYER
) : IGameRenderer {
override val renderLayer = RENDER_LAYER
private val hotbarTexture get() = requireNotNull(Assets.textureRegions[HOTBAR_KEY])
private val hotbarSelectorTexture get() = requireNotNull(Assets.textureRegions[HOTBAR_SELECTOR_KEY])
private val wholeHeartTexture get() = requireNotNull(Assets.textureRegions[WHOLE_HEART_KEY])
private val hotbarTexture get() = requireNotNull(Assets.textureRegions[HOTBAR_KEY])
private val hotbarSelectorTexture get() = requireNotNull(Assets.textureRegions[HOTBAR_SELECTOR_KEY])
private val wholeHeartTexture get() = requireNotNull(Assets.textureRegions[WHOLE_HEART_KEY])
+ private val emptyHeartTexture get() = requireNotNull(Assets.textureRegions[EMPTY_HEART_KEY])
private val halfHeartTexture get() = requireNotNull(Assets.textureRegions[HALF_HEART_KEY])
private fun drawCursor(spriteBatch: SpriteBatch, viewport: Rectangle) {
private val halfHeartTexture get() = requireNotNull(Assets.textureRegions[HALF_HEART_KEY])
private fun drawCursor(spriteBatch: SpriteBatch, viewport: Rectangle) {
}
val wholeHeart = wholeHeartTexture
}
val wholeHeart = wholeHeartTexture
+ val halfHeart = halfHeartTexture
+ val emptyHeart = emptyHeartTexture
+
+ val totalHearts = Player.MAX_HEALTH / 2
val wholeHearts = player.health / 2
val wholeHearts = player.health / 2
- for (i in 0..<wholeHearts) {
- spriteBatch.draw(wholeHeart, x + i * wholeHeart.regionWidth, y)
+ for (i in 0..< totalHearts) {
+ if (i < wholeHearts) {
+ spriteBatch.draw(wholeHeart, x + i * wholeHeart.regionWidth, y)
+ } else if (i == wholeHearts && player.health % 2 == 1) {
+ spriteBatch.draw(halfHeart, x + i * wholeHeart.regionWidth, y)
+ } else {
+ spriteBatch.draw(emptyHeart, x + i * wholeHeart.regionWidth, y)
+ }
}
}
- if (player.health % 2 == 1) {
- spriteBatch.draw(halfHeartTexture, x + wholeHearts * wholeHeart.regionWidth, y)
- }
+
+
+
}
private fun drawHotbarItems(spriteBatch: SpriteBatch, shapeRenderer: ShapeRenderer, hotbarX: Float) {
}
private fun drawHotbarItems(spriteBatch: SpriteBatch, shapeRenderer: ShapeRenderer, hotbarX: Float) {
- mobsController.player.inventory.asSequence().take(HotbarConfig.hotbarCells)
+ mobsController.player.inventory.items.asSequence().take(HotbarConfig.hotbarCells)
.forEachIndexed { index, item ->
if (item.item.isNone()) {
return@forEachIndexed
.forEachIndexed { index, item ->
if (item.item.isNone()) {
return@forEachIndexed
spriteBatch.draw(
/* region = */ hotbarSelectorTexture,
/* x = */ hotbarX - HotbarSelectorConfig.horizontalPadding
spriteBatch.draw(
/* region = */ hotbarSelectorTexture,
/* x = */ hotbarX - HotbarSelectorConfig.horizontalPadding
- + mobsController.player.slot * (HotbarConfig.itemSeparatorWidth + HotbarConfig.itemSlotSpace),
+ + mobsController.player.inventory.activeSlot * (HotbarConfig.itemSeparatorWidth + HotbarConfig.itemSlotSpace),
/* y = */ -HotbarSelectorConfig.verticalPadding
)
}
/* y = */ -HotbarSelectorConfig.verticalPadding
)
}
drawHealth(spriteBatch, hotbarX, hotbarTexture.regionHeight.toFloat())
drawHotbarSelector(spriteBatch, hotbarX)
drawHotbarItems(spriteBatch, shapeRenderer, hotbarX)
drawHealth(spriteBatch, hotbarX, hotbarTexture.regionHeight.toFloat())
drawHotbarSelector(spriteBatch, hotbarX)
drawHotbarItems(spriteBatch, shapeRenderer, hotbarX)
+
+ val tooltip = tooltipManager.currentHotbarTooltip
+ if (tooltip.isNotBlank()) {
+ spriteBatch.drawString(
+ str = tooltip,
+ x = viewport.width / 2 - Assets.getStringWidth(tooltip) / 2,
+ y = hotbarTexture.regionHeight.toFloat()
+ )
+ }
}
override fun draw(spriteBatch: SpriteBatch, shapeRenderer: ShapeRenderer, viewport: Rectangle, delta: Float) {
}
override fun draw(spriteBatch: SpriteBatch, shapeRenderer: ShapeRenderer, viewport: Rectangle, delta: Float) {
private const val HOTBAR_SELECTOR_KEY = "hotbar_selector"
private const val WHOLE_HEART_KEY = "heart_whole"
private const val HALF_HEART_KEY = "heart_half"
private const val HOTBAR_SELECTOR_KEY = "hotbar_selector"
private const val WHOLE_HEART_KEY = "heart_whole"
private const val HALF_HEART_KEY = "heart_half"
+ private const val EMPTY_HEART_KEY = "heart_empty"
private data object HotbarConfig {
const val horizontalMargin = 3f
private data object HotbarConfig {
const val horizontalMargin = 3f