block outline: save color in config

This commit is contained in:
Bixilon 2021-05-16 17:48:56 +02:00
parent 38248ee9fa
commit 93dc93eea7
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
3 changed files with 19 additions and 15 deletions

View File

@ -14,8 +14,12 @@
package de.bixilon.minosoft.config.config.game package de.bixilon.minosoft.config.config.game
import com.squareup.moshi.Json import com.squareup.moshi.Json
import de.bixilon.minosoft.data.text.ChatColors
import de.bixilon.minosoft.data.text.RGBColor
data class BlockOutline( data class BlockOutline(
@Json(name = "collision_boxes") val collisionBoxes: Boolean = false, @Json(name = "collision_boxes") val collisionBoxes: Boolean = false,
@Json(name = "disable_z_buffer") val disableZBuffer: Boolean = false, @Json(name = "disable_z_buffer") val disableZBuffer: Boolean = false,
@Json(name = "outline_color") val outlineColor: RGBColor = ChatColors.RED,
@Json(name = "collision_color") val collisionColor: RGBColor = ChatColors.BLUE,
) )

View File

@ -17,7 +17,6 @@ import de.bixilon.minosoft.Minosoft
import de.bixilon.minosoft.data.Gamemodes import de.bixilon.minosoft.data.Gamemodes
import de.bixilon.minosoft.data.mappings.ResourceLocation import de.bixilon.minosoft.data.mappings.ResourceLocation
import de.bixilon.minosoft.data.mappings.blocks.BlockState import de.bixilon.minosoft.data.mappings.blocks.BlockState
import de.bixilon.minosoft.data.text.ChatColors
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
@ -48,9 +47,6 @@ class BlockOutlineRenderer(
resourceLocation = ResourceLocation(ProtocolDefinition.MINOSOFT_NAMESPACE, "chunk/block/outline"), resourceLocation = ResourceLocation(ProtocolDefinition.MINOSOFT_NAMESPACE, "chunk/block/outline"),
) )
private val outlineColor = ChatColors.RED
private val collisionColor = ChatColors.BLUE
override fun init() { override fun init() {
outlineShader.load(connection.assetsManager) outlineShader.load(connection.assetsManager)
} }
@ -115,10 +111,10 @@ class BlockOutlineRenderer(
glDepthFunc(GL_ALWAYS) glDepthFunc(GL_ALWAYS)
} }
outlineShader.use() outlineShader.use()
outlineShader.setRGBColor("tintColor", outlineColor) outlineShader.setRGBColor("tintColor", Minosoft.config.config.game.other.blockOutline.outlineColor)
outlineMesh.draw() outlineMesh.draw()
collisionMesh?.let { collisionMesh?.let {
outlineShader.setRGBColor("tintColor", collisionColor) outlineShader.setRGBColor("tintColor", Minosoft.config.config.game.other.blockOutline.collisionColor)
it.draw() it.draw()
} }
glEnable(GL_CULL_FACE) glEnable(GL_CULL_FACE)

View File

@ -15,19 +15,23 @@ package de.bixilon.minosoft.util.json
import com.squareup.moshi.* import com.squareup.moshi.*
import de.bixilon.minosoft.data.text.RGBColor import de.bixilon.minosoft.data.text.RGBColor
import de.bixilon.minosoft.data.text.RGBColor.Companion.asColor
import de.bixilon.minosoft.data.text.RGBColor.Companion.asRGBColor import de.bixilon.minosoft.data.text.RGBColor.Companion.asRGBColor
object RGBColorSerializer : JsonAdapter<RGBColor>() { object RGBColorSerializer : JsonAdapter<RGBColor>() {
@FromJson @FromJson
override fun fromJson(jsonReader: JsonReader): RGBColor? { override fun fromJson(jsonReader: JsonReader): RGBColor? {
if (jsonReader.peek() == JsonReader.Token.NULL) { return when (jsonReader.peek()) {
return null JsonReader.Token.NUMBER -> {
val rgb = jsonReader.nextInt()
if (rgb == 0) {
return null
}
return rgb.asRGBColor()
}
JsonReader.Token.STRING -> jsonReader.nextString().asColor()
else -> null
} }
val rgb = jsonReader.nextInt()
if (rgb == 0) {
return null
}
return rgb.asRGBColor()
} }
@ToJson @ToJson
@ -36,9 +40,9 @@ object RGBColorSerializer : JsonAdapter<RGBColor>() {
jsonWriter.nullValue() jsonWriter.nullValue()
return return
} }
if (color.rgb == 0) { if (color.rgba == 0) {
jsonWriter.nullValue() jsonWriter.nullValue()
} }
jsonWriter.value(color.rgb) jsonWriter.value(color.toString())
} }
} }