forked from endernon/PGRData
108 lines
3.4 KiB
Lua
108 lines
3.4 KiB
Lua
|
local XUiGridZone = XClass(nil, "XUiGridZone")
|
|||
|
|
|||
|
function XUiGridZone:Ctor(ui, rootUi)
|
|||
|
self.GameObject = ui.gameObject
|
|||
|
self.Transform = ui.transform
|
|||
|
self.RootUi = rootUi
|
|||
|
XTool.InitUiObject(self)
|
|||
|
self:AutoAddListener()
|
|||
|
|
|||
|
self.LordList = {}
|
|||
|
for i = 1, 3 do
|
|||
|
table.insert(self.LordList, self["GridLord" .. i])
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiGridZone:RegisterClickEvent(uiNode, func)
|
|||
|
if func == nil then
|
|||
|
XLog.Error("XUiGridZone:RegisterClickEvent函数参数错误:参数func不能为空")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if type(func) ~= "function" then
|
|||
|
XLog.Error("XUiGridZone:RegisterClickEvent函数错误, 参数func需要是function类型, func的类型是" .. type(func))
|
|||
|
end
|
|||
|
|
|||
|
local listener = function(...)
|
|||
|
func(self, ...)
|
|||
|
end
|
|||
|
|
|||
|
CsXUiHelper.RegisterClickEvent(uiNode, listener)
|
|||
|
end
|
|||
|
|
|||
|
function XUiGridZone:AutoAddListener()
|
|||
|
self:RegisterClickEvent(self.BtnZone, self.OnBtnZoneClick)
|
|||
|
end
|
|||
|
|
|||
|
function XUiGridZone:OnBtnZoneClick()
|
|||
|
if not self.AreaData then
|
|||
|
XUiManager.TipError(CS.XTextManager.GetText("ArenaActivityAreaIsNotOpen"))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if self.AreaData.Lock == 1 then
|
|||
|
--解锁区域
|
|||
|
local areaStageCfg = XArenaConfigs.GetArenaAreaStageCfgByAreaId(self.AreaData.AreaId)
|
|||
|
local remainCount = XDataCenter.ArenaManager.GetUnlockArenaAreaCount()
|
|||
|
|
|||
|
local unlockStr = CS.XTextManager.GetText("ArenaActivityConfirmUnlockArea", areaStageCfg.Name, remainCount)
|
|||
|
XUiManager.DialogTip(CS.XTextManager.GetText("TipTitle"), unlockStr, XUiManager.DialogType.Normal, nil, function()
|
|||
|
XDataCenter.ArenaManager.RequestUnlockArea(self.AreaData.AreaId, function()
|
|||
|
self:SetMetaData(self.AreaData.AreaId)
|
|||
|
end)
|
|||
|
end)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
-- 进入关卡界面
|
|||
|
XLuaUiManager.Open("UiArenaStage", self.AreaData.AreaId)
|
|||
|
end
|
|||
|
|
|||
|
function XUiGridZone:SetMetaData(areaId)
|
|||
|
if not areaId then
|
|||
|
-- 没有开启,就不显示
|
|||
|
self.GameObject:SetActive(false)
|
|||
|
self.AreaData = nil
|
|||
|
return
|
|||
|
end
|
|||
|
self.GameObject:SetActive(true)
|
|||
|
|
|||
|
self.AreaData = XDataCenter.ArenaManager.GetArenaAreaDataByAreaId(areaId)
|
|||
|
local areaStageCfg = XArenaConfigs.GetArenaAreaStageCfgByAreaId(areaId)
|
|||
|
|
|||
|
self.PanelClose.gameObject:SetActive(self.AreaData == nil)
|
|||
|
self.PanelOpen.gameObject:SetActive(self.AreaData ~= nil)
|
|||
|
|
|||
|
self.TxtName.text = areaStageCfg.Name
|
|||
|
self.TxtOpenName.text = areaStageCfg.Name
|
|||
|
self.TxtLockName.text = areaStageCfg.Name
|
|||
|
|
|||
|
if not self.AreaData then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
self.TxtPoint.text = CS.XTextManager.GetText("ArenaActivityPoint", self.AreaData.Point)
|
|||
|
self.PanelLock.gameObject:SetActive(self.AreaData.Lock == 1)
|
|||
|
self.PanelUnlock.gameObject:SetActive(self.AreaData.Lock == 0)
|
|||
|
|
|||
|
for i, grid in ipairs(self.LordList) do
|
|||
|
local head = XUiHelper.TryGetComponent(grid, "Head")
|
|||
|
local rank = XUiHelper.TryGetComponent(grid, "TxtRank", "Text")
|
|||
|
|
|||
|
local info = self.AreaData.LordList[i]
|
|||
|
if info then
|
|||
|
rank.text = i
|
|||
|
XUiPLayerHead.InitPortrait(info.CurrHeadPortraitId, info.CurrHeadFrameId, head)
|
|||
|
else
|
|||
|
rank.text = ""
|
|||
|
XUiPLayerHead.Hide(head)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiGridZone:SetGridClose()
|
|||
|
self.PanelClose.gameObject:SetActive(true)
|
|||
|
self.PanelOpen.gameObject:SetActive(false)
|
|||
|
end
|
|||
|
|
|||
|
return XUiGridZone
|