Files
Endfield-Data/LuaScripts/UI/Panels/DomainGradePopup/DomainGradePopupCtrl.lua
2025-12-02 20:37:18 +07:00

162 lines
4.1 KiB
Lua

local uiCtrl = require_ex('UI/Panels/Base/UICtrl')
local PANEL_ID = PanelId.DomainGradePopup
local SHOW_REWARD_ITEM_COUNT = 5
DomainGradePopupCtrl = HL.Class('DomainGradePopupCtrl', uiCtrl.UICtrl)
DomainGradePopupCtrl.m_domainId = HL.Field(HL.String) << ""
DomainGradePopupCtrl.m_lv = HL.Field(HL.Number) << -1
DomainGradePopupCtrl.m_genLevelEffectCellFunc = HL.Field(HL.Function)
DomainGradePopupCtrl.m_rewardItemCellCache = HL.Field(HL.Forward("UIListCache"))
DomainGradePopupCtrl.m_levelEffectInfo = HL.Field(HL.Table)
DomainGradePopupCtrl.m_isGet = HL.Field(HL.Boolean) << false
DomainGradePopupCtrl.m_isReachedLevel = HL.Field(HL.Boolean) << false
DomainGradePopupCtrl.s_messages = HL.StaticField(HL.Table) << {
[MessageConst.ON_DOMAIN_DEVELOPMENT_LEVEL_REWARD_GET] = 'OnDomainDevelopmentLevelRewardGet',
}
DomainGradePopupCtrl.OnCreate = HL.Override(HL.Any) << function(self, arg)
self.m_domainId = arg.domainId
self.m_lv = arg.lv
self.m_genLevelEffectCellFunc = UIUtils.genCachedCellFunction(self.view.levelEffectScrollList)
self.m_rewardItemCellCache = UIUtils.genCellCache(self.view.titleNode.rewardItemCell)
self.view.levelEffectScrollList.onUpdateCell:AddListener(function(gameObject, csIndex)
self:_UpdateLevelEffectCell(gameObject, csIndex)
end)
self.view.closeBtn.onClick:AddListener(function()
self:_OnClickCloseBtn()
end)
self.view.fullScreenCloseBtn.onClick:AddListener(function()
self:_OnClickCloseBtn()
end)
self.view.titleNode.receiveBtn.onClick:AddListener(function()
self:_OnClickReceiveBtn()
end)
self:_UpdateState()
self:_UpdateTitleInfo()
self:_UpdateLevelRewardsInfo()
self:_UpdateLevelEffectInfo()
self.view.controllerHintPlaceholder:InitControllerHintPlaceholder({self.view.inputGroup.groupId})
end
DomainGradePopupCtrl._UpdateState = HL.Method() << function(self)
local domainDevelopmentSys = GameInstance.player.domainDevelopmentSystem
local domainData = domainDevelopmentSys.domainDevDataDic:get_Item(self.m_domainId)
self.m_isReachedLevel = self.m_lv <= domainData.lv
self.m_isGet = domainDevelopmentSys:IsLevelRewarded(self.m_domainId, self.m_lv)
end
DomainGradePopupCtrl._UpdateTitleInfo = HL.Method() << function(self)
DomainDevelopmentUtils.updateLevelCellTitle(self.view.titleNode, self.m_domainId, self.m_lv)
end
DomainGradePopupCtrl._UpdateLevelRewardsInfo = HL.Method() << function(self)
local domainCfg = Tables.domainDataTable[self.m_domainId]
local domainDevelopmentLevelCfg = domainCfg.domainDevelopmentLevel[self.m_lv - 1]
local rewardId = domainDevelopmentLevelCfg.rewardId
local rewards = string.isEmpty(rewardId) and {} or UIUtils.getRewardItems(rewardId)
self.m_rewardItemCellCache:Refresh(SHOW_REWARD_ITEM_COUNT, function(cell, luaIndex)
local rewardInfo = rewards[luaIndex]
DomainDevelopmentUtils.updateLevelRewardCell(cell, rewardInfo, self.m_isGet)
end)
end
DomainGradePopupCtrl._UpdateLevelEffectInfo = HL.Method() << function(self)
self.m_levelEffectInfo = DomainDevelopmentUtils.genLevelEffectInfo(self.m_domainId, self.m_lv)
self.view.levelEffectScrollList:UpdateCount(#self.m_levelEffectInfo)
end
DomainGradePopupCtrl._UpdateLevelEffectCell = HL.Method(GameObject, HL.Number) << function(self, gameObject, csIndex)
local cell = self.m_genLevelEffectCellFunc(gameObject)
local levelEffectInfoUnit = self.m_levelEffectInfo[LuaIndex(csIndex)]
DomainDevelopmentUtils.updateLevelEffectCell(cell, levelEffectInfoUnit, self.m_isReachedLevel)
end
DomainGradePopupCtrl._OnClickCloseBtn = HL.Method() << function(self)
self:PlayAnimationOutAndClose()
end
DomainGradePopupCtrl._OnClickReceiveBtn = HL.Method() << function(self)
GameInstance.player.domainDevelopmentSystem:TakeLevelReward(self.m_domainId, self.m_lv)
end
DomainGradePopupCtrl.OnDomainDevelopmentLevelRewardGet = HL.Method(HL.Any) << function(self, args)
self:_UpdateState()
self:_UpdateTitleInfo()
self:_UpdateLevelRewardsInfo()
self:_UpdateLevelEffectInfo()
end
HL.Commit(DomainGradePopupCtrl)