--[[ * @ClassName SevenDayRewardPreviewPanel * @Description 七日奖励预览 * @Date 2019/8/9 15:47 * @Author MagicianJoker, fengliudianshao@outlook.com * @Copyright Copyright (c) 2019, MagicianJoker --]] ---@class SevenDayRewardPreviewPanel local SevenDayRewardPreviewPanel = quick_class("SevenDayRewardPreviewPanel", BasePanel) local kScoreTaskType = 38 function SevenDayRewardPreviewPanel:InitComponent() self.spLoader = SpriteLoader.New() self.closeBtn = Util.GetGameObject(self.transform, "bg/closeBtn") self.itemPos = Util.GetGameObject(self.transform, "bg/itemPos") self.itemView = nil self.taskProgress = Util.GetGameObject(self.transform, "bg/taskProgressBg/value"):GetComponent("Text") self.currentProgress = Util.GetGameObject(self.transform, "bg/currentProgressBg/value"):GetComponent("Text") self.canReceiveValue = Util.GetGameObject(self.transform, "bg/canReceiveBg/value"):GetComponent("Text") self.rewardPart = Util.GetGameObject(self.transform, "bg/finalTarget") self.remainTimes = Util.GetGameObject(self.rewardPart, "remainTimes"):GetComponent("Text") self.rewardProgress = Util.GetGameObject(self.rewardPart, "progressbar/progress"):GetComponent("Image") self.rewardValue = Util.GetGameObject(self.rewardPart, "progressbar/value"):GetComponent("Text") self.rewardPos = Util.GetGameObject(self.rewardPart, "rewardPos") self.rewardView = nil self.receiveBtn = Util.GetGameObject(self.transform, "bg/receiveBtn") self.receiveBtnText = Util.GetGameObject(self.receiveBtn, "Text"):GetComponent("Text") self.ruleTips = Util.GetGameObject(self.transform, "bg/ruleTips"):GetComponent("Text") end function SevenDayRewardPreviewPanel:BindEvent() Util.AddClick(self.closeBtn, function() self:ClosePanel() end) Util.AddClick(self.receiveBtn, function() self:OnReceivedBtnClicked() end) end function SevenDayRewardPreviewPanel:AddListener() Game.GlobalEvent:AddEvent(GameEvent.MissionDaily.OnMissionDailyChanged, self.RefreshPanel, self) end function SevenDayRewardPreviewPanel:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.MissionDaily.OnMissionDailyChanged, self.RefreshPanel, self) end function SevenDayRewardPreviewPanel:OnOpen() self:RefreshPanel() end function SevenDayRewardPreviewPanel:OnShow() self:SetRemainTimes() end function SevenDayRewardPreviewPanel:OnClose() if self.timer then self.timer:Stop() self.timer = nil end end function SevenDayRewardPreviewPanel:OnReceivedBtnClicked() local activityId = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.SevenDayCarnival) local treasureTaskConfig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.TreasureTaskConfig, "ActivityId", activityId, "TaskType", kScoreTaskType) NetManager.GetSevenDayCarnivalBoxReward(function(respond) self:ClosePanel() UIManager.OpenPanel(UIName.RewardItemPopup, respond.drop, 1) TaskManager.SetTypeTaskState( TaskTypeDef.SevenDayCarnival, treasureTaskConfig.Id, VipTaskStatusDef.Received, 0, 1 ) end) end function SevenDayRewardPreviewPanel:RefreshPanel() local activityId = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.SevenDayCarnival) local globalActConfig = ConfigManager.GetConfigData(ConfigName.GlobalActivity, activityId) self.ruleTips.text = string.gsub(globalActConfig.ExpertDec, "\\n", "\n") local treasureTaskConfig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.TreasureTaskConfig, "ActivityId", activityId, "TaskType", kScoreTaskType) self:SetItemViews(treasureTaskConfig.Reward) local taskInfo = TaskManager.GetTypeTaskInfo(TaskTypeDef.SevenDayCarnival, treasureTaskConfig.Id) if taskInfo.state == VipTaskStatusDef.Received then self.receiveBtnText.text = Language[10101] Util.SetGray(self.receiveBtn, true) self.receiveBtn:GetComponent("Button").interactable = false elseif taskInfo.state == VipTaskStatusDef.NotFinished then self.receiveBtnText.text = Language[10018] Util.SetGray(self.receiveBtn, true) self.receiveBtn:GetComponent("Button").interactable = false else self.receiveBtn:GetComponent("Button").interactable = true self.receiveBtnText.text = Language[10018] Util.SetGray(self.receiveBtn, false) end local currentScore = SevenDayCarnivalManager.GetSevenDayScore() self.rewardProgress.fillAmount = currentScore / treasureTaskConfig.TaskValue[2][1] self.rewardValue.text = currentScore .. "/" .. treasureTaskConfig.TaskValue[2][1] self.taskProgress.text = "("..currentScore .. "/" .. treasureTaskConfig.TaskValue[2][1]..")" local percentValue = (currentScore / treasureTaskConfig.TaskValue[2][1]) * 100 self.currentProgress.text = "("..string.format("%d%%", percentValue)..")" self.canReceiveValue.text = "("..currentScore .. Language[10200]..")" end function SevenDayRewardPreviewPanel:SetItemViews(reward) if self.rewardView and self.itemView then local rewardList = table.clone(reward[1]) rewardList[2] = 0 self.itemView:OnOpen(false, rewardList, 1.2) self.rewardView:OnOpen(false, rewardList, 0.55) return end local rewardList = table.clone(reward[1]) rewardList[2] = 0 self.itemView = SubUIManager.Open(SubUIConfig.ItemView, self.itemPos.transform) self.itemView:OnOpen(false, rewardList, 1.2) self.rewardView = SubUIManager.Open(SubUIConfig.ItemView, self.rewardPos.transform) self.rewardView:OnOpen(false, rewardList, 0.55) end function SevenDayRewardPreviewPanel:SetRemainTimes() local activityInfo = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.SevenDayCarnival) if not activityInfo then self:ClosePanel() return end local timeDown = activityInfo.endTime - GetTimeStamp() if self.timer then self.timer:Stop() self.timer = nil end if timeDown < 1 then self:ClosePanel() return end self:SetRemainTimeFormat(timeDown) self.timer = Timer.New(function() self:SetRemainTimeFormat(timeDown) if timeDown < 1 then self.timer:Stop() self.timer = nil self:ClosePanel() end timeDown = timeDown - 1 end, 1, -1, true) self.timer:Start() end function SevenDayRewardPreviewPanel:SetRemainTimeFormat(timeDown) if timeDown - 86400 > 0 then self.remainTimes.text = Language[11885] .. DateUtils.GetTimeFormatV2(timeDown - 86400) else self.remainTimes.text = "" end end return SevenDayRewardPreviewPanel