From 062abfff3612e172f5db03719102f24b73debc52 Mon Sep 17 00:00:00 2001 From: Song Minjae Date: Thu, 7 Apr 2016 00:24:27 +0900 Subject: [PATCH] tweak in Kana font, fonts can now produce colours Former-commit-id: 4f83fbe93e86ffae090986b58802a2fe0c1fd83e Former-commit-id: 9b0ae019b5dae16236c25597ca31e6aa3b6fb78c --- res/graphics/fonts/kana.png | Bin 4481 -> 22841 bytes src/com/Torvald/ImageFont/GameFontBase.kt | 88 ++++++++++++++----- src/com/Torvald/Terrarum/LangPack/Lang.kt | 2 +- src/com/Torvald/Terrarum/Terrarum.kt | 19 ++-- src/com/torvald/terrarum/MISC_FEATURES.md | 11 +-- src/com/torvald/terrarum/ui/MessageWindow.kt | 17 ++-- src/com/torvald/terrarum/ui/UIHandler.kt | 2 +- 7 files changed, 93 insertions(+), 46 deletions(-) diff --git a/res/graphics/fonts/kana.png b/res/graphics/fonts/kana.png index 08d94ee52798db67ea6dfeb32b2f75a6a205602f..75fc298dc25bd36beaff776fcb9cddc5a3d9bbdc 100644 GIT binary patch literal 22841 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 0 && isHangul(s[i - 1])) -3 else 0, Math.round(y) + - if (prevInstance == SHEET_CJK_PUNCT) - -1 - else if (prevInstance == SHEET_FW_UNI) - (H - H_HANGUL) / 2 - else 0, - sheetX, sheetY) + + if (i > 0 && isHangul(s[i - 1])) -3 else 0, + Math.round(y) + if (prevInstance == SHEET_CJK_PUNCT) -1 + else if (prevInstance == SHEET_FW_UNI) (H - H_HANGUL) / 2 + else 0, + sheetX, sheetY + )*/ + sheetKey[prevInstance].getSubImage(sheetX, sheetY).draw( + Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat() // Interchar: pull punct right next to hangul to the left + + if (i > 0 && isHangul(s[i - 1])) -3f else 0f, + Math.round(y).toFloat() + (if (prevInstance == SHEET_CJK_PUNCT) -1 + else if (prevInstance == SHEET_FW_UNI) (H - H_HANGUL) / 2 + else 0).toFloat(), + color + ) } catch (e: ArrayIndexOutOfBoundsException) { // character that does not exist in the sheet. No render, pass. @@ -332,7 +374,7 @@ constructor() : Font { } if (prevInstance != -1) { - sheetKey[prevInstance].endUse() + //sheetKey[prevInstance].endUse() } } diff --git a/src/com/Torvald/Terrarum/LangPack/Lang.kt b/src/com/Torvald/Terrarum/LangPack/Lang.kt index 89ec8ae2f..fe5f413ec 100644 --- a/src/com/Torvald/Terrarum/LangPack/Lang.kt +++ b/src/com/Torvald/Terrarum/LangPack/Lang.kt @@ -54,7 +54,7 @@ object Lang { // reload correct (C/J) unihan fonts if applicable try { - (Terrarum.gameFontWhite as GameFontWhite).reloadUnihan() + (Terrarum.gameFont as GameFontWhite).reloadUnihan() } catch (e: SlickException) { } diff --git a/src/com/Torvald/Terrarum/Terrarum.kt b/src/com/Torvald/Terrarum/Terrarum.kt index 14539bd48..c636ebc7c 100644 --- a/src/com/Torvald/Terrarum/Terrarum.kt +++ b/src/com/Torvald/Terrarum/Terrarum.kt @@ -3,7 +3,6 @@ package com.torvald.terrarum import com.torvald.imagefont.GameFontWhite import com.torvald.JsonFetcher import com.torvald.JsonWriter -import com.torvald.terrarum.langpack.Lang import org.lwjgl.input.Controllers import org.lwjgl.opengl.GL11 import org.newdawn.slick.AppGameContainer @@ -12,7 +11,6 @@ import org.newdawn.slick.GameContainer import org.newdawn.slick.SlickException import org.newdawn.slick.state.StateBasedGame import java.io.File -import java.io.FileWriter import java.io.IOException import java.text.SimpleDateFormat import java.util.* @@ -50,7 +48,7 @@ constructor(gamename: String) : StateBasedGame(gamename) { @Throws(SlickException::class) override fun initStatesList(gc: GameContainer) { - gameFontWhite = GameFontWhite() + gameFont = GameFontWhite() hasController = gc.input.controllerCount > 0 if (hasController) { @@ -99,7 +97,7 @@ constructor(gamename: String) : StateBasedGame(gamename) { var gameLocale = "" // locale override - lateinit var gameFontWhite: Font + lateinit var gameFont: Font val SCENE_ID_HOME = 1 val SCENE_ID_GAME = 3 @@ -354,10 +352,21 @@ fun main(args: Array) = Terrarum.main(args) fun setBlendModeMul() { GL11.glEnable(GL11.GL_BLEND) + GL11.glColorMask(true, true, true, true) GL11.glBlendFunc(GL11.GL_DST_COLOR, GL11.GL_ONE_MINUS_SRC_ALPHA) } fun setBlendModeNormal() { GL11.glEnable(GL11.GL_BLEND) + GL11.glColorMask(true, true, true, true) GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA) -} \ No newline at end of file +} + +fun setBlendModeAlphaMap() { + GL11.glDisable(GL11.GL_BLEND) + GL11.glColorMask(false, false, false, true) +} + +fun disableBlend() { + GL11.glDisable(GL11.GL_BLEND) +} diff --git a/src/com/torvald/terrarum/MISC_FEATURES.md b/src/com/torvald/terrarum/MISC_FEATURES.md index c1a17f316..3960f2add 100644 --- a/src/com/torvald/terrarum/MISC_FEATURES.md +++ b/src/com/torvald/terrarum/MISC_FEATURES.md @@ -25,16 +25,9 @@ Connect two or more tracker head to play the array of trackers play simultaneous .json { - 0 = [long], - 1 = [long], - ... - 47 = [long], + notes = [arr, fixed size of 48], speed = 120 } - *long: array of bits that indicates the note is stricken (1) or not (0) - 0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000 - ↑G5 ↑C5 ↑C4 ↑C3 ↑C2 ↑C1 E0↑ - (Assuming C3 (32nd bit) as middle 'C') - + *int: (0-63) number of the note pitch that is struck. 32: Middle C (C3) *speed: in BPM \ No newline at end of file diff --git a/src/com/torvald/terrarum/ui/MessageWindow.kt b/src/com/torvald/terrarum/ui/MessageWindow.kt index 64225cd0a..c01715c23 100644 --- a/src/com/torvald/terrarum/ui/MessageWindow.kt +++ b/src/com/torvald/terrarum/ui/MessageWindow.kt @@ -2,6 +2,8 @@ package com.torvald.terrarum.ui import com.torvald.imagefont.GameFontWhite import com.jme3.math.FastMath +import com.torvald.terrarum.disableBlend +import com.torvald.terrarum.setBlendModeNormal import org.lwjgl.opengl.GL11 import org.newdawn.slick.* @@ -20,6 +22,7 @@ constructor(override var width: Int, isBlackVariant: Boolean) : UICanvas { private val messageWindowRadius: Int private var uiFont: Font? = null + private var fontCol: Color = if (!isBlackVariant) Color.black else Color.white private val GLYPH_HEIGHT = 20 override var openCloseTime: Int = OPEN_CLOSE_TIME @@ -31,18 +34,16 @@ constructor(override var width: Int, isBlackVariant: Boolean) : UICanvas { init { if (!isBlackVariant) { - //segmentLeft = new Image("./res/graphics/gui/message_twoline_white_left.png"); - //segmentRight = new Image("./res/graphics/gui/message_twoline_white_right.png"); - //segmentBody = new Image("./res/graphics/gui/message_twoline_white_body.png"); - //uiFont = new GameFontBlack(); - TODO("Black font not supported for now") + segmentLeft = Image("./res/graphics/gui/message_twoline_white_left.png"); + segmentRight = Image("./res/graphics/gui/message_twoline_white_right.png"); + segmentBody = Image("./res/graphics/gui/message_twoline_white_body.png"); } else { segmentLeft = Image("./res/graphics/gui/message_twoline_black_left.png") segmentRight = Image("./res/graphics/gui/message_twoline_black_right.png") segmentBody = Image("./res/graphics/gui/message_twoline_black_body.png") - uiFont = GameFontWhite() } + uiFont = GameFontWhite() height = segmentLeft!!.height messageWindowRadius = segmentLeft!!.width messagesList = arrayOf("", "") @@ -60,7 +61,7 @@ constructor(override var width: Int, isBlackVariant: Boolean) : UICanvas { override fun render(gc: GameContainer, g: Graphics) { val canvasG = uidrawCanvas.graphics - canvasG.setDrawMode(Graphics.MODE_NORMAL) + disableBlend() drawSegments(canvasG) canvasG.setDrawMode(Graphics.MODE_ALPHA_MAP) drawSegments(canvasG) @@ -69,9 +70,11 @@ constructor(override var width: Int, isBlackVariant: Boolean) : UICanvas { canvasG.setDrawMode(Graphics.MODE_NORMAL) for (i in 0..Math.min(messagesList.size, MESSAGES_DISPLAY) - 1) { + canvasG.color = fontCol canvasG.drawString(messagesList[i], (messageWindowRadius + 4).toFloat(), (messageWindowRadius + GLYPH_HEIGHT * i).toFloat()) } + setBlendModeNormal() g.drawImage(uidrawCanvas, 0f, 0f, Color(1f,1f,1f,opacity)) canvasG.clear() diff --git a/src/com/torvald/terrarum/ui/UIHandler.kt b/src/com/torvald/terrarum/ui/UIHandler.kt index 3bc7c088a..5e0ea06c1 100644 --- a/src/com/torvald/terrarum/ui/UIHandler.kt +++ b/src/com/torvald/terrarum/ui/UIHandler.kt @@ -93,7 +93,7 @@ constructor(val UI: UICanvas) { fun render(gc: GameContainer, gameGraphicInstance: Graphics) { if (visible || alwaysVisible) { UIGraphicInstance.clear() - UIGraphicInstance.font = Terrarum.gameFontWhite + UIGraphicInstance.font = Terrarum.gameFont UI.render(gc, UIGraphicInstance) gameGraphicInstance.drawImage(UIDrawnCanvas,