PGRData/Script/matrix/xui/xuilivwarmactivity/XUiLivWarmSoundsActivity.lua

627 lines
No EOL
24 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local XUiLivWarmSoundsActivity = XLuaUiManager.Register(XLuaUi, "UiLivWarmSoundsActivity")
local XUiLivWarmSoundsActivityAudioGrid = require("XUi/XUiLivWarmActivity/XUiLivWarmSoundsActivityAudioGrid")
local XUiLivWarmSoundsActivityTaskPanel = require("XUi/XUiLivWarmActivity/XUiLivWarmSoundsActivityTaskPanel")
local GAME_STATE = { --游戏面板状态
EditorState = 1,
PlayState = 2,
}
local LONG_CLICK_OFFSET = 1 --长按触发时间
local MAX_AUDIO_PIECES = 5 --最大音频数量
local MAX_TIP_COUNT = 5 --最大提示数量
local PROGRESS_SPEED = CS.XGame.ClientConfig:GetInt("LivWarmSoundsActivityProgressSpeed") --播放进度条速度
function XUiLivWarmSoundsActivity:OnAwake()
self.AudioOrder = {} --存储调整的音频位置,拖拽的时候更新
self.AudioPieces = {} --音频片段
self.PanelSinglePopup = {}--PanelPopup代理传递给audio类控制
XTool.InitUiObjectByUi(self.PanelSinglePopup, self.PanelPopup)
end
function XUiLivWarmSoundsActivity:OnStart()
self.PanelAllCd = self.Transform:FindTransform("PanelAllCd")
self.AudioAreaRectTransform = self.PanelAllCd:GetComponent("RectTransform")
self.ProgressBar = self.Transform:FindTransform("PanelMode"):FindTransform("ProgressBar")
self.ImgLan = self.Transform:FindTransform("PanelMode"):FindTransform("Lan")
self.Bar = self.Transform:FindTransform("PanelMode"):FindTransform("Bar")
self.Effect = self.Transform:FindTransform("PanelMode"):FindTransform("Effect")
self.EffectPan = self.Transform:FindTransform("RImgAirvinyl"):FindTransform("Effect")
self.ImgBlue = self.Transform:FindTransform("ImgBlue")
self.RImgQuietWave = self.Transform:FindTransform("RImgQuietWave")
self.Camera = CS.XUiManager.Instance.UiCamera
self.PanelReward = XUiLivWarmSoundsActivityTaskPanel.New(self.PanelCheckReward, self)
self.ActivityId = XDataCenter.LivWarmSoundsActivityManager.GetActivityId()
self.TxtWords.text = ""
self:SetPlayEff(false)
self:InitTimer()
self:InitAudioPieces()
self:AddListener()
self:InitBtnGroup()
end
function XUiLivWarmSoundsActivity:OnEnable()
self:CheckActivityEnd()
self:CheckHitFaceHelp()
self:RefreshTitle() --标题刷新
self:RefreshBtnState() --按钮stage状态更新
self:RefreshTaskProgress() --任务进度
self.BtnGroupChapter:SelectIndex(XDataCenter.LivWarmSoundsActivityManager.GetTheNewestStage())
end
function XUiLivWarmSoundsActivity:OnGetEvents()
return {
XEventId.EVENT_XLIVWARMSOUND_ACTIVITY_STAGE_AUDIO_CHANGE,
XEventId.EVENT_XLIVWARMSOUND_ACTIVITY_TIP_COUNT_CHANGE,
XEventId.EVENT_XLIVWARMSOUND_ACTIVITY_STAGE_AUDIO_CLIENT_CHANGE,
XEventId.EVENT_XLIVWARMSOUND_ACTIVITY_END,
XEventId.EVENT_TASK_SYNC,
}
end
function XUiLivWarmSoundsActivity:OnNotify(evt, ...)
local args = { ... }
if evt == XEventId.EVENT_XLIVWARMSOUND_ACTIVITY_STAGE_AUDIO_CHANGE then
self:SwitchToPlayMode()
self:RefreshBtnState()
elseif evt == XEventId.EVENT_XLIVWARMSOUND_ACTIVITY_TIP_COUNT_CHANGE then
local nowTipCount = args[1]
self:RefreshTips(nowTipCount)
elseif evt == XEventId.EVENT_XLIVWARMSOUND_ACTIVITY_STAGE_AUDIO_CLIENT_CHANGE then
self:RefreshAudioInfo()
elseif evt == XEventId.EVENT_XLIVWARMSOUND_ACTIVITY_END then
self:CheckActivityEnd()
elseif evt == XEventId.EVENT_TASK_SYNC then
self:RefreshTaskProgress()
end
end
function XUiLivWarmSoundsActivity:OnDisable()
end
function XUiLivWarmSoundsActivity:OnDestroy()
XCountDown.UnBindTimer(self.PanelTitle, XCountDown.GTimerName.LivWarmSoundsActivity)
self:OnButtonStop()
self:DestroyTimerByTimerId(self.PlayTimerId)
self:DestroyTimerByTimerId(self.ProgressTimerId)
end
function XUiLivWarmSoundsActivity:SetPlayEff(isEff)--处理特效相关的播放表现
if isEff then
self.Effect.gameObject:SetActiveEx(true)
self.RImgQuietWave.gameObject:SetActiveEx(false)
self.EffectPan.gameObject:SetActiveEx(true)
else
self.Effect.gameObject:SetActiveEx(false)
self.RImgQuietWave.gameObject:SetActiveEx(true)
self.EffectPan.gameObject:SetActiveEx(false)
end
end
function XUiLivWarmSoundsActivity:CheckActivityEnd()
if self.IsEnd then
return
end
if XDataCenter.LivWarmSoundsActivityManager.OnActivityEnd() then
self.IsEnd = true
return
end
end
function XUiLivWarmSoundsActivity:InitTimer()
local textTime = self.PanelTitle.transform:Find("TxtTime")
XCountDown.BindTimer(self.PanelTitle, XCountDown.GTimerName.LivWarmSoundsActivity, function(v)
if not XDataCenter.LivWarmActivityManager.CheckActivityIsOpen() then
return
end
textTime:GetComponent("Text").text = XUiHelper.GetTime(v, XUiHelper.TimeFormatType.ACTIVITY)
end)
end
function XUiLivWarmSoundsActivity:InitBtnGroup()
self.DataSource = XDataCenter.LivWarmSoundsActivityManager.GetStages()
if XTool.IsTableEmpty(self.DataSource) then
return
end
local tabGroup = {}
for i = 1, #self.DataSource do
local uiButton
if i == 1 then
uiButton = self.BtnStage
else
local itemGo = CS.UnityEngine.Object.Instantiate(self.BtnStage.gameObject)
itemGo.transform:SetParent(self.BtnGroupChapter.transform, false)
uiButton = itemGo.transform:GetComponent("XUiButton")
end
uiButton:SetNameByGroup(0, XLivWarmSoundsActivityConfig.GetStageStageName(self.DataSource[i]))
table.insert(tabGroup, uiButton)
end
self.BtnGroupChapter:Init(tabGroup, function(tabIndex)
self:BtnStageClick(self.DataSource[tabIndex])
end)
end
--StageBtn的状态 播放状态下是不可点击的
function XUiLivWarmSoundsActivity:RefreshBtnState()
if XTool.IsTableEmpty(self.DataSource) or not self.BtnGroupChapter then
return
end
for i, v in pairs(self.DataSource) do
local uiButton = self.BtnGroupChapter:GetButtonByIndex(i)
local isPass, desc = XConditionManager.CheckCondition(XLivWarmSoundsActivityConfig.GetStageCondition(v), v)
if not isPass then
uiButton:SetDisable(true)
uiButton:SetNameByGroup(1, desc)
else
uiButton:SetDisable(false)
uiButton:SetNameByGroup(1, "")
end
end
end
function XUiLivWarmSoundsActivity:AddListener()
self.BtnBack.CallBack = function()
self:OnBtnBackClick()
end
self.BtnMainUi.CallBack = function()
self:OnBtnMainUiClick()
end
self:BindHelpBtn(self.BtnHelp, "LivWarmSoundsActivityHelp")
self.BtnTestPlay.CallBack = function()
if self.BtnTestPlay.ButtonState == CS.UiButtonState.Disable then
return
end
XDataCenter.LivWarmSoundsActivityManager.SetStageAnswer(self.StageId, self.AudioOrder)
end
self.BtnReplay.CallBack = function()
self:SwitchToPlayMode(true)
end
self.BtnReplayStop.CallBack = function()
self.IsPlaying = false
end
self.BtnStop.CallBack = function()
self.IsPlaying = false
end
self.BtnHint.CallBack = function()
self:OnButtonHint()
end
self.BtnUrl.CallBack = function()
CS.UnityEngine.Application.OpenURL(XLivWarmSoundsActivityConfig.GetStageFinishUrl(self.StageId))
end
self:RegisterClickEvent(self.BtnTreasure, function()
self:Switch2RewardList()
end)
self:InitBtnLongClicks()
end
function XUiLivWarmSoundsActivity:OnButtonStop()
self:SetPlayEff(false)
self:StopAudioPlay()
self:ResetProgress()
self:SwitchToEditorMode(true)
end
function XUiLivWarmSoundsActivity:OnBtnBackClick()
self:Close()
end
function XUiLivWarmSoundsActivity:OnBtnMainUiClick()
XLuaUiManager.RunMain()
end
function XUiLivWarmSoundsActivity:CheckHitFaceHelp()
local IsShowHelp = XDataCenter.LivWarmSoundsActivityManager.CheckShowHelp()
if IsShowHelp then
XUiManager.ShowHelpTip("LivWarmSoundsActivityHelp")
end
end
function XUiLivWarmSoundsActivity:RefreshTitle()
self.PanelTitle.transform:Find("RawImage"):GetComponent("RawImage"):SetRawImage(XLivWarmSoundsActivityConfig.GetActivityName(self.ActivityId))
end
function XUiLivWarmSoundsActivity:OnButtonHint()
XDataCenter.LivWarmSoundsActivityManager.SetTipCount(self.StageId)
end
function XUiLivWarmSoundsActivity:RefreshTips(count)
self:RefreshTipsBtn()
local tipCount = XDataCenter.LivWarmSoundsActivityManager.StageTipCount(self.StageId)
local hints = XLivWarmSoundsActivityConfig.GetStageHint(self.StageId)
if tipCount then
if count then
self["PanelHint" .. count].gameObject:SetActiveEx(true)
--self:PlayAnimation("PanelHint" .. count .. "Enable")
self["PanelHint" .. count].transform:Find("Text"):GetComponent("Text").text = hints[count]
else
for i = 1, MAX_TIP_COUNT do
if i <= tipCount then
self["PanelHint" .. i].gameObject:SetActiveEx(true)
--self:PlayAnimation("PanelHint" .. i .. "Enable")
self["PanelHint" .. i].transform:Find("Text"):GetComponent("Text").text = hints[i]
else
self["PanelHint" .. i].gameObject:SetActiveEx(false)
end
end
end
end
end
function XUiLivWarmSoundsActivity:RefreshTipsBtn()
--tips按钮刷新
local isMax = XDataCenter.LivWarmSoundsActivityManager.IsTipCountMax(self.StageId)
self.BtnHint:SetDisable(isMax, not isMax)
end
--------Audio 相关---------------
-- 初始化长按事件 图片拖拽替换,以及单点播放
function XUiLivWarmSoundsActivity:InitBtnLongClicks()
for i = 1, MAX_AUDIO_PIECES do
XUiButtonLongClick.New(self.AudioPieces[i].BtnCd, 10, self, nil, function(pressTime)
self:LongClick(i, pressTime)
end, self.OnBtnLongUp, false, nil, false, nil, LONG_CLICK_OFFSET)
end
end
function XUiLivWarmSoundsActivity:LongClick(changeIndex, pressTime)
if changeIndex > #self.AudioOrder or (self.GameState ~= GAME_STATE.EditorState and XDataCenter.LivWarmSoundsActivityManager.IsStageFinished(self.StageId)) then
--音频片段可能会小于changeIndex
return
end
self.ChangeIndex = changeIndex
self.BtnReplacePanelCd.gameObject:SetActiveEx(true)
self:ReplaceBtnCd(self.AudioOrder[changeIndex])
self.BtnReplacePanelCd.transform.localPosition = self:GetPosition()
self:OnJudgeInsert()
end
function XUiLivWarmSoundsActivity:OnBtnLongUp()
self.TargetIndex = self:OnJudgeInsert(true)
self:ChangeAudioOrder(self.ChangeIndex, self.TargetIndex)
self:ResetLongClick()
end
function XUiLivWarmSoundsActivity:OnJudgeInsert(isUp) --判断音频将要插入的位置,isUp标识抬手动作
if not XTool.IsNumberValid(self.ChangeIndex) then
return
end
local replaceAnchoredPosition = self.BtnReplacePanelCd.transform.anchoredPosition
local dragPlayArea = self.DragPlayArea.transform.anchoredPosition;
local dragPlayX = { minX = dragPlayArea.x - self.DragPlayArea.transform.rect.width / 2, maxX = dragPlayArea.x + self.DragPlayArea.transform.rect.width / 2 }
local dragPlayY = { minY = dragPlayArea.y - self.DragPlayArea.transform.rect.height / 2, maxY = dragPlayArea.y + self.DragPlayArea.transform.rect.height / 2 }
if replaceAnchoredPosition.x >= dragPlayX.minX and replaceAnchoredPosition.x <= dragPlayX.maxX and replaceAnchoredPosition.y >= dragPlayY.minY and replaceAnchoredPosition.y <= dragPlayY.maxY then
if isUp then
self.AudioPieces[self.ChangeIndex]:PlaySound(true)
self:ResetLongClick()
else
self:OnSetBtnSelect()
end
return
end
local replaceAnchoredPosition = self.BtnReplacePanelCd.transform.anchoredPosition
local targetIndex = self.ChangeIndex
if self.AudioPieces[self.ChangeIndex].Transform.anchoredPosition.x < replaceAnchoredPosition.x then --往右边拖动
for i = self.ChangeIndex + 1, MAX_AUDIO_PIECES do
if self.AudioPieces[i].Transform.anchoredPosition.x < replaceAnchoredPosition.x then
targetIndex = i
end
end
else
for i = self.ChangeIndex - 1, 1,-1 do
if self.AudioPieces[i].Transform.anchoredPosition.x >= replaceAnchoredPosition.x then
targetIndex = i
end
end
end
self:OnSetBtnSelect(targetIndex)
return targetIndex
end
function XUiLivWarmSoundsActivity:OnSetBtnSelect(selectIndex)
for i = 1, MAX_AUDIO_PIECES do
if i == selectIndex then
self.AudioPieces[i].BtnCd:SetButtonState(CS.UiButtonState.Select)
else
self.AudioPieces[i].BtnCd:SetButtonState(CS.UiButtonState.Normal)
end
end
end
function XUiLivWarmSoundsActivity:ResetLongClick()
self:OnSetBtnSelect()
self.BtnReplacePanelCd.gameObject:SetActiveEx(false)
self.ChangeIndex = 0
self.TargetIndex = 0
end
function XUiLivWarmSoundsActivity:ReplaceBtnCd(soundIndex)
self.BtnReplacePanelCd:SetRawImage(XLivWarmSoundsActivityConfig.GetSoundAttachedImgUrl(soundIndex))
self.BtnReplacePanelCd:SetName(XLivWarmSoundsActivityConfig.GetSoundRankNumber(soundIndex))
end
function XUiLivWarmSoundsActivity:GetPosition()
local screenPoint
if CS.UnityEngine.Application.platform == CS.UnityEngine.RuntimePlatform.WindowsEditor or CS.UnityEngine.Application.platform == CS.UnityEngine.RuntimePlatform.WindowsPlayer then
screenPoint = CS.UnityEngine.Vector2(CS.UnityEngine.Input.mousePosition.x, CS.UnityEngine.Input.mousePosition.y)
else
screenPoint = CS.UnityEngine.Input.GetTouch(0).position
end
-- 设置拖拽
local hasValue, v2 = CS.UnityEngine.RectTransformUtility.ScreenPointToLocalPointInRectangle(self.AudioAreaRectTransform, screenPoint, self.Camera)
if hasValue then
return CS.UnityEngine.Vector3(v2.x, v2.y, 0)
else
return CS.UnityEngine.Vector3.zero
end
end
function XUiLivWarmSoundsActivity:ChangeAudioOrder(changeIndex, targetIndex)
if XTool.IsTableEmpty(self.AudioOrder) or not XTool.IsNumberValid(targetIndex) or changeIndex == targetIndex then
return
end
local answer = XTool.Clone(self.AudioOrder)
local changeId = answer[changeIndex]
table.remove(answer, changeIndex)
table.insert(answer, targetIndex, changeId)
XDataCenter.LivWarmSoundsActivityManager.SetClientStageAnswer(self.StageId, answer)
self:RefreshTestBtnState(self.StageId, answer)
end
--拖拽结束--------------
--关卡点击
function XUiLivWarmSoundsActivity:BtnStageClick(stageId)
local isPass, desc = XConditionManager.CheckCondition(XLivWarmSoundsActivityConfig.GetStageCondition(stageId), stageId)
if not isPass then
XUiManager.TipMsg(desc)
return
end
if self.GameState == GAME_STATE.PlayState then
return
end
self:PlayAnimation("QieHuan")
self:RefreshAudioInfo(stageId)
self:RefreshTips()
self:SwitchToEditorMode()
end
--audio初始化
function XUiLivWarmSoundsActivity:InitAudioPieces()
for i = 1, MAX_AUDIO_PIECES do
if not self.AudioPieces[i] then
local audioObj
if i == 1 then
audioObj = self.BtnCd
else
audioObj = CS.UnityEngine.Object.Instantiate(self.BtnCd, self.PanelAllCd)
end
local audio = XUiLivWarmSoundsActivityAudioGrid.New(audioObj, self)
table.insert(self.AudioPieces, audio)
end
end
self.BtnReplacePanelCd.transform:SetAsLastSibling()
end
--audio信息刷新
function XUiLivWarmSoundsActivity:RefreshAudioInfo(stageId)
if stageId then
self.StageId = stageId
end
if not XTool.IsNumberValid(self.StageId) then
return
end
self.AudioOrder = XDataCenter.LivWarmSoundsActivityManager.GetStageAnswer(self.StageId)
self:RefreshAudioPieces()
self:RefreshTestBtnState(self.StageId, self.AudioOrder)
end
function XUiLivWarmSoundsActivity:RefreshTestBtnState(stageId,audioOrder) --海外修改:根据是否排列正确刷新按钮状态
local flag = XDataCenter.LivWarmSoundsActivityManager.CheckStageAnswer(stageId, audioOrder)
if flag then
self.BtnTestPlay:SetButtonState(CS.UiButtonState.Normal)
else
self.BtnTestPlay:SetButtonState(CS.UiButtonState.Disable)
end
end
function XUiLivWarmSoundsActivity:RefreshAudioPieces()
self:ResetAudioPieces()
for i, audioIndex in ipairs(self.AudioOrder) do
self.AudioPieces[i]:RefreshData(audioIndex, self.PanelSinglePopup, function(isSingleTouch)
--区分单点以及播放方法
if not isSingleTouch then
if self.AudioPieces[i + 1] then
self.AudioPieces[i + 1]:PlaySound()
end
end
end)
end
end
function XUiLivWarmSoundsActivity:ResetAudioPieces()
if not XTool.IsTableEmpty(self.AudioPieces) then
for i, v in pairs(self.AudioPieces) do
v.GameObject:SetActiveEx(false)
end
end
end
function XUiLivWarmSoundsActivity:StopAudioPlay()
if not XTool.IsTableEmpty(self.AudioPieces) then
for i, v in pairs(self.AudioPieces) do
v:StopPlaySound()
end
end
end
----------------Audio End----------------------
-----------布局刷新--------
function XUiLivWarmSoundsActivity:SwitchToEditorMode(noAnim)
self.GameState = GAME_STATE.EditorState
self:RefreshStateInfo(noAnim)
end
--客户端调试播放需要服务端验证后播放重播不需要重播使用isReplay标识
function XUiLivWarmSoundsActivity:SwitchToPlayMode(isReplay)
self.GameState = GAME_STATE.PlayState
--[[if XTool.IsNumberValid(self.StageId) then
if XDataCenter.LivWarmSoundsActivityManager.IsStageFinished(self.StageId) and not isReplay then
--重播不需要播放转场动画
-- self:PlayAnimationWithMask("AnimEnable2", function()
self:PlayBehaviour()
-- end)
else
self:PlayBehaviour()
end
end--]]
self:RefreshStateInfo(true)
self:PlayAllText()
end
function XUiLivWarmSoundsActivity:PlayBehaviour()
--播放音频
if not XTool.IsTableEmpty(self.AudioPieces) then
self:StopAudioPlay()
self.IsPlaying = true
self:PlayAnimation("PlayMusic")
self:StartPlayTimer()
self.AudioPieces[1]:PlaySound() --播放音频从头开始
end
end
function XUiLivWarmSoundsActivity:PlayAllText() --海外修改显示CG完整文字
self.PanelPlayMask.gameObject:SetActiveEx(true)
self.TxtTypeWriterL.CompletedHandle = function()
self.PanelPlayMask.gameObject:SetActiveEx(false)
self.GameState = GAME_STATE.EditorState
end
self.TxtTypeWriterL:Play()
end
--一共两种大状态,播放状态以及编辑状态,每个大状下都有两个小状态,通关以及未通关状态
function XUiLivWarmSoundsActivity:RefreshStateInfo(noPlayEnableAnim)
if not self.isReplaceBgImg and XDataCenter.LivWarmSoundsActivityManager.IsAllStageFinished() then
self.isReplaceBgImg = true
self.RImgBg:SetRawImage(XLivWarmSoundsActivityConfig.GetActivityClearBgImg(self.ActivityId))
end
local isStageFinish = XDataCenter.LivWarmSoundsActivityManager.IsStageFinished(self.StageId)
if isStageFinish then
--if not noPlayEnableAnim then
self:PlayAnimation("AnimEnable")
--end
self.Transform:FindTransform("PanelPlay").gameObject:SetActiveEx(true)
self.Transform:FindTransform("PanelVinylRecord").gameObject:SetActiveEx(false)
self.TextFinishTip.text = XUiHelper.ConvertLineBreakSymbol(XLivWarmSoundsActivityConfig.GetStageFinishText(self.StageId))
self.RImgFinish:SetRawImage(XLivWarmSoundsActivityConfig.GetStageFinishImg(self.StageId))
self.BtnUrl.gameObject:SetActiveEx(XLivWarmSoundsActivityConfig.GetStageFinishUrl(self.StageId) ~= "" and true or false)
else
self.Transform:FindTransform("PanelPlay").gameObject:SetActiveEx(false)
self.Transform:FindTransform("PanelVinylRecord").gameObject:SetActiveEx(true)
end
end
--播放进度条处理
function XUiLivWarmSoundsActivity:RefreshProgress(count)
local BroadTestTime = XLivWarmSoundsActivityConfig.GetStageBroadTestTime(self.StageId)
local maxCount = (XScheduleManager.SECOND/PROGRESS_SPEED)*BroadTestTime --需要动画的总次数
if XDataCenter.LivWarmSoundsActivityManager.IsStageFinished(self.StageId) then
self.ImgBlue:GetComponent("Image").fillAmount = count / maxCount
else
local deltaWidth = (self.Bar.rect.width - self.ProgressBar.rect.width) / ((XScheduleManager.SECOND/PROGRESS_SPEED)*BroadTestTime) --进度条本身有宽度需要处理
self.ProgressBar.anchoredPosition = CS.UnityEngine.Vector2((self.ProgressBar.rect.width / 2 + deltaWidth * count), self.ProgressBar.anchoredPosition.y)
self.ImgLan:GetComponent("Image").fillAmount = count / maxCount
end
end
function XUiLivWarmSoundsActivity:ResetProgress()
if XDataCenter.LivWarmSoundsActivityManager.IsStageFinished(self.StageId) then
self.ImgBlue:GetComponent("Image").fillAmount = 0
else
self.ProgressBar.anchoredPosition = CS.UnityEngine.Vector2((self.ProgressBar.rect.width / 2), self.ProgressBar.anchoredPosition.y)
self.ImgLan:GetComponent("Image").fillAmount = 0
end
end
--------布局刷新 End-----------
--任务进程
function XUiLivWarmSoundsActivity:RefreshTaskProgress()
local taskList = XDataCenter.TaskManager.GetLivWarmSoundsActivityFullTaskList()
local passCount, allCount = XDataCenter.TaskManager.GetTaskProgressByTaskList(taskList)
self.ImgJindu.fillAmount = passCount / allCount
self.TxtTaskProgress.text = CS.XTextManager.GetText("LivWarmTaskProgress", passCount, allCount)
self.ImgLingqu.gameObject:SetActiveEx(passCount == allCount)
self.ImgTaskRed.gameObject:SetActiveEx(XDataCenter.TaskManager.GetIsRewardForEx(TaskType.LivWarmSoundsActivity))
if self.PanelReward.GameObject.activeSelf then
self.PanelReward:UpdateRewardList()
end
end
function XUiLivWarmSoundsActivity:Switch2RewardList()
self.PanelReward.GameObject:SetActiveEx(true)
self:PlayAnimation("PanelCheckRewardEnable")
self.PanelReward:UpdateRewardList()
end
-------------------------------------------------------计时器------------------------------------------------------------
function XUiLivWarmSoundsActivity:DestroyTimerByTimerId(id)
if XTool.IsNumberValid(id) then
XScheduleManager.UnSchedule(id)
end
end
function XUiLivWarmSoundsActivity:StartPlayTimer()
self:DestroyTimerByTimerId(self.PlayTimerId)
self:DestroyTimerByTimerId(self.ProgressTimerId)
self.PlayTimerId = nil
self.ProgressTimerId = nil
self.BtnReplayStop.gameObject:SetActiveEx(true)
self.PanelPlayMask.gameObject:SetActiveEx(true)
self:SetPlayEff(true)
local loopCount = XLivWarmSoundsActivityConfig.GetStageBroadTestTime(self.StageId)
local progressCount = 0
self.ProgressTimerId = XScheduleManager.ScheduleForever(function()
progressCount = progressCount + 1
self:RefreshProgress(progressCount)
end, PROGRESS_SPEED, 0)
self.PlayTimerId = XScheduleManager.Schedule(function()
loopCount = loopCount - 1
self:PlayFun(loopCount)
end, XScheduleManager.SECOND, XLivWarmSoundsActivityConfig.GetStageBroadTestTime(self.StageId), 0)
end
function XUiLivWarmSoundsActivity:PlayFun(loopCount)
if loopCount <= 0 or not self.IsPlaying then
self:PlayAnimation("StopMusic")
self.PanelPlayMask.gameObject:SetActiveEx(false)
self.BtnReplayStop.gameObject:SetActiveEx(false)
XSoundManager.ResumeMusic()
self:OnButtonStop() --播放结束或打断播放需要切换状态
self:DestroyTimerByTimerId(self.PlayTimerId)
self:DestroyTimerByTimerId(self.ProgressTimerId)
end
end
function XUiLivWarmSoundsActivity:PlayTypeWriter(content)
self.TxtWords.text = content
self.Mask1.gameObject:SetActiveEx(true)
self.TxtTypeWriter.CompletedHandle = function()
self.Mask1.gameObject:SetActiveEx(false)
end
--self.TxtTypeWriter.Duration = string.Utf8Len(content) * XMovieConfigs.TYPE_WRITER_SPEED
self.TxtTypeWriter:Play()
end