forked from endernon/PGRData
158 lines
No EOL
5.8 KiB
Lua
158 lines
No EOL
5.8 KiB
Lua
local stringGsub = string.gsub
|
|
local tableInsert = table.insert
|
|
local CSGameEventManager = CS.XGameEventManager.Instance
|
|
local XUiPanelLink = XClass(nil, "XUiPanelLink")
|
|
|
|
function XUiPanelLink:Ctor(ui, rootUi)
|
|
self.GameObject = ui.gameObject
|
|
self.Transform = ui.transform
|
|
self.RootUi = rootUi
|
|
XTool.InitUiObject(self)
|
|
|
|
self.RewardList = {}
|
|
self:AutoAddListener()
|
|
end
|
|
|
|
function XUiPanelLink:AutoAddListener()
|
|
self.BtnGo.CallBack = function()
|
|
self:OnBtnGoClick()
|
|
end
|
|
self.BtnFinish.CallBack = function()
|
|
self:OnBtnFinishClick()
|
|
end
|
|
end
|
|
|
|
function XUiPanelLink:Refresh(activityCfg)
|
|
self.ActivityCfg = activityCfg or self.ActivityCfg
|
|
self.ActivityType = self.ActivityCfg.ActivityType
|
|
|
|
self.LinkCfg = XActivityConfigs.GetActivityLinkCfg(self.ActivityCfg.Params[1])
|
|
self.TxtTitle.text = stringGsub(self.ActivityCfg.ActivityTitle, "\\n", "\n")
|
|
|
|
if self.ActivityType == XActivityConfigs.ActivityType.BackFlowLink then
|
|
self:RefreshBackFlowTxtTime()
|
|
else
|
|
self:RefreshTxtTime()
|
|
end
|
|
|
|
self.TxtContent.text = stringGsub(self.ActivityCfg.ActivityDes, "\\n", "\n")
|
|
|
|
self:GetTaskData()
|
|
|
|
if not self.TaskData then
|
|
return
|
|
end
|
|
local taskConfig = XDataCenter.TaskManager.GetTaskTemplate(self.TaskData.Id)
|
|
self:RefreshButton()
|
|
--刷新奖励列表
|
|
local rewards = XRewardManager.GetRewardList(taskConfig.RewardId)
|
|
if not rewards then
|
|
return
|
|
end
|
|
|
|
for i = 1, #rewards do
|
|
local grid = self.RewardList[i]
|
|
if not grid then
|
|
local ui = CS.UnityEngine.Object.Instantiate(self.GridCommon)
|
|
local tempTab = {}
|
|
tempTab.Transform = ui.transform
|
|
tempTab.GameObject = ui.gameObject
|
|
XTool.InitUiObject(tempTab)
|
|
ui.gameObject:SetActiveEx(true)
|
|
ui.transform:SetParent(self.PanelReward, false)
|
|
tempTab.Item = XUiGridCommon.New(self.RootUi, tempTab.GirdItem)
|
|
grid = tempTab
|
|
tableInsert(self.RewardList, tempTab)
|
|
end
|
|
grid.Item:Refresh(rewards[i])
|
|
grid.GameObject:SetActiveEx(true)
|
|
grid.PanelReceive.gameObject:SetActiveEx(false)
|
|
grid.PanelReceived.gameObject:SetActiveEx(false)
|
|
if self.TaskData.State == XDataCenter.TaskManager.TaskState.Achieved then
|
|
grid.PanelReceive.gameObject:SetActiveEx(true)
|
|
elseif self.TaskData.State == XDataCenter.TaskManager.TaskState.Finish then
|
|
grid.PanelReceived.gameObject:SetActiveEx(true)
|
|
end
|
|
end
|
|
for i = #rewards + 1, #self.RewardList do
|
|
self.RewardList[i].GameObject:SetActiveEx(false)
|
|
end
|
|
end
|
|
|
|
function XUiPanelLink:RefreshTxtTime()
|
|
local openTime = XDataCenter.TaskManager.GetLinkTimeTaskOpenTime(self.ActivityCfg.Params[2])
|
|
local format = "yyyy-MM-dd HH:mm"
|
|
local openTimeStr = XTime.TimestampToGameDateTimeString(openTime, format)
|
|
--获取持续时间
|
|
local timeLimitCfg = XTaskConfig.GetTimeLimitTaskCfg(self.ActivityCfg.Params[2])
|
|
local durationTime = timeLimitCfg.Duration
|
|
local endTime = openTime + durationTime
|
|
local endTimeStr = XTime.TimestampToGameDateTimeString(endTime, format)
|
|
self.TxtTime.text = string.format("%s%s%s", openTimeStr, '~', endTimeStr)
|
|
end
|
|
|
|
-- 回流问卷
|
|
function XUiPanelLink:RefreshBackFlowTxtTime()
|
|
local endTime = XDataCenter.ActivityManager.GetBackFlowEndTime()
|
|
local format = "yyyy-MM-dd HH:mm"
|
|
local endTimeStr = XTime.TimestampToGameDateTimeString(endTime, format)
|
|
--获取持续时间
|
|
local backFlowCfg = XTaskConfig.GetBackFlowById(self.ActivityCfg.Params[3])
|
|
local durationTime = backFlowCfg.Duration
|
|
local openTime = endTime - durationTime
|
|
local openTimeStr = XTime.TimestampToGameDateTimeString(openTime, format)
|
|
self.TxtTime.text = string.format("%s%s%s", openTimeStr, '~', endTimeStr)
|
|
end
|
|
|
|
function XUiPanelLink:GetTaskData()
|
|
if self.ActivityType == XActivityConfigs.ActivityType.BackFlowLink then
|
|
self.TaskData = XDataCenter.TaskManager.GetTaskDataById(self.ActivityCfg.Params[2])
|
|
else
|
|
--获取该活动对应的任务
|
|
self.TaskDatas = XDataCenter.TaskManager.GetTimeLimitTaskListByGroupId(self.ActivityCfg.Params[2])
|
|
self.TaskData = self.TaskDatas[1] or nil
|
|
end
|
|
end
|
|
|
|
--根据任务状态刷新按钮显示
|
|
function XUiPanelLink:RefreshButton()
|
|
self.BtnFinish.gameObject:SetActiveEx(false)
|
|
self.BtnGo.gameObject:SetActiveEx(false)
|
|
|
|
if self.TaskData.State == XDataCenter.TaskManager.TaskState.Achieved then
|
|
self.BtnFinish.gameObject:SetActiveEx(true)
|
|
elseif self.TaskData.State == XDataCenter.TaskManager.TaskState.Active or self.TaskData.State == XDataCenter.TaskManager.TaskState.Finish then
|
|
self.BtnGo.gameObject:SetActiveEx(true)
|
|
end
|
|
end
|
|
|
|
function XUiPanelLink:RefreshInfo()
|
|
if self.ActivityType == XActivityConfigs.ActivityType.BackFlowLink then
|
|
CSGameEventManager:Notify(XEventId.EVENT_ACTIVITY_INFO_UPDATE, XActivityConfigs.ActivityType.BackFlowLink)
|
|
else
|
|
CSGameEventManager:Notify(XEventId.EVENT_ACTIVITY_INFO_UPDATE, XActivityConfigs.ActivityType.Link)
|
|
end
|
|
end
|
|
|
|
function XUiPanelLink:OnBtnGoClick()
|
|
--通知后端任务完成了
|
|
if self.TaskData then
|
|
local taskCfg = XTaskConfig.GetTaskCfgById(self.TaskData.Id)
|
|
local conditionTemplates = XTaskConfig.GetTaskCondition(taskCfg.Condition[1])
|
|
XDataCenter.ActivityManager.TellFinishLinkTask(conditionTemplates.Params[2], function()
|
|
self:Refresh()
|
|
self:RefreshInfo()
|
|
end)
|
|
end
|
|
CS.UnityEngine.Application.OpenURL(self.LinkCfg.LinkUrl)
|
|
end
|
|
|
|
function XUiPanelLink:OnBtnFinishClick()
|
|
XDataCenter.TaskManager.FinishTask(self.TaskData.Id, function(rewards)
|
|
XUiManager.OpenUiObtain(rewards, nil, function()
|
|
self:Refresh()
|
|
end, nil)
|
|
end)
|
|
end
|
|
|
|
return XUiPanelLink |