X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Frender%2FHudRenderer.kt;h=a2570e25f3120f8208233038f3b85e4738409dc4;hb=cb0605053ce3de493b0d1f43cd7ec1e4a9cf0ac5;hp=b3f89909e4620db19e5b177cbe132319bad0bc96;hpb=cf4113d5bfd3fca7c3815bf14a214eebd822216c;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 b3f8990..a2570e2 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/render/HudRenderer.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/render/HudRenderer.kt @@ -5,9 +5,12 @@ import com.badlogic.gdx.graphics.glutils.ShapeRenderer 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.misc.utils.drawString import ru.deadsoftware.cavedroid.misc.utils.px import javax.inject.Inject @@ -15,6 +18,7 @@ import javax.inject.Inject class HudRenderer @Inject constructor( private val gameWorld: GameWorld, private val mobsController: MobsController, + private val tooltipManager: TooltipManager, ) : IGameRenderer { override val renderLayer = RENDER_LAYER @@ -23,6 +27,7 @@ class HudRenderer @Inject constructor( 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) { @@ -45,19 +50,29 @@ class HudRenderer @Inject constructor( } val wholeHeart = wholeHeartTexture + val halfHeart = halfHeartTexture + val emptyHeart = emptyHeartTexture + + val totalHearts = Player.MAX_HEALTH / 2 val wholeHearts = player.health / 2 - for (i in 0.. if (item.item.isNone()) { return@forEachIndexed @@ -77,7 +92,7 @@ class HudRenderer @Inject constructor( 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 ) } @@ -90,6 +105,15 @@ class HudRenderer @Inject constructor( 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) { @@ -105,6 +129,7 @@ class HudRenderer @Inject constructor( 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