318 lines
8.8 KiB
Lua
318 lines
8.8 KiB
Lua
local uiCtrl = require_ex('UI/Panels/Base/UICtrl')
|
||
local PANEL_ID = PanelId.CommonPOIUpgradeToast
|
||
local PANEL_STATE = {
|
||
Unlock = "Unlock",
|
||
LevelUp = "LevelUp"
|
||
}
|
||
|
||
local GetDescFunc = {
|
||
[GEnums.DomainPoiType.RecycleBin] = "_GetDescRecycleBin",
|
||
[GEnums.DomainPoiType.DomainShop] = "_GetDescDomainShop",
|
||
[GEnums.DomainPoiType.KiteStation] = "_GetDescKiteStation",
|
||
[GEnums.DomainPoiType.DomainDepot] = "_GetDescDomainDepot",
|
||
}
|
||
|
||
|
||
local GetArgsFunc = {
|
||
[GEnums.DomainPoiType.RecycleBin] = function(state, arg)
|
||
local args = {}
|
||
if state == PANEL_STATE.Unlock then
|
||
local _, _, _, _, callback = unpack(arg)
|
||
args.toastFinishCallback = callback
|
||
end
|
||
return args
|
||
end
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl = HL.Class('CommonPOIUpgradeToastCtrl', uiCtrl.UICtrl)
|
||
|
||
local MAIN_HUD_TOAST_TYPE = "CommonPOIUpgradeToast"
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl.m_args = HL.Field(HL.Table)
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl.m_state = HL.Field(HL.String) << ""
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl.m_domainPOIType = HL.Field(GEnums.DomainPoiType)
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl.m_preLv = HL.Field(HL.Number) << 0
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl.m_instId = HL.Field(HL.String) << ""
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl.m_lv = HL.Field(HL.Number) << 0
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl.m_descTxtCellCache = HL.Field(HL.Forward("UIListCache"))
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl.m_showCor = HL.Field(HL.Thread)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl.s_messages = HL.StaticField(HL.Table) << {
|
||
|
||
[MessageConst.INTERRUPT_MAIN_HUD_ACTION_QUEUE] = 'InterruptMainHudActionQueue',
|
||
}
|
||
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl.OnCommonPOIUnlocked = HL.StaticMethod(HL.Opt(HL.Table)) << function(arg)
|
||
if arg == nil then
|
||
return
|
||
end
|
||
|
||
local domainPOIType, instId = unpack(arg)
|
||
LuaSystemManager.mainHudActionQueue:AddRequest(MAIN_HUD_TOAST_TYPE, function()
|
||
UIManager:Open(PANEL_ID, { domainPOIType, instId, 0, 1})
|
||
end)
|
||
end
|
||
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl.OnCommonPOILevelUp = HL.StaticMethod(HL.Opt(HL.Table)) << function(arg)
|
||
if arg == nil then
|
||
return
|
||
end
|
||
|
||
local domainPOIType, instId, preLv, lv = unpack(arg)
|
||
LuaSystemManager.mainHudActionQueue:AddRequest(MAIN_HUD_TOAST_TYPE, function()
|
||
UIManager:Open(PANEL_ID, { domainPOIType, instId, preLv, lv})
|
||
end)
|
||
end
|
||
|
||
|
||
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl.OnCreate = HL.Override(HL.Any) << function(self, arg)
|
||
self.m_domainPOIType, self.m_instId, self.m_preLv, self.m_lv, self.m_args = unpack(arg)
|
||
self.m_args = self.m_args or {}
|
||
self.m_state = self:_IsStateUnlock() and PANEL_STATE.Unlock or PANEL_STATE.LevelUp
|
||
self.m_descTxtCellCache = UIUtils.genCellCache(self.view.infoNode)
|
||
|
||
self:_InitBaseInfo()
|
||
self:_InitDesc()
|
||
|
||
self.m_showCor = self:_StartCoroutine(function()
|
||
self:_StartToastShowingProcess()
|
||
end)
|
||
|
||
AudioManager.PostEvent(self:_IsStateUnlock() and "Au_UI_Toast_CommonPOIUnlock_Open" or "Au_UI_Toast_CommonPOILevelUp_Open")
|
||
end
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl.OnClose = HL.Override() << function(self)
|
||
if self.m_showCor then
|
||
self.m_showCor = self:_ClearCoroutine(self.m_showCor)
|
||
end
|
||
end
|
||
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl._IsStateUnlock = HL.Method().Return(HL.Boolean) << function(self)
|
||
return self.m_preLv == 0 and self.m_lv == 1
|
||
end
|
||
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl._StartToastShowingProcess = HL.Method() << function(self)
|
||
local animWrapper = self.animationWrapper
|
||
|
||
|
||
local inAnimName = string.format("common_poi_%s_in", string.lower(self.m_state))
|
||
local inAnimDuration = animWrapper:GetClipLength(inAnimName)
|
||
animWrapper:Play(inAnimName)
|
||
coroutine.wait(inAnimDuration)
|
||
|
||
|
||
coroutine.wait(self.view.config.STAY_DURATION)
|
||
|
||
|
||
local outAnimDuration = self:GetAnimationOutDuration()
|
||
self:PlayAnimationOutWithCallback()
|
||
coroutine.wait(outAnimDuration)
|
||
|
||
if self.m_args.toastFinishCallback then
|
||
self.m_args.toastFinishCallback()
|
||
end
|
||
self:Close()
|
||
|
||
Notify(MessageConst.ON_ONE_MAIN_HUD_ACTION_FINISHED, MAIN_HUD_TOAST_TYPE)
|
||
end
|
||
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl._InitBaseInfo = HL.Method() << function(self)
|
||
self.view.content:SetState(self.m_state)
|
||
|
||
local domainPOITypeCfg = Tables.domainPoiTable[self.m_domainPOIType]
|
||
if self.m_state == PANEL_STATE.Unlock then
|
||
self.view.nameTxt.text = domainPOITypeCfg.unlockToastTitle
|
||
elseif self.m_state == PANEL_STATE.LevelUp then
|
||
self.view.nameTxt.text = domainPOITypeCfg.upgradeToastTitle
|
||
|
||
self.view.preLvTxt.text = self.m_preLv
|
||
self.view.curLvTxt.text = self.m_lv
|
||
end
|
||
|
||
if not string.isEmpty(domainPOITypeCfg.upgradeToastIcon) then
|
||
self.view.icon:LoadSprite(UIConst.UI_SPRITE_COMMON_POI_UPGRADE_TOAST, domainPOITypeCfg.upgradeToastIcon)
|
||
end
|
||
end
|
||
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl._InitDesc = HL.Method() << function(self)
|
||
local funcName = GetDescFunc[self.m_domainPOIType]
|
||
if not funcName then
|
||
logger.error("[CommonPOIUpgradeToastCtrl] GetDescFunc定义缺失,类型为:", self.m_domainPOIType)
|
||
return
|
||
end
|
||
|
||
local descList = self[funcName](self)
|
||
self.m_descTxtCellCache:RefreshCoroutine(#descList, 0.1, function(cell, index)
|
||
cell.infoTxt.text = descList[index]
|
||
end)
|
||
end
|
||
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl._GetDescRecycleBin = HL.Method().Return(HL.Table) << function(self)
|
||
local descList = {}
|
||
if self.m_state == PANEL_STATE.Unlock then
|
||
table.insert(descList, Language["ui_recycling_upgradtoast_unlock_effect"])
|
||
elseif self.m_state == PANEL_STATE.LevelUp then
|
||
table.insert(descList, Language["ui_recycling_upgradtoast_levelup_effect"])
|
||
end
|
||
|
||
return descList
|
||
end
|
||
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl._GetDescDomainShop = HL.Method().Return(HL.Table) << function(self)
|
||
local descList = {}
|
||
|
||
if self.m_state == PANEL_STATE.Unlock then
|
||
table.insert(descList, Language.LUA_DOMAIN_SHOP_UPGRADE_TOAST_UNLOCK)
|
||
else
|
||
table.insert(descList, Language.LUA_DOMAIN_SHOP_UPGRADE_TOAST_LEVEL_UP)
|
||
end
|
||
|
||
return descList
|
||
end
|
||
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl._GetDescKiteStation = HL.Method().Return(HL.Table) << function(self)
|
||
local descList = {}
|
||
if self.m_state == PANEL_STATE.Unlock then
|
||
table.insert(descList, Language.LUA_KITE_STATION_UNLOCKED_TIP)
|
||
elseif self.m_state == PANEL_STATE.LevelUp then
|
||
|
||
local preSlotCount = Tables.kiteStationLevelTable[self.m_instId].list[self.m_preLv].entrustSlotCnt
|
||
local curSlotCount = Tables.kiteStationLevelTable[self.m_instId].list[self.m_lv].entrustSlotCnt
|
||
|
||
if curSlotCount == preSlotCount then
|
||
table.insert(descList, Language.LUA_KITE_STATION_LEVEL_TIP)
|
||
else
|
||
table.insert(descList, Language.LUA_KITE_STATION_LEVEL_TIP_SLOT_CHANGE)
|
||
end
|
||
|
||
end
|
||
|
||
return descList
|
||
end
|
||
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl._GetDescDomainDepot = HL.Method().Return(HL.Table) << function(self)
|
||
local descList = {}
|
||
local domainDepotId = self.m_instId
|
||
local domainDepotData = GameInstance.player.domainDepotSystem:GetDomainDepotDataById(domainDepotId)
|
||
local levelSuccess, domainDepotLevelList = Tables.domainDepotLevelTable:TryGetValue(domainDepotId)
|
||
if not levelSuccess or domainDepotData == nil then
|
||
return descList
|
||
end
|
||
|
||
domainDepotLevelList = domainDepotLevelList.levelList
|
||
local currLevel = domainDepotData.level
|
||
local currLevelConfig = domainDepotLevelList[currLevel]
|
||
local currExtraDepotLimit = currLevelConfig.extraDepotLimit
|
||
local currDeliverItemTypeCount = currLevelConfig.deliverItemTypeList.Count
|
||
local currDeliverPackTypeCount = currLevelConfig.deliverPackTypeList.Count
|
||
local lastExtraDepotLimit, lastDeliverItemTypeCount, lastDeliverPackTypeCount
|
||
|
||
if self.m_state == PANEL_STATE.Unlock then
|
||
lastExtraDepotLimit, lastDeliverItemTypeCount, lastDeliverPackTypeCount = 0, 0, 0
|
||
else
|
||
local lastLevel = currLevel - 1
|
||
local lastLevelConfig = domainDepotLevelList[lastLevel]
|
||
lastExtraDepotLimit = lastLevelConfig.extraDepotLimit
|
||
lastDeliverItemTypeCount = lastLevelConfig.deliverItemTypeList.Count
|
||
lastDeliverPackTypeCount = lastLevelConfig.deliverPackTypeList.Count
|
||
end
|
||
|
||
if lastDeliverItemTypeCount == 0 and currDeliverItemTypeCount > 0 then
|
||
table.insert(descList, Language.LUA_DOMAIN_DEPOT_TOAST_DELIVER_UNLOCK)
|
||
end
|
||
|
||
if lastExtraDepotLimit < currExtraDepotLimit then
|
||
table.insert(descList, Language.LUA_DOMAIN_DEPOT_TOAST_EXTRA_DEPOT_LIMIT)
|
||
end
|
||
|
||
if lastDeliverItemTypeCount < currDeliverItemTypeCount then
|
||
table.insert(descList, Language.LUA_DOMAIN_DEPOT_TOAST_DELIVER_ITEM_TYPE)
|
||
end
|
||
|
||
if lastDeliverPackTypeCount < currDeliverPackTypeCount then
|
||
table.insert(descList, Language.LUA_DOMAIN_DEPOT_TOAST_DELIVER_PACK_TYPE)
|
||
end
|
||
|
||
return descList
|
||
end
|
||
|
||
|
||
|
||
CommonPOIUpgradeToastCtrl.InterruptMainHudActionQueue = HL.Method() << function(self)
|
||
self:Close()
|
||
end
|
||
HL.Commit(CommonPOIUpgradeToastCtrl)
|