Files
StellaSora_DataLua/lua/game/ui/characterinfotrial/chartalentinfotrialctrl.lua
T
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

141 lines
5.0 KiB
Lua

local CharTalentInfoTrialCtrl = class("CharTalentInfoTrialCtrl", BaseCtrl)
local LocalData = require("GameCore.Data.LocalData")
local newDayTime = UTILS.GetDayRefreshTimeOffset()
CharTalentInfoTrialCtrl._mapNodeConfig = {
sv = {sComponentName = "ScrollRect"},
txtNodeName = {sComponentName = "TMP_Text"},
txtTitleDesc = {
sComponentName = "TMP_Text",
sLanguageId = "CharTalent_Title_Desc"
},
TMP_Link1 = {
sNodeName = "txtSkillDesc",
sComponentName = "TMPHyperLink",
callback = "OnLinkClick_Word"
},
txtSkillDesc = {sComponentName = "TMP_Text"}
}
CharTalentInfoTrialCtrl._mapEventConfig = {}
function CharTalentInfoTrialCtrl:RefreshKey(mapGroup, mapTalent)
local mapTalentCfg = ConfigTable.GetData("Talent", mapGroup.nKeyTalent)
local mapGroupCfg = ConfigTable.GetData("TalentGroup", mapGroup.nId)
if not mapTalentCfg or not mapGroupCfg then
return
end
self.sKeyName = mapTalentCfg.Title
self.nGroupId = mapGroup.nId
NovaAPI.SetTMPText(self._mapNode.txtNodeName, mapTalentCfg.Title)
NovaAPI.SetTMPText(self._mapNode.txtSkillDesc, UTILS.ParseDesc(mapTalentCfg, nil, nil, nil, nil, {
nCharId = self._panel.nCharId
}))
local bActive = mapTalent.tbActiveTalent[mapGroup.nKeyTalent]
if bActive then
else
local nLeft = mapGroupCfg.NodeLimit - mapGroup.nNormalCount
local mapCharCfg = ConfigTable.GetData_Character(self._panel.nCharId)
if not mapCharCfg then
return
end
local mapGradeCfg = ConfigTable.GetData("CharGrade", mapCharCfg.Grade)
if not mapGradeCfg then
return
end
end
NovaAPI.SetVerticalNormalizedPosition(self._mapNode.sv, 1)
end
function CharTalentInfoTrialCtrl:RefreshNormal(nTalentId, mapGroup, mapTalent)
self.nTalentId = nTalentId
local mapTalentCfg = ConfigTable.GetData("Talent", nTalentId)
if not mapTalentCfg then
return
end
NovaAPI.SetTMPText(self._mapNode.txtNodeName, mapTalentCfg.Title)
NovaAPI.SetTMPText(self._mapNode.txtSkillDesc, UTILS.ParseParamDesc(mapTalentCfg.Desc, mapTalentCfg, nil, {
nCharId = self._panel.nCharId
}))
NovaAPI.SetVerticalNormalizedPosition(self._mapNode.sv, 1)
end
function CharTalentInfoTrialCtrl:ActiveLayer(active)
local isSelectAgain = false
local confirmCallback = function()
if isSelectAgain then
local _curTimeStamp = CS.ClientManager.Instance.serverTimeStampWithTimeZone
local _fixedTimeStamp = _curTimeStamp + newDayTime * 3600
local _nYear = tonumber(os.date("!%Y", _fixedTimeStamp))
local _nMonth = tonumber(os.date("!%m", _fixedTimeStamp))
local _nDay = tonumber(os.date("!%d", _fixedTimeStamp))
local _nowD = _nYear * 366 + _nMonth * 31 + _nDay
LocalData.SetPlayerLocalData("TalentActiveLayer_Tips_Time", tostring(_nowD))
end
active()
end
local againCallback = function(isSelect)
isSelectAgain = isSelect
end
if not self.nLayerCost then
return
end
local mapCharCfg = ConfigTable.GetData_Character(self._panel.nCharId)
if not mapCharCfg then
return
end
local mapGradeCfg = ConfigTable.GetData("CharGrade", mapCharCfg.Grade)
if not mapGradeCfg then
return
end
local nGeneralCount = PlayerData.Item:GetItemCountByID(mapGradeCfg.GeneralFragmentId)
local nFragmentCount = PlayerData.Item:GetItemCountByID(mapCharCfg.FragmentsId)
local sFragment = ConfigTable.GetData_Item(mapCharCfg.FragmentsId).Title
local sGeneral = ConfigTable.GetData_Item(mapGradeCfg.GeneralFragmentId).Title
local sChar = mapCharCfg.Name
if nFragmentCount >= self.nLayerCost then
local msg = {
nType = AllEnum.MessageBox.Confirm,
sContent = orderedFormat(ConfigTable.GetUIText("CharTalent_ActiveLayerTip_CharFragment"), sFragment, self.nLayerCost, sChar, self.sKeyName),
callbackConfirm = confirmCallback,
callbackAgain = againCallback
}
EventManager.Hit(EventId.OpenMessageBox, msg)
elseif self.nLayerCost <= nFragmentCount + nGeneralCount then
local sTip = ""
if nFragmentCount == 0 then
sTip = orderedFormat(ConfigTable.GetUIText("CharTalent_ActiveLayerTip_GeneralFragment"), sGeneral, self.nLayerCost, sChar, self.sKeyName)
else
sTip = orderedFormat(ConfigTable.GetUIText("CharTalent_ActiveLayerTip_BothFragment"), sFragment, nFragmentCount, sGeneral, self.nLayerCost - nFragmentCount, sChar, self.sKeyName)
end
local msg = {
nType = AllEnum.MessageBox.Confirm,
sContent = sTip,
callbackConfirm = confirmCallback,
callbackAgain = againCallback
}
EventManager.Hit(EventId.OpenMessageBox, msg)
end
end
function CharTalentInfoTrialCtrl:Awake()
end
function CharTalentInfoTrialCtrl:OnEnable()
end
function CharTalentInfoTrialCtrl:OnDisable()
end
function CharTalentInfoTrialCtrl:OnDestroy()
end
function CharTalentInfoTrialCtrl:OnBtnClick_Tips(btn, nIndex)
local mapCharCfg = ConfigTable.GetData_Character(self._panel.nCharId)
if not mapCharCfg then
return
end
local mapData = {
nTid = mapCharCfg.FragmentsId,
bShowDepot = true,
bShowJumpto = true
}
EventManager.Hit(EventId.OpenPanel, PanelId.ItemTips, btn.transform, mapData)
end
function CharTalentInfoTrialCtrl:OnLinkClick_Word(link, sWordId)
UTILS.ClickWordLink(link, sWordId, {
nCharId = self._panel.nCharId
})
end
return CharTalentInfoTrialCtrl