From 66c1a1357a1c457427334e801c22ca4c6ba12fcf Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sun, 28 Apr 2024 01:18:21 +0900 Subject: [PATCH] control chars for movabletype --- src/net/torvald/terrarumsansbitmap/MovableType.kt | 13 ++++++++++++- .../terrarumsansbitmap/gdx/TerrarumSansBitmap.kt | 5 +++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/net/torvald/terrarumsansbitmap/MovableType.kt b/src/net/torvald/terrarumsansbitmap/MovableType.kt index 25a913c..b353448 100644 --- a/src/net/torvald/terrarumsansbitmap/MovableType.kt +++ b/src/net/torvald/terrarumsansbitmap/MovableType.kt @@ -1,5 +1,6 @@ package net.torvald.terrarumsansbitmap +import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.Batch import com.badlogic.gdx.utils.Disposable import net.torvald.terrarumsansbitmap.gdx.CodePoint @@ -278,19 +279,29 @@ class MovableType( val tex = it.block.glyphLayout!!.linotype val linotypeScaleOffsetX = -TerrarumSansBitmap.linotypePaddingX * (font.scale - 1) val linotypeScaleOffsetY = -TerrarumSansBitmap.linotypePaddingY * (font.scale - 1) * (if (font.flipY) -1 else 1) + lateinit var oldColour: Color + + if (it.colour != null) { + oldColour = batch.color.cpy() + batch.color = it.colour + } + batch.draw(tex, x + it.posX * font.scale - 16 + linotypeScaleOffsetX.toFloat(), y + lineNum * (lineHeight * font.scale) - 8 + linotypeScaleOffsetY.toFloat(), tex.width * font.scale.toFloat(), tex.height * font.scale.toFloat() ) + + if (it.colour != null) + batch.color = oldColour } // font.draw(batch, "I", x, y + lineNum * lineHeight + 14) } } - data class Block(var posX: Int, val block: TextCacheObj) { // a single word + data class Block(var posX: Int, val block: TextCacheObj, var colour: Color? = null) { // a single word fun getEndPos() = this.posX + this.block.width } diff --git a/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt b/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt index 8dd5234..1d75666 100755 --- a/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt +++ b/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt @@ -749,9 +749,14 @@ class TerrarumSansBitmap( private fun buildWidthTableInternal() { for (i in 0 until 16) { + glyphProps[i] = GlyphProps(0) glyphProps[MOVABLE_BLOCK_1 + i] = GlyphProps(i + 1) glyphProps[MOVABLE_BLOCK_M1 + i] = GlyphProps(-i - 1) } + + for (i in 0 until 256) { + glyphProps[0xF800 + i] = GlyphProps(0) + } } fun getWidth(text: String) = getWidthNormalised(text.toCodePoints())