hud: fix experience bar offset

This commit is contained in:
Bixilon 2021-10-15 23:23:04 +02:00
parent 1330911287
commit 7dbb07e2de
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
3 changed files with 10 additions and 15 deletions

View File

@ -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

View File

@ -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))

View File

@ -64,10 +64,12 @@ class HotbarExperienceBarElement(hudRenderer: HUDRenderer) : Element(hudRenderer
progress.render(offset, z + 1, consumer)
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)
}
return 2 + TextElement.LAYERS // background + foreground + text(level)
}