144 lines
3.8 KiB
Lua
144 lines
3.8 KiB
Lua
local uiCtrl = require_ex('UI/Panels/Base/UICtrl')
|
|
local PANEL_ID = PanelId.MapMarkDetailRecycleBin
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MapMarkDetailRecycleBinCtrl = HL.Class('MapMarkDetailRecycleBinCtrl', uiCtrl.UICtrl)
|
|
|
|
|
|
MapMarkDetailRecycleBinCtrl.m_rewardItemCache = HL.Field(HL.Forward('UIListCache'))
|
|
|
|
|
|
MapMarkDetailRecycleBinCtrl.m_markInstId = HL.Field(HL.String) << ""
|
|
|
|
|
|
MapMarkDetailRecycleBinCtrl.m_recycleBinData = HL.Field(CS.Beyond.Gameplay.RecycleBinData)
|
|
|
|
|
|
MapMarkDetailRecycleBinCtrl.m_recyclingCor = HL.Field(HL.Thread)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MapMarkDetailRecycleBinCtrl.s_messages = HL.StaticField(HL.Table) << {
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
MapMarkDetailRecycleBinCtrl.OnCreate = HL.Override(HL.Any) << function(self, arg)
|
|
self.m_rewardItemCache = UIUtils.genCellCache(self.view.item)
|
|
self.m_markInstId = arg.markInstId
|
|
|
|
self:_InitRecycleBinInfo()
|
|
self:_InitController()
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MapMarkDetailRecycleBinCtrl.OnClose = HL.Override() << function(self)
|
|
if self.m_recyclingCor then
|
|
self.m_recyclingCor = self:_ClearCoroutine(self.m_recyclingCor)
|
|
end
|
|
end
|
|
|
|
|
|
|
|
MapMarkDetailRecycleBinCtrl._InitRecycleBinInfo = HL.Method() << function(self)
|
|
local markInstId = self.m_markInstId
|
|
local getRuntimeDataSuccess, markRuntimeData = GameInstance.player.mapManager:GetMarkInstRuntimeData(markInstId)
|
|
if not getRuntimeDataSuccess then
|
|
logger.error("地图详情页获取实例数据失败" .. self.m_instId)
|
|
return
|
|
end
|
|
|
|
local detail = markRuntimeData.detail
|
|
local recycleBinId = detail.systemInstId
|
|
|
|
local recycleBinCfg = Tables.recycleBinTable[recycleBinId]
|
|
local isUnlock, recycleBinData = GameInstance.player.recycleBinSystem.recycleBins:TryGetValue(recycleBinId)
|
|
local curLv = isUnlock and recycleBinData.lv or 0
|
|
local levelData = recycleBinCfg.levelData
|
|
local descRawText = isUnlock and levelData[curLv].desc or recycleBinCfg.unlockDesc
|
|
|
|
self.view.mapMarkDetailCommonStateController:SetState(isUnlock and "Unlocked" or "Locked")
|
|
self.m_recycleBinData = recycleBinData
|
|
|
|
if isUnlock then
|
|
local isMaxLv = recycleBinData.isMaxLv
|
|
self.view.lvStateNode:SetState(isMaxLv and "Max" or "Nrl")
|
|
self.view.lvNumTxt.text = curLv
|
|
|
|
local rewardId = levelData[curLv].rewardId
|
|
local rewardBundles = UIUtils.getRewardItems(rewardId)
|
|
|
|
self.m_rewardItemCache:Refresh(#rewardBundles, function(cell, luaIndex)
|
|
self.view.mapMarkDetailCommon:InitDetailItem(cell, rewardBundles[luaIndex], {
|
|
tipsPosType = UIConst.UI_TIPS_POS_TYPE.LeftMid,
|
|
tipsPosTransform = self.view.scrollView,
|
|
})
|
|
end)
|
|
|
|
self:_UpdateCanPickUp()
|
|
self.m_recyclingCor = self:_StartCoroutine(function()
|
|
while true do
|
|
coroutine.wait(UIConst.COMMON_UI_TIME_UPDATE_INTERVAL)
|
|
self:_UpdateCanPickUp()
|
|
end
|
|
end)
|
|
end
|
|
|
|
local commonArgs = {}
|
|
commonArgs.bigBtnActive = true
|
|
commonArgs.markInstId = self.m_markInstId
|
|
commonArgs.descText = descRawText
|
|
self.view.mapMarkDetailCommon:InitMapMarkDetailCommon(commonArgs)
|
|
end
|
|
|
|
|
|
|
|
MapMarkDetailRecycleBinCtrl._UpdateCanPickUp = HL.Method() << function(self)
|
|
if not self.m_recycleBinData then
|
|
return
|
|
end
|
|
|
|
local cd = self.m_recycleBinData:GetCoolDownBySeconds()
|
|
local canPick = cd <= 0
|
|
self.view.canPickNode.gameObject:SetActive(canPick)
|
|
self.view.recyclingNode.gameObject:SetActive(not canPick)
|
|
|
|
if not canPick then
|
|
self.view.timeTxt.text = UIUtils.getLeftTimeToSecond(cd)
|
|
end
|
|
end
|
|
|
|
|
|
|
|
MapMarkDetailRecycleBinCtrl._InitController = HL.Method() << function(self)
|
|
if DeviceInfo.usingController then
|
|
self.view.rewardList.onIsFocusedChange:AddListener(function(isFocused)
|
|
if not isFocused then
|
|
Notify(MessageConst.HIDE_ITEM_TIPS)
|
|
end
|
|
end)
|
|
end
|
|
end
|
|
|
|
HL.Commit(MapMarkDetailRecycleBinCtrl)
|