PGRData/Script/matrix/xui/xuitask/XUiGridCourse.lua

161 lines
No EOL
6.4 KiB
Lua

XUiGridCourse = XClass(nil, "XUiGridCourse")
local PotPostion = {
[1] = {--有经历节点
[1] = { x = 129, w = 248 },
[2] = { x = 127, w = 247 },
[3] = { x = 129, w = 250 }
},
[2] = {--功能开启
[1] = { x = 130, w = 240 },
[2] = { x = 130, w = 250 },
[3] = { x = 130, w = 255 }
},
[3] = {--普通节点
[1] = { x = 130, w = 245 },
[2] = { x = 93, w = 250 },
[3] = { x = 127, w = 245 }
}
}
function XUiGridCourse:Ctor(rootUi, ui, stroyUi, nextCb, indexCb)
self.GameObject = ui.gameObject
self.Transform = ui.transform
self.RootUi = rootUi
self.StroyUi = stroyUi
self.NextCallBack = nextCb
self.IndexCallBack = indexCb
self.CourseData = nil
XTool.InitUiObject(self)
self.RectLine = self.PanelNoPassedLine
self.BtnClick.CallBack = function() self:OnBtnClickClick() end
end
function XUiGridCourse:Refresh(courseData, lastStageId, nextChapterId)
self.CourseData = courseData
self.LastStageId = lastStageId
self.NextChapterId = nextChapterId
local stageInfo = XDataCenter.FubenManager.GetStageInfo(courseData.StageId)
-- local isPassedLineShow = false
-- local nextStageId = stageInfo.NextStageId
-- if nextStageId and nextStageId > 0 then
-- local nextStageInfo = XDataCenter.FubenManager.GetStageInfo(nextStageId)
-- if nextStageInfo and nextStageInfo.Passed then
-- isPassedLineShow = true
-- end
-- end
-- local preStageInfo = nil
-- if courseData and #courseData.PreStageId > 0 then
-- for k, preStageId in pairs(courseData.PreStageId or {}) do
-- preStageInfo = XDataCenter.FubenManager.GetStageInfo(preStageId)
-- end
-- end
self.PanelNothing.gameObject:SetActive(true)
self.PanelCurDot.gameObject:SetActive(true)
self.PanelDot.gameObject:SetActive(false)
self.PanelReward.gameObject:SetActive(courseData.CouresType == XDataCenter.TaskManager.CourseType.Reward)
self.PanelDesc.gameObject:SetActive(courseData.CouresType == XDataCenter.TaskManager.CourseType.Function)
-- self.PanelPassedLine.gameObject:SetActive(isPassedLineShow)
-- self.PanelNoPassedLine.gameObject:SetActive(courseData.StageId ~= lastStageId)
if courseData.CouresType == XDataCenter.TaskManager.CourseType.Reward then
if stageInfo.Passed then
local canGet = XDataCenter.TaskManager.CheckCourseCanGet(courseData.StageId)
self.PanelFinish.gameObject:SetActive(not canGet)
self.PanelEffect.gameObject:SetActive(canGet)
else
self.PanelFinish.gameObject:SetActive(false)
self.PanelEffect.gameObject:SetActive(false)
end
local data = {
TemplateId = courseData.ShowId,
Star = 0
}
if self.CurGrid then
self.CurGrid:Refresh(data)
else
local grid = XUiGridCommon.New(self.RootUi, self.GridCommon)
grid:Refresh(data)
self.CurGrid = grid
end
elseif courseData.CouresType == XDataCenter.TaskManager.CourseType.Function then
self.PanelPassDesc.gameObject:SetActive(stageInfo.Passed)
self.PanelNoPassDesc.gameObject:SetActive(not stageInfo.Passed)
self.TxtDesc.text = courseData.Tip
self.TxtDescEn.text = courseData.TipEn
self.TxtNoPassDesc.text = courseData.Tip
self.TxtNoPassDescEn.text = courseData.TipEn
end
self.TxtStage.text = courseData.Name
self.TxtCurStage.text = courseData.Name
self.TxtStage.gameObject:SetActive(not stageInfo.Passed)
self.TxtCurStage.gameObject:SetActive(stageInfo.Passed)
self.EmptyRaycastClick.raycastTarget = stageInfo.Passed
self:SetRectLine(courseData.CouresType, courseData.NextCouresType)
end
function XUiGridCourse:SetRectLine(curType, nextType)
local h = self.RectLine.rect.height
local y, z = -68, 0
local potPostion = PotPostion[curType][nextType]
if potPostion then
self.RectLine.sizeDelta = CS.UnityEngine.Vector2(potPostion.w, h)
self.RectLine.localPosition = CS.UnityEngine.Vector3(potPostion.x, y, z)
end
end
function XUiGridCourse:OnBtnClickClick()
if self.CourseData.CouresType ~= XDataCenter.TaskManager.CourseType.Reward then
return
end
local stageInfo = XDataCenter.FubenManager.GetStageInfo(self.CourseData.StageId)
if stageInfo.Passed then
local canGet = XDataCenter.TaskManager.CheckCourseCanGet(self.CourseData.StageId)
if canGet then
local rewardList = XRewardManager.GetRewardList(self.CourseData.RewardId)
if rewardList then
local weaponCount = 0
local chipCount = 0
for i = 1, #rewardList do
local id = rewardList[i].Id or rewardList[i].TemplateId
if XDataCenter.EquipManager.IsClassifyEqualByTemplateId(id, XEquipConfig.Classify.Weapon) then
weaponCount = weaponCount + 1
elseif XDataCenter.EquipManager.IsClassifyEqualByTemplateId(id, 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
end
local func = function(allRewardGet)
if self.LastStageId and self.NextChapterId then
local lastStageInfo = XDataCenter.FubenManager.GetStageInfo(self.LastStageId)
if allRewardGet and lastStageInfo.Passed then
if self.NextCallBack then
self.NextCallBack(self.NextChapterId)
return
end
end
end
if self.IndexCallBack then self.IndexCallBack() end
self.PanelFinish.gameObject:SetActive(true)
self.PanelEffect.gameObject:SetActive(false)
end
XDataCenter.TaskManager.GetCourseReward(self.CourseData.StageId, func)
else -- 已领取的奖励则弹出详情
XUiManager.OpenUiTipRewardByRewardId(self.CourseData.RewardId)
end
end
end