mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-12 11:34:05 +09:00
modularised lang
This commit is contained in:
BIN
assets/graphics/fonts/kana.tga
LFS
BIN
assets/graphics/fonts/kana.tga
LFS
Binary file not shown.
@@ -7,4 +7,5 @@ import net.torvald.terrarum.ModMgr
|
|||||||
static void invoke(String module) {
|
static void invoke(String module) {
|
||||||
ModMgr.GameBlockLoader.invoke(module)
|
ModMgr.GameBlockLoader.invoke(module)
|
||||||
ModMgr.GameItemLoader.invoke(module)
|
ModMgr.GameItemLoader.invoke(module)
|
||||||
|
ModMgr.GameLanguageLoader.invoke(module)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import net.torvald.CSVFetcher
|
|||||||
import net.torvald.terrarum.itemproperties.InventoryItem
|
import net.torvald.terrarum.itemproperties.InventoryItem
|
||||||
import net.torvald.terrarum.itemproperties.ItemCodex
|
import net.torvald.terrarum.itemproperties.ItemCodex
|
||||||
import net.torvald.terrarum.blockproperties.BlockCodex
|
import net.torvald.terrarum.blockproperties.BlockCodex
|
||||||
|
import net.torvald.terrarum.langpack.Lang
|
||||||
import org.apache.commons.csv.CSVFormat
|
import org.apache.commons.csv.CSVFormat
|
||||||
import org.apache.commons.csv.CSVParser
|
import org.apache.commons.csv.CSVParser
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -160,4 +161,13 @@ object ModMgr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
object GameLanguageLoader {
|
||||||
|
val langPath = "locales/"
|
||||||
|
|
||||||
|
@JvmStatic operator fun invoke(module: String) {
|
||||||
|
println("arstneitars")
|
||||||
|
Lang.load(getPath(module, langPath))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -29,15 +29,6 @@ nopqrstuvwxyz
|
|||||||
override fun init(gc: GameContainer, game: StateBasedGame) {
|
override fun init(gc: GameContainer, game: StateBasedGame) {
|
||||||
canvas = Graphics(1024, 1024)
|
canvas = Graphics(1024, 1024)
|
||||||
|
|
||||||
/*segfont = SpriteSheetFont(
|
|
||||||
SpriteSheet("./assets/graphics/fonts/24-seg_red.tga", 22, 31),
|
|
||||||
' '
|
|
||||||
)*/
|
|
||||||
|
|
||||||
mtfont = SpriteSheetFont(
|
|
||||||
SpriteSheet("./assets/graphics/fonts/mt-32.tga", 12, 16),
|
|
||||||
0.toChar()
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun update(gc: GameContainer, game: StateBasedGame, delta: Int) {
|
override fun update(gc: GameContainer, game: StateBasedGame, delta: Int) {
|
||||||
@@ -61,18 +52,18 @@ nopqrstuvwxyz
|
|||||||
|
|
||||||
//g.drawString("Syö salmiakkia perkele", 480f, 10f)
|
//g.drawString("Syö salmiakkia perkele", 480f, 10f)
|
||||||
|
|
||||||
/*val text = arrayOf(
|
val text = arrayOf(
|
||||||
"The bitmap font for game developers who seek good font that has real multilingual support,",
|
"The bitmap font for game developers who seek good font that has real multilingual support,",
|
||||||
"for free (as in freedom AND without cost).",
|
"for free (as in freedom AND without cost).",
|
||||||
"",
|
"",
|
||||||
"There are many bitmap fonts on the internet. You care for the multilingual support, but alas!",
|
"There are many bitmap fonts on the internet. You care for the multilingual support, but alas!",
|
||||||
"most of them does not support your language, vector fonts takes too much time to be loaded,",
|
"most of them do not support your language, vector fonts take too much time to load, and even",
|
||||||
"even then their legibility suffers because fuck built-in antialias.",
|
"then their legibility suffers because fuck built-in antialias.",
|
||||||
"You somehow found a good font, and it makes your game look like a linux terminal, and you say:",
|
"You somehow found a fine one, and it makes your game look like a linux terminal, and you say:",
|
||||||
"“what the fuck? Is this a game or should I rm -rf this shit‽”",
|
"“Well, better than nothing *sigh*; No, it’s ugly.”",
|
||||||
"You speak Japanese, and you wish to support it, but then このクソなfontは only good for Japanese,",
|
"You speak Japanese, and you wish to support it, but then このクソなfontは only good for Japanese,",
|
||||||
"and it is not multilingual, and you don't have a time for this shenanigan.",
|
"it is not even multilingual, and their English look ugly and inconsistent anyway.",
|
||||||
"Eventually you give up, saying “fuck it!” and just use the fonts that do not match well.",
|
"Eventually you just use different fonts together, and the result was always mildly infuriating.",
|
||||||
"",
|
"",
|
||||||
"No more suffering. This font has everything you need.",
|
"No more suffering. This font has everything you need.",
|
||||||
"",
|
"",
|
||||||
@@ -85,23 +76,23 @@ nopqrstuvwxyz
|
|||||||
"ΔΙΑΦΥΛΆΞΤΕ ΓΕΝΙΚΆ ΤΗ ΖΩΉ ΣΑΣ ΑΠΌ ΒΑΘΕΙΆ ΨΥΧΙΚΆ ΤΡΑΎΜΑΤΑ",
|
"ΔΙΑΦΥΛΆΞΤΕ ΓΕΝΙΚΆ ΤΗ ΖΩΉ ΣΑΣ ΑΠΌ ΒΑΘΕΙΆ ΨΥΧΙΚΆ ΤΡΑΎΜΑΤΑ",
|
||||||
"Pack my box with five dozen liquor jugs",
|
"Pack my box with five dozen liquor jugs",
|
||||||
"Voix ambiguë d'un cœur qui au zéphyr préfère les jattes de kiwi",
|
"Voix ambiguë d'un cœur qui au zéphyr préfère les jattes de kiwi",
|
||||||
"정 참판 양반댁 규수 큰 교자 타고 혼례 치른 날 뚫훍뚫훍뚫(읗) 뚫훍뚫훍뚫(읗) 뚫훍뚫훍뚫 따다다",
|
"정 참판 양반댁 규수 큰 교자 타고 혼례 치른 날 하얬다 도럄직한 퀡봹퉪헰",
|
||||||
"Kæmi ný öxi hér, ykist þjófum nú bæði víl og ádrepa",
|
"Kæmi ný öxi hér, ykist þjófum nú bæði víl og ádrepa",
|
||||||
"Árvíztűrő tükörfúrógép Kŕdeľ ďatľov učí koňa žrať kôru",
|
"Árvíztűrő tükörfúrógép Kŕdeľ ďatľov učí koňa žrať kôru",
|
||||||
"とりなくこゑす ゆめさませ みよあけわたる ひんかしを そらいろはえて おきつへに ほふねむれゐぬ もやのうち",
|
"とりなくこゑす ゆめさませ みよあけわたる ひんかしを そらいろはえて おきつへに ほふねむれゐぬ もやのうち",
|
||||||
"鳥啼く声す 夢覚ませ 見よ明け渡る 東を 空色栄えて 沖つ辺に 帆船群れゐぬ 靄の中",
|
"鳥啼ク声ス 夢覚マセ 見ヨ明ク渡ル 東ヲ 空色栄エテ 沖ツ辺ニ 帆船群レヰヌ 靄ノ中",
|
||||||
"Înjurând pițigăiat, zoofobul comandă vexat whisky și tequila",
|
"Înjurând pițigăiat, zoofobul comandă vexat whisky și tequila",
|
||||||
"Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства",
|
"Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства",
|
||||||
"Pijamalı hasta yağız şoföre çabucak güvendi",
|
"Pijamalı hasta yağız şoföre çabucak güvendi",
|
||||||
"Also supports: ‛Unicode’ „quotation marks“—dashes…「括弧」‼",
|
"Also supports: ‛Unicode’ „quotation marks“—dashes…「括弧」‼",
|
||||||
"ASCII Latin-1 Latin_Ext-A Latin_Ext-B Greek Cyrillic CJK-Ideo Kana Hangul_Syllables",
|
"ASCII Latin-1 Latin_Ext-A Latin_Ext-B Greek Cyrillic CJK-Ideo Kana Hangul_Syllables",
|
||||||
""
|
""
|
||||||
)*/
|
)
|
||||||
val SP = "${0x3000.toChar()}${0x3000.toChar()}"
|
val SP = "${0x3000.toChar()}${0x3000.toChar()}"
|
||||||
|
|
||||||
val text = arrayOf(
|
/*val text = arrayOf(
|
||||||
"${0xe006.toChar()} ${Lang["GAME_INVENTORY_USE"]}$SP${0xe011.toChar()}..${0xe019.toChar()} ${Lang["GAME_INVENTORY_REGISTER"]}$SP${0xe034.toChar()} ${Lang["GAME_INVENTORY_DROP"]}"
|
"${0xe006.toChar()} ${Lang["GAME_INVENTORY_USE"p]}$SP${0xe011.toChar()}..${0xe019.toChar()} ${Lang["GAME_INVENTORY_REGISTER"]}$SP${0xe034.toChar()} ${Lang["GAME_INVENTORY_DROP"]}"
|
||||||
)
|
)*/
|
||||||
|
|
||||||
text.forEachIndexed { i, s ->
|
text.forEachIndexed { i, s ->
|
||||||
g.drawString(s, 10f, 70f + 20 * i)
|
g.drawString(s, 10f, 70f + 20 * i)
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import net.torvald.imagefont.TinyAlphNum
|
|||||||
import net.torvald.terrarum.gamecontroller.mouseTileX
|
import net.torvald.terrarum.gamecontroller.mouseTileX
|
||||||
import net.torvald.terrarum.gamecontroller.mouseTileY
|
import net.torvald.terrarum.gamecontroller.mouseTileY
|
||||||
import net.torvald.terrarum.gameworld.toUint
|
import net.torvald.terrarum.gameworld.toUint
|
||||||
|
import net.torvald.terrarum.langpack.Lang
|
||||||
import org.lwjgl.input.Controllers
|
import org.lwjgl.input.Controllers
|
||||||
import org.lwjgl.opengl.*
|
import org.lwjgl.opengl.*
|
||||||
import org.newdawn.slick.*
|
import org.newdawn.slick.*
|
||||||
@@ -314,7 +315,8 @@ object Terrarum : StateBasedGame(GAME_NAME) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// load languages
|
||||||
|
Lang
|
||||||
// load modules
|
// load modules
|
||||||
ModMgr
|
ModMgr
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ import java.util.*
|
|||||||
*/
|
*/
|
||||||
internal object PrintRandomTips : ConsoleCommand {
|
internal object PrintRandomTips : ConsoleCommand {
|
||||||
override fun execute(args: Array<String>) {
|
override fun execute(args: Array<String>) {
|
||||||
Echo(Lang["GAME_TIPS_${Random().nextInt(Lang.TIPS_COUNT) + 1}"])
|
Echo("Nope.")
|
||||||
|
//Echo(Lang["GAME_TIPS_${Random().nextInt(Lang.TIPS_COUNT) + 1}"])
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun printUsage() {
|
override fun printUsage() {
|
||||||
|
|||||||
@@ -15,15 +15,13 @@ object Lang {
|
|||||||
*
|
*
|
||||||
* HashMap<"$key_$language", Value>
|
* HashMap<"$key_$language", Value>
|
||||||
*/
|
*/
|
||||||
var langpack: HashMap<String, String>
|
val langpack = HashMap<String, String>()
|
||||||
private set
|
|
||||||
private val FALLBACK_LANG_CODE = "en"
|
private val FALLBACK_LANG_CODE = "en"
|
||||||
|
|
||||||
private val HANGUL_SYL_START = 0xAC00
|
private val HANGUL_SYL_START = 0xAC00
|
||||||
|
|
||||||
val languageList: List<String>
|
val languageList = HashSet<String>()
|
||||||
|
|
||||||
private val PATH_TO_LANG = "./assets/locales/"
|
|
||||||
val POLYGLOT_VERSION = "100"
|
val POLYGLOT_VERSION = "100"
|
||||||
private val PREFIX_POLYGLOT = "Polyglot-${POLYGLOT_VERSION}_"
|
private val PREFIX_POLYGLOT = "Polyglot-${POLYGLOT_VERSION}_"
|
||||||
private val PREFIX_NAMESET = "nameset_"
|
private val PREFIX_NAMESET = "nameset_"
|
||||||
@@ -37,71 +35,72 @@ object Lang {
|
|||||||
|
|
||||||
private val FRENCH_WORD_NORMAL_PLURAL = arrayOf("bal", "banal", "fatal", "final")
|
private val FRENCH_WORD_NORMAL_PLURAL = arrayOf("bal", "banal", "fatal", "final")
|
||||||
|
|
||||||
var TIPS_COUNT = 0
|
|
||||||
private set
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
langpack = HashMap<String, String>()
|
// load base langs
|
||||||
val localesDir = File(PATH_TO_LANG)
|
load("./assets/locales/")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun load(localesDir: String) {
|
||||||
|
println("[Lang] Loading languages from $localesDir")
|
||||||
|
|
||||||
|
val localesDir = File(localesDir)
|
||||||
|
|
||||||
// get all of the languages installed
|
// get all of the languages installed
|
||||||
languageList = localesDir.listFiles().filter { it.isDirectory }.map { it.name }
|
localesDir.listFiles().filter { it.isDirectory }.forEach { languageList.add(it.name) }
|
||||||
|
|
||||||
for (lang in languageList) {
|
for (lang in languageList) {
|
||||||
// load polyglot first
|
val langFileListFiles = File("$localesDir/$lang/").listFiles()
|
||||||
val polyglotFile = File("$PATH_TO_LANG$lang/$PREFIX_POLYGLOT$lang.json")
|
|
||||||
val json = JsonFetcher(polyglotFile)
|
|
||||||
/*
|
|
||||||
* Polyglot JSON structure is:
|
|
||||||
*
|
|
||||||
* (root object)
|
|
||||||
* "resources": object
|
|
||||||
* "polyglot": object
|
|
||||||
* (polyglot meta)
|
|
||||||
* "data": array
|
|
||||||
* [0]: object
|
|
||||||
* n = "CONTEXT_CHARACTER_CLASS"
|
|
||||||
* s = "Class"
|
|
||||||
* [1]: object
|
|
||||||
* n = "CONTEXT_CHARACTER_DELETE"
|
|
||||||
* s = "Delecte Character"
|
|
||||||
* (the array continues)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
json.getAsJsonObject("resources").getAsJsonArray("data").forEach {
|
|
||||||
langpack.put(
|
|
||||||
"${it.asJsonObject["n"].asString}_$lang",
|
|
||||||
it.asJsonObject["s"].asString
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
// and then the rest of the lang file
|
|
||||||
val langFileList = ArrayList<File>()
|
|
||||||
|
|
||||||
// --> filter out files to retrieve a list of valid lang files
|
|
||||||
val langFileListFiles = File("$PATH_TO_LANG$lang/").listFiles()
|
|
||||||
langFileListFiles.forEach {
|
langFileListFiles.forEach {
|
||||||
if (!it.name.startsWith("Polyglot") && it.name.endsWith(".json"))
|
// not a polyglot
|
||||||
langFileList.add(it)
|
if (!it.name.startsWith("Polyglot") && it.name.endsWith(".json")) {
|
||||||
}
|
processRegularLangfile(it, lang)
|
||||||
|
}
|
||||||
// --> put json entries in langpack
|
else {
|
||||||
for (langFile in langFileList) {
|
processPolyglotLangFile(it, lang)
|
||||||
val json = JsonFetcher(langFile)
|
|
||||||
/*
|
|
||||||
* Terrarum langpack JSON structure is:
|
|
||||||
*
|
|
||||||
* (root object)
|
|
||||||
* "<<STRING ID>>" = "<<LOCALISED TEXT>>"
|
|
||||||
*/
|
|
||||||
//println(json.entrySet())
|
|
||||||
json.entrySet().forEach {
|
|
||||||
langpack.put("${it.key}_$lang", it.value.asString)
|
|
||||||
|
|
||||||
// count up TIPS_COUNT
|
|
||||||
if (lang == "en" && it.key.startsWith("GAME_TIPS_")) TIPS_COUNT++
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun processRegularLangfile(file: File, lang: String) {
|
||||||
|
val json = JsonFetcher(file)
|
||||||
|
/*
|
||||||
|
* Terrarum langpack JSON structure is:
|
||||||
|
*
|
||||||
|
* (root object)
|
||||||
|
* "<<STRING ID>>" = "<<LOCALISED TEXT>>"
|
||||||
|
*/
|
||||||
|
//println(json.entrySet())
|
||||||
|
json.entrySet().forEach {
|
||||||
|
langpack.put("${it.key}_$lang", it.value.asString)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun processPolyglotLangFile(file: File, lang: String) {
|
||||||
|
val json = JsonFetcher(file)
|
||||||
|
/*
|
||||||
|
* Polyglot JSON structure is:
|
||||||
|
*
|
||||||
|
* (root object)
|
||||||
|
* "resources": object
|
||||||
|
* "polyglot": object
|
||||||
|
* (polyglot meta)
|
||||||
|
* "data": array
|
||||||
|
* [0]: object
|
||||||
|
* n = "CONTEXT_CHARACTER_CLASS"
|
||||||
|
* s = "Class"
|
||||||
|
* [1]: object
|
||||||
|
* n = "CONTEXT_CHARACTER_DELETE"
|
||||||
|
* s = "Delecte Character"
|
||||||
|
* (the array continues)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
json.getAsJsonObject("resources").getAsJsonArray("data").forEach {
|
||||||
|
langpack.put(
|
||||||
|
"${it.asJsonObject["n"].asString}_$lang",
|
||||||
|
it.asJsonObject["s"].asString
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ object BlocksDrawer {
|
|||||||
* It holds different shading rule to discriminate with group 02, index 0 is single tile.
|
* It holds different shading rule to discriminate with group 02, index 0 is single tile.
|
||||||
* These are the tiles that only connects to itself, will not connect to colour variants
|
* These are the tiles that only connects to itself, will not connect to colour variants
|
||||||
*/
|
*/
|
||||||
val TILES_CONNECT_SELF = arrayListOf(
|
private val TILES_CONNECT_SELF = hashSetOf(
|
||||||
Block.ICE_MAGICAL,
|
Block.ICE_MAGICAL,
|
||||||
Block.GLASS_CRUDE,
|
Block.GLASS_CRUDE,
|
||||||
Block.GLASS_CLEAN,
|
Block.GLASS_CLEAN,
|
||||||
@@ -128,17 +128,25 @@ object BlocksDrawer {
|
|||||||
Block.DAYLIGHT_CAPACITOR
|
Block.DAYLIGHT_CAPACITOR
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To interact with external modules
|
||||||
|
*/
|
||||||
|
@JvmStatic fun addConnectSelf(blockID: Int): Boolean {
|
||||||
|
return TILES_CONNECT_SELF.add(blockID)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Connectivity group 02 : natural tiles
|
* Connectivity group 02 : natural tiles
|
||||||
* It holds different shading rule to discriminate with group 01, index 0 is middle tile.
|
* It holds different shading rule to discriminate with group 01, index 0 is middle tile.
|
||||||
*/
|
*/
|
||||||
val TILES_CONNECT_MUTUAL = arrayListOf(
|
private val TILES_CONNECT_MUTUAL = hashSetOf(
|
||||||
Block.STONE,
|
Block.STONE,
|
||||||
Block.STONE_QUARRIED,
|
Block.STONE_QUARRIED,
|
||||||
Block.STONE_TILE_WHITE,
|
Block.STONE_TILE_WHITE,
|
||||||
Block.STONE_BRICKS,
|
Block.STONE_BRICKS,
|
||||||
Block.DIRT,
|
Block.DIRT,
|
||||||
Block.GRASS,
|
Block.GRASS,
|
||||||
|
Block.GRASSWALL,
|
||||||
Block.PLANK_BIRCH,
|
Block.PLANK_BIRCH,
|
||||||
Block.PLANK_BLOODROSE,
|
Block.PLANK_BLOODROSE,
|
||||||
Block.PLANK_EBONY,
|
Block.PLANK_EBONY,
|
||||||
@@ -194,20 +202,34 @@ object BlocksDrawer {
|
|||||||
Block.LAVA_15
|
Block.LAVA_15
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To interact with external modules
|
||||||
|
*/
|
||||||
|
@JvmStatic fun addConnectMutual(blockID: Int): Boolean {
|
||||||
|
return TILES_CONNECT_MUTUAL.add(blockID)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Torches, levers, switches, ...
|
* Torches, levers, switches, ...
|
||||||
*/
|
*/
|
||||||
val TILES_WALL_STICKER = arrayListOf(
|
private val TILES_WALL_STICKER = hashSetOf(
|
||||||
Block.TORCH,
|
Block.TORCH,
|
||||||
Block.TORCH_FROST,
|
Block.TORCH_FROST,
|
||||||
Block.TORCH_OFF,
|
Block.TORCH_OFF,
|
||||||
Block.TORCH_FROST_OFF
|
Block.TORCH_FROST_OFF
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To interact with external modules
|
||||||
|
*/
|
||||||
|
@JvmStatic fun addWallSticker(blockID: Int): Boolean {
|
||||||
|
return TILES_WALL_STICKER.add(blockID)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* platforms, ...
|
* platforms, ...
|
||||||
*/
|
*/
|
||||||
val TILES_WALL_STICKER_CONNECT_SELF = arrayListOf(
|
private val TILES_WALL_STICKER_CONNECT_SELF = hashSetOf(
|
||||||
Block.PLATFORM_BIRCH,
|
Block.PLATFORM_BIRCH,
|
||||||
Block.PLATFORM_BLOODROSE,
|
Block.PLATFORM_BLOODROSE,
|
||||||
Block.PLATFORM_EBONY,
|
Block.PLATFORM_EBONY,
|
||||||
@@ -215,12 +237,19 @@ object BlocksDrawer {
|
|||||||
Block.PLATFORM_WOODEN
|
Block.PLATFORM_WOODEN
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To interact with external modules
|
||||||
|
*/
|
||||||
|
@JvmStatic fun addWallStickerConnectSelf(blockID: Int): Boolean {
|
||||||
|
return TILES_WALL_STICKER_CONNECT_SELF.add(blockID)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tiles that half-transparent and has hue
|
* Tiles that half-transparent and has hue
|
||||||
* will blend colour using colour multiplication
|
* will blend colour using colour multiplication
|
||||||
* i.e. red hues get lost if you dive into the water
|
* i.e. red hues get lost if you dive into the water
|
||||||
*/
|
*/
|
||||||
val TILES_BLEND_MUL = arrayListOf(
|
private val TILES_BLEND_MUL = hashSetOf(
|
||||||
Block.WATER,
|
Block.WATER,
|
||||||
Block.WATER_1,
|
Block.WATER_1,
|
||||||
Block.WATER_2,
|
Block.WATER_2,
|
||||||
@@ -255,6 +284,13 @@ object BlocksDrawer {
|
|||||||
Block.LAVA_15
|
Block.LAVA_15
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To interact with external modules
|
||||||
|
*/
|
||||||
|
@JvmStatic fun addBlendMul(blockID: Int): Boolean {
|
||||||
|
return TILES_BLEND_MUL.add(blockID)
|
||||||
|
}
|
||||||
|
|
||||||
fun update() {
|
fun update() {
|
||||||
val player = Terrarum.ingame!!.player
|
val player = Terrarum.ingame!!.player
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user