Files
StellaSora_DataLua/lua/game/ui/soldier/handbook/soldierhandbookstartercardctrl.lua
T
SL1900 8c4bd41668 Update - 1.13.0.124
EN: 1.13.0.124
CN: 1.13.0.124
JP: 1.13.0.128
KR: 1.13.0.130
2026-07-21 12:30:00 +09:00

85 lines
2.9 KiB
Lua

local SoldierHandbookStarterCardCtrl = class("SoldierHandbookStarterCardCtrl", BaseCtrl)
SoldierHandbookStarterCardCtrl._mapNodeConfig = {
sv_loop = {
sComponentName = "LoopScrollView"
},
CardDetailCtrl = {
sNodeName = "DetailRoot",
sCtrlName = "Game.UI.Soldier.Handbook.SoldierHandbookCardDetailCtrl"
}
}
SoldierHandbookStarterCardCtrl._mapEventConfig = {}
SoldierHandbookStarterCardCtrl._mapRedDotConfig = {}
function SoldierHandbookStarterCardCtrl:Awake()
end
function SoldierHandbookStarterCardCtrl:OnEnable()
end
function SoldierHandbookStarterCardCtrl:OnDisable()
end
function SoldierHandbookStarterCardCtrl:OnDestroy()
self:Clear()
end
function SoldierHandbookStarterCardCtrl:Clear()
if self.tbCardItemCtrl ~= nil then
for _, v in ipairs(self.tbCardItemCtrl) do
self:UnbindCtrlByNode(v)
end
self.tbCardItemCtrl = {}
end
self._mapNode.CardDetailCtrl:Clear()
end
function SoldierHandbookStarterCardCtrl:Init()
self.tbCardItemCtrl = {}
self:InitCardList()
self:RefreshCardList()
end
function SoldierHandbookStarterCardCtrl:InitCardList()
self.tbAllCard = {}
self.mapCardByRarity = {}
local func_ForEach_Card = function(mapCardData)
table.insert(self.tbAllCard, mapCardData)
if self.mapCardByRarity[mapCardData.Rarity] == nil then
self.mapCardByRarity[mapCardData.Rarity] = {}
end
table.insert(self.mapCardByRarity[mapCardData.Rarity], mapCardData)
end
ForEachTableLine(DataTable.SoldierStarterCard, func_ForEach_Card)
table.sort(self.tbAllCard, function(a, b)
if a.Rarity == b.Rarity then
return a.Id < b.Id
end
return a.Rarity > b.Rarity
end)
for nRarity, tbCard in pairs(self.mapCardByRarity) do
table.sort(tbCard, function(a, b)
return a.Id < b.Id
end)
end
end
function SoldierHandbookStarterCardCtrl:RefreshCardList()
self.tbCardItemCtrl = {}
self.nSelectIndex = 1
self.tbCurCardList = self.tbAllCard
self._mapNode.sv_loop:Init(#self.tbCurCardList, self, self.OnCardRefreshGrid, self.OnCardGridBtnClick, false)
EventManager.Hit("SoldierHandbookStarterCard_Selected", self.tbCurCardList[self.nSelectIndex].Id)
self:RefreshDetail()
end
function SoldierHandbookStarterCardCtrl:RefreshDetail()
self._mapNode.CardDetailCtrl:RefreshStarterCardDetail(self.tbCurCardList[self.nSelectIndex].Id)
end
function SoldierHandbookStarterCardCtrl:OnCardRefreshGrid(goGrid, gridIndex)
local nIndex = gridIndex + 1
local nInstanceId = goGrid:GetInstanceID()
if not self.tbCardItemCtrl[nInstanceId] then
self.tbCardItemCtrl[nInstanceId] = self:BindCtrlByNode(goGrid, "Game.UI.Soldier.Template.SoldierStarterCardItemCtrl")
end
self.tbCardItemCtrl[nInstanceId]:SetItemData(self.tbCurCardList[nIndex], self.nSelectIndex == nIndex)
end
function SoldierHandbookStarterCardCtrl:OnCardGridBtnClick(goGrid, gridIndex)
local nIndex = gridIndex + 1
self.nSelectIndex = nIndex
EventManager.Hit("SoldierHandbookStarterCard_Selected", self.tbCurCardList[self.nSelectIndex].Id)
self:RefreshDetail()
end
return SoldierHandbookStarterCardCtrl