PGRData/Script/matrix/xui/xuirpgmakergame/main/XUiPanelTask.lua
2024-09-01 22:49:41 +02:00

89 lines
No EOL
3.2 KiB
Lua

--推箱子主界面首个任务显示
local XUiPanelTask = XClass(nil, "XUiPanelTask")
function XUiPanelTask:Ctor(ui, rootUi)
self.RootUi = rootUi
self.GameObject = ui.gameObject
self.Transform = ui.transform
self.RewardPanelListNormal = {}
self.RewardPanelListPress = {}
XTool.InitUiObject(self)
end
function XUiPanelTask:Refresh()
if not self.TxtNormal then return end
self.TaskId = XDataCenter.RpgMakerGameManager.GetFirstTaskId()
if not XTool.IsNumberValid(self.TaskId) then
self.PanelTiaoSuNormal.gameObject:SetActiveEx(false)
self.PanelTiaoSuPress.gameObject:SetActiveEx(false)
self.PanelGiftNormal.gameObject:SetActiveEx(false)
self.PanelGiftPress.gameObject:SetActiveEx(false)
return
end
self.TaskConfig = XDataCenter.TaskManager.GetTaskTemplate(self.TaskId)
self:RefreshTxt()
self:RefreshReward(self.RewardPanelListNormal, self.Grid256NewNormal, self.PanelGiftNormal)
self:RefreshReward(self.RewardPanelListPress, self.Grid256NewPress, self.PanelGiftPress)
self:RefreshProcess()
end
--#region Ui刷新相关
function XUiPanelTask:RefreshTxt()
self.TxtNormal.text = self.TaskConfig.Desc
self.TxtPress.text = self.TaskConfig.Desc
end
function XUiPanelTask:RefreshReward(rewardPanelList, Grid, PanelGift)
local rewards = XRewardManager.GetRewardList(self.TaskConfig.RewardId)
for i = 1, #rewardPanelList do
rewardPanelList[i]:Refresh()
end
if not rewards then
return
end
for i = 1, #rewards do
local panel = rewardPanelList[i]
local reward = rewards[i]
if not panel then
if #rewardPanelList == 0 then
panel = XUiGridCommon.New(self.RootUi, Grid)
else
local ui = CS.UnityEngine.Object.Instantiate(Grid, PanelGift)
panel = XUiGridCommon.New(self.RootUi, ui)
end
if self.ClickFunc then
XUiHelper.RegisterClickEvent(panel, panel.BtnClick, function()
self.ClickFunc(reward)
end)
end
table.insert(rewardPanelList, panel)
end
panel:Refresh(reward)
panel:SetUiActive(panel.TxtName, false)
end
end
function XUiPanelTask:RefreshProcess()
if #self.TaskConfig.Condition < 2 then--显示进度
self.ImgProgressNormal.transform.parent.gameObject:SetActive(true)
self.ImgProgressPress.transform.parent.gameObject:SetActive(true)
local result = self.TaskConfig.Result > 0 and self.TaskConfig.Result or 1
local data = XDataCenter.TaskManager.GetTaskDataById(self.TaskId)
XTool.LoopMap(data.Schedule, function(_, pair)
self.ImgProgressNormal.fillAmount = pair.Value / result
self.ImgProgressPress.fillAmount = pair.Value / result
pair.Value = (pair.Value >= result) and result or pair.Value
self.TxtSuNormal.text = pair.Value .. "/" .. result
self.TxtSuPress.text = pair.Value .. "/" .. result
end)
else
self.ImgProgressNormal.transform.parent.gameObject:SetActive(false)
self.ImgProgressPress.transform.parent.gameObject:SetActive(false)
end
end
--#endregion
return XUiPanelTask