mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-18 11:54:59 -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
|
var pointer = pointer
|
||||||
for (part in parts) {
|
for (part in parts) {
|
||||||
val length = part.length
|
val length = part.length
|
||||||
if (pointer < length) {
|
if (pointer <= length) {
|
||||||
return part.getTextAt(pointer)
|
return part.getTextAt(pointer)
|
||||||
}
|
}
|
||||||
pointer -= length
|
pointer -= length
|
||||||
|
@ -25,18 +25,29 @@ import glm_.vec2.Vec2i
|
|||||||
|
|
||||||
abstract class Popper(
|
abstract class Popper(
|
||||||
guiRenderer: GUIRenderer,
|
guiRenderer: GUIRenderer,
|
||||||
var position: Vec2i,
|
position: Vec2i,
|
||||||
) : Element(guiRenderer), LayoutedElement {
|
) : Element(guiRenderer), LayoutedElement {
|
||||||
private val background = ColorElement(guiRenderer, Vec2i.EMPTY, color = ChatColors.YELLOW)
|
private val background = ColorElement(guiRenderer, Vec2i.EMPTY, color = ChatColors.YELLOW)
|
||||||
open var dead = false
|
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?) {
|
override fun forceRender(offset: Vec2i, consumer: GUIVertexConsumer, options: GUIVertexOptions?) {
|
||||||
background.render(offset, consumer, options)
|
background.render(offset, consumer, options)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun forceSilentApply() {
|
override fun forceSilentApply() {
|
||||||
|
layoutOffset = position
|
||||||
background.size = size
|
background.size = size
|
||||||
|
cacheUpToDate = false
|
||||||
}
|
}
|
||||||
|
|
||||||
fun show() {
|
fun show() {
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.gui.popper.text
|
package de.bixilon.minosoft.gui.rendering.gui.popper.text
|
||||||
|
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer
|
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.elements.text.TextElement
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer
|
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions
|
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions
|
||||||
@ -25,11 +26,23 @@ class TextPopper(
|
|||||||
position: Vec2i,
|
position: Vec2i,
|
||||||
text: Any,
|
text: Any,
|
||||||
) : Popper(guiRenderer, position) {
|
) : 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?) {
|
override fun forceRender(offset: Vec2i, consumer: GUIVertexConsumer, options: GUIVertexOptions?) {
|
||||||
super.forceRender(offset, consumer, options)
|
super.forceRender(offset, consumer, options)
|
||||||
|
|
||||||
textElement.render(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