PGRData/Script/matrix/xui/xuiguilddorm/XUiGuildDormMusicGrid.lua
2024-09-01 22:49:41 +02:00

56 lines
No EOL
2.6 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 Vector3 = CS.UnityEngine.Vector3
local DOTween = CS.DG.Tweening.DOTween
local XUiGuildDormSpecialUiGrid = require("XUi/XUiGuildDorm/XUiGuildDormSpecialUiGrid")
local XUiGuildDormMusicGrid = XClass(XUiGuildDormSpecialUiGrid, "XUiGuildDormMusicGrid")
local MusicPlayerTextMoveSpeed = CS.XGame.ClientConfig:GetFloat("MusicPlayerMainViewTextMoveSpeed")
local MusicPlayerTextMovePauseInterval = CS.XGame.ClientConfig:GetFloat("MusicPlayerMainViewTextMovePauseInterval")
function XUiGuildDormMusicGrid:Ctor()
self.TweenSequenceTxtMusicPlayer = nil
XEventManager.AddEventListener(XEventId.EVENT_DORM_UPDATE_MUSIC, self.UpdateMusic, self)
-- todo_gd 到时初始化读取正式名称
self:UpdateMusic()
-- 停止背景音乐 暂停音乐后使用PlayMusicWithAnalyzer同一首音乐不会播放
CS.XAudioManager.StopMusic()
local bgmId = XDataCenter.GuildDormManager.GetPlayedBgmId()
XDataCenter.GuildDormManager.PlayBgm(bgmId)
end
function XUiGuildDormMusicGrid:UpdateMusic()
if XTool.UObjIsNil(self.TxtMusicName) then
XEventManager.RemoveEventListener(XEventId.EVENT_DORM_UPDATE_MUSIC, self.UpdateMusic, self)
return
end
local bgmId = XDataCenter.GuildDormManager.GetPlayedBgmId()
local bgmCfg = XGuildDormConfig.GetBgmCfgById(bgmId)
self.TxtMusicName.text = bgmCfg.Name
self:UpdateMusicAnim()
end
function XUiGuildDormMusicGrid:UpdateMusicAnim()
if self.TweenSequenceTxtMusicPlayer then
self.TweenSequenceTxtMusicPlayer:Kill()
end
if self.MaskMusicPlayer == nil then return end -- 防打包
local txtDescWidth = XUiHelper.CalcTextWidth(self.TxtMusicDesc)
local txtNameWidth = XUiHelper.CalcTextWidth(self.TxtMusicName)
local txtWidth = txtDescWidth + txtNameWidth
local maskWidth = self.MaskMusicPlayer.sizeDelta.x
local txtDescTransform = self.TxtMusicDesc.transform
local txtLocalPosition = txtDescTransform.localPosition
txtDescTransform.localPosition = Vector3(maskWidth, txtLocalPosition.y, txtLocalPosition.z)
local distance = txtWidth + maskWidth
local sequence = DOTween.Sequence()
self.TweenSequenceTxtMusicPlayer = sequence
sequence:Append(txtDescTransform:DOLocalMoveX(-txtWidth, distance / MusicPlayerTextMoveSpeed))
sequence:AppendInterval(MusicPlayerTextMovePauseInterval)
sequence:SetLoops(-1)
end
function XUiGuildDormMusicGrid:Destroy()
XEventManager.RemoveEventListener(XEventId.EVENT_DORM_UPDATE_MUSIC, self.UpdateMusic, self)
XDataCenter.GuildDormManager.StopBgm()
XUiGuildDormMusicGrid.Super.Destroy(self)
end
return XUiGuildDormMusicGrid