local UIPushInterfaceFairSoloTournament = UIViewClass() local CONST_TIME_RESULT = 40655 function UIPushInterfaceFairSoloTournament:OnOpened(context) self:RegistSystemEvent(EventID.UI_FairSoloTournament_OnSeasonEnd, self.OnBackButtonPressed) local moduleInfo = MDL.FairSoloTournament.GetModuleInfo() -- X年第Y赛季 UIUtils.SetLabel(self.lab_PackageName1, string.FormatByIdsId(Const_IDS.IDS_HeroMatch1v1_Time1, UTL.Time.OsDateOriginal("%Y", UTL.Time.GetServerTimestamp()), moduleInfo.seasonId)) -- X日-Y日 每日几时到几时 local startDay, endDay, startTime, rankListEndTime local day = 0 for k, v in DataSheetManager.FairMatchTime:GetEnumerator() do day = day + v.Day if v.ID + 1 == MDL.FairSoloTournament.Enum_BigStage.FairScreening then startDay = moduleInfo.startTm + day * UTL.Time.TotalSecondsOneDay - UTL.Time.GetDisplayDiffLocalTimeZone() rankListEndTime = moduleInfo.startTm + day * UTL.Time.TotalSecondsOneDay - UTL.Time.GetDisplayDiffLocalTimeZone() elseif v.ID == MDL.FairSoloTournament.Enum_BigStage.FairScreening then startTime = v.StartTime elseif v.ID + 1 == MDL.FairSoloTournament.Enum_BigStage.FairDisplay then endDay = moduleInfo.startTm + (day - 1) * UTL.Time.TotalSecondsOneDay - UTL.Time.GetDisplayDiffLocalTimeZone() break end end -- 判断 rankListEndTime 的 timeid.HMS 经过时区偏移之后是否跨天,如果跨天需要给 startDay 和 endDay 的时间算法补一天。 local startTimeIdSeconds = DataSheetManager.TimeRefresh:GetDataByID(startTime).HMS + UTL.Time.GetDisplayDiffLocalTimeZone() local rankListEndTimeIdSeconds = DataSheetManager.TimeRefresh:GetDataByID(CONST_TIME_RESULT).HMS + UTL.Time.GetDisplayDiffLocalTimeZone() if rankListEndTimeIdSeconds < 0 then rankListEndTime = os.date(UTL.Time.FormatDateEnum.MD, rankListEndTime - UTL.Time.TotalSecondsOneDay) elseif rankListEndTimeIdSeconds - UTL.Time.TotalSecondsOneDay >= 0 then rankListEndTime = os.date(UTL.Time.FormatDateEnum.MD, rankListEndTime + UTL.Time.TotalSecondsOneDay) else rankListEndTime = os.date(UTL.Time.FormatDateEnum.MD, rankListEndTime) end if startTimeIdSeconds < 0 then startDay = os.date(UTL.Time.FormatDateEnum.MD, startDay - UTL.Time.TotalSecondsOneDay) endDay = os.date(UTL.Time.FormatDateEnum.MD, endDay - UTL.Time.TotalSecondsOneDay) elseif startTimeIdSeconds - UTL.Time.TotalSecondsOneDay >= 0 then startDay = os.date(UTL.Time.FormatDateEnum.MD, startDay + UTL.Time.TotalSecondsOneDay) endDay = os.date(UTL.Time.FormatDateEnum.MD, endDay + UTL.Time.TotalSecondsOneDay) else startDay = os.date(UTL.Time.FormatDateEnum.MD, startDay) endDay = os.date(UTL.Time.FormatDateEnum.MD, endDay) end local _, refreshTime = UTL.Time.GetDateDescAndTime({ startTime }) UIUtils.SetLabel(self.lab_PackageName2, string.FormatByIdsId(Const_IDS.IDS_FairTournament_PreOpenTime, startDay, endDay, refreshTime)) --小组赛第一天5点 local timeStr = CTL.FairSoloTournament.GetJoinedTimeDesc() local count = CTL.FairSoloTournament.GetGroupPlayerCount() local dateStr = string.format("%s %s", rankListEndTime, timeStr) self.txt_Info.text = string.FormatByIdsId(Const_IDS.IDS_FairTournament_ShortlistTip, dateStr, count) end function UIPushInterfaceFairSoloTournament:OnBackButtonPressed() self:OnButtonClicked(self.btn_Close) end function UIPushInterfaceFairSoloTournament:OnButtonClicked(comp) if comp == self.btn_Close then CTL.PushInterface.HidePushInterface(self.__viewClassPath) self:CloseView() elseif comp == self.btn_TopicQuiz then -- 话题竞猜 UIManager.OpenView(Const_UI_Lua.UIEnum.UIFairSoloTournamentGuessing) elseif comp == self.btn_Introduction then -- 赛制介绍 CTL.FairSoloTournament.OpenNote() elseif comp == self.btn_Reward then -- 奖励预览 UIManager.OpenView(Const_UI_Lua.UIEnum.UIFairSoloTournamentReward) elseif comp == self.btn_Go then -- 跳转1v1排行榜 CTL.Rank.OpenRankPanelByType(MDL.Rank.RankType.SyncSoloAllServer, nil, CTL.Rank.SortType.AllServer, nil) elseif comp == self.btn_Course then UIManager.OpenView(Const_UI_Lua.UIEnum.UIFairSoloTournamentCourse) end end return UIPushInterfaceFairSoloTournament