8c4bd41668
EN: 1.13.0.124 CN: 1.13.0.124 JP: 1.13.0.128 KR: 1.13.0.130
133 lines
4.1 KiB
Lua
133 lines
4.1 KiB
Lua
local SoldierHandbookStrategyCardCtrl = class("SoldierHandbookStrategyCardCtrl", BaseCtrl)
|
|
local tabType = {
|
|
All = 1,
|
|
R = 2,
|
|
M = 3,
|
|
N = 4
|
|
}
|
|
local tab2ItemRarity = {
|
|
[tabType.All] = 1,
|
|
[tabType.R] = GameEnum.itemRarity.R,
|
|
[tabType.M] = GameEnum.itemRarity.M,
|
|
[tabType.N] = GameEnum.itemRarity.N
|
|
}
|
|
SoldierHandbookStrategyCardCtrl._mapNodeConfig = {
|
|
btn_tab = {
|
|
nCount = 4,
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Tab"
|
|
},
|
|
tab_On = {nCount = 4},
|
|
tab_Off = {nCount = 4},
|
|
sv_loop = {
|
|
sComponentName = "LoopScrollView"
|
|
},
|
|
CardDetailCtrl = {
|
|
sNodeName = "DetailRoot",
|
|
sCtrlName = "Game.UI.Soldier.Handbook.SoldierHandbookCardDetailCtrl"
|
|
}
|
|
}
|
|
SoldierHandbookStrategyCardCtrl._mapEventConfig = {}
|
|
SoldierHandbookStrategyCardCtrl._mapRedDotConfig = {}
|
|
function SoldierHandbookStrategyCardCtrl:Awake()
|
|
end
|
|
function SoldierHandbookStrategyCardCtrl:OnEnable()
|
|
end
|
|
function SoldierHandbookStrategyCardCtrl:OnDisable()
|
|
end
|
|
function SoldierHandbookStrategyCardCtrl:OnDestroy()
|
|
self:Clear()
|
|
end
|
|
function SoldierHandbookStrategyCardCtrl: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 SoldierHandbookStrategyCardCtrl:Init()
|
|
self.tbCardItemCtrl = {}
|
|
self:InitCardList()
|
|
self:SwitchToTab(tabType.All, true)
|
|
end
|
|
function SoldierHandbookStrategyCardCtrl: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.SoldierStrategyCard, 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 SoldierHandbookStrategyCardCtrl:SwitchToTab(nTab, bForce)
|
|
if self.nCurTab == nTab and not bForce then
|
|
return
|
|
end
|
|
if self.nCurTab ~= nil then
|
|
self._mapNode.tab_Off[self.nCurTab]:SetActive(true)
|
|
self._mapNode.tab_On[self.nCurTab]:SetActive(false)
|
|
else
|
|
for i = 1, 4 do
|
|
self._mapNode.tab_Off[i]:SetActive(true)
|
|
self._mapNode.tab_On[i]:SetActive(false)
|
|
end
|
|
end
|
|
self.nCurTab = nTab
|
|
self._mapNode.tab_On[self.nCurTab]:SetActive(true)
|
|
self._mapNode.tab_Off[self.nCurTab]:SetActive(false)
|
|
self:RefreshCardList()
|
|
end
|
|
function SoldierHandbookStrategyCardCtrl:RefreshCardList()
|
|
self.tbCardItemCtrl = {}
|
|
self.tbCurCardList = {}
|
|
self.nSelectIndex = 1
|
|
if self.nCurTab == tabType.All then
|
|
self.tbCurCardList = self.tbAllCard
|
|
else
|
|
self.tbCurCardList = self.mapCardByRarity[tab2ItemRarity[self.nCurTab]]
|
|
end
|
|
self._mapNode.sv_loop:Init(#self.tbCurCardList, self, self.OnCardRefreshGrid, self.OnCardGridBtnClick, false)
|
|
EventManager.Hit("SoldierHandbookStrategyCard_Selected", self.tbCurCardList[self.nSelectIndex].Id)
|
|
self:RefreshDetail()
|
|
end
|
|
function SoldierHandbookStrategyCardCtrl:RefreshDetail()
|
|
self._mapNode.CardDetailCtrl:RefreshStrategyCardDetail(self.tbCurCardList[self.nSelectIndex].Id)
|
|
end
|
|
function SoldierHandbookStrategyCardCtrl: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.SoldierStrategyCardItemCtrl")
|
|
end
|
|
self.tbCardItemCtrl[nInstanceId]:SetItemData(self.tbCurCardList[nIndex], self.nSelectIndex == nIndex)
|
|
end
|
|
function SoldierHandbookStrategyCardCtrl:OnCardGridBtnClick(goGrid, gridIndex)
|
|
local nIndex = gridIndex + 1
|
|
self.nSelectIndex = nIndex
|
|
EventManager.Hit("SoldierHandbookStrategyCard_Selected", self.tbCurCardList[self.nSelectIndex].Id)
|
|
self:RefreshDetail()
|
|
end
|
|
function SoldierHandbookStrategyCardCtrl:OnBtnClick_Tab(btn, nIndex)
|
|
if nIndex == self.nCurTab then
|
|
return
|
|
end
|
|
self:SwitchToTab(nIndex)
|
|
end
|
|
return SoldierHandbookStrategyCardCtrl
|