mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-09 15:29:20 -04:00
hud: add text warping
This commit is contained in:
parent
9ec2ccaff3
commit
f3db1b1832
@ -18,7 +18,7 @@ import de.bixilon.minosoft.config.config.game.entities.EntitiesConfig
|
|||||||
import de.bixilon.minosoft.config.config.game.graphics.GraphicsGameConfig
|
import de.bixilon.minosoft.config.config.game.graphics.GraphicsGameConfig
|
||||||
import de.bixilon.minosoft.config.config.game.sound.SoundConfig
|
import de.bixilon.minosoft.config.config.game.sound.SoundConfig
|
||||||
import de.bixilon.minosoft.config.config.game.world.WorldConfig
|
import de.bixilon.minosoft.config.config.game.world.WorldConfig
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
import de.bixilon.minosoft.gui.rendering.hud.elements.primitive.HUDElement
|
import de.bixilon.minosoft.gui.rendering.hud.elements.primitive.HUDElement
|
||||||
|
|
||||||
data class GameConfig(
|
data class GameConfig(
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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 <https://www.gnu.org/licenses/>.
|
|
||||||
*
|
|
||||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package de.bixilon.minosoft.config.config.game.elements
|
|
||||||
|
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
|
||||||
import de.bixilon.minosoft.gui.rendering.hud.elements.primitive.HUDElement
|
|
||||||
|
|
||||||
data class ElementsGameConfig(
|
|
||||||
val entries: MutableMap<ResourceLocation, HUDElement> = mutableMapOf(),
|
|
||||||
)
|
|
@ -17,7 +17,10 @@ import com.google.gson.JsonElement
|
|||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import de.bixilon.minosoft.data.locale.minecraft.Translator
|
import de.bixilon.minosoft.data.locale.minecraft.Translator
|
||||||
import de.bixilon.minosoft.data.text.RGBColor.Companion.asColor
|
import de.bixilon.minosoft.data.text.RGBColor.Companion.asColor
|
||||||
|
import de.bixilon.minosoft.data.text.events.ClickEvent
|
||||||
|
import de.bixilon.minosoft.data.text.events.HoverEvent
|
||||||
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
||||||
|
import de.bixilon.minosoft.util.KUtil.nullCast
|
||||||
import javafx.collections.ObservableList
|
import javafx.collections.ObservableList
|
||||||
import javafx.scene.Node
|
import javafx.scene.Node
|
||||||
import java.text.CharacterIterator
|
import java.text.CharacterIterator
|
||||||
@ -54,9 +57,8 @@ class BaseComponent : ChatComponent {
|
|||||||
|
|
||||||
val formattingChar = iterator.next()
|
val formattingChar = iterator.next()
|
||||||
|
|
||||||
ChatColors.getColorByFormattingChar(formattingChar)?.let {
|
ChatColors.VALUES.getOrNull(Character.digit(formattingChar, 16))?.let {
|
||||||
push()
|
push()
|
||||||
currentColor = it
|
|
||||||
} ?: ChatFormattingCodes.getChatFormattingCodeByChar(formattingChar)?.let {
|
} ?: ChatFormattingCodes.getChatFormattingCodeByChar(formattingChar)?.let {
|
||||||
push()
|
push()
|
||||||
|
|
||||||
@ -92,7 +94,7 @@ class BaseComponent : ChatComponent {
|
|||||||
if (colorName.startsWith("#")) {
|
if (colorName.startsWith("#")) {
|
||||||
colorName.asColor()
|
colorName.asColor()
|
||||||
} else {
|
} else {
|
||||||
ChatColors.getColorByName(colorName)
|
ChatCode.FORMATTING_CODES[colorName]?.nullCast<RGBColor>()
|
||||||
}
|
}
|
||||||
} ?: parent?.color
|
} ?: parent?.color
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ package de.bixilon.minosoft.gui.rendering.hud
|
|||||||
|
|
||||||
import de.bixilon.minosoft.Minosoft
|
import de.bixilon.minosoft.Minosoft
|
||||||
import de.bixilon.minosoft.config.config.game.controls.KeyBindingsNames
|
import de.bixilon.minosoft.config.config.game.controls.KeyBindingsNames
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
import de.bixilon.minosoft.gui.rendering.RenderConstants
|
import de.bixilon.minosoft.gui.rendering.RenderConstants
|
||||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||||
import de.bixilon.minosoft.gui.rendering.Renderer
|
import de.bixilon.minosoft.gui.rendering.Renderer
|
||||||
|
@ -32,15 +32,6 @@ data class HUDAtlasElement(
|
|||||||
override val size: Vec2i
|
override val size: Vec2i
|
||||||
get() = binding.size
|
get() = binding.size
|
||||||
|
|
||||||
val uvs: Array<Vec2> get() {
|
|
||||||
return arrayOf(
|
|
||||||
Vec2(uvStart.x, uvStart.y),
|
|
||||||
Vec2(uvStart.x, uvEnd.y),
|
|
||||||
Vec2(uvEnd.x, uvStart.y),
|
|
||||||
Vec2(uvEnd.x, uvEnd.y),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun postInit() {
|
fun postInit() {
|
||||||
uvStart = (Vec2(binding.start) + RenderConstants.PIXEL_UV_PIXEL_ADD) * texture.arraySinglePixelFactor
|
uvStart = (Vec2(binding.start) + RenderConstants.PIXEL_UV_PIXEL_ADD) * texture.arraySinglePixelFactor
|
||||||
uvEnd = Vec2(binding.end) * texture.arraySinglePixelFactor
|
uvEnd = Vec2(binding.end) * texture.arraySinglePixelFactor
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.hud.elements
|
package de.bixilon.minosoft.gui.rendering.hud.elements
|
||||||
|
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
import glm_.vec2.Vec2i
|
import glm_.vec2.Vec2i
|
||||||
|
|
||||||
enum class HUDElementPositionAnchors(val resourceLocation: ResourceLocation, val quadTransform: (Vec2i, Vec2i) -> Array<Vec2i>) {
|
enum class HUDElementPositionAnchors(val resourceLocation: ResourceLocation, val quadTransform: (Vec2i, Vec2i) -> Array<Vec2i>) {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.hud.elements.position
|
package de.bixilon.minosoft.gui.rendering.hud.elements.position
|
||||||
|
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY
|
||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil.ONES
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.ONES
|
||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec2
|
import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec2
|
||||||
@ -8,9 +8,9 @@ import glm_.vec2.Vec2
|
|||||||
import glm_.vec2.Vec2i
|
import glm_.vec2.Vec2i
|
||||||
|
|
||||||
enum class HUDElementPositionAnchors(
|
enum class HUDElementPositionAnchors(
|
||||||
val resourceLocation: ResourceLocation,
|
val resourceLocation: ResourceLocation,
|
||||||
val quadTransform: (Vec2i, Vec2i) -> Array<Vec2i>,
|
val quadTransform: (Vec2i, Vec2i) -> Array<Vec2i>,
|
||||||
val positionTransform: Vec2
|
val positionTransform: Vec2
|
||||||
) {
|
) {
|
||||||
// quad transform order: top left, bottom left, bottom right, top right
|
// quad transform order: top left, bottom left, bottom right, top right
|
||||||
CENTER(ResourceLocation("minosoft:center"),
|
CENTER(ResourceLocation("minosoft:center"),
|
||||||
|
@ -13,12 +13,6 @@
|
|||||||
|
|
||||||
package de.bixilon.minosoft.gui.rendering.hud.elements.primitive
|
package de.bixilon.minosoft.gui.rendering.hud.elements.primitive
|
||||||
|
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
|
||||||
import de.bixilon.minosoft.data.text.RGBColor
|
|
||||||
import de.bixilon.minosoft.gui.rendering.hud.HUDRenderer
|
|
||||||
import de.bixilon.minosoft.gui.rendering.hud.elements.HUDElementPositionAnchors
|
|
||||||
import de.bixilon.minosoft.gui.rendering.hud.elements.HUDElementVec2
|
|
||||||
import glm_.mat4x4.Mat4
|
|
||||||
import de.bixilon.minosoft.gui.rendering.hud.HUDRenderer
|
import de.bixilon.minosoft.gui.rendering.hud.HUDRenderer
|
||||||
import de.bixilon.minosoft.gui.rendering.hud.elements.position.HUDElementPositionAnchors
|
import de.bixilon.minosoft.gui.rendering.hud.elements.position.HUDElementPositionAnchors
|
||||||
import de.bixilon.minosoft.gui.rendering.hud.elements.position.HUDElementVec2
|
import de.bixilon.minosoft.gui.rendering.hud.elements.position.HUDElementVec2
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.hud.elements.primitive
|
package de.bixilon.minosoft.gui.rendering.hud.elements.primitive
|
||||||
|
|
||||||
import de.bixilon.minosoft.Minosoft
|
import de.bixilon.minosoft.Minosoft
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
import de.bixilon.minosoft.gui.rendering.hud.HUDRenderer
|
import de.bixilon.minosoft.gui.rendering.hud.HUDRenderer
|
||||||
import de.bixilon.minosoft.gui.rendering.hud.elements.position.HUDElementPositionAnchors
|
import de.bixilon.minosoft.gui.rendering.hud.elements.position.HUDElementPositionAnchors
|
||||||
import de.bixilon.minosoft.gui.rendering.hud.elements.position.HUDElementVec2
|
import de.bixilon.minosoft.gui.rendering.hud.elements.position.HUDElementVec2
|
||||||
|
@ -3,10 +3,7 @@ package de.bixilon.minosoft.gui.rendering.hud.elements.primitive
|
|||||||
import com.squareup.moshi.FromJson
|
import com.squareup.moshi.FromJson
|
||||||
import com.squareup.moshi.JsonWriter
|
import com.squareup.moshi.JsonWriter
|
||||||
import com.squareup.moshi.ToJson
|
import com.squareup.moshi.ToJson
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
import de.bixilon.minosoft.gui.rendering.hud.elements.HUDElementPositionAnchors
|
|
||||||
import de.bixilon.minosoft.gui.rendering.hud.elements.HUDElementVec2
|
|
||||||
import de.bixilon.minosoft.util.json.RGBColorSerializer
|
|
||||||
import de.bixilon.minosoft.gui.rendering.hud.elements.position.HUDElementVec2
|
import de.bixilon.minosoft.gui.rendering.hud.elements.position.HUDElementVec2
|
||||||
import de.bixilon.minosoft.gui.rendering.hud.elements.text.HUDTextElement
|
import de.bixilon.minosoft.gui.rendering.hud.elements.text.HUDTextElement
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.hud.elements.primitive
|
package de.bixilon.minosoft.gui.rendering.hud.elements.primitive
|
||||||
|
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
import de.bixilon.minosoft.data.text.ChatColors
|
import de.bixilon.minosoft.data.text.ChatColors
|
||||||
import de.bixilon.minosoft.data.text.RGBColor
|
import de.bixilon.minosoft.data.text.RGBColor
|
||||||
import de.bixilon.minosoft.gui.rendering.RenderConstants
|
import de.bixilon.minosoft.gui.rendering.RenderConstants
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.hud.elements.text
|
package de.bixilon.minosoft.gui.rendering.hud.elements.text
|
||||||
|
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
|
|
||||||
enum class HUDTextElementAlignments(val resourceLocation: ResourceLocation, val transform: (Float, Float) -> Float) {
|
enum class HUDTextElementAlignments(val resourceLocation: ResourceLocation, val transform: (Float, Float) -> Float) {
|
||||||
LEFT(ResourceLocation("minosoft:left"), { _, position ->
|
LEFT(ResourceLocation("minosoft:left"), { _, position ->
|
||||||
|
@ -64,13 +64,12 @@ object VecUtil {
|
|||||||
val Vec2.Companion.ONES: Vec2
|
val Vec2.Companion.ONES: Vec2
|
||||||
get() = Vec2(1f, 1f)
|
get() = Vec2(1f, 1f)
|
||||||
|
|
||||||
|
fun JsonElement.toVec3(default: Vec3? = null): Vec3 {
|
||||||
fun JsonElement.toVec3(): Vec3 {
|
|
||||||
return when (this) {
|
return when (this) {
|
||||||
is JsonArray -> Vec3(this[0].asFloat, this[1].asFloat, this[2].asFloat)
|
is JsonArray -> Vec3(this[0].asFloat, this[1].asFloat, this[2].asFloat)
|
||||||
is JsonObject -> Vec3(this["x"]?.asFloat ?: 0, this["y"]?.asFloat ?: 0, this["z"]?.asFloat ?: 0)
|
is JsonObject -> Vec3(this["x"]?.asFloat ?: 0, this["y"]?.asFloat ?: 0, this["z"]?.asFloat ?: 0)
|
||||||
is JsonPrimitive -> Vec3(this.asFloat)
|
is JsonPrimitive -> Vec3(this.asFloat)
|
||||||
else -> throw IllegalArgumentException("Not a Vec3!")
|
else -> default ?: throw IllegalArgumentException("Not a Vec3!")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -514,20 +513,4 @@ object VecUtil {
|
|||||||
z = 0.0
|
z = 0.0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
operator fun Vec2i.get(axis: Axes): Int {
|
|
||||||
return when (axis) {
|
|
||||||
Axes.X -> this.x
|
|
||||||
Axes.Y -> this.y
|
|
||||||
Axes.Z -> throw java.lang.IllegalArgumentException("Z does not exist")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
operator fun Vec2.get(axis: Axes): Float {
|
|
||||||
return when (axis) {
|
|
||||||
Axes.X -> this.x
|
|
||||||
Axes.Y -> this.y
|
|
||||||
Axes.Z -> throw java.lang.IllegalArgumentException("Z does not exist")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user