08b515afd9
EN: 2.0.0.143 CN: 2.0.0.142 JP: 2.0.0.145 KR: 2.0.0.150
127 lines
4.3 KiB
Lua
127 lines
4.3 KiB
Lua
local SoldierHandbookPartnerCtrl = class("SoldierHandbookPartnerCtrl", BaseCtrl)
|
|
local iconPath = "Icon/SoldierPartner/"
|
|
local tabType = {Camp = 1, Sect = 2}
|
|
SoldierHandbookPartnerCtrl._mapNodeConfig = {
|
|
btn_tabcamp = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_TabCamp"
|
|
},
|
|
txt_camp = {
|
|
nCount = 2,
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Soldier_Handbook_Partner_Camp"
|
|
},
|
|
go_camp_on = {sNodeName = "tab_campOn"},
|
|
go_camp_off = {
|
|
sNodeName = "tab_campOff"
|
|
},
|
|
btn_tabsect = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_TabSect"
|
|
},
|
|
txt_sect = {
|
|
nCount = 2,
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Soldier_Handbook_Partner_Sect"
|
|
},
|
|
go_sect_on = {sNodeName = "tab_sectOn"},
|
|
go_sect_off = {
|
|
sNodeName = "tab_sectOff"
|
|
},
|
|
sv_partnerGroup = {
|
|
sComponentName = "LoopScrollView"
|
|
}
|
|
}
|
|
SoldierHandbookPartnerCtrl._mapEventConfig = {}
|
|
SoldierHandbookPartnerCtrl._mapRedDotConfig = {}
|
|
function SoldierHandbookPartnerCtrl:Awake()
|
|
end
|
|
function SoldierHandbookPartnerCtrl:OnDestroy()
|
|
self:Clear()
|
|
end
|
|
function SoldierHandbookPartnerCtrl:Clear()
|
|
end
|
|
function SoldierHandbookPartnerCtrl:Init()
|
|
self:Clear()
|
|
self:InitPartnerGroupList()
|
|
self:SetSelectTab(tabType.Camp, true)
|
|
end
|
|
function SoldierHandbookPartnerCtrl:InitTab()
|
|
self._mapNode.go_camp_on.gameObject:SetActive(self.nCurrentTab == tabType.Camp)
|
|
self._mapNode.go_sect_on.gameObject:SetActive(self.nCurrentTab == tabType.Sect)
|
|
self._mapNode.go_camp_off.gameObject:SetActive(self.nCurrentTab ~= tabType.Camp)
|
|
self._mapNode.go_sect_off.gameObject:SetActive(self.nCurrentTab ~= tabType.Sect)
|
|
end
|
|
function SoldierHandbookPartnerCtrl:InitPartnerGroupList()
|
|
self.tbPartnerGroup = {}
|
|
local func_ForEach_PartnerGroup = function(mapPartnerGroup)
|
|
if self.tbPartnerGroup[mapPartnerGroup.PartnerCatalogue] == nil then
|
|
self.tbPartnerGroup[mapPartnerGroup.PartnerCatalogue] = {}
|
|
end
|
|
table.insert(self.tbPartnerGroup[mapPartnerGroup.PartnerCatalogue], mapPartnerGroup)
|
|
end
|
|
ForEachTableLine(DataTable.SoldierPartnerGroup, func_ForEach_PartnerGroup)
|
|
end
|
|
function SoldierHandbookPartnerCtrl:SetSelectTab(nTab, bForce)
|
|
bForce = bForce or false
|
|
if self.nCurrentTab == nTab and not bForce then
|
|
return
|
|
end
|
|
self.nCurrentTab = nTab
|
|
self:InitTab()
|
|
self.tbCurPartnerGroup = {}
|
|
if self.nCurrentTab == tabType.Camp then
|
|
self.tbCurPartnerGroup = self.tbPartnerGroup[GameEnum.PartnerCatalogue.Camp]
|
|
else
|
|
self.tbCurPartnerGroup = self.tbPartnerGroup[GameEnum.PartnerCatalogue.Style]
|
|
end
|
|
self._mapNode.sv_partnerGroup:Init(#self.tbCurPartnerGroup, self, self.OnPartnerGroupRefreshGrid)
|
|
local wait = function()
|
|
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
|
self:PlayGridAnim()
|
|
end
|
|
cs_coroutine.start(wait)
|
|
end
|
|
function SoldierHandbookPartnerCtrl:PlayGridAnim()
|
|
local listInUse = {}
|
|
listInUse = self._mapNode.sv_partnerGroup:GetInUseGridIndex()
|
|
self.tbGridInUse = {}
|
|
for i = 0, listInUse.Count - 1 do
|
|
table.insert(self.tbGridInUse, listInUse[i])
|
|
end
|
|
local columnCount = 5
|
|
for k, v in ipairs(self.tbGridInUse) do
|
|
local goGrid = self._mapNode.sv_partnerGroup.transform:Find("Viewport/Content/" .. v)
|
|
local animRoot = goGrid:GetComponent("Animator")
|
|
local delayTime = math.modf((k - 1) / columnCount) * 0.2 + k % (columnCount + 1) * 0.04
|
|
animRoot:Play("ready")
|
|
if 0 < delayTime then
|
|
self:AddTimer(1, delayTime, function()
|
|
animRoot:Play("go")
|
|
end, true, true, true)
|
|
else
|
|
animRoot:Play("go")
|
|
end
|
|
end
|
|
end
|
|
function SoldierHandbookPartnerCtrl:OnPartnerGroupRefreshGrid(goGrid, gridIndex)
|
|
local nIndex = gridIndex + 1
|
|
local iconPartner = goGrid.transform:Find("partnerCell/iconPartner"):GetComponent("Image")
|
|
local txt_name = goGrid.transform:Find("partnerCell/txt_name"):GetComponent("TMP_Text")
|
|
local btn = goGrid.transform:Find("partnerCell"):GetComponent("UIButton")
|
|
local cfg = self.tbCurPartnerGroup[nIndex]
|
|
self:SetPngSprite(iconPartner, iconPath .. cfg.Icon .. AllEnum.SoldierChessIconSurfix.L)
|
|
NovaAPI.SetTMPText(txt_name, cfg.Name)
|
|
btn.onClick:RemoveAllListeners()
|
|
btn.onClick:AddListener(function()
|
|
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierHandbookPartnerDetailPanel, cfg.Id)
|
|
end)
|
|
end
|
|
function SoldierHandbookPartnerCtrl:OnBtnClick_TabCamp()
|
|
self:SetSelectTab(tabType.Camp)
|
|
end
|
|
function SoldierHandbookPartnerCtrl:OnBtnClick_TabSect()
|
|
self:SetSelectTab(tabType.Sect)
|
|
end
|
|
return SoldierHandbookPartnerCtrl
|