118 lines
No EOL
4.5 KiB
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 |