Files
StellaSora_DataLua/lua/game/ui/mainlineformationdiscex/formationsubdiscctrl.lua
T
SL1900 46f967a584 Update - 1.6.0.84
EN: 1.6.0.84
CN: 1.6.0.87
JP: 1.6.0.88
KR: 1.6.0.91
2026-02-04 13:00:00 +09:00

113 lines
3.3 KiB
Lua

local FormationSubDiscCtrl = class("FormationSubDiscCtrl", BaseCtrl)
FormationSubDiscCtrl._mapNodeConfig = {
rtDisc = {
nCount = 3,
sCtrlName = "Game.UI.MainlineFormationDiscEx.FormationDisc_SubDiscCtrl"
},
TMPNoteInfoTitle = {
sComponentName = "TMP_Text",
sLanguageId = "DiscFormation_TotalNoteTitle"
},
goNote = {
sNodeName = "goNoteInfo_",
nCount = 8,
sComponentName = "Image"
},
TMPNoteCount = {nCount = 8, sComponentName = "TMP_Text"},
imgSubTitleActive = {},
TMPSubTitle = {
sComponentName = "TMP_Text",
sLanguageId = "DiscFormation_SubTitle"
},
rtDiscBtn = {
nCount = 3,
sNodeName = "rtDisc",
sComponentName = "UIButton",
callback = "OnBtnClick_Disc"
}
}
FormationSubDiscCtrl._mapEventConfig = {}
FormationSubDiscCtrl._mapRedDotConfig = {}
function FormationSubDiscCtrl:Awake()
self.animator = self.gameObject:GetComponent("Animator")
end
function FormationSubDiscCtrl:FadeIn()
end
function FormationSubDiscCtrl:FadeOut()
end
function FormationSubDiscCtrl:OnEnable()
end
function FormationSubDiscCtrl:OnDisable()
end
function FormationSubDiscCtrl:OnDestroy()
end
function FormationSubDiscCtrl:OnRelease()
end
function FormationSubDiscCtrl:Refresh(tbSubDisc, mapNoteNeed, nSubCount)
self.nSubCount = nSubCount
self.mapNote = {}
for i = 1, 3 do
local mapDiscData = PlayerData.Disc:GetDiscById(tbSubDisc[i])
self._mapNode.rtDisc[i]:SetPosLock(nSubCount < i)
if mapDiscData ~= nil then
for _, mapNoteData in ipairs(mapDiscData.tbSubNoteSkills) do
if self.mapNote[mapNoteData.nId] == nil then
self.mapNote[mapNoteData.nId] = 0
end
self.mapNote[mapNoteData.nId] = self.mapNote[mapNoteData.nId] + mapNoteData.nCount
end
end
self._mapNode.rtDisc[i]:SetDisc(mapDiscData, mapNoteNeed, nSubCount < i)
end
self:RefreshNoteList(self.mapNote, mapNoteNeed)
end
function FormationSubDiscCtrl:RefreshNoteList(mapNote, mapNoteNeed)
local tbNote = {}
for nNoteId, nCount in pairs(mapNote) do
table.insert(tbNote, {nNoteId, nCount})
end
local sort = function(a, b)
return a[1] < b[1]
end
table.sort(tbNote, sort)
for i = 1, 8 do
if tbNote[i] == nil then
self._mapNode.goNote[i].gameObject:SetActive(false)
else
self._mapNode.goNote[i].gameObject:SetActive(true)
local mapNote = ConfigTable.GetData("SubNoteSkill", tbNote[i][1])
if mapNote then
local sNotePath = ""
if mapNoteNeed[tbNote[i][1]] == nil then
sNotePath = mapNote.Icon .. AllEnum.DiscSkillIconSurfix.Small
else
sNotePath = mapNote.Icon .. AllEnum.DiscSkillIconSurfix.S_Light
end
self:SetPngSprite(self._mapNode.goNote[i], sNotePath)
NovaAPI.SetTMPText(self._mapNode.TMPNoteCount[i], tbNote[i][2])
end
end
end
end
function FormationSubDiscCtrl:SetCurSelect(bCur)
self._mapNode.imgSubTitleActive:SetActive(bCur)
end
function FormationSubDiscCtrl:SetTitle(bEnable)
self._mapNode.imgSubTitleActive:SetActive(bEnable)
end
function FormationSubDiscCtrl:OnBtnClick_Disc(btn, nIdx)
if nIdx > self.nSubCount then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("DiscFormation_SubUnlockHint"))
return
end
EventManager.Hit("DiscFormation_OpenList", 2)
end
function FormationSubDiscCtrl:PlayAnim(bIn)
if bIn then
self.animator:Play("rtSubDiscSelect_in")
else
self.animator:Play("rtSubDiscSelect_out")
end
end
return FormationSubDiscCtrl