diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/hud/elements/input/TextField.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/hud/elements/input/TextField.kt index 9d926c97e..e4d5a49cb 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/hud/elements/input/TextField.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/hud/elements/input/TextField.kt @@ -16,9 +16,9 @@ package de.bixilon.minosoft.gui.rendering.hud.elements.input import de.bixilon.minosoft.config.key.KeyCodes import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.gui.rendering.RenderWindow -import de.bixilon.minosoft.gui.rendering.font.text.TextSetProperties import de.bixilon.minosoft.gui.rendering.hud.nodes.layout.AbsoluteLayout import de.bixilon.minosoft.gui.rendering.hud.nodes.primitive.LabelNode +import de.bixilon.minosoft.gui.rendering.hud.nodes.properties.NodeSizing import de.bixilon.minosoft.util.MMath import glm_.vec2.Vec2i @@ -26,9 +26,10 @@ import glm_.vec2.Vec2i open class TextField( renderWindow: RenderWindow, val properties: TextFieldProperties, -) : AbsoluteLayout(renderWindow), KeyConsumer, MouseConsumer { + sizing: NodeSizing = NodeSizing(), +) : AbsoluteLayout(renderWindow, sizing = sizing), KeyConsumer, MouseConsumer { private var textBuilder: StringBuilder = StringBuilder(properties.defaultText) - val textElement = LabelNode(renderWindow, sizing = sizing.copy(), setProperties = TextSetProperties(hardWrap = 100), text = ChatComponent.of(text), background = false) + val textElement = LabelNode(renderWindow, sizing = sizing.copy(), text = ChatComponent.of(text)) private var position = text.length var text: String diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/hud/nodes/chat/ChatBoxHUDElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/hud/nodes/chat/ChatBoxHUDElement.kt index 59aa7c767..ddadba2b8 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/hud/nodes/chat/ChatBoxHUDElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/hud/nodes/chat/ChatBoxHUDElement.kt @@ -15,22 +15,15 @@ package de.bixilon.minosoft.gui.rendering.hud.nodes.chat import de.bixilon.minosoft.config.config.game.controls.KeyBindingsNames -import de.bixilon.minosoft.gui.rendering.RenderConstants -import de.bixilon.minosoft.gui.rendering.font.Font import de.bixilon.minosoft.gui.rendering.hud.HUDRenderer import de.bixilon.minosoft.gui.rendering.hud.elements.input.TextField import de.bixilon.minosoft.gui.rendering.hud.elements.input.TextFieldProperties import de.bixilon.minosoft.gui.rendering.hud.nodes.HUDElement -import de.bixilon.minosoft.gui.rendering.hud.nodes.primitive.ImageNode -import de.bixilon.minosoft.gui.rendering.hud.nodes.properties.NodeSizing -import de.bixilon.minosoft.gui.rendering.hud.nodes.properties.Spacing import de.bixilon.minosoft.gui.rendering.util.abstractions.ScreenResizeCallback -import de.bixilon.minosoft.util.MMath import glm_.vec2.Vec2i class ChatBoxHUDElement(hudRenderer: HUDRenderer) : HUDElement(hudRenderer), ScreenResizeCallback { private lateinit var inputField: TextField - private var inputFieldBackground = ImageNode(hudRenderer.renderWindow, sizing = NodeSizing(margin = Spacing(left = 1, right = 1)), textureLike = hudRenderer.renderWindow.WHITE_TEXTURE, z = 0, tintColor = RenderConstants.TEXT_BACKGROUND_COLOR) override fun init() { inputField = TextField( @@ -40,7 +33,8 @@ class ChatBoxHUDElement(hudRenderer: HUDRenderer) : HUDElement(hudRenderer), Scr submitCloses = true, onSubmit = { hudRenderer.renderWindow.connection.sender.sendChatMessage(it) }, onClose = { closeChat() }, - )) + ), + ) layout.addChild(Vec2i(0, 0), inputField) inputField.apply() @@ -52,19 +46,19 @@ class ChatBoxHUDElement(hudRenderer: HUDRenderer) : HUDElement(hudRenderer), Scr override fun onScreenResize(screenDimensions: Vec2i) { layout.sizing.minSize.x = screenDimensions.x - inputFieldBackground.sizing.forceSize = Vec2i(screenDimensions.x - 2, MMath.clamp(inputField.textElement.getProperties.lines, 1, Int.MAX_VALUE) * (Font.CHAR_HEIGHT + RenderConstants.TEXT_LINE_PADDING)) // 2 pixels for margin + inputField.sizing.minSize.x = screenDimensions.x + inputField.sizing.maxSize.x = screenDimensions.x layout.sizing.maxSize.x = screenDimensions.x + inputField.textElement.setProperties.hardWrap = inputField.textElement.sizing.minSize.x layout.sizing.validate() layout.apply() } fun openChat() { - layout.addChild(Vec2i(0, 0), inputFieldBackground) hudRenderer.renderWindow.inputHandler.currentKeyConsumer = inputField } fun closeChat() { - layout.removeChild(inputFieldBackground) hudRenderer.renderWindow.inputHandler.currentKeyConsumer = null } }