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

89 lines
2.6 KiB
Lua

local uiCtrl = require_ex('UI/Panels/Base/UICtrl')
local PANEL_ID = PanelId.SettlementDefenseRewardsInfo
local PHASE_ID = PhaseId.SettlementDefenseRewardsInfo
SettlementDefenseRewardsInfoCtrl = HL.Class('SettlementDefenseRewardsInfoCtrl', uiCtrl.UICtrl)
SettlementDefenseRewardsInfoCtrl.m_isCompleted = HL.Field(HL.Boolean) << false
SettlementDefenseRewardsInfoCtrl.m_firstRewardCells = HL.Field(HL.Forward('UIListCache'))
SettlementDefenseRewardsInfoCtrl.s_messages = HL.StaticField(HL.Table) << {
}
SettlementDefenseRewardsInfoCtrl.OnCreate = HL.Override(HL.Any) << function(self, args)
self.view.closeButton.onClick:AddListener(function()
PhaseManager:PopPhase(PHASE_ID)
end)
self.view.fullScreenBtn.onClick:AddListener(function()
PhaseManager:PopPhase(PHASE_ID)
end)
self.m_firstRewardCells = UIUtils.genCellCache(self.view.firstRewardCell)
self.m_isCompleted = args.isCompleted
self:_RefreshFirstRewardItemList(args.firstRewardId)
self:_RefreshBuildingRewardContent(args.bandwidthReward, args.battleLimitReward)
end
SettlementDefenseRewardsInfoCtrl._RefreshFirstRewardItemList = HL.Method(HL.String) << function(self, rewardId)
if string.isEmpty(rewardId) then
return
end
local rewardSuccess, rewardData = Tables.rewardTable:TryGetValue(rewardId)
if not rewardSuccess then
return
end
local rewardItems = rewardData.itemBundles
local rewardItemDataList = UIUtils.convertRewardItemBundlesToDataList(rewardItems, false)
self.m_firstRewardCells:Refresh(rewardItems.Count, function(cell, luaIndex)
local itemData = rewardItemDataList[luaIndex]
cell.item:InitItem({
id = itemData.id,
count = itemData.count,
}, true)
cell.gameObject.name = itemData.id
cell.getNode.gameObject:SetActive(self.m_isCompleted)
end)
end
SettlementDefenseRewardsInfoCtrl._RefreshBuildingRewardContent = HL.Method(HL.Number, HL.Number) << function(self, bandwidth, battleLimit)
self.view.bandwidthNode.rewardBandwidthCount.text = string.format("+%d", bandwidth)
self.view.bandwidthNode.completeImage.gameObject:SetActive(self.m_isCompleted)
self.view.bandwidthNode.completeShadeImage.gameObject:SetActive(self.m_isCompleted)
self.view.battleNode.rewardBattleCount.text = string.format("+%d", battleLimit)
self.view.battleNode.completeImage.gameObject:SetActive(self.m_isCompleted)
self.view.battleNode.completeShadeImage.gameObject:SetActive(self.m_isCompleted)
end
HL.Commit(SettlementDefenseRewardsInfoCtrl)