PGRData/Script/matrix/xui/xuislotmachine/XUiSlotMachineTaskGrid.lua
2024-09-01 22:49:41 +02:00

87 lines
No EOL
3 KiB
Lua

---@class XSlotMachineTaskGrid
local XSlotMachineTaskGrid = XClass(nil, "XSlotMachineTaskGrid")
function XSlotMachineTaskGrid:Ctor(ui, rootUi)
self.GameObject = ui.gameObject
self.Transform = ui.transform
self.RectTransform = ui
self.RootUi = rootUi
XTool.InitUiObject(self)
self:AutoRegisterBtn()
end
function XSlotMachineTaskGrid:UpdateGrid(data)
self.Data = data
self.TaskConfig = XDataCenter.TaskManager.GetTaskTemplate(data.Id)
self.TxtTaskName.text = self.TaskConfig.Title
self.TxtTaskDescribe.text = self.TaskConfig.Desc
local result = self.TaskConfig.Result > 0 and self.TaskConfig.Result or 1
local scheduleValue = data.Schedule[1] and data.Schedule[1].Value or 0
self.ImgProgress.fillAmount = scheduleValue / result
scheduleValue = (scheduleValue >= result) and result or scheduleValue
self.TxtTaskNumQian.text = XUiHelper.GetText("SlotMachineTaskNumProcess", scheduleValue, result)
self.GridRewardList = self.GridRewardList or {}
local rewardId = self.TaskConfig.RewardId
local rewards = XRewardManager.GetRewardList(rewardId)
local rewardsNum = #rewards
for i = 1, rewardsNum do
local grid = self.GridRewardList[i]
if not grid then
local go = i == 1 and self.GridCommon or XUiHelper.Instantiate(self.GridCommon, self.GridCommon.parent)
grid = XUiGridCommon.New(self.RootUi, go)
self.GridRewardList[i] = grid
end
grid:Refresh(rewards[i])
grid.GameObject:SetActiveEx(true)
end
for i = rewardsNum + 1, #self.GridRewardList do
self.GridRewardList[i].GameObject:SetActiveEx(false)
end
self:SetState(data.State)
end
function XSlotMachineTaskGrid:SetState(state)
if state == XDataCenter.TaskManager.TaskState.Active then
self.BtnSkip.gameObject:SetActiveEx(true)
self.ImgComplete.gameObject:SetActiveEx(false)
self.BtnFinish.gameObject:SetActiveEx(false)
elseif state == XDataCenter.TaskManager.TaskState.Achieved then
self.BtnSkip.gameObject:SetActiveEx(false)
self.ImgComplete.gameObject:SetActiveEx(false)
self.BtnFinish.gameObject:SetActiveEx(true)
elseif state == XDataCenter.TaskManager.TaskState.Finish then
self.BtnSkip.gameObject:SetActiveEx(false)
self.ImgComplete.gameObject:SetActiveEx(true)
self.BtnFinish.gameObject:SetActiveEx(false)
end
end
function XSlotMachineTaskGrid:AutoRegisterBtn()
self.BtnFinish.CallBack = function()
self:OnClickBtnReceive()
end
self.BtnSkip.CallBack = function()
self:OnClickBtnSkip()
end
end
function XSlotMachineTaskGrid:OnClickBtnReceive()
if not self.Data then
return
end
XDataCenter.TaskManager.FinishTask(self.Data.Id, function(rewardGoodsList)
XUiManager.OpenUiObtain(rewardGoodsList)
end)
end
function XSlotMachineTaskGrid:OnClickBtnSkip()
if not self.TaskConfig then
return
end
XFunctionManager.SkipInterface(self.TaskConfig.SkipId)
end
return XSlotMachineTaskGrid