PGRData/Script/matrix/xui/xuinewplayertask/XUiGridNewbieTaskItem.lua

118 lines
No EOL
4.5 KiB
Lua

XUiGridNewbieTaskItem = XClass(nil, "XUiGridNewbieTaskItem")
function XUiGridNewbieTaskItem:Ctor(ui)
self.GameObject = ui.gameObject
self.Transform = ui.transform
XTool.InitUiObject(self)
self.BtnCollect.CallBack = function() self:OnBtnCollectClick() end
self.BtnSkip.CallBack = function() self:OnBtnSkipClick() end
self.RewardPanelList = {}
end
function XUiGridNewbieTaskItem:Init(rootUi)
self.RootUi = rootUi
end
function XUiGridNewbieTaskItem:OnBtnCollectClick()
if not self.NewbieTaskInfo then return end
-- local templateTask = XDataCenter.TaskManager.GetTaskTemplate(self.NewbieTaskInfo)
local stateTask = XDataCenter.TaskManager.GetTaskDataById(self.NewbieTaskInfo)
if stateTask.State ~= XDataCenter.TaskManager.TaskState.Achieved then
return
end
local weaponCount = 0
local chipCount = 0
for i=1, #self.RewardPanelList do
local rewardsId = self.RewardPanelList[i].TemplateId
if XDataCenter.EquipManager.IsClassifyEqualByTemplateId(rewardsId, XEquipConfig.Classify.Weapon) then
weaponCount = weaponCount + 1
elseif XDataCenter.EquipManager.IsClassifyEqualByTemplateId(rewardsId, XEquipConfig.Classify.Awareness) then
chipCount = chipCount + 1
end
end
if weaponCount > 0 and XDataCenter.EquipManager.CheckBagCount(weaponCount, XEquipConfig.Classify.Weapon) == false or
chipCount > 0 and XDataCenter.EquipManager.CheckBagCount(chipCount, XEquipConfig.Classify.Awareness) == false then
return
end
XDataCenter.TaskManager.FinishTask(stateTask.Id, function(rewards)
XUiManager.OpenUiObtain(rewards, nil, function()
self.RootUi:OnTaskChangeSync()
end, nil)
end)
end
function XUiGridNewbieTaskItem:OnBtnSkipClick()
local templateTaskData = XDataCenter.TaskManager.GetTaskTemplate(self.NewbieTaskInfo)
local stateTaskData = XDataCenter.TaskManager.GetTaskDataById(self.NewbieTaskInfo)
if not templateTaskData then return end
if stateTaskData.State ~= XDataCenter.TaskManager.TaskState.Achieved then
XFunctionManager.SkipInterface(templateTaskData.SkipId)
end
end
function XUiGridNewbieTaskItem:OnRefreshDatas(newbieTaskInfo)
self.NewbieTaskInfo = newbieTaskInfo
local templateTaskData = XDataCenter.TaskManager.GetTaskTemplate(newbieTaskInfo)
local stateTaskData = XDataCenter.TaskManager.GetTaskDataById(newbieTaskInfo)
self.TxtTitle.text = templateTaskData.Desc
local result = templateTaskData.Result > 0 and templateTaskData.Result or 1
XTool.LoopMap(stateTaskData.Schedule, function(_, pair)
pair.Value = pair.Value > result and result or pair.Value
self.TxtProgress.text = string.format("%d/%d", pair.Value, result)
end)
self:UpdateBtns()
self:UpdateRewards()
end
function XUiGridNewbieTaskItem:UpdateBtns()
if self.NewbieTaskInfo == nil then return end
local stateTaskData = XDataCenter.TaskManager.GetTaskDataById(self.NewbieTaskInfo)
self.BtnCollect.gameObject:SetActive(false)
self.BtnSkip.gameObject:SetActive(false)
if stateTaskData.State == XDataCenter.TaskManager.TaskState.Achieved then--可领取
self.BtnCollect.gameObject:SetActive(true)
elseif stateTaskData.State ~= XDataCenter.TaskManager.TaskState.Finish and stateTaskData.State ~= XDataCenter.TaskManager.TaskState.Invalid then--跳转
self.BtnSkip.gameObject:SetActive(true)
end
end
function XUiGridNewbieTaskItem:UpdateRewards()
if self.NewbieTaskInfo == nil then return end
local templateTaskData = XDataCenter.TaskManager.GetTaskTemplate(self.NewbieTaskInfo)
-- local stateTaskData = XDataCenter.TaskManager.GetTaskDataById(self.NewbieTaskInfo)
local rewards = XRewardManager.GetRewardList(templateTaskData.RewardId)
if not rewards then return end
local rewardCount = #rewards
for i=1, rewardCount do
local panel = self.RewardPanelList[i]
if not panel then
local ui = CS.UnityEngine.Object.Instantiate(self.PanelReward)
ui.transform:SetParent(self.UiContent, false)
ui.gameObject:SetActive(true)
ui.gameObject.name = string.format("PanelReward%d", i)
panel = XUiGridCommon.New(self.RootUi, ui)
table.insert(self.RewardPanelList, i, panel)
end
end
for i=1, #self.RewardPanelList do
self.RewardPanelList[i].GameObject:SetActive(i <= rewardCount)
if i <= rewardCount then
self.RewardPanelList[i]:Refresh(rewards[i])
end
end
end
return XUiGridNewbieTaskItem