Adds customizable language keys to language menu and character setup

This commit is contained in:
Casey
2022-08-21 15:40:43 -04:00
committed by CHOMPStation2
parent 8898dc5d39
commit 144fd1b219
8 changed files with 303 additions and 14 deletions

View File

@@ -11,15 +11,20 @@
S["extra_languages"] >> pref.extra_languages
testing("LANGSANI: Loaded from [pref.client]'s character [pref.real_name || "-name not yet loaded-"] savefile: [english_list(pref.alternate_languages || list())]")
S["language_prefixes"] >> pref.language_prefixes
<<<<<<< HEAD
//CHOMPEdit Begin
S["species"] >> pref.species
//CHOMPEdit End
=======
S["language_custom_keys"] >> pref.language_custom_keys
>>>>>>> 574adc02e0... Merge pull request #13541 from Heroman3003/customizable_key
/datum/category_item/player_setup_item/general/language/save_character(var/savefile/S)
S["language"] << pref.alternate_languages
S["extra_languages"] << pref.extra_languages
testing("LANGSANI: Saved to [pref.client]'s character [pref.real_name || "-name not yet loaded-"] savefile: [english_list(pref.alternate_languages || list())]")
S["language_prefixes"] << pref.language_prefixes
S["language_custom_keys"] << pref.language_custom_keys
/datum/category_item/player_setup_item/general/language/sanitize_character()
if(!islist(pref.alternate_languages)) pref.alternate_languages = list()
@@ -43,6 +48,14 @@
for(var/prefix in pref.language_prefixes)
if(prefix in forbidden_prefixes)
pref.language_prefixes -= prefix
if(isnull(pref.language_custom_keys))
pref.language_custom_keys = list()
var/datum/species/S = GLOB.all_species[pref.species]
for(var/key in pref.language_custom_keys)
if(!pref.language_custom_keys[key])
pref.language_custom_keys.Remove(key)
if(!((pref.language_custom_keys[key] == S.language) || (pref.language_custom_keys[key] == S.default_language && S.default_language != S.language) || (pref.language_custom_keys[key] in pref.alternate_languages)))
pref.language_custom_keys.Remove(key)
/datum/category_item/player_setup_item/general/language/content()
. += "<b>Languages</b><br>"
@@ -51,14 +64,19 @@
testing("LANGSANI: Truncated [pref.client]'s character [pref.real_name || "-name not yet loaded-"] language list because it was too long (len: [pref.alternate_languages.len], allowed: [S.num_alternate_languages])")
pref.alternate_languages.len = (S.num_alternate_languages + pref.extra_languages) // Truncate to allowed length
if(S.language)
. += "- [S.language]<br>"
. += "- [S.language] - <a href='?src=\ref[src];set_custom_key=[S.language]'>Set Custom Key</a><br>"
if(S.default_language && S.default_language != S.language)
. += "- [S.default_language]<br>"
. += "- [S.default_language] - <a href='?src=\ref[src];set_custom_key=[S.default_language]'>Set Custom Key</a><br>"
if(S.num_alternate_languages + pref.extra_languages)
if(pref.alternate_languages.len)
for(var/i = 1 to pref.alternate_languages.len)
var/lang = pref.alternate_languages[i]
<<<<<<< HEAD
. += "- [lang] - <a href='?src=\ref[src];remove_language=[i]'>remove</a><br>"
=======
. += "- [lang] - <a href='?src=\ref[src];remove_language=[i]'>remove</a> - <a href='?src=\ref[src];set_custom_key=[lang]'>Set Custom Key</a><br>"
>>>>>>> 574adc02e0... Merge pull request #13541 from Heroman3003/customizable_key
if(pref.alternate_languages.len < (S.num_alternate_languages + pref.extra_languages))
. += "- <a href='?src=\ref[src];add_language=1'>add</a> ([(S.num_alternate_languages + pref.extra_languages) - pref.alternate_languages.len] remaining)<br>"
else
@@ -125,4 +143,32 @@
pref.language_prefixes = config.language_prefixes.Copy()
return TOPIC_REFRESH
else if(href_list["set_custom_key"])
var/lang = href_list["set_custom_key"]
if(!(lang in GLOB.all_languages))
return TOPIC_REFRESH
var/oldkey = ""
for(var/key in pref.language_custom_keys)
if(pref.language_custom_keys[key] == lang)
oldkey = key
break
var/char = tgui_input_text(user, "Input a language key for [lang]. Input a single space to reset.", "Language Custom Key", oldkey)
if(length(char) != 1)
return TOPIC_REFRESH
else if(char == " ")
for(var/key in pref.language_custom_keys)
if(pref.language_custom_keys[key] == lang)
pref.language_custom_keys -= key
break
else if(contains_az09(char))
if(!(char in pref.language_custom_keys))
pref.language_custom_keys += char
pref.language_custom_keys[char] = lang
else
tgui_alert_async(user, "Improper language key. Rejected.", "Error")
return TOPIC_REFRESH
return ..()