mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-18 11:54:59 -04:00
pre size calculation
This commit is contained in:
parent
3d198617cb
commit
fa84eff093
@ -99,7 +99,7 @@ class CharData(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (style.formatting.contains(PreChatFormattingCodes.STRIKETHROUGH)) {
|
if (style.formatting.contains(PreChatFormattingCodes.STRIKETHROUGH)) {
|
||||||
vertexConsumer.addQuad(startPosition + Vec2(-Font.HORIZONTAL_SPACING, Font.CHAR_HEIGHT / 2.0f + 0.5f), Vec2(endPosition.x + Font.HORIZONTAL_SPACING, startPosition.y + Font.CHAR_HEIGHT / 2.0f + 1.5f), z + 1, renderWindow.WHITE_TEXTURE.texture, renderWindow.WHITE_TEXTURE.uvStart, renderWindow.WHITE_TEXTURE.uvEnd, italic, color)
|
vertexConsumer.addQuad(startPosition + Vec2(-Font.HORIZONTAL_SPACING, Font.CHAR_HEIGHT / 2.0f), Vec2(endPosition.x + Font.HORIZONTAL_SPACING, startPosition.y + Font.CHAR_HEIGHT / 2.0f + 1.0f), z + 1, renderWindow.WHITE_TEXTURE.texture, renderWindow.WHITE_TEXTURE.uvStart, renderWindow.WHITE_TEXTURE.uvEnd, italic, color)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (style.formatting.contains(PreChatFormattingCodes.UNDERLINED)) {
|
if (style.formatting.contains(PreChatFormattingCodes.UNDERLINED)) {
|
||||||
|
@ -21,7 +21,7 @@ import glm_.vec2.Vec2i
|
|||||||
|
|
||||||
object BaseComponentRenderer : ChatComponentRenderer<BaseComponent> {
|
object BaseComponentRenderer : ChatComponentRenderer<BaseComponent> {
|
||||||
|
|
||||||
override fun render(initialOffset: Vec2i, offset: Vec2i, size: Vec2i, z: Int, element: LabeledElement, renderWindow: RenderWindow, consumer: GUIVertexConsumer, text: BaseComponent) {
|
override fun render(initialOffset: Vec2i, offset: Vec2i, size: Vec2i, z: Int, element: LabeledElement, renderWindow: RenderWindow, consumer: GUIVertexConsumer?, text: BaseComponent) {
|
||||||
for (part in text.parts) {
|
for (part in text.parts) {
|
||||||
ChatComponentRenderer.render(initialOffset, offset, size, z, element, renderWindow, consumer, part)
|
ChatComponentRenderer.render(initialOffset, offset, size, z, element, renderWindow, consumer, part)
|
||||||
}
|
}
|
||||||
|
@ -23,12 +23,12 @@ import glm_.vec2.Vec2i
|
|||||||
|
|
||||||
interface ChatComponentRenderer<T : ChatComponent> {
|
interface ChatComponentRenderer<T : ChatComponent> {
|
||||||
|
|
||||||
fun render(initialOffset: Vec2i, offset: Vec2i, size: Vec2i, z: Int, element: LabeledElement, renderWindow: RenderWindow, consumer: GUIVertexConsumer, text: T)
|
fun render(initialOffset: Vec2i, offset: Vec2i, size: Vec2i, z: Int, element: LabeledElement, renderWindow: RenderWindow, consumer: GUIVertexConsumer?, text: T)
|
||||||
|
|
||||||
|
|
||||||
companion object : ChatComponentRenderer<ChatComponent> {
|
companion object : ChatComponentRenderer<ChatComponent> {
|
||||||
|
|
||||||
override fun render(initialOffset: Vec2i, offset: Vec2i, size: Vec2i, z: Int, element: LabeledElement, renderWindow: RenderWindow, consumer: GUIVertexConsumer, text: ChatComponent) {
|
override fun render(initialOffset: Vec2i, offset: Vec2i, size: Vec2i, z: Int, element: LabeledElement, renderWindow: RenderWindow, consumer: GUIVertexConsumer?, text: ChatComponent) {
|
||||||
when (text) {
|
when (text) {
|
||||||
is BaseComponent -> BaseComponentRenderer.render(initialOffset, offset, size, z, element, renderWindow, consumer, text)
|
is BaseComponent -> BaseComponentRenderer.render(initialOffset, offset, size, z, element, renderWindow, consumer, text)
|
||||||
is TextComponent -> TextComponentRenderer.render(initialOffset, offset, size, z, element, renderWindow, consumer, text)
|
is TextComponent -> TextComponentRenderer.render(initialOffset, offset, size, z, element, renderWindow, consumer, text)
|
||||||
|
@ -25,7 +25,7 @@ import glm_.vec2.Vec2i
|
|||||||
|
|
||||||
object TextComponentRenderer : ChatComponentRenderer<TextComponent> {
|
object TextComponentRenderer : ChatComponentRenderer<TextComponent> {
|
||||||
|
|
||||||
override fun render(initialOffset: Vec2i, offset: Vec2i, size: Vec2i, z: Int, element: LabeledElement, renderWindow: RenderWindow, consumer: GUIVertexConsumer, text: TextComponent) {
|
override fun render(initialOffset: Vec2i, offset: Vec2i, size: Vec2i, z: Int, element: LabeledElement, renderWindow: RenderWindow, consumer: GUIVertexConsumer?, text: TextComponent) {
|
||||||
var first = true
|
var first = true
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -79,6 +79,11 @@ object TextComponentRenderer : ChatComponentRenderer<TextComponent> {
|
|||||||
|
|
||||||
if (first) {
|
if (first) {
|
||||||
first = false
|
first = false
|
||||||
|
|
||||||
|
// Add initial size
|
||||||
|
if (size.y == 0) {
|
||||||
|
size.y = Font.CHAR_HEIGHT + Font.VERTICAL_SPACING
|
||||||
|
}
|
||||||
} else if (offset.x != initialOffset.x && add(Font.HORIZONTAL_SPACING)) {
|
} else if (offset.x != initialOffset.x && add(Font.HORIZONTAL_SPACING)) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -88,7 +93,7 @@ object TextComponentRenderer : ChatComponentRenderer<TextComponent> {
|
|||||||
if (offset.x == initialOffset.x && offset.x - initialOffset.x + width > element.maxSize.x) {
|
if (offset.x == initialOffset.x && offset.x - initialOffset.x + width > element.maxSize.x) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
charData.render(offset, z, text, consumer)
|
consumer?.let { charData.render(offset, z, text, it) }
|
||||||
|
|
||||||
if (add(width)) {
|
if (add(width)) {
|
||||||
return
|
return
|
||||||
|
@ -30,19 +30,29 @@ class TextElement(
|
|||||||
prepared = false
|
prepared = false
|
||||||
}
|
}
|
||||||
|
|
||||||
override var textComponent: ChatComponent = ChatComponent.of(text)
|
override var textComponent: ChatComponent = ChatComponent.of("")
|
||||||
private set(value) {
|
private set(value) {
|
||||||
size = minSize
|
size = minSize
|
||||||
|
if (value.message.isNotEmpty()) {
|
||||||
|
val size = Vec2i(0, 0)
|
||||||
|
ChatComponentRenderer.render(Vec2i(0, 0), Vec2i(0, 0), size, 0, this, renderWindow, null, value)
|
||||||
|
this.size = size
|
||||||
|
}
|
||||||
field = value
|
field = value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
init {
|
||||||
|
textComponent = ChatComponent.of(text)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun render(offset: Vec2i, z: Int, consumer: GUIVertexConsumer): Int {
|
override fun render(offset: Vec2i, z: Int, consumer: GUIVertexConsumer): Int {
|
||||||
ChatComponentRenderer.render(Vec2i(offset), offset, Vec2i(0, 0), z, this, renderWindow, consumer, textComponent)
|
ChatComponentRenderer.render(Vec2i(offset), offset, Vec2i(0, 0), z, this, renderWindow, consumer, textComponent)
|
||||||
|
prepared = true
|
||||||
return LAYERS
|
return LAYERS
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val LAYERS = 4
|
const val LAYERS = 4 // 1 layer for the text, 1 for strikethrough. * 2 for shadow
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -97,7 +97,7 @@ class HUDRenderer(
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
if (!text2.prepared) {
|
if (!text2.prepared) {
|
||||||
text2.render(Vec2i(10, 60), 0, mesh)
|
text2.render(Vec2i(0, 40), 0, mesh)
|
||||||
}
|
}
|
||||||
|
|
||||||
mesh.load()
|
mesh.load()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user