113 lines
3.4 KiB
Lua
113 lines
3.4 KiB
Lua
local UIWidgetBase = require_ex('Common/Core/UIWidgetBase')
|
|
|
|
local SHOW_REWARD_ITEM_COUNT = 5
|
|
local LEVEL_EFFECT_MAX_COUNT = 3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DomainGradeListCell = HL.Class('DomainGradeListCell', UIWidgetBase)
|
|
|
|
|
|
DomainGradeListCell.m_domainId = HL.Field(HL.String) << ""
|
|
|
|
|
|
DomainGradeListCell.m_lv = HL.Field(HL.Number) << -1
|
|
|
|
|
|
DomainGradeListCell.m_levelEffectCellCache = HL.Field(HL.Forward("UIListCache"))
|
|
|
|
|
|
DomainGradeListCell.m_rewardItemCellCache = HL.Field(HL.Forward("UIListCache"))
|
|
|
|
|
|
|
|
|
|
DomainGradeListCell._OnFirstTimeInit = HL.Override() << function(self)
|
|
self.m_levelEffectCellCache = UIUtils.genCellCache(self.view.levelEffectCell)
|
|
self.m_rewardItemCellCache = UIUtils.genCellCache(self.view.titleNode.rewardItemCell)
|
|
|
|
self.view.titleNode.receiveBtn.onClick:AddListener(function()
|
|
self:_OnClickReceiveBtn()
|
|
end)
|
|
|
|
self.view.detailBtn.onClick:AddListener(function()
|
|
self:_OnClickDetailBtn()
|
|
end)
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
DomainGradeListCell.InitDomainGradeListCell = HL.Method(HL.String, HL.Table)
|
|
<< function(self, domainId, domainDevelopmentLevelData)
|
|
self:_FirstTimeInit()
|
|
|
|
self.m_domainId = domainId
|
|
self.m_lv = domainDevelopmentLevelData.lv
|
|
|
|
local isUnopenedLevel = domainDevelopmentLevelData.isUnopenedLevel
|
|
self.view.unopenedNode.gameObject:SetActive(isUnopenedLevel)
|
|
self.view.openNode.gameObject:SetActive(not isUnopenedLevel)
|
|
|
|
if not isUnopenedLevel then
|
|
self:_UpdateLevelDetail()
|
|
end
|
|
end
|
|
|
|
|
|
|
|
DomainGradeListCell._UpdateLevelDetail = HL.Method() << function(self)
|
|
local domainDevSys = GameInstance.player.domainDevelopmentSystem
|
|
|
|
local domainData = domainDevSys.domainDevDataDic:get_Item(self.m_domainId)
|
|
local isCurLv = self.m_lv == domainData.lv
|
|
local reachedLevel = self.m_lv <= domainData.lv
|
|
local isGet = domainDevSys:IsLevelRewarded(self.m_domainId, self.m_lv)
|
|
|
|
|
|
DomainDevelopmentUtils.updateLevelCellTitle(self.view.titleNode, self.m_domainId, self.m_lv)
|
|
|
|
local domainCfg = domainData.domainDataCfg
|
|
local domainDevelopmentLevelCfg = domainCfg.domainDevelopmentLevel[self.m_lv - 1]
|
|
local rewardId = domainDevelopmentLevelCfg.rewardId
|
|
local rewards = string.isEmpty(rewardId) and {} or UIUtils.getRewardItems(rewardId)
|
|
self.view.titleNode.rewardStateCtrl:SetState(#rewards > 0 and "HasReward" or "Empty")
|
|
self.m_rewardItemCellCache:Refresh(SHOW_REWARD_ITEM_COUNT, function(cell, luaIndex)
|
|
local rewardInfo = rewards[luaIndex]
|
|
DomainDevelopmentUtils.updateLevelRewardCell(cell, rewardInfo, isGet)
|
|
end)
|
|
|
|
|
|
local levelEffectInfo = DomainDevelopmentUtils.genLevelEffectInfo(self.m_domainId, self.m_lv)
|
|
local detailsCount = #levelEffectInfo
|
|
self.m_levelEffectCellCache:Refresh(math.min(detailsCount, LEVEL_EFFECT_MAX_COUNT), function(cell, luaIndex)
|
|
local levelEffectInfoUnit = levelEffectInfo[luaIndex]
|
|
DomainDevelopmentUtils.updateLevelEffectCell(cell, levelEffectInfoUnit, reachedLevel)
|
|
end)
|
|
self.view.detailNode.gameObject:SetActive(detailsCount > LEVEL_EFFECT_MAX_COUNT)
|
|
end
|
|
|
|
|
|
|
|
DomainGradeListCell._OnClickReceiveBtn = HL.Method() << function(self)
|
|
GameInstance.player.domainDevelopmentSystem:TakeLevelReward(self.m_domainId, self.m_lv)
|
|
end
|
|
|
|
|
|
|
|
DomainGradeListCell._OnClickDetailBtn = HL.Method() << function(self)
|
|
UIManager:Open(PanelId.DomainGradePopup, { domainId = self.m_domainId, lv = self.m_lv })
|
|
end
|
|
|
|
|
|
HL.Commit(DomainGradeListCell)
|
|
return DomainGradeListCell |