129 lines
3.5 KiB
Lua
129 lines
3.5 KiB
Lua
|
|
local uiCtrl = require_ex('UI/Panels/Base/UICtrl')
|
|
local PANEL_ID = PanelId.MapMarkDetailDoodadGroup
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MapMarkDetailDoodadGroupCtrl = HL.Class('MapMarkDetailDoodadGroupCtrl', uiCtrl.UICtrl)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MapMarkDetailDoodadGroupCtrl.s_messages = HL.StaticField(HL.Table) << {
|
|
|
|
}
|
|
|
|
|
|
MapMarkDetailDoodadGroupCtrl.m_markInstId = HL.Field(HL.String) << ''
|
|
|
|
|
|
MapMarkDetailDoodadGroupCtrl.m_tickCoroutine = HL.Field(HL.Thread)
|
|
|
|
|
|
|
|
|
|
|
|
MapMarkDetailDoodadGroupCtrl.OnCreate = HL.Override(HL.Any) << function(self, args)
|
|
local markInstId = args.markInstId
|
|
local getRuntimeDataSuccess, markRuntimeData = GameInstance.player.mapManager:GetMarkInstRuntimeData(markInstId)
|
|
if getRuntimeDataSuccess == false then
|
|
logger.error("地图详情页获取实例数据失败" .. markInstId)
|
|
return
|
|
end
|
|
local detail = markRuntimeData.detail
|
|
if detail == nil then
|
|
logger.error("采集组详情数据中没有detailData " .. markInstId)
|
|
else
|
|
local itemId = markRuntimeData.detail.displayItemId
|
|
local _, itemData = Tables.itemTable:TryGetValue(itemId)
|
|
self.view.itemIcon:LoadSprite(UIConst.UI_SPRITE_ITEM_BIG, itemData.iconId)
|
|
self.view.tipsBtn.onClick:AddListener(function()
|
|
Notify(MessageConst.SHOW_ITEM_TIPS, {
|
|
itemId = itemId,
|
|
transform = self.view.itemIcon.gameObject.transform,
|
|
posType = UIConst.UI_TIPS_POS_TYPE.LeftTop,
|
|
})
|
|
end)
|
|
self:_RenderDoodadPart(markInstId)
|
|
end
|
|
|
|
local commonArgs = {}
|
|
commonArgs.bigBtnActive = true
|
|
commonArgs.markInstId = markInstId
|
|
self.view.detailCommon:InitMapMarkDetailCommon(commonArgs)
|
|
end
|
|
|
|
|
|
|
|
MapMarkDetailDoodadGroupCtrl.OnClose = HL.Override() << function(self)
|
|
self:_StopTickIfNecessary()
|
|
end
|
|
|
|
|
|
|
|
MapMarkDetailDoodadGroupCtrl._StopTickIfNecessary = HL.Method() << function(self)
|
|
if self.m_tickCoroutine ~= nil then
|
|
self:_ClearCoroutine(self.m_tickCoroutine)
|
|
self.m_tickCoroutine = nil
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
MapMarkDetailDoodadGroupCtrl._RenderDoodadPart = HL.Method(HL.String) << function(self, markInstId)
|
|
self:_StopTickIfNecessary()
|
|
if string.isEmpty(markInstId) then
|
|
return
|
|
end
|
|
self.m_markInstId = markInstId
|
|
self:_RefreshDoodadPart()
|
|
self.m_tickCoroutine = self:_StartCoroutine(function()
|
|
while true do
|
|
coroutine.wait(UIConst.COMMON_UI_TIME_UPDATE_INTERVAL)
|
|
self:_RefreshDoodadPart()
|
|
end
|
|
end)
|
|
end
|
|
|
|
|
|
|
|
MapMarkDetailDoodadGroupCtrl._RefreshDoodadPart = HL.Method() << function(self)
|
|
local doodadSystem = GameInstance.player.doodadSystem
|
|
local doodadGroupData = doodadSystem:GetDoodadSystemDataByMarkInst(self.m_markInstId)
|
|
if doodadGroupData == nil then
|
|
return
|
|
end
|
|
local doodadData = doodadGroupData.msgData
|
|
if doodadData == nil then
|
|
return
|
|
end
|
|
local isMax = doodadGroupData.isMax
|
|
local curCount = doodadGroupData.curCount
|
|
self.view.itemTopState:SetState(isMax and "Max" or "Normal")
|
|
self.view.currentTxt.text = curCount
|
|
self.view.upperLimitTxt.text = doodadGroupData.maxCount
|
|
if isMax then
|
|
return
|
|
end
|
|
self.view.current1Txt.text = curCount
|
|
self.view.upperLimit1Txt.text = curCount + doodadGroupData.nextRefreshCount
|
|
local curServerTime = DateTimeUtils.GetCurrentTimestampBySeconds()
|
|
local leftRefreshTime = doodadGroupData.nextRefreshTime - curServerTime
|
|
leftRefreshTime = math.max(leftRefreshTime, 0)
|
|
self.view.refreshTimeTxt.text = UIUtils.getLeftTimeToSecond(leftRefreshTime)
|
|
end
|
|
|
|
HL.Commit(MapMarkDetailDoodadGroupCtrl)
|