From 7dbb07e2de2e6b537608f3d500b7e3a5779a2bc8 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Fri, 15 Oct 2021 23:23:04 +0200 Subject: [PATCH] hud: fix experience bar offset --- .../gui/rendering/gui/elements/text/TextElement.kt | 7 ------- .../rendering/gui/hud/elements/hotbar/HotbarElement.kt | 10 +++++----- .../hud/elements/hotbar/HotbarExperienceBarElement.kt | 8 +++++--- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/text/TextElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/text/TextElement.kt index 976dc65b2..a5490a2a3 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/text/TextElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/text/TextElement.kt @@ -37,7 +37,6 @@ open class TextElement( var backgroundColor: RGBColor = RenderConstants.TEXT_BACKGROUND_COLOR, parent: Element? = null, ) : LabeledElement(hudRenderer) { - private var previousMaxSize = Vec2i.EMPTY var renderInfo = TextRenderInfo() override var text: Any = text @@ -57,7 +56,6 @@ open class TextElement( ChatComponentRenderer.render(Vec2i.EMPTY, Vec2i.EMPTY, prefSize, 0, InfiniteSizeElement(hudRenderer), fontAlignment, renderWindow, null, TextRenderInfo(), value) } _prefSize = prefSize - cacheUpToDate = false forceApply() } @@ -67,7 +65,6 @@ open class TextElement( } override fun forceSilentApply() { - val maxSize = maxSize val size = Vec2i.EMPTY if (!emptyMessage) { val renderInfo = TextRenderInfo() @@ -76,16 +73,12 @@ open class TextElement( this.renderInfo = renderInfo } - - this.previousMaxSize = maxSize this.cacheUpToDate = false _size = size } override fun onChildChange(child: Element?) = error("A TextElement can not have a child!") - - override fun forceRender(offset: Vec2i, z: Int, consumer: GUIVertexConsumer): Int { if (emptyMessage) { return 0 diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarElement.kt index 2b833e1c6..fd96aa9a1 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarElement.kt @@ -60,13 +60,13 @@ class HotbarElement(hudRenderer: HUDRenderer) : Element(hudRenderer) { forceSilentApply() var maxZ = 0 - val maxSize = topLeft.size.max(topRight.size) + val topMaxSize = topLeft.size.max(topRight.size) - maxZ = max(maxZ, topLeft.render(offset + Vec2i(0, VerticalAlignments.TOP.getOffset(maxSize.y, topLeft.size.y)), z, consumer)) - maxZ = max(maxZ, topRight.render(offset + Vec2i(HorizontalAlignments.RIGHT.getOffset(size.x, topRight.size.x), VerticalAlignments.BOTTOM.getOffset(maxSize.y, topRight.size.y)), z, consumer)) - offset.y += maxSize.y + maxZ = max(maxZ, topLeft.render(offset + Vec2i(0, VerticalAlignments.BOTTOM.getOffset(topMaxSize.y, topLeft.size.y)), z, consumer)) + maxZ = max(maxZ, topRight.render(offset + Vec2i(HorizontalAlignments.RIGHT.getOffset(size.x, topRight.size.x), VerticalAlignments.BOTTOM.getOffset(topMaxSize.y, topRight.size.y)), z, consumer)) + offset.y += topMaxSize.y - maxZ = max(maxZ, experience.render(offset + Vec2i(HorizontalAlignments.CENTER.getOffset(maxSize.y, experience.size.y), 0), z, consumer)) + maxZ = max(maxZ, experience.render(offset + Vec2i(HorizontalAlignments.CENTER.getOffset(size.x, experience.size.x), 0), z, consumer)) offset.y += experience.size.y maxZ = max(maxZ, base.render(offset, z, consumer)) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarExperienceBarElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarExperienceBarElement.kt index b8290a8b7..ebb7fdcda 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarExperienceBarElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarExperienceBarElement.kt @@ -64,10 +64,12 @@ class HotbarExperienceBarElement(hudRenderer: HUDRenderer) : Element(hudRenderer progress.render(offset, z + 1, consumer) - // level - val text = TextElement(hudRenderer, TextComponent(level).apply { color = RenderConstants.EXPERIENCE_BAR_LEVEL_COLOR }, fontAlignment = HorizontalAlignments.CENTER, true) + if (level > 0) { + // level + val text = TextElement(hudRenderer, TextComponent(level).apply { color = RenderConstants.EXPERIENCE_BAR_LEVEL_COLOR }, fontAlignment = HorizontalAlignments.CENTER, true) - text.render(offset + Vec2i(HorizontalAlignments.CENTER.getOffset(size.x, text.size.x), -5), z + 2, consumer) + text.render(offset + Vec2i(HorizontalAlignments.CENTER.getOffset(size.x, text.size.x), -5), z + 2, consumer) + } return 2 + TextElement.LAYERS // background + foreground + text(level) }