From cd16c9d495c8de2123c866cb69175826f17ef647 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Wed, 5 May 2021 17:18:20 +0200 Subject: [PATCH] rendering: hud: RowLayout --- .../minosoft/data/mappings/biomes/Biome.kt | 2 +- .../hud/elements/other/CrosshairHUDElement.kt | 6 ++-- .../gui/rendering/hud/nodes/HUDElement.kt | 4 +-- .../hud/nodes/chat/ChatBoxHUDElement.kt | 2 ++ .../hud/nodes/debug/DebugScreenNode.kt | 6 ++-- .../rendering/hud/nodes/layout/RowLayout.kt | 31 +++++++++++++++++++ 6 files changed, 43 insertions(+), 8 deletions(-) create mode 100644 src/main/java/de/bixilon/minosoft/gui/rendering/hud/nodes/layout/RowLayout.kt diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/biomes/Biome.kt b/src/main/java/de/bixilon/minosoft/data/mappings/biomes/Biome.kt index c62062141..3d5298a74 100644 --- a/src/main/java/de/bixilon/minosoft/data/mappings/biomes/Biome.kt +++ b/src/main/java/de/bixilon/minosoft/data/mappings/biomes/Biome.kt @@ -70,7 +70,7 @@ data class Biome( waterFogColor = TintColorCalculator.getJsonColor(data["water_fog_color"]?.asInt ?: 0), category = mappings.biomeCategoryRegistry.get(data["category"]?.asInt ?: -1) ?: DEFAULT_CATEGORY, precipitation = mappings.biomePrecipitationRegistry.get(data["precipitation"]?.asInt ?: -1) ?: DEFAULT_PRECIPITATION, - skyColor = data["sky_color"]?.asInt?.let { it.asRGBColor() } ?: RenderConstants.GRASS_FAILOVER_COLOR, + skyColor = data["sky_color"]?.asInt?.asRGBColor() ?: RenderConstants.GRASS_FAILOVER_COLOR, foliageColorOverride = TintColorCalculator.getJsonColor(data["foliage_color_override"]?.asInt ?: 0), grassColorOverride = TintColorCalculator.getJsonColor(data["grass_color_override"]?.asInt ?: 0), descriptionId = data["water_fog_color"]?.asString, diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/hud/elements/other/CrosshairHUDElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/hud/elements/other/CrosshairHUDElement.kt index 6e5e2baf9..620582f2f 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/hud/elements/other/CrosshairHUDElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/hud/elements/other/CrosshairHUDElement.kt @@ -18,14 +18,16 @@ import de.bixilon.minosoft.gui.rendering.hud.HUDElementProperties import de.bixilon.minosoft.gui.rendering.hud.HUDRenderBuilder import de.bixilon.minosoft.gui.rendering.hud.HUDRenderer import de.bixilon.minosoft.gui.rendering.hud.nodes.HUDElement +import de.bixilon.minosoft.gui.rendering.hud.nodes.layout.AbsoluteLayout import de.bixilon.minosoft.gui.rendering.hud.nodes.primitive.ImageNode import de.bixilon.minosoft.gui.rendering.hud.nodes.properties.NodeSizing import glm_.vec2.Vec2 import glm_.vec2.Vec2i class CrosshairHUDElement( - hudRender: HUDRenderer, -) : HUDElement(hudRender) { + hudRenderer: HUDRenderer, +) : HUDElement(hudRenderer) { + override val layout = AbsoluteLayout(hudRenderer.renderWindow) private lateinit var crosshairImage: ImageNode override fun init() { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/hud/nodes/HUDElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/hud/nodes/HUDElement.kt index 4310fd4e4..a01f760a9 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/hud/nodes/HUDElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/hud/nodes/HUDElement.kt @@ -16,10 +16,10 @@ package de.bixilon.minosoft.gui.rendering.hud.nodes import de.bixilon.minosoft.Minosoft import de.bixilon.minosoft.gui.rendering.hud.HUDElementProperties import de.bixilon.minosoft.gui.rendering.hud.HUDRenderer -import de.bixilon.minosoft.gui.rendering.hud.nodes.layout.AbsoluteLayout +import de.bixilon.minosoft.gui.rendering.hud.nodes.layout.Layout abstract class HUDElement(protected val hudRenderer: HUDRenderer) { - val layout = AbsoluteLayout(hudRenderer.renderWindow) + abstract val layout: Layout lateinit var properties: HUDElementProperties 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 6d69e9041..00d60a959 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 @@ -22,11 +22,13 @@ 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.layout.AbsoluteLayout import de.bixilon.minosoft.gui.rendering.util.abstractions.ScreenResizeCallback import glm_.vec2.Vec2 import glm_.vec2.Vec2i class ChatBoxHUDElement(hudRenderer: HUDRenderer) : HUDElement(hudRenderer), ScreenResizeCallback { + override val layout = AbsoluteLayout(hudRenderer.renderWindow) private lateinit var inputField: TextField override fun init() { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/hud/nodes/debug/DebugScreenNode.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/hud/nodes/debug/DebugScreenNode.kt index 9889082f7..f70bcb6cd 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/hud/nodes/debug/DebugScreenNode.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/hud/nodes/debug/DebugScreenNode.kt @@ -16,16 +16,16 @@ package de.bixilon.minosoft.gui.rendering.hud.nodes.debug import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.gui.rendering.hud.HUDRenderer import de.bixilon.minosoft.gui.rendering.hud.nodes.HUDElement +import de.bixilon.minosoft.gui.rendering.hud.nodes.layout.RowLayout import de.bixilon.minosoft.gui.rendering.hud.nodes.primitive.LabelNode -import glm_.vec2.Vec2i abstract class DebugScreenNode(hudRenderer: HUDRenderer) : HUDElement(hudRenderer) { + override val layout = RowLayout(hudRenderer.renderWindow) protected var lastPrepareTime = 0L fun text(text: String = ""): LabelNode { val textElement = LabelNode(hudRenderer.renderWindow, text = ChatComponent.of(text)) - layout.addChild(Vec2i(0, layout.sizing.currentSize.y), textElement) - layout.apply() + layout.addRow(textElement) return textElement } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/hud/nodes/layout/RowLayout.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/hud/nodes/layout/RowLayout.kt new file mode 100644 index 000000000..12542ee93 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/hud/nodes/layout/RowLayout.kt @@ -0,0 +1,31 @@ +/* + * Minosoft + * Copyright (C) 2021 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.gui.rendering.hud.nodes.layout + +import de.bixilon.minosoft.gui.rendering.RenderWindow +import de.bixilon.minosoft.gui.rendering.hud.nodes.primitive.Node +import de.bixilon.minosoft.gui.rendering.hud.nodes.properties.NodeSizing +import glm_.vec2.Vec2i + +class RowLayout( + renderWindow: RenderWindow, + sizing: NodeSizing = NodeSizing(), + initialCacheSize: Int = DEFAULT_INITIAL_CACHE_SIZE, +) : AbsoluteLayout(renderWindow, sizing, initialCacheSize) { + + fun addRow(node: Node) { + addChild(Vec2i(0, sizing.currentSize.y + node.sizing.margin.top + node.sizing.padding.top), node) + apply() + } +}