From c78c1b132a57981c65030cc9b82710289bb2428d Mon Sep 17 00:00:00 2001 From: Song Minjae Date: Mon, 20 Feb 2017 01:43:26 +0900 Subject: [PATCH] font upd Former-commit-id: bf42a690c7cd199d4f2ec00855213b83aecb144b Former-commit-id: b992aac69b93c5d1632e96c4985cf61a6419b6a8 --- README.md | 3 ++ src/com/sudoplay/joise/generator.tar | Bin 0 -> 26112 bytes src/net/torvald/imagefont/GameFontImpl.kt | 16 ++++++++- src/net/torvald/terrarum/StateFontTester.kt | 11 ++++-- src/net/torvald/terrarum/Terrarum.kt | 35 ++++++++++++-------- src/net/torvald/terrarum/ui/UIQuickBar.kt | 2 +- 6 files changed, 50 insertions(+), 17 deletions(-) create mode 100644 src/com/sudoplay/joise/generator.tar diff --git a/README.md b/README.md index 55ef2482d..f2c01b5a5 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,9 @@ Note: Right-to-left languages (arabic, hebrew, etc.) are not supported. 4. Export the image as TGA 5. Include the converted PNG to the project +### Game font ### + +The font for the game is managed on [this GitHub repository](https://github.com/minjaesong/Terrarum-sans-bitmap). Make your contribution there and file a pull request on this project. diff --git a/src/com/sudoplay/joise/generator.tar b/src/com/sudoplay/joise/generator.tar new file mode 100644 index 0000000000000000000000000000000000000000..267bf2de0ea9915516274057745e0577c7ad4f17 GIT binary patch literal 26112 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 Fe*x;h@8AFc literal 0 HcmV?d00001 diff --git a/src/net/torvald/imagefont/GameFontImpl.kt b/src/net/torvald/imagefont/GameFontImpl.kt index 65f73e1c9..3a67f5ba1 100644 --- a/src/net/torvald/imagefont/GameFontImpl.kt +++ b/src/net/torvald/imagefont/GameFontImpl.kt @@ -1,5 +1,6 @@ package net.torvald.imagefont +import net.torvald.terrarum.Terrarum import org.newdawn.slick.* /** @@ -29,7 +30,11 @@ class GameFontImpl : GameFontBase() { , W_UNIHAN, H_UNIHAN );*/ GameFontBase.cyrilic = SpriteSheet( - "./assets/graphics/fonts/cyrilic_variable.tga", 15, 19, 1) + when (Terrarum.gameLocale.substring(0..1)) { + "bg" -> "./assets/graphics/fonts/cyrilic_bulgarian_variable.tga" + "sr" -> "./assets/graphics/fonts/cyrilic_serbian_variable.tga" + else -> "./assets/graphics/fonts/cyrilic_variable.tga" + }, 15, 19, 1) GameFontBase.fullwidthForms = SpriteSheet( "./assets/graphics/fonts/fullwidth_forms.tga", GameFontBase.W_UNIHAN, GameFontBase.H_UNIHAN) GameFontBase.uniPunct = SpriteSheet( @@ -77,4 +82,13 @@ class GameFontImpl : GameFontBase() { buildWidthTable(cyrilic, 0x400, 0..0x5F) buildWidthTable(greekSheet, 0x370, 0..0x5F) } + + fun reload() { + GameFontBase.cyrilic = SpriteSheet( + when (Terrarum.gameLocale.substring(0..1)) { + "bg" -> "./assets/graphics/fonts/cyrilic_bulgarian_variable.tga" + "sr" -> "./assets/graphics/fonts/cyrilic_serbian_variable.tga" + else -> "./assets/graphics/fonts/cyrilic_variable.tga" + }, 15, 19, 1) + } } diff --git a/src/net/torvald/terrarum/StateFontTester.kt b/src/net/torvald/terrarum/StateFontTester.kt index 86c7b573c..1b3ba322d 100644 --- a/src/net/torvald/terrarum/StateFontTester.kt +++ b/src/net/torvald/terrarum/StateFontTester.kt @@ -29,8 +29,6 @@ nopqrstuvwxyz override fun init(gc: GameContainer, game: StateBasedGame) { canvas = Graphics(1024, 1024) - Terrarum.gameLocale = "fiFI" - /*segfont = SpriteSheetFont( SpriteSheet("./assets/graphics/fonts/24-seg_red.tga", 22, 31), ' ' @@ -121,6 +119,15 @@ nopqrstuvwxyz g.drawString(s, 10f, 70f + 20 * i) } + /*val text = arrayOf( + "ru: Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства", + "bg: Под южно дърво, цъфтящо в синьо, бягаше малко пухкаво зайче", + "sr: Ајшо, лепото и чежњо, за љубав срца мога дођи у Хаџиће на кафу" + ) + + (0..2).forEach { + g.drawString(text[it], 10f, 70f + 20 * it) + }*/ } diff --git a/src/net/torvald/terrarum/Terrarum.kt b/src/net/torvald/terrarum/Terrarum.kt index a638637dd..fea5668a6 100644 --- a/src/net/torvald/terrarum/Terrarum.kt +++ b/src/net/torvald/terrarum/Terrarum.kt @@ -67,17 +67,6 @@ constructor(gamename: String) : StateBasedGame(gamename) { val readFromDisk = readConfigJson() if (!readFromDisk) readConfigJson() - // get locale from config - val gameLocaleFromConfig = gameConfig.getAsString("language") ?: sysLang - - // if bad game locale were set, use system locale - if (gameLocaleFromConfig.length < 2) - gameLocale = sysLang - else - gameLocale = gameLocaleFromConfig - - println("[Terrarum] Locale: " + gameLocale) - try { Controllers.getController(0) environment = if (getConfigString("pcgamepadenv") == "console") @@ -94,9 +83,24 @@ constructor(gamename: String) : StateBasedGame(gamename) { override fun initStatesList(gc: GameContainer) { gc.input.enableKeyRepeat() + + // get locale from config + val gameLocaleFromConfig = gameConfig.getAsString("language") ?: sysLang + + // if bad game locale were set, use system locale + if (gameLocaleFromConfig.length < 2) + gameLocale = sysLang + else + gameLocale = gameLocaleFromConfig + + println("[Terrarum] Locale: " + gameLocale) + + fontGame = GameFontImpl() fontSmallNumbers = TinyAlphNum() + + // search for real controller // exclude controllers with name "Mouse", "keyboard" val notControllerRegex = Regex("mouse|keyboard") @@ -212,9 +216,11 @@ constructor(gamename: String) : StateBasedGame(gamename) { field = value.substring(0..1) else field = value + + if (fontGame != null) (fontGame as GameFontImpl).reload() } - lateinit var fontGame: Font + var fontGame: Font? = null private set lateinit var fontSmallNumbers: Font private set @@ -282,6 +288,9 @@ constructor(gamename: String) : StateBasedGame(gamename) { const val NAME = "Terrarum" fun main(args: Array) { + System.setProperty("java.library.path", "lib") + System.setProperty("org.lwjgl.librarypath", File("lib").absolutePath) + try { appgc = AppGameContainer(Terrarum(NAME)) appgc.setDisplayMode(WIDTH, HEIGHT, false) @@ -301,7 +310,7 @@ constructor(gamename: String) : StateBasedGame(gamename) { appgc.start() } - catch (ex: SlickException) { + catch (ex: Exception) { val logger = Logger.getLogger(Terrarum::class.java.name) val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH-mm-ss") val calendar = Calendar.getInstance() diff --git a/src/net/torvald/terrarum/ui/UIQuickBar.kt b/src/net/torvald/terrarum/ui/UIQuickBar.kt index 46f5448f6..6e6654ef3 100644 --- a/src/net/torvald/terrarum/ui/UIQuickBar.kt +++ b/src/net/torvald/terrarum/ui/UIQuickBar.kt @@ -12,7 +12,7 @@ import org.newdawn.slick.Input class UIQuickBar : UICanvas, MouseControlled { private val gutter = 8 override var width: Int = (ItemSlotImageBuilder.slotImageSize + gutter) * SLOT_COUNT - override var height: Int = ItemSlotImageBuilder.slotImageSize + 4 + Terrarum.fontGame.lineHeight + override var height: Int = ItemSlotImageBuilder.slotImageSize + 4 + Terrarum.fontGame!!.lineHeight /** * In milliseconds */