Files
SL1900 5e0d58cfad Initial version - 1.2.0.60
EN: 1.2.0.60
CN: 1.2.0.61
JP: 1.2.0.63
KR: 1.2.0.67
2025-12-03 01:00:00 +09:00

180 lines
5.8 KiB
Lua

local SettingsLanguageCtrl = class("SettingsLanguageCtrl", BaseCtrl)
SettingsLanguageCtrl._mapNodeConfig = {
txtPageTitle = {
sComponentName = "TMP_Text",
sLanguageId = "Settings_Language"
},
txtVoiceTittle = {
sComponentName = "TMP_Text",
sLanguageId = "Settings_Language_Settings"
},
Option = {},
btnPackage = {
sComponentName = "UIButton",
callback = "OnBtnClick_Package"
},
txtPackage = {
sComponentName = "TMP_Text",
sLanguageId = "Settings_Language_Package"
},
txtBtnPackage = {
sComponentName = "TMP_Text",
sLanguageId = "Settings_Btn_Go"
},
Voice = {
sCtrlName = "Game.UI.Settings.OptionDynamicCtrl"
},
Language = {
sCtrlName = "Game.UI.Settings.OptionDynamicCtrl"
}
}
SettingsLanguageCtrl._mapEventConfig = {
SettingsDownloadLanguage = "OnEvent_DownloadLanguage"
}
function SettingsLanguageCtrl:RefreshText()
local lan_voc = ConfigTable.GetUIText("Settings_Language_Voice")
local lan_txt = ConfigTable.GetUIText("Settings_Language_Text")
local lan_needDownload = ConfigTable.GetUIText("Settings_Language_NeedDownload")
local lan_downloaded = ConfigTable.GetUIText("Settings_Language_Downloaded")
local tbText = {}
tbText[AllEnum.Language.CN] = ConfigTable.GetUIText("Settings_Language_Text_Chinese")
tbText[AllEnum.Language.JP] = ConfigTable.GetUIText("Settings_Language_Text_Japanese")
tbText[AllEnum.Language.EN] = ConfigTable.GetUIText("Settings_Language_Text_English")
tbText[AllEnum.Language.KR] = ConfigTable.GetUIText("Settings_Language_Text_Korean")
tbText[AllEnum.Language.TW] = ConfigTable.GetUIText("Settings_Language_Text_TraditionalChinese")
local nTextCount = table.nums(tbText)
local tbLang = {}
tbLang[AllEnum.Language.CN] = ConfigTable.GetUIText("Settings_Language_Voice_Chinese")
tbLang[AllEnum.Language.JP] = ConfigTable.GetUIText("Settings_Language_Voice_Japanese")
tbLang[AllEnum.Language.EN] = ConfigTable.GetUIText("Settings_Language_Voice_English")
tbLang[AllEnum.Language.KR] = ConfigTable.GetUIText("Settings_Language_Voice_Korean")
tbLang[AllEnum.Language.TW] = ConfigTable.GetUIText("Settings_Language_Voice_TraditionalChinese")
local nLangCount = table.nums(tbLang)
local textLang = {}
for i = 1, nTextCount do
textLang[i] = tbText[self.tbTextAvailable[i]]
end
local voLang = {}
for i = 1, nLangCount do
voLang[i] = ""
if self.tbVoAvailable[i] then
local sPre = tbLang[self.tbVoAvailable[i]]
local sSuf = self.tbDownload[self.tbVoAvailable[i]].bDownloaded and lan_downloaded or lan_needDownload
voLang[i] = sPre .. sSuf
end
end
self._mapNode.Voice:SetText(lan_voc, voLang)
self._mapNode.Language:SetText(lan_txt, textLang)
end
function SettingsLanguageCtrl:Init()
if self.bInit then
return
end
self.bInit = true
self:LoadSetting()
self:RefreshText()
end
function SettingsLanguageCtrl:Quit()
if not self.bInit then
return
end
end
function SettingsLanguageCtrl:LoadSetting()
local tbTextAvailable = NovaAPI.GetAvailable_TextLanguage()
local tbVoAvailable = NovaAPI.GetAvailable_VoLanguage()
self.tbTextAvailable, self.tbVoAvailable, self.tbDownload = {}, {}, {}
for i = 0, tbTextAvailable.Length - 1 do
table.insert(self.tbTextAvailable, tbTextAvailable[i])
end
for i = 0, tbVoAvailable.Length - 1 do
local sVoLan = tbVoAvailable[i]
table.insert(self.tbVoAvailable, sVoLan)
local bDownloaded, nTotalSize, nNeedDownloadSize = NovaAPI.HasDownload_VoLanguage(sVoLan)
self.tbDownload[sVoLan] = {
bDownloaded = bDownloaded,
nTotalSize = nTotalSize,
nNeedDownloadSize = nNeedDownloadSize
}
end
local sCurrentTxtLanguage = NovaAPI.GetCur_TextLanguage()
local sCurrentVoLanguage = NovaAPI.GetCur_VoiceLanguage()
self.nVoLang = table.indexof(self.tbVoAvailable, sCurrentVoLanguage)
self.nTextLang = table.indexof(self.tbTextAvailable, sCurrentTxtLanguage)
self._mapNode.Voice:Init(function(index)
NovaAPI.SetCur_VoiceLanguage(self.tbVoAvailable[index])
Settings.sCurrentVoLanguage = self.tbVoAvailable[index]
self.nVoLang = index
local tab = {}
table.insert(tab, {
"role_id",
tostring(PlayerData.Base._nPlayerId)
})
table.insert(tab, {
"set",
"vocie_language"
})
table.insert(tab, {
"arg",
tostring(index)
})
NovaAPI.UserEventUpload("setting_choice", tab)
end, self.nVoLang, #self.tbVoAvailable, nil, true)
self._mapNode.Language:Init(function(index)
NovaAPI.SetCur_TextLanguage(self.tbTextAvailable[index])
Settings.sCurrentTxtLanguage = self.tbTextAvailable[index]
self.nTextLang = index
local tab = {}
table.insert(tab, {
"role_id",
tostring(PlayerData.Base._nPlayerId)
})
table.insert(tab, {
"set",
"game_language"
})
table.insert(tab, {
"arg",
tostring(index)
})
NovaAPI.UserEventUpload("setting_choice", tab)
PanelManager.OnConfirmBackToLogIn()
end, self.nTextLang, #self.tbTextAvailable, ConfigTable.GetUIText("Settings_Language_BackConfirm"))
local gray = function(tbAvailable)
local tbGray = {}
for k, v in ipairs(tbAvailable) do
if not self.tbDownload[v].bDownloaded then
tbGray[k] = true
end
end
return tbGray
end
self._mapNode.Voice:SetGray(gray(self.tbVoAvailable), ConfigTable.GetUIText("Settings_VoiceGrayTips"))
if self.tbVoAvailable ~= nil and 1 >= #self.tbVoAvailable then
self._mapNode.Option:SetActive(false)
local languageTra = self._mapNode.Language.gameObject.transform
local goLanLine = languageTra:Find("line").gameObject
goLanLine:SetActive(false)
end
end
function SettingsLanguageCtrl:SaveSetting()
end
function SettingsLanguageCtrl:Awake()
self.bInit = false
end
function SettingsLanguageCtrl:OnEnable()
end
function SettingsLanguageCtrl:OnDisable()
if not self.bInit then
return
end
self:SaveSetting()
end
function SettingsLanguageCtrl:OnDestroy()
end
function SettingsLanguageCtrl:OnBtnClick_Package()
EventManager.Hit("SettingsLanguage", self.tbVoAvailable, self.tbDownload)
end
function SettingsLanguageCtrl:OnEvent_DownloadLanguage()
end
return SettingsLanguageCtrl