mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-28 14:24:43 -04:00
Added cache for character sets, improving time for Chinese and Korean game initialization
This commit is contained in:
parent
7b3eae9560
commit
7d1fd6e177
Binary file not shown.
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
@ -42,8 +42,8 @@ class LoadMapScreen(previousMap: TileMap) : PickerScreen(){
|
|||||||
val loadFromClipboardButton = TextButton("Load copied data".tr(), skin)
|
val loadFromClipboardButton = TextButton("Load copied data".tr(), skin)
|
||||||
val couldNotLoadMapLabel = "Could not load map!".toLabel().setFontColor(Color.RED).apply { isVisible=false }
|
val couldNotLoadMapLabel = "Could not load map!".toLabel().setFontColor(Color.RED).apply { isVisible=false }
|
||||||
loadFromClipboardButton.onClick {
|
loadFromClipboardButton.onClick {
|
||||||
val clipboardContentsString = Gdx.app.clipboard.contents.trim()
|
|
||||||
try {
|
try {
|
||||||
|
val clipboardContentsString = Gdx.app.clipboard.contents.trim()
|
||||||
val decoded = Gzip.unzip(clipboardContentsString)
|
val decoded = Gzip.unzip(clipboardContentsString)
|
||||||
val loadedMap = MapSaver().mapFromJson(decoded)
|
val loadedMap = MapSaver().mapFromJson(decoded)
|
||||||
UnCivGame.Current.setScreen(MapEditorScreen(loadedMap))
|
UnCivGame.Current.setScreen(MapEditorScreen(loadedMap))
|
||||||
|
@ -18,6 +18,7 @@ import java.security.MessageDigest
|
|||||||
|
|
||||||
class Fonts {
|
class Fonts {
|
||||||
companion object {
|
companion object {
|
||||||
|
val characterSetCache = HashMap<String, String>()
|
||||||
val fontCache = HashMap<String, BitmapFont>()
|
val fontCache = HashMap<String, BitmapFont>()
|
||||||
}
|
}
|
||||||
fun download(link: String,fontForLanguage: String) {
|
fun download(link: String,fontForLanguage: String) {
|
||||||
@ -53,7 +54,9 @@ class Fonts {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getCharsForFont(language:String=""): String {
|
fun getCharactersForFont(language:String=""): String {
|
||||||
|
if (characterSetCache.containsKey(language)) return characterSetCache[language]!!
|
||||||
|
|
||||||
val defaultText = "AÀÁBCČĆDĐEÈÉFGHIÌÍÏJKLMNOÒÓÖPQRSŠTUÙÚÜVWXYZŽaäàâăbcčćçdđeéèfghiìîjklmnoòöpqrsșštțuùüvwxyzž" +
|
val defaultText = "AÀÁBCČĆDĐEÈÉFGHIÌÍÏJKLMNOÒÓÖPQRSŠTUÙÚÜVWXYZŽaäàâăbcčćçdđeéèfghiìîjklmnoòöpqrsșštțuùüvwxyzž" +
|
||||||
"АБВГҐДЂЕЁЄЖЗЅИІЇЙЈКЛЉМНЊОПРСТЋУЎФХЦЧЏШЩЪЫЬЭЮЯабвгґдђеёєжзѕиіїйјклљмнњопрстћуўфхцчџшщъыьэюя" + // Russian
|
"АБВГҐДЂЕЁЄЖЗЅИІЇЙЈКЛЉМНЊОПРСТЋУЎФХЦЧЏШЩЪЫЬЭЮЯабвгґдђеёєжзѕиіїйјклљмнњопрстћуўфхцчџшщъыьэюя" + // Russian
|
||||||
"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωάßΆέΈέΉίϊΐΊόΌύΰϋΎΫΏ" + // Greek
|
"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωάßΆέΈέΉίϊΐΊόΌύΰϋΎΫΏ" + // Greek
|
||||||
@ -64,7 +67,7 @@ class Fonts {
|
|||||||
val charSet = HashSet<Char>()
|
val charSet = HashSet<Char>()
|
||||||
charSet.addAll(defaultText.asIterable())
|
charSet.addAll(defaultText.asIterable())
|
||||||
|
|
||||||
if(language != "") {
|
if (language != "") {
|
||||||
if (Gdx.files.internal("jsons/BasicHelp/BasicHelp_$language.json").exists())
|
if (Gdx.files.internal("jsons/BasicHelp/BasicHelp_$language.json").exists())
|
||||||
charSet.addAll(Gdx.files.internal("jsons/BasicHelp/BasicHelp_$language.json").readString().asIterable())
|
charSet.addAll(Gdx.files.internal("jsons/BasicHelp/BasicHelp_$language.json").readString().asIterable())
|
||||||
if (Gdx.files.internal("jsons/Nations/Nations_$language.json").exists())
|
if (Gdx.files.internal("jsons/Nations/Nations_$language.json").exists())
|
||||||
@ -74,11 +77,13 @@ class Fonts {
|
|||||||
|
|
||||||
for (entry in GameBasics.Translations.entries) {
|
for (entry in GameBasics.Translations.entries) {
|
||||||
for (lang in entry.value) {
|
for (lang in entry.value) {
|
||||||
if (lang.key==language) charSet.addAll(lang.value.asIterable())
|
if (lang.key == language) charSet.addAll(lang.value.asIterable())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return charSet.joinToString("")
|
val characterSetString = charSet.joinToString("")
|
||||||
|
characterSetCache[language]=characterSetString
|
||||||
|
return characterSetString
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getFont(size: Int): BitmapFont {
|
fun getFont(size: Int): BitmapFont {
|
||||||
@ -105,7 +110,7 @@ class Fonts {
|
|||||||
parameter.size = size
|
parameter.size = size
|
||||||
parameter.minFilter = Texture.TextureFilter.Linear
|
parameter.minFilter = Texture.TextureFilter.Linear
|
||||||
parameter.magFilter = Texture.TextureFilter.Linear
|
parameter.magFilter = Texture.TextureFilter.Linear
|
||||||
parameter.characters = getCharsForFont(UnCivGame.Current.settings.language)
|
parameter.characters = getCharactersForFont(UnCivGame.Current.settings.language)
|
||||||
val font = generator.generateFont(parameter)
|
val font = generator.generateFont(parameter)
|
||||||
fontCache[keyForFont] = font
|
fontCache[keyForFont] = font
|
||||||
return font
|
return font
|
||||||
@ -119,7 +124,7 @@ class Fonts {
|
|||||||
if (fontCache.containsKey(keyForFont)) return fontCache[keyForFont]!!
|
if (fontCache.containsKey(keyForFont)) return fontCache[keyForFont]!!
|
||||||
|
|
||||||
val font=NativeFont(NativeFontPaint(size))
|
val font=NativeFont(NativeFontPaint(size))
|
||||||
val charsForFont = getCharsForFont(if(isUniqueFont) language else "")
|
val charsForFont = getCharactersForFont(if(isUniqueFont) language else "")
|
||||||
font.appendText(charsForFont)
|
font.appendText(charsForFont)
|
||||||
fontCache[keyForFont] = font
|
fontCache[keyForFont] = font
|
||||||
return font
|
return font
|
||||||
|
Loading…
x
Reference in New Issue
Block a user