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.sound.SoundConfig
|
||||
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
|
||||
|
||||
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 de.bixilon.minosoft.data.locale.minecraft.Translator
|
||||
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.util.KUtil.nullCast
|
||||
import javafx.collections.ObservableList
|
||||
import javafx.scene.Node
|
||||
import java.text.CharacterIterator
|
||||
@ -54,9 +57,8 @@ class BaseComponent : ChatComponent {
|
||||
|
||||
val formattingChar = iterator.next()
|
||||
|
||||
ChatColors.getColorByFormattingChar(formattingChar)?.let {
|
||||
ChatColors.VALUES.getOrNull(Character.digit(formattingChar, 16))?.let {
|
||||
push()
|
||||
currentColor = it
|
||||
} ?: ChatFormattingCodes.getChatFormattingCodeByChar(formattingChar)?.let {
|
||||
push()
|
||||
|
||||
@ -92,7 +94,7 @@ class BaseComponent : ChatComponent {
|
||||
if (colorName.startsWith("#")) {
|
||||
colorName.asColor()
|
||||
} else {
|
||||
ChatColors.getColorByName(colorName)
|
||||
ChatCode.FORMATTING_CODES[colorName]?.nullCast<RGBColor>()
|
||||
}
|
||||
} ?: parent?.color
|
||||
|
||||
|
@ -15,7 +15,7 @@ package de.bixilon.minosoft.gui.rendering.hud
|
||||
|
||||
import de.bixilon.minosoft.Minosoft
|
||||
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.RenderWindow
|
||||
import de.bixilon.minosoft.gui.rendering.Renderer
|
||||
|
@ -32,15 +32,6 @@ data class HUDAtlasElement(
|
||||
override val size: Vec2i
|
||||
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() {
|
||||
uvStart = (Vec2(binding.start) + RenderConstants.PIXEL_UV_PIXEL_ADD) * texture.arraySinglePixelFactor
|
||||
uvEnd = Vec2(binding.end) * texture.arraySinglePixelFactor
|
||||
|
@ -1,6 +1,6 @@
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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.ONES
|
||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec2
|
||||
@ -8,9 +8,9 @@ import glm_.vec2.Vec2
|
||||
import glm_.vec2.Vec2i
|
||||
|
||||
enum class HUDElementPositionAnchors(
|
||||
val resourceLocation: ResourceLocation,
|
||||
val quadTransform: (Vec2i, Vec2i) -> Array<Vec2i>,
|
||||
val positionTransform: Vec2
|
||||
val resourceLocation: ResourceLocation,
|
||||
val quadTransform: (Vec2i, Vec2i) -> Array<Vec2i>,
|
||||
val positionTransform: Vec2
|
||||
) {
|
||||
// quad transform order: top left, bottom left, bottom right, top right
|
||||
CENTER(ResourceLocation("minosoft:center"),
|
||||
|
@ -13,12 +13,6 @@
|
||||
|
||||
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.elements.position.HUDElementPositionAnchors
|
||||
import de.bixilon.minosoft.gui.rendering.hud.elements.position.HUDElementVec2
|
||||
|
@ -1,7 +1,7 @@
|
||||
package de.bixilon.minosoft.gui.rendering.hud.elements.primitive
|
||||
|
||||
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.elements.position.HUDElementPositionAnchors
|
||||
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.JsonWriter
|
||||
import com.squareup.moshi.ToJson
|
||||
import de.bixilon.minosoft.data.mappings.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.data.registries.ResourceLocation
|
||||
import de.bixilon.minosoft.gui.rendering.hud.elements.position.HUDElementVec2
|
||||
import de.bixilon.minosoft.gui.rendering.hud.elements.text.HUDTextElement
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
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.RGBColor
|
||||
import de.bixilon.minosoft.gui.rendering.RenderConstants
|
||||
|
@ -1,6 +1,6 @@
|
||||
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) {
|
||||
LEFT(ResourceLocation("minosoft:left"), { _, position ->
|
||||
|
@ -64,13 +64,12 @@ object VecUtil {
|
||||
val Vec2.Companion.ONES: Vec2
|
||||
get() = Vec2(1f, 1f)
|
||||
|
||||
|
||||
fun JsonElement.toVec3(): Vec3 {
|
||||
fun JsonElement.toVec3(default: Vec3? = null): Vec3 {
|
||||
return when (this) {
|
||||
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 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
|
||||
}
|
||||
}
|
||||
|
||||
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