2023-07-14 19:35:33 +00:00
|
|
|
local XUiPanelRoleModel = require("XUi/XUiCharacter/XUiPanelRoleModel")
|
|
|
|
local XSpecialTrainActionRandom = require("XUi/XUiSpecialTrainBreakthrough/XSpecialTrainActionRandom")
|
|
|
|
local CAMERA_TYPE = {
|
|
|
|
NORMAL = 1,
|
|
|
|
EXCHANGE = 2
|
|
|
|
}
|
|
|
|
|
|
|
|
---@class XUiSpecialTrainBreakthroughMain:XLuaUi
|
|
|
|
local XUiSpecialTrainBreakthroughMain = XLuaUiManager.Register(XLuaUi, "UiSpecialTrainBreakthroughMain")
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:Ctor()
|
|
|
|
self.ActivityConfig = false
|
|
|
|
self.EndTime = false
|
|
|
|
self.RoleModelPanel = false
|
|
|
|
self.SpecialTrainActionRandom = XSpecialTrainActionRandom.New()
|
2024-09-01 20:49:41 +00:00
|
|
|
self._TimerHellMode = false
|
|
|
|
self._TimerMusic = false
|
2023-07-14 19:35:33 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:OnAwake()
|
2024-09-01 20:49:41 +00:00
|
|
|
self.EffectHellMode = XUiHelper.TryGetComponent(self.UiSceneInfo.GameObject.transform, "GroupParticle/EffectHellMode")
|
2023-07-14 19:35:33 +00:00
|
|
|
self:RegisterButtonClick()
|
2024-09-01 20:49:41 +00:00
|
|
|
self.MusicHellMode.gameObject:SetActiveEx(false)
|
|
|
|
self.MusicNormal.gameObject:SetActiveEx(false)
|
2023-07-14 19:35:33 +00:00
|
|
|
XEventManager.AddEventListener(XEventId.EVENT_ROOM_ENTER_ROOM, self.OnCancelMatch, self)
|
|
|
|
XEventManager.AddEventListener(XEventId.EVENT_ROOM_CANCEL_MATCH, self.OnCancelMatch, self)
|
|
|
|
XEventManager.AddEventListener(XEventId.EVENT_ROOM_MATCH_PLAYERS, self.OnMatchPlayers, self)
|
|
|
|
XEventManager.AddEventListener(XEventId.EVENT_FUBEN_SPECIAL_TRAIN_BREAKTHROUGH_SET_ROBOT, self.OnSelectRobot, self)
|
|
|
|
XEventManager.AddEventListener(XEventId.EVENT_FUBEN_SPECIAL_TRAIN_BREAKTHROUGH_ON_EXCHANGE_CLOSE,
|
2024-09-01 20:49:41 +00:00
|
|
|
self.SwitchCameraNormal, self)
|
|
|
|
XEventManager.AddEventListener(XEventId.EVENT_FUBEN_SPECIAL_TRAIN_BREAKTHROUGH_UPDATE_PERSONAL_SCORE, self.UpdatePersonalScore, self)
|
|
|
|
XEventManager.AddEventListener(XEventId.EVENT_FUBEN_SPECIAL_TRAIN_BREAKTHROUGH_UPDATE_TEAM_SCORE, self.UpdateTeamScore, self)
|
2023-07-14 19:35:33 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:OnStart()
|
|
|
|
self.ActivityConfig = XFubenSpecialTrainConfig.GetActivityConfigById(
|
2024-09-01 20:49:41 +00:00
|
|
|
XDataCenter.FubenSpecialTrainManager.GetCurActivityId())
|
2023-07-14 19:35:33 +00:00
|
|
|
self.EndTime = XFunctionManager.GetEndTimeByTimeId(self.ActivityConfig.TimeId)
|
|
|
|
self:BindHelpBtnNew(self.BtnHelp, function()
|
|
|
|
return self:GetHelpDataFunc()
|
|
|
|
end)
|
|
|
|
self.PanelModel = self.UiModelGo:FindTransform("PanelModel")
|
|
|
|
self.RoleModelPanel = XUiPanelRoleModel.New(self.PanelModel, self.Name, nil, true, nil, true)
|
|
|
|
self:InitCamera()
|
2024-09-01 20:49:41 +00:00
|
|
|
self:UpdatePersonalScore()
|
|
|
|
self:UpdateTeamScore()
|
2023-07-14 19:35:33 +00:00
|
|
|
self:PlayAnimationOpening()
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:OnEnable()
|
|
|
|
self:RefreshRedPoint()
|
|
|
|
self:StartTimer()
|
|
|
|
self:RefreshModel()
|
2024-09-01 20:49:41 +00:00
|
|
|
self:UpdateHellMode()
|
|
|
|
--self:RefreshRankData()
|
|
|
|
self:StartTimerHellMode()
|
2023-07-14 19:35:33 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:OnGetEvents()
|
2024-09-01 20:49:41 +00:00
|
|
|
return { XEventId.EVENT_FINISH_TASK, XEventId.EVENT_TASK_SYNC, XEventId.EVENT_FUBEN_SPECIAL_TEAIN_RANK_SCORE_CHANGE }
|
2023-07-14 19:35:33 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:OnNotify(event, ...)
|
|
|
|
if event == XEventId.EVENT_FINISH_TASK or event == XEventId.EVENT_TASK_SYNC then
|
|
|
|
self:RefreshRedPoint()
|
2024-09-01 20:49:41 +00:00
|
|
|
--elseif event == XEventId.EVENT_FUBEN_SPECIAL_TEAIN_RANK_SCORE_CHANGE then
|
|
|
|
--self:RefreshRankData()
|
2023-07-14 19:35:33 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:OnDisable()
|
|
|
|
self:StopTimer()
|
|
|
|
self:StopActionRandom()
|
2024-09-01 20:49:41 +00:00
|
|
|
self:StopTimerHellMode()
|
|
|
|
self:StopTimerMusic()
|
2023-07-14 19:35:33 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:StopActionRandom()
|
|
|
|
self.SpecialTrainActionRandom:Stop()
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:OnDestroy()
|
|
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_ROOM_ENTER_ROOM, self.OnCancelMatch, self)
|
|
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_ROOM_CANCEL_MATCH, self.OnCancelMatch, self)
|
|
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_ROOM_MATCH_PLAYERS, self.OnMatchPlayers, self)
|
2024-09-01 20:49:41 +00:00
|
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_FUBEN_SPECIAL_TRAIN_BREAKTHROUGH_SET_ROBOT, self.OnSelectRobot, self)
|
2023-07-14 19:35:33 +00:00
|
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_FUBEN_SPECIAL_TRAIN_BREAKTHROUGH_ON_EXCHANGE_CLOSE,
|
2024-09-01 20:49:41 +00:00
|
|
|
self.SwitchCameraNormal, self)
|
|
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_FUBEN_SPECIAL_TRAIN_BREAKTHROUGH_UPDATE_PERSONAL_SCORE, self.UpdatePersonalScore, self)
|
|
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_FUBEN_SPECIAL_TRAIN_BREAKTHROUGH_UPDATE_TEAM_SCORE, self.UpdateTeamScore, self)
|
2023-07-14 19:35:33 +00:00
|
|
|
self:StopActionRandom()
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:RegisterButtonClick()
|
|
|
|
self:BindExitBtns(self.BtnBack, self.BtnMainUi)
|
|
|
|
self:RegisterClickEvent(self.BtnTask, self.OnClickBtnTask)
|
2024-09-01 20:49:41 +00:00
|
|
|
|
|
|
|
self:RegisterClickEvent(self.BtnCreateRoomNormal, self.OnClickBtnCreateRoom)
|
|
|
|
self:RegisterClickEvent(self.BtnMatchNormal, self.OnClickBtnMatch)
|
|
|
|
self:RegisterClickEvent(self.BtnCreateRoomHard, self.OnClickBtnCreateRoom)
|
|
|
|
self:RegisterClickEvent(self.BtnMatchHard, self.OnClickBtnMatch)
|
|
|
|
|
|
|
|
--self:RegisterClickEvent(self.RankBtnHelp, self.OnClickRankBtnHelp)
|
2023-07-14 19:35:33 +00:00
|
|
|
self:RegisterClickEvent(self.BtnSwitch, self.OnClickBtnModelSwitch)
|
2024-09-01 20:49:41 +00:00
|
|
|
self:RegisterClickEvent(self.BtnRank, self.OnClickBtnRank)
|
|
|
|
self:RegisterClickEvent(self.BtnLock, self.OnBtnClickLockHellMode)
|
2023-07-14 19:35:33 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
-- 任务
|
|
|
|
function XUiSpecialTrainBreakthroughMain:OnClickBtnTask()
|
|
|
|
XLuaUiManager.Open("UiSpecialTrainBreakthroughTask")
|
|
|
|
end
|
|
|
|
|
|
|
|
-- 创建房间
|
|
|
|
function XUiSpecialTrainBreakthroughMain:OnClickBtnCreateRoom()
|
|
|
|
XDataCenter.RoomManager.CreateRoom(self:GetStageId())
|
|
|
|
end
|
|
|
|
|
|
|
|
-- 快速匹配
|
|
|
|
function XUiSpecialTrainBreakthroughMain:OnClickBtnMatch()
|
|
|
|
self:Match(true)
|
|
|
|
end
|
|
|
|
|
|
|
|
-- 段位帮助按钮
|
2024-09-01 20:49:41 +00:00
|
|
|
--function XUiSpecialTrainBreakthroughMain:OnClickRankBtnHelp()
|
|
|
|
-- XLuaUiManager.Open("UiSpecialTrainBreakthroughMedalTips")
|
|
|
|
--end
|
2023-07-14 19:35:33 +00:00
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:Match(needMatchCountCheck)
|
|
|
|
-- 根据关卡ID匹配
|
|
|
|
local stageId = self:GetStageId()
|
2024-09-01 20:49:41 +00:00
|
|
|
XDataCenter.RoomManager.MultiMatch({ stageId }, function()
|
2023-07-14 19:35:33 +00:00
|
|
|
self:OnBeginMatch()
|
|
|
|
XLuaUiManager.Open("UiOnLineMatching", stageId)
|
|
|
|
end, needMatchCountCheck)
|
|
|
|
end
|
|
|
|
|
2024-09-01 20:49:41 +00:00
|
|
|
--function XUiSpecialTrainBreakthroughMain:RefreshRankData()
|
|
|
|
-- local curScore = XDataCenter.FubenSpecialTrainManager.GetCurScore() or 0
|
|
|
|
-- -- 当前段位Id、是否是最高段位、下一段位id
|
|
|
|
-- local curRankId, isHighestGrade, nextRankId = XDataCenter.FubenSpecialTrainManager
|
|
|
|
-- .GetCurIdAndNextIdByScore(curScore)
|
|
|
|
-- local curIcon = XFubenSpecialTrainConfig.GetRankIconById(curRankId)
|
|
|
|
-- self.RankIcon:SetRawImage(curIcon)
|
|
|
|
-- if isHighestGrade then
|
|
|
|
-- self.RankText.text = CSXTextManagerGetText("YuanXiaoHighestGrade")
|
|
|
|
-- self.RankScore.text = curScore
|
|
|
|
-- else
|
|
|
|
-- self.RankText.text = CSXTextManagerGetText("YuanXiaoNextGrade")
|
|
|
|
-- local nextScore = XFubenSpecialTrainConfig.GetRankScoreById(nextRankId)
|
|
|
|
-- self.RankScore.text = CSXTextManagerGetText("YuanXiaoGradeScore", curScore, nextScore)
|
|
|
|
-- end
|
|
|
|
--end
|
2023-07-14 19:35:33 +00:00
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:OnBeginMatch()
|
|
|
|
self.Mask.gameObject:SetActiveEx(true)
|
|
|
|
self.BtnMatching.gameObject:SetActiveEx(true)
|
2024-09-01 20:49:41 +00:00
|
|
|
self.BtnMatchHard.gameObject:SetActiveEx(false)
|
|
|
|
self.BtnMatchNormal.gameObject:SetActiveEx(false)
|
|
|
|
self.BtnRank.interactable = false
|
|
|
|
self.TogHell.interactable = false
|
2023-07-14 19:35:33 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:OnCancelMatch()
|
|
|
|
self.Mask.gameObject:SetActiveEx(false)
|
|
|
|
self.BtnMatching.gameObject:SetActiveEx(false)
|
2024-09-01 20:49:41 +00:00
|
|
|
self.BtnMatchHard.gameObject:SetActiveEx(true)
|
|
|
|
self.BtnMatchNormal.gameObject:SetActiveEx(true)
|
|
|
|
self.BtnRank.interactable = true
|
|
|
|
self.TogHell.interactable = true
|
2023-07-14 19:35:33 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
-- 匹配人数过多
|
|
|
|
function XUiSpecialTrainBreakthroughMain:OnMatchPlayers(recommendStageId)
|
|
|
|
self:OnCancelMatch()
|
|
|
|
XUiManager.DialogTip(CS.XTextManager.GetText("SpecialTrainYuanXiaoMatchTipTitle"),
|
2024-09-01 20:49:41 +00:00
|
|
|
CS.XTextManager.GetText("SpecialTrainYuanXiaoMatchTipContent"), XUiManager.DialogType.Normal, function()
|
|
|
|
self:Match(false)
|
|
|
|
end, function()
|
|
|
|
-- 根据服务端下方的id创建房间
|
|
|
|
XDataCenter.RoomManager.CreateRoom(recommendStageId)
|
|
|
|
end)
|
2023-07-14 19:35:33 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:RefreshRedPoint()
|
|
|
|
local isShowRedDot = XDataCenter.FubenSpecialTrainManager.CheckTaskAchieved()
|
|
|
|
self.BtnTask:ShowReddot(isShowRedDot)
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:GetHelpDataFunc()
|
|
|
|
local helpIds = {}
|
|
|
|
local chapterConfig = XFubenSpecialTrainConfig.GetChapterConfigById(self.ActivityConfig.ChapterIds[1])
|
|
|
|
for _, var in ipairs(chapterConfig.HelpId) do
|
|
|
|
table.insert(helpIds, var)
|
|
|
|
end
|
|
|
|
|
|
|
|
if not helpIds then
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
|
|
|
local helpConfigs = {}
|
|
|
|
for i = 1, #helpIds do
|
|
|
|
helpConfigs[i] = XHelpCourseConfig.GetHelpCourseTemplateById(helpIds[i])
|
|
|
|
end
|
|
|
|
|
|
|
|
return helpConfigs
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:StartTimer()
|
2024-09-01 20:49:41 +00:00
|
|
|
if self._Timer then
|
2023-07-14 19:35:33 +00:00
|
|
|
self:StopTimer()
|
|
|
|
end
|
|
|
|
self:UpdateRefreshTime()
|
2024-09-01 20:49:41 +00:00
|
|
|
self._Timer = XScheduleManager.ScheduleForever(function()
|
2023-07-14 19:35:33 +00:00
|
|
|
self:UpdateRefreshTime()
|
|
|
|
end, XScheduleManager.SECOND)
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:UpdateRefreshTime()
|
|
|
|
if XTool.UObjIsNil(self.TxtTime) then
|
|
|
|
self:StopTimer()
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
|
|
|
local now = XTime.GetServerNowTimestamp()
|
|
|
|
if now >= self.EndTime then
|
|
|
|
self:StopTimer()
|
|
|
|
XDataCenter.FubenSpecialTrainManager.HandleActivityEndTime()
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
|
|
|
local timeDesc = XUiHelper.GetTime(self.EndTime - now, XUiHelper.TimeFormatType.ACTIVITY)
|
|
|
|
self.TxtTime.text = timeDesc
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:StopTimer()
|
2024-09-01 20:49:41 +00:00
|
|
|
if self._Timer then
|
|
|
|
XScheduleManager.UnSchedule(self._Timer)
|
|
|
|
self._Timer = nil
|
2023-07-14 19:35:33 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:OnClickBtnModelSwitch()
|
|
|
|
XLuaUiManager.Open("UiSpecialTrainBreakthroughExchange")
|
|
|
|
self:SwitchCamera(CAMERA_TYPE.EXCHANGE)
|
|
|
|
self:PlayAnimation("UiDisable")
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:RefreshModel()
|
|
|
|
local robotId = XDataCenter.FubenSpecialTrainManager.BreakthroughGetRobotId()
|
|
|
|
if not robotId then
|
|
|
|
return
|
|
|
|
end
|
|
|
|
local robotCfg = XRobotManager.GetRobotTemplate(robotId)
|
|
|
|
if not robotCfg then
|
|
|
|
return
|
|
|
|
end
|
|
|
|
local fashionId = robotCfg.FashionId
|
|
|
|
local characterId = robotCfg.CharacterId
|
|
|
|
self:OnModelLoadBegin()
|
|
|
|
local onModelLoadCallback = function()
|
|
|
|
self:OnModelLoadCallback()
|
|
|
|
end
|
|
|
|
self.RoleModelPanel:UpdateCuteModel(robotId, characterId, nil, fashionId, nil, onModelLoadCallback, true)
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:OnSelectRobot()
|
|
|
|
self:RefreshModel()
|
|
|
|
end
|
|
|
|
|
2024-09-01 20:49:41 +00:00
|
|
|
function XUiSpecialTrainBreakthroughMain:GetStageId(isHellMode)
|
|
|
|
return XDataCenter.FubenSpecialTrainManager.BreakthroughGetCurrentStageId(isHellMode)
|
2023-07-14 19:35:33 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:InitCamera()
|
|
|
|
local root = self.UiModelGo.transform
|
|
|
|
self.UiCamFarMain = root:FindTransform("UiCamFarMain")
|
|
|
|
self.UiCamFarPanelExchange = root:FindTransform("UiCamFarPanelExchange")
|
|
|
|
self.UiCamNearMain = root:FindTransform("UiCamNearMain")
|
|
|
|
self.UiCamNearPanelExchange = root:FindTransform("UiCamNearPanelExchange")
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:SwitchCamera(cameraType)
|
|
|
|
if cameraType == CAMERA_TYPE.NORMAL then
|
|
|
|
self.UiCamFarMain.gameObject:SetActiveEx(true)
|
|
|
|
self.UiCamFarPanelExchange.gameObject:SetActiveEx(false)
|
|
|
|
self.UiCamNearMain.gameObject:SetActiveEx(true)
|
|
|
|
self.UiCamNearPanelExchange.gameObject:SetActiveEx(false)
|
2024-09-01 20:49:41 +00:00
|
|
|
self.PanelNormal.gameObject:SetActiveEx(true)
|
|
|
|
|
2023-07-14 19:35:33 +00:00
|
|
|
elseif cameraType == CAMERA_TYPE.EXCHANGE then
|
|
|
|
self.UiCamFarMain.gameObject:SetActiveEx(false)
|
|
|
|
self.UiCamFarPanelExchange.gameObject:SetActiveEx(true)
|
|
|
|
self.UiCamNearMain.gameObject:SetActiveEx(false)
|
|
|
|
self.UiCamNearPanelExchange.gameObject:SetActiveEx(true)
|
2024-09-01 20:49:41 +00:00
|
|
|
self.PanelNormal.gameObject:SetActiveEx(false)
|
2023-07-14 19:35:33 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:SwitchCameraNormal()
|
|
|
|
self:SwitchCamera(CAMERA_TYPE.NORMAL)
|
|
|
|
self:PlayAnimation("UiEnable")
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:PlayAnimationOpening()
|
|
|
|
local root = self.UiModelGo.transform
|
|
|
|
self.PanelModel = root:FindTransform("Animation")
|
|
|
|
local animEnable = root:FindTransform("AnimEnable")
|
|
|
|
animEnable:PlayTimelineAnimation()
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:OnModelLoadCallback()
|
2024-09-01 20:49:41 +00:00
|
|
|
local actionArray = XCharacterCuteConfig.GetModelRandomAction(self.RoleModelPanel:GetCurRoleName())
|
2023-07-14 19:35:33 +00:00
|
|
|
self.SpecialTrainActionRandom:SetAnimator(self.RoleModelPanel:GetAnimator(), actionArray, self.RoleModelPanel)
|
|
|
|
self.SpecialTrainActionRandom:Play()
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:OnModelLoadBegin()
|
|
|
|
self.SpecialTrainActionRandom:Stop()
|
|
|
|
end
|
|
|
|
|
2024-09-01 20:49:41 +00:00
|
|
|
--region term 2
|
|
|
|
function XUiSpecialTrainBreakthroughMain:UpdateHellModeVisible()
|
|
|
|
local isHellMode = self.TogHell.isOn
|
|
|
|
self:UpdateDesc()
|
|
|
|
|
|
|
|
self:PlayAnimation("QieHuan")
|
|
|
|
if isHellMode then
|
|
|
|
self.PanelRank.gameObject:SetActiveEx(true)
|
|
|
|
self.BtnRightBottomNormal.gameObject:SetActiveEx(false)
|
|
|
|
self.BtnRightBottomHard.gameObject:SetActiveEx(true)
|
|
|
|
self.EffectHellMode.gameObject:SetActiveEx(true)
|
|
|
|
self:StopTimerMusic()
|
|
|
|
-- 困难
|
|
|
|
self._TimerMusic = XScheduleManager.ScheduleNextFrame(function()
|
|
|
|
XSoundManager.PlaySoundDoNotInterrupt(XSoundManager.UiBasicsMusic.SpecialTrainBreakthroughHell)
|
|
|
|
end)
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
|
|
|
self.PanelRank.gameObject:SetActiveEx(false)
|
|
|
|
self.BtnRightBottomNormal.gameObject:SetActiveEx(true)
|
|
|
|
self.BtnRightBottomHard.gameObject:SetActiveEx(false)
|
|
|
|
self.EffectHellMode.gameObject:SetActiveEx(false)
|
|
|
|
self:StopTimerMusic()
|
|
|
|
-- 普通
|
|
|
|
self._TimerMusic = XScheduleManager.ScheduleNextFrame(function()
|
|
|
|
XSoundManager.PlaySoundDoNotInterrupt(XSoundManager.UiBasicsMusic.SpecialTrainBreakthroughNormal)
|
|
|
|
end)
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:StopTimerMusic()
|
|
|
|
if self._TimerMusic then
|
|
|
|
XScheduleManager.UnSchedule(self._TimerMusic)
|
|
|
|
self._TimerMusic = false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:UpdateHellMode()
|
|
|
|
local isCanSelectHellMode = XDataCenter.FubenSpecialTrainManager.IsCanSelectHellMode(self:GetStageId(false))
|
|
|
|
|
|
|
|
if not isCanSelectHellMode then
|
|
|
|
self.BtnLock.gameObject:SetActiveEx(true)
|
|
|
|
self.TogHell.gameObject:SetActiveEx(false)
|
|
|
|
self.TogHell.isOn = false
|
|
|
|
self:UpdateHellModeVisible()
|
|
|
|
self:UpdateHellModeRedDot()
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
|
|
|
self.BtnLock.gameObject:SetActiveEx(false)
|
|
|
|
self.TogHell.gameObject:SetActiveEx(true)
|
|
|
|
self.TogHell.isOn = XDataCenter.FubenSpecialTrainManager.GetIsHellMode()
|
|
|
|
self:UpdateHellModeVisible()
|
|
|
|
self.TogHell.onValueChanged:AddListener(handler(self, self.OnTogHellModeValueChanged))
|
|
|
|
self:UpdateHellModeRedDot()
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:UpdateHellModeRedDot()
|
|
|
|
self.RedHellMode.gameObject:SetActiveEx(XDataCenter.FubenSpecialTrainManager.BreakthroughIsShowRedDotHellMode())
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:OnTogHellModeValueChanged(value)
|
|
|
|
if value then
|
|
|
|
local stageId = self:GetStageId(false)
|
|
|
|
local isCanSelectHellMode = XDataCenter.FubenSpecialTrainManager.IsCanSelectHellMode(stageId, true)
|
|
|
|
|
|
|
|
-- hell mode is lock
|
|
|
|
if not isCanSelectHellMode then
|
|
|
|
self.TogHell.isOn = false
|
|
|
|
self:UpdateHellModeVisible()
|
|
|
|
return
|
|
|
|
end
|
|
|
|
end
|
|
|
|
self:UpdateHellModeVisible()
|
|
|
|
XDataCenter.FubenSpecialTrainManager.BreakthroughSetIsHellMode(value)
|
|
|
|
self:UpdateHellModeRedDot()
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:OnBtnClickLockHellMode()
|
|
|
|
local stageId = self:GetStageId(false)
|
|
|
|
XDataCenter.FubenSpecialTrainManager.BreakthroughTipHellModeLock(stageId)
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:UpdateDesc()
|
|
|
|
local isHellMode = self.TogHell.isOn
|
|
|
|
self.TextDesc1.text = XUiHelper.GetText(isHellMode and "SpecialTrainBreakthroughHellDesc1" or "SpecialTrainBreakthroughDesc1")
|
|
|
|
self.TextDesc2.text = XUiHelper.GetText(isHellMode and "SpecialTrainBreakthroughHellDesc2" or "SpecialTrainBreakthroughDesc2")
|
|
|
|
self.TextDesc3.text = XUiHelper.GetText(isHellMode and "SpecialTrainBreakthroughHellDesc3" or "SpecialTrainBreakthroughDesc3")
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:GetStrScore(score)
|
|
|
|
if score == 0 or not score then
|
|
|
|
score = "--"
|
|
|
|
end
|
|
|
|
return score
|
|
|
|
end
|
|
|
|
|
|
|
|
-- shown on hell mode
|
|
|
|
function XUiSpecialTrainBreakthroughMain:UpdatePersonalScore()
|
|
|
|
self.TxtPersonalScore.text = self:GetStrScore(XDataCenter.FubenSpecialTrainManager.BreakthroughGetPersonalScore())
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:UpdateTeamScore()
|
|
|
|
self.TxtTeamScore.text = self:GetStrScore(XDataCenter.FubenSpecialTrainManager.BreakthroughGetTeamScore())
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:OnClickBtnRank()
|
|
|
|
XLuaUiManager.Open("UiSpecialTrainBreakthroughRank")
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:CountDownHellMode()
|
|
|
|
local stageId = self:GetStageId(false)
|
|
|
|
local timeId = XFubenSpecialTrainConfig.GetHellStageTimeId(stageId)
|
|
|
|
local openTime = XFunctionManager.GetStartTimeByTimeId(timeId)
|
|
|
|
local remainTime = openTime - XTime.GetServerNowTimestamp()
|
|
|
|
self.TxtTimeHellMode.text = XUiHelper.GetText("SpecialTrainBreakthroughTimeHellMode", XUiHelper.GetTime(remainTime))
|
|
|
|
return remainTime > 0
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:StartTimerHellMode()
|
|
|
|
if self._TimerHellMode then
|
|
|
|
return
|
|
|
|
end
|
|
|
|
if not self:CountDownHellMode() then
|
|
|
|
self:StopTimerHellMode()
|
|
|
|
return
|
|
|
|
end
|
|
|
|
self.PanelTimeHellMode.gameObject:SetActiveEx(true)
|
|
|
|
self._TimerHellMode = XScheduleManager.ScheduleForever(function()
|
|
|
|
if not self:CountDownHellMode() then
|
|
|
|
self:StopTimerHellMode()
|
|
|
|
end
|
|
|
|
end, XScheduleManager.SECOND)
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiSpecialTrainBreakthroughMain:StopTimerHellMode()
|
|
|
|
self.PanelTimeHellMode.gameObject:SetActiveEx(false)
|
|
|
|
if not self._TimerHellMode then
|
|
|
|
return
|
|
|
|
end
|
|
|
|
XScheduleManager.UnSchedule(self._TimerHellMode)
|
|
|
|
self._TimerHellMode = false
|
|
|
|
end
|
|
|
|
|
|
|
|
--endregion term 2
|
|
|
|
|
2023-07-14 19:35:33 +00:00
|
|
|
return XUiSpecialTrainBreakthroughMain
|