99 lines
No EOL
3.2 KiB
Lua
99 lines
No EOL
3.2 KiB
Lua
XUiGridLikeAudioItem = XClass(nil, "XUiGridLikeAudioItem")
|
|
local alphaSinScale = 10
|
|
|
|
function XUiGridLikeAudioItem:Ctor(ui)
|
|
self.GameObject = ui.gameObject
|
|
self.Transform = ui.transform
|
|
XTool.InitUiObject(self)
|
|
end
|
|
|
|
function XUiGridLikeAudioItem:Init(uiRoot)
|
|
self.UiRoot = uiRoot
|
|
end
|
|
|
|
function XUiGridLikeAudioItem:OnRefresh(audioData)
|
|
self.AudioData = audioData
|
|
local characterId = self.UiRoot:GetCurrFavorabilityCharacter()
|
|
local isUnlock = XDataCenter.FavorabilityManager.IsVoiceUnlock(characterId, self.AudioData.Id)
|
|
local canUnlock = XDataCenter.FavorabilityManager.CanVoiceUnlock(characterId, self.AudioData.Id)
|
|
|
|
self.CurrentState = XFavorabilityConfigs.InfoState.Normal
|
|
if not isUnlock then
|
|
if canUnlock then
|
|
self.CurrentState = XFavorabilityConfigs.InfoState.Available
|
|
else
|
|
self.CurrentState = XFavorabilityConfigs.InfoState.Lock
|
|
end
|
|
end
|
|
|
|
if canUnlock then
|
|
self:UpdatePlayStatus()
|
|
else
|
|
self:HidePlayStatus()
|
|
end
|
|
|
|
self:UpdateNormalStatus(self.CurrentState == XFavorabilityConfigs.InfoState.Normal or self.CurrentState == XFavorabilityConfigs.InfoState.Available)
|
|
self:UpdateAvailableStatus(self.CurrentState == XFavorabilityConfigs.InfoState.Available)
|
|
self:UpdateLockStatus(self.CurrentState == XFavorabilityConfigs.InfoState.Lock)
|
|
|
|
self.ImgCurProgress.fillAmount = 0
|
|
|
|
end
|
|
|
|
function XUiGridLikeAudioItem:HidePlayStatus()
|
|
self.IconPlay.gameObject:SetActiveEx(false)
|
|
self.IconPause.gameObject:SetActiveEx(false)
|
|
self.IconMicro.gameObject:SetActiveEx(false)
|
|
end
|
|
|
|
function XUiGridLikeAudioItem:UpdatePlayStatus()
|
|
local isPlay = self.AudioData.IsPlay or false
|
|
self.IconPlay.gameObject:SetActiveEx(not isPlay)
|
|
self.IconPause.gameObject:SetActiveEx(isPlay)
|
|
self.IconMicro.gameObject:SetActiveEx(isPlay)
|
|
self.IconMicroCanvasGroup.alpha = 0
|
|
end
|
|
|
|
function XUiGridLikeAudioItem:UpdateNormalStatus(isNormal)
|
|
self.AudioNor.gameObject:SetActiveEx(isNormal)
|
|
if isNormal and self.AudioData then
|
|
local currentCharacterId = self.UiRoot:GetCurrFavorabilityCharacter()
|
|
self.TxtTitle.text = self.AudioData.Name
|
|
self.ImgIcon:SetRawImage(XDataCenter.CharacterManager.GetCharSmallHeadIcon(currentCharacterId))
|
|
|
|
end
|
|
end
|
|
|
|
function XUiGridLikeAudioItem:UpdateAvailableStatus(isAvailable)
|
|
self.ImgRedDot.gameObject:SetActiveEx(isAvailable)
|
|
end
|
|
|
|
function XUiGridLikeAudioItem:HideRedDot()
|
|
self.ImgRedDot.gameObject:SetActiveEx(false)
|
|
end
|
|
|
|
function XUiGridLikeAudioItem:UpdateLockStatus(isLock)
|
|
self.AudioLock.gameObject:SetActiveEx(isLock)
|
|
if isLock and self.AudioData then
|
|
self.TxtLockTitle.text = self.AudioData.Name
|
|
self.TxtLock.text = self.AudioData.ConditionDescript
|
|
end
|
|
end
|
|
|
|
function XUiGridLikeAudioItem:UpdateProgress(progress)
|
|
progress = (progress >= 1) and 1 or progress
|
|
self.ImgCurProgress.fillAmount = progress
|
|
end
|
|
|
|
function XUiGridLikeAudioItem:UpdateMicroAlpha(count)
|
|
local alpha = math.sin(count / alphaSinScale)
|
|
|
|
self.IconMicroCanvasGroup.alpha = alpha
|
|
end
|
|
|
|
function XUiGridLikeAudioItem:GetAudioDataId()
|
|
if not self.AudioData then return 0 end
|
|
return self.AudioData.Id
|
|
end
|
|
|
|
return XUiGridLikeAudioItem |