PGRData/Script/matrix/xui/xuimentorsystem/mentortask/XUiGridStudentWeeklyTask.lua

162 lines
No EOL
6.5 KiB
Lua

local XUiGridStudentWeeklyTask = XClass(nil, "XUiGridStudentWeeklyTask")
local CSTextManagerGetText = CS.XTextManager.GetText
function XUiGridStudentWeeklyTask:Ctor(ui, root)
self.GameObject = ui.gameObject
self.Transform = ui.transform
self.Root = root
XTool.InitUiObject(self)
self:SetButtonCallBack()
self.RewardList = {}
end
function XUiGridStudentWeeklyTask:SetButtonCallBack()
self.BtnVacancy.CallBack = function()
self:OnBtnVacancyClick()
end
self.PanelUndone:GetObject("BtnDelect").CallBack = function()
self:OnBtnDelectClick()
end
self.PanelFinishHasReward:GetObject("BtnGet").CallBack = function()
self:OnBtnGetClick()
end
end
function XUiGridStudentWeeklyTask:UpdateGrid(index)
local mentorData = XDataCenter.MentorSystemManager.GetMentorData()
local curGetedCount = mentorData:GetStudentWeeklyTaskCountByIndex(XMentorSystemConfigs.MySelfIndex)
local curDaliyCount = mentorData:GetStudentSystemTaskCountByIndex(XMentorSystemConfigs.MySelfIndex)
local maxDaliyCount = XMentorSystemConfigs.GetMentorSystemData("GetTaskCount")
self.StudentData = mentorData:GetNotGraduateStudentDataByIndex(XMentorSystemConfigs.MySelfIndex)
self.Task = self.StudentData and self.StudentData.WeeklyTask[index]
if self.Task then
self.PanelUndone.gameObject:SetActiveEx(self:IsUnDone())
self.PanelFinishNoReward.gameObject:SetActiveEx(self:IsNoReward())
self.PanelFinishHasReward.gameObject:SetActiveEx(self:IsHasReward() or self:IsGetedReward())
self.BtnVacancy.gameObject:SetActiveEx(false)
if self:IsUnDone() then
self:ShowPanelUndone()
elseif self:IsNoReward() then
self:ShowPanelFinishNoReward()
elseif self:IsHasReward() or self:IsGetedReward() then
self:ShowPanelFinishHasReward()
end
else
local emptyIndex = index - curGetedCount
local emptyCount = maxDaliyCount - curDaliyCount
self.PanelUndone.gameObject:SetActiveEx(false)
self.PanelFinishNoReward.gameObject:SetActiveEx(false)
self.PanelFinishHasReward.gameObject:SetActiveEx(false)
self.BtnVacancy.gameObject:SetActiveEx(emptyIndex <= emptyCount)
end
end
function XUiGridStudentWeeklyTask:ShowPanelUndone()
local taskCfg = XDataCenter.TaskManager.GetTaskTemplate(self.Task.TaskId)
local txtTaskNumQian = self.PanelUndone:GetObject("TxtTaskNumQian")
local imgProgress = self.PanelUndone:GetObject("ImgProgress")
self.PanelUndone:GetObject("TaskText").text = taskCfg.Title
self.PanelUndone:GetObject("TxtTaskDescribe").text = taskCfg.Desc
if #taskCfg.Condition < 2 then
imgProgress.transform.parent.gameObject:SetActiveEx(true)
txtTaskNumQian.gameObject:SetActiveEx(true)
local result = taskCfg.Result > 0 and taskCfg.Result or 1
XTool.LoopMap(self.Task.Schedule, function(_, pair)
imgProgress.fillAmount = pair.Value / result
pair.Value = (pair.Value >= result) and result or pair.Value
txtTaskNumQian.text = string.format("%d/%d", pair.Value, result)
end)
else
imgProgress.transform.parent.gameObject:SetActiveEx(false)
txtTaskNumQian.gameObject:SetActiveEx(false)
end
end
function XUiGridStudentWeeklyTask:ShowPanelFinishNoReward()
self.PanelFinishNoReward:GetObject("TextHint").text = CSTextManagerGetText("MentorStudentFinishTaskNoRewardHint")
end
function XUiGridStudentWeeklyTask:ShowPanelFinishHasReward()
local mentorData = XDataCenter.MentorSystemManager.GetMentorData()
local teacher = mentorData:GetTeacherData()
local gridCommon = self.PanelFinishHasReward:GetObject("GridCommon")
local textHint = self.PanelFinishHasReward:GetObject("TextHint")
local Content = self.PanelFinishHasReward:GetObject("Content")
textHint.text = CSTextManagerGetText("MentorStudentFinishTaskHasRewardHint", teacher.PlayerName)
local rewardId = self.Task.RewardId > 0 and self.Task.RewardId or XMentorSystemConfigs.GetMentorSystemData("ActivationRewardId")
local rewards = XRewardManager.GetRewardList(rewardId)
gridCommon.gameObject:SetActiveEx(false)
for i = 1, #self.RewardList do
self.RewardList[i]:Refresh()
end
if rewards then
for i = 1, #rewards do
local grid = self.RewardList[i]
if not grid then
local ui = CS.UnityEngine.Object.Instantiate(gridCommon)
ui.transform:SetParent(Content, false)
ui.gameObject:SetActiveEx(true)
grid = XUiGridCommon.New(self.Root, ui)
table.insert(self.RewardList, grid)
end
grid:Refresh(rewards[i])
end
end
self.PanelFinishHasReward:GetObject("BtnGet").gameObject:SetActiveEx(self:IsHasReward())
self.PanelFinishHasReward:GetObject("BtnGeted").gameObject:SetActiveEx(self:IsGetedReward())
end
function XUiGridStudentWeeklyTask:OnBtnVacancyClick()
XLuaUiManager.Open("UiMentorSelectTask", false, nil, self.StudentData)---要在里面加即时刷新
end
function XUiGridStudentWeeklyTask:OnBtnDelectClick()
self:TipDialog(nil, function()
XDataCenter.MentorSystemManager.StudentDeleteDailyTaskRequest(self.Task.TaskId, function()
self.Root:UpdatePanel()
end)
end, "MentorStudentDeleteTaskHint")
end
function XUiGridStudentWeeklyTask:OnBtnGetClick()
--local IsOverLimit = XDataCenter.EquipManager.CheckBoxOverLimitOfGetAwareness()
--if IsOverLimit then
-- return
--end
XDataCenter.MentorSystemManager.StudentReceiveRewardRequest(self.Task.TaskId, function(rewardGoodsList)
XUiManager.OpenUiObtain(rewardGoodsList)
self.Root:UpdatePanel()
end)
end
function XUiGridStudentWeeklyTask:IsUnDone()
return self.Task.Status == XMentorSystemConfigs.TaskStatus.Received
end
function XUiGridStudentWeeklyTask:IsNoReward()
return self.Task.Status == XMentorSystemConfigs.TaskStatus.Completed or
self.Task.Status == XMentorSystemConfigs.TaskStatus.GetReward
end
function XUiGridStudentWeeklyTask:IsHasReward()
return self.Task.Status == XMentorSystemConfigs.TaskStatus.GiveEquip
end
function XUiGridStudentWeeklyTask:IsGetedReward()
return self.Task.Status == XMentorSystemConfigs.TaskStatus.ReceiveEquip
end
function XUiGridStudentWeeklyTask:TipDialog(cancelCb, confirmCb, TextKey)
XLuaUiManager.Open("UiDialog", CSTextManagerGetText("TipTitle"), CSTextManagerGetText(TextKey),
XUiManager.DialogType.Normal, cancelCb, confirmCb)
end
return XUiGridStudentWeeklyTask