mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-17 11:24:56 -04:00
base component: fix crash, gui: popper (wip 2)
This commit is contained in:
parent
704de95b94
commit
044cc38551
@ -285,7 +285,7 @@ class BaseComponent : ChatComponent {
|
||||
var pointer = pointer
|
||||
for (part in parts) {
|
||||
val length = part.length
|
||||
if (pointer < length) {
|
||||
if (pointer <= length) {
|
||||
return part.getTextAt(pointer)
|
||||
}
|
||||
pointer -= length
|
||||
|
@ -25,18 +25,29 @@ import glm_.vec2.Vec2i
|
||||
|
||||
abstract class Popper(
|
||||
guiRenderer: GUIRenderer,
|
||||
var position: Vec2i,
|
||||
position: Vec2i,
|
||||
) : Element(guiRenderer), LayoutedElement {
|
||||
private val background = ColorElement(guiRenderer, Vec2i.EMPTY, color = ChatColors.YELLOW)
|
||||
open var dead = false
|
||||
override val layoutOffset: Vec2i = position
|
||||
override var layoutOffset: Vec2i = position
|
||||
protected set
|
||||
var position = position
|
||||
set(value) {
|
||||
if (field == value) {
|
||||
return
|
||||
}
|
||||
field = value
|
||||
forceApply()
|
||||
}
|
||||
|
||||
override fun forceRender(offset: Vec2i, consumer: GUIVertexConsumer, options: GUIVertexOptions?) {
|
||||
background.render(offset, consumer, options)
|
||||
}
|
||||
|
||||
override fun forceSilentApply() {
|
||||
layoutOffset = position
|
||||
background.size = size
|
||||
cacheUpToDate = false
|
||||
}
|
||||
|
||||
fun show() {
|
||||
|
@ -14,6 +14,7 @@
|
||||
package de.bixilon.minosoft.gui.rendering.gui.popper.text
|
||||
|
||||
import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer
|
||||
import de.bixilon.minosoft.gui.rendering.gui.elements.Element
|
||||
import de.bixilon.minosoft.gui.rendering.gui.elements.text.TextElement
|
||||
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer
|
||||
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions
|
||||
@ -25,11 +26,23 @@ class TextPopper(
|
||||
position: Vec2i,
|
||||
text: Any,
|
||||
) : Popper(guiRenderer, position) {
|
||||
private val textElement = TextElement(guiRenderer, text, parent = this)
|
||||
private val textElement = TextElement(guiRenderer, text, background = false, parent = this)
|
||||
|
||||
init {
|
||||
recalculateSize()
|
||||
}
|
||||
|
||||
override fun forceRender(offset: Vec2i, consumer: GUIVertexConsumer, options: GUIVertexOptions?) {
|
||||
super.forceRender(offset, consumer, options)
|
||||
|
||||
textElement.render(offset, consumer, options)
|
||||
}
|
||||
|
||||
override fun onChildChange(child: Element) {
|
||||
recalculateSize()
|
||||
}
|
||||
|
||||
private fun recalculateSize() {
|
||||
size = textElement.size
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user