PGRData/Script/matrix/xui/xuifavorability/XUiPanelFavorabilityMain.lua

713 lines
No EOL
26 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 XUiTextScrolling = require("XUi/XUiTaikoMaster/XUiTaikoMasterFlowText")
XUiPanelFavorabilityMain = XClass(nil, "XUiPanelFavorabilityMain")
local FuncType = {
File = 1,
Info = 2,
Secret = 3,
Audio = 4,
Story = 5,
Gift = 6,
Action = 7,
}
local CvType = {
JPN = 1,
CN = 2,
-- HK = 3,
EN = 4
}
local JPNText = XUiHelper.GetText("FavorabilityDropDownJPNCV")
local CNText = XUiHelper.GetText("FavorabilityDropDownCNCV")
local ENText = XUiHelper.GetText("FavorabilityDropDownENCV")
-- local HKText = XUiHelper.GetText("FavorabilityDropDownHKCV")
local ExpSchedule = nil
local Delay_Second = CS.XGame.ClientConfig:GetInt("FavorabilityDelaySecond") / 1000
local blue = "#87C8FF"
local white = "#ffffff"
function XUiPanelFavorabilityMain:Ctor(ui, uiRoot)
self.GameObject = ui.gameObject
self.Transform = ui.transform
self.UiRoot = uiRoot
XTool.InitUiObject(self)
self.IsExpTweening = false
self.TxtNormalPos = self.TxtFavorabilityLv.rectTransform.anchoredPosition
self.TxtMaxPos = CS.UnityEngine.Vector2(self.TxtNormalPos.x, self.TxtNormalPos.y - 18)
self.CvType = CS.UnityEngine.PlayerPrefs.GetInt("CV_TYPE", CvType.JPN)--CvType.JPN--
self.DropMaskList = {}
--- 设置文本后Unity会在下一帧进行宽度的自动调整防止立即滚动遮罩宽度计算错误
self.DropMaskTimer = nil
---@type XUiTaikoMasterFlowText
self.CvNameTextScrolling = XUiTextScrolling.New(self.CVNameLabel, self.CVNameMask)
---@type XUiTaikoMasterFlowText
self.CvLabelTextScrolling = XUiTextScrolling.New(self.TxtCV ,self.TxtCvMask)
self:InitUiAfterAuto()
end
function XUiPanelFavorabilityMain:InitUiAfterAuto()
local characterId = self.UiRoot:GetCurrFavorabilityCharacter()
self.RedPointPlotId = XRedPointManager.AddRedPointEvent(self.PlotRed, nil, self, { XRedPointConditions.Types.CONDITION_FAVORABILITY_PLOT }, { CharacterId = characterId })
self.RedPointInfoId = XRedPointManager.AddRedPointEvent(self.InfoRed, nil, self, { XRedPointConditions.Types.CONDITION_FAVORABILITY_DOCUMENT_INFO }, { CharacterId = characterId })
self.RedPointRumorId = XRedPointManager.AddRedPointEvent(self.SecretRed, nil, self, { XRedPointConditions.Types.CONDITION_FAVORABILITY_DOCUMENT_RUMOR }, { CharacterId = characterId })
self.RedPointAudioId = XRedPointManager.AddRedPointEvent(self.SoundRed, nil, self, { XRedPointConditions.Types.CONDITION_FAVORABILITY_DOCUMENT_AUDIO }, { CharacterId = characterId })
self.RedPointActionId = XRedPointManager.AddRedPointEvent(self.ActionRed, nil, self, { XRedPointConditions.Types.CONDITION_FAVORABILITY_DOCUMENT_ACTION }, { CharacterId = characterId })
self.BtnBack.CallBack = function() self:OnBtnReturnClick() end
self.BtnMainUi.CallBack = function() self:OnBtnMainUiClick() end
self.FavorabilityFile = XUiPanelFavorabilityFile.New(self.PanelFavorabilityFile, self.UiRoot, self)
self.FavorabilityInfo = XUiPanelFavorabilityInfo.New(self.PanelFavorabilityInfo, self.UiRoot, self)
self.FavorabilityRumors = XUiPanelFavorabilityRumors.New(self.PanelFavorabilityRumors, self.UiRoot, self)
self.FavorabilityAudio = XUiPanelFavorabilityAudio.New(self.PanelFavorabilityAudio, self.UiRoot, self)
self.FavorabilityPlot = XUiPanelFavorabilityPlot.New(self.PanelFavorabilityPlot, self.UiRoot, self)
self.FavorabilityGift = XUiPanelLikeGiveGift.New(self.PanelFavorabilityGift, self.UiRoot, self)
self.FavorabilityAction = XUiPanelFavorabilityAction.New(self.PanelFavorabilityAction, self.UiRoot, self)
self.FavorabilityFile:OnSelected(false)
self.FavorabilityInfo:OnSelected(false)
self.FavorabilityRumors:OnSelected(false)
self.FavorabilityAudio:OnSelected(false)
self.FavorabilityGift:OnSelected(false)
self.FavorabilityPlot:OnSelected(false)
self.FavorabilityAction:OnSelected(false)
-- 初始化按钮
self.BtnTabList = {}
self.BtnTabList[FuncType.File] = self.BtnFile
self.BtnTabList[FuncType.Info] = self.BtnInfo
self.BtnTabList[FuncType.Secret] = self.BtnSecret
self.BtnTabList[FuncType.Audio] = self.BtnSound
self.BtnTabList[FuncType.Story] = self.BtnPlot
self.BtnTabList[FuncType.Gift] = self.BtnGift
self.BtnTabList[FuncType.Action] = self.BtnAction
self.MenuBtnGroup:Init(self.BtnTabList, function(index) self:OnBtnTabListClick(index) end)
self.CvNameTextScrolling:Stop()
self.CvLabelTextScrolling:Play()
self.CVObject.gameObject:SetActiveEx(true)
self.DrdSort.gameObject:SetActiveEx(false)
self.PanelCvType.gameObject:SetActiveEx(false)
self.DrdSort.onValueChanged:AddListener(function(index) self:OnBtnCvListClick(index) end)
self.DrdSort:SetPointerClickCallback(function() self:UpdateCvName() end)
self.DrdSort:SetDestroyDropListCallback(function() self:OnDestroyDropList() end)
self.CurSelectedPanel = nil
local selected = self:GetAvailableSelectTab()
self:OnBtnTabListClick(selected)
self.CurrentSelectTab = selected
self.MenuBtnGroup:SelectIndex(self.CurrentSelectTab)
end
function XUiPanelFavorabilityMain:UpdateResume(data)
self.FavorabilityPlot:UpdateAnchoredPosition(data.AnchoredPosition)
self.MenuBtnGroup:SelectIndex(data.SelectTab)
end
function XUiPanelFavorabilityMain:GetReleaseData()
local anchoredPosition = self.FavorabilityPlot:GetAnchoredPosition()
local currentCharacterId = self.UiRoot:GetCurrFavorabilityCharacter()
return {
SelectTab = self.CurrentSelectTab,
AnchoredPosition = anchoredPosition,
CurrentCharacterId = currentCharacterId
}
end
function XUiPanelFavorabilityMain:OnBtnCvListClick(index)
self.CvNameTextScrolling:Stop()
local option = self.DrdSort.options[index]
local currentCharacterId = self.UiRoot:GetCurrFavorabilityCharacter()
if option.text == JPNText then
self.CvType = CvType.JPN
-- elseif option.text == HKText then
-- self.CvType = CvType.HK
elseif option.text == ENText then
self.CvType = CvType.EN
elseif option.text == CNText then
self.CvType = CvType.CN
end
self.CVNameLabel.text = XFavorabilityConfigs.GetCharacterCvByIdAndType(currentCharacterId, self.CvType)
self.CvNameTextScrolling:Play()
self:UpdateCvLabel()
end
function XUiPanelFavorabilityMain:OnDestroyDropList()
for _, item in pairs(self.DropMaskList) do
item:Stop()
end
self:ClearDropListMask()
end
function XUiPanelFavorabilityMain:ClearDropListMask()
if self.DropMaskTimer then
XScheduleManager.UnSchedule(self.DropMaskTimer)
self.DropMaskTimer = nil
end
self.DropMaskList = {}
end
function XUiPanelFavorabilityMain:UpdateCvName()
local currentCharacterId = self.UiRoot:GetCurrFavorabilityCharacter()
local isCollaborationCharacter = XFavorabilityConfigs.IsCollaborationCharacter(currentCharacterId)
local dropList = self.DrdSort.transform:FindTransform("Dropdown List")
local content = dropList:FindTransform("Content")
local itemList = content.gameObject:GetComponentsInChildren(typeof(CS.UnityEngine.UI.Toggle))
local cvTextList = {}
local cvNameMaskList = {}
for i = 0, itemList.Length - 1 do
local panelCVName = itemList[i].transform:FindTransform("PanelCVName")
local textLabel = panelCVName:FindTransform("ItemLabel")
local nameText = textLabel:GetComponent(typeof(CS.UnityEngine.UI.Text))
local cvLabel = itemList[i].transform:FindTransform("ItemLabel")
local cvText = cvLabel.gameObject:GetComponent(typeof(CS.UnityEngine.UI.Text))
local nameMask = itemList[i].transform:FindTransform("PanelCVName")
if cvText.text == JPNText then
cvTextList[CvType.JPN] = nameText
cvNameMaskList[CvType.JPN] = nameMask
-- elseif cvText.text == HKText then
-- cvTextList[CvType.HK] = nameText
-- cvNameMaskList[CvType.HK] = nameMask
elseif cvText.text == ENText then
cvTextList[CvType.EN] = nameText
cvNameMaskList[CvType.EN] = nameMask
elseif cvText.text == CNText then
cvTextList[CvType.CN] = nameText
cvNameMaskList[CvType.CN] = nameMask
end
end
self:ClearDropListMask()
--是不是联动角色
if isCollaborationCharacter then
local cvType = XFavorabilityConfigs.GetCollaborationCharacterCvType(currentCharacterId)
for _, v in pairs(cvType) do
cvTextList[v].text = XFavorabilityConfigs.GetCharacterCvByIdAndType(currentCharacterId, v)
self.DropMaskList[v] = XUiTextScrolling.New(cvTextList[v], cvNameMaskList[v])
end
else
for _, v in pairs(CvType) do
cvTextList[v].text = XFavorabilityConfigs.GetCharacterCvByIdAndType(currentCharacterId, v)
self.DropMaskList[v] = XUiTextScrolling.New(cvTextList[v], cvNameMaskList[v])
end
end
self.DropMaskTimer = XScheduleManager.ScheduleOnce(function()
for _, dropMask in pairs(self.DropMaskList) do
dropMask:Play()
end
end, 1000)
end
function XUiPanelFavorabilityMain:GetAvailableSelectTab()
return FuncType.File
end
-- [刷新主界面]
function XUiPanelFavorabilityMain:RefreshDatas()
self:UpdateDatas()
end
function XUiPanelFavorabilityMain:UpdateCvLabel()
self.CvLabelTextScrolling:Stop()
local currentCharacterId = self.UiRoot:GetCurrFavorabilityCharacter()
local castName = XFavorabilityConfigs.GetCharacterCvByIdAndType(currentCharacterId, self.CvType)
local cast = CS.XTextManager.GetText("FavorabilityCast")
self.TxtCVDescript.text = cast
self.TxtCV.text = castName
self.CvLabelTextScrolling:Play()
end
function XUiPanelFavorabilityMain:UpdateDatas()
self.PanelMenu.gameObject:SetActiveEx(true)
self:UpdateAllInfos()
self:UpdateCvLabel()
end
function XUiPanelFavorabilityMain:UpdateAllInfos(doAnim)
-- 好感度信息
self:UpdateMainInfo(doAnim)
-- 红点checkcheck
self:CheckLockAndReddots()
end
function XUiPanelFavorabilityMain:UpdateMainInfo(doAnim)
local characterId = self.UiRoot:GetCurrFavorabilityCharacter()
local curExp = tonumber(XDataCenter.FavorabilityManager.GetCurrCharacterExp(characterId))
local trustLv = XDataCenter.FavorabilityManager.GetCurrCharacterFavorabilityLevel(characterId)
local name = XCharacterConfigs.GetCharacterName(characterId)
local tradeName = XCharacterConfigs.GetCharacterTradeName(characterId)
local isCollaborationCharacter = XFavorabilityConfigs.IsCollaborationCharacter(characterId)
self.TxtRoleName.text = string.format("%s %s", name, tradeName)
local curFavorabilityTableData = XDataCenter.FavorabilityManager.GetFavorabilityTableData(characterId)
if curFavorabilityTableData == nil then return end
self.ImgExp.gameObject:SetActiveEx(true)
if not doAnim then
self.ImgExp.fillAmount = curExp / (tonumber(curFavorabilityTableData.Exp) * 1)
self.TxtLevel.text = trustLv
end
self.UiRoot:SetUiSprite(self.ImgHeart, XFavorabilityConfigs.GetTrustLevelIconByLevel(trustLv))
self.TxtFavorabilityLv.text = XDataCenter.FavorabilityManager.GetFavorabilityColorWorld(trustLv, curFavorabilityTableData.Name)--curFavorabilityTableData.Name
--是不是联动角色
if isCollaborationCharacter then
local icon = XFavorabilityConfigs.GetCollaborationCharacterIcon(characterId)
local tip = XFavorabilityConfigs.GetCollaborationCharacterText(characterId)
local cvType = XFavorabilityConfigs.GetCollaborationCharacterCvType(characterId)
local iconPos = XFavorabilityConfigs.GetCollaborationCharacterIconPos(characterId)
local iconScale = XFavorabilityConfigs.GetCollaborationCharacterIconScale(characterId)
--联动角色是否可以使用当前设置的语言
local hasSettingCvType = false
--是否配置icon
if icon then
self.RImgCollaboration:SetRawImage(icon,function()
self.RImgCollaboration:SetNativeSize()
if iconScale ~= 0 then
self.RImgCollaboration.rectTransform.localScale = CS.UnityEngine.Vector3(iconScale, iconScale, iconScale)
else
self.RImgCollaboration.rectTransform.localScale = CS.UnityEngine.Vector3.one
end
local x = (iconPos.X ~= 0) and iconPos.X or self.RImgCollaboration.rectTransform.anchoredPosition.x
local y = (iconPos.Y ~= 0) and iconPos.Y or self.RImgCollaboration.rectTransform.anchoredPosition.y
self.RImgCollaboration.rectTransform.anchoredPosition = CS.UnityEngine.Vector2(x, y)
end)
self.RImgCollaboration.gameObject:SetActiveEx(true)
else
self.RImgCollaboration.gameObject:SetActiveEx(false)
end
--是否配置语言提示
if tip then
self.TxtTips.text = tip
self.TxtTips.gameObject:SetActiveEx(true)
else
self.TxtTips.gameObject:SetActiveEx(false)
end
--是否可以使用当前设置的语言
for _,v in pairs(cvType) do
if v == self.CvType then
hasSettingCvType = true
end
end
local optionsTextList = {}
self.DrdSort:ClearOptions()
for _,v in pairs(cvType) do
if v == self.CvType then
hasSettingCvType = true
end
if v == CvType.JPN then
optionsTextList[#optionsTextList + 1] = JPNText
elseif v == CvType.CN then
optionsTextList[#optionsTextList + 1] = CNText
-- elseif v == CvType.HK then
-- optionsTextList[#optionsTextList + 1] = HKText
elseif v == CvType.EN then
optionsTextList[#optionsTextList + 1] = ENText
end
end
self.DrdSort:AddOptionsText(optionsTextList)
if not hasSettingCvType then
self:UpdateDropListSelect(cvType[1])
else
self:UpdateDropListSelect(self.CvType)
end
else
local optionsTextList = {}
self.DrdSort:ClearOptions()
for _,v in pairs(CvType) do
if v == CvType.JPN then
optionsTextList[#optionsTextList + 1] = JPNText
elseif v == CvType.CN then
optionsTextList[#optionsTextList + 1] = CNText
-- elseif v == CvType.HK then
-- optionsTextList[#optionsTextList + 1] = HKText
elseif v == CvType.EN then
optionsTextList[#optionsTextList + 1] = ENText
end
end
self.DrdSort:AddOptionsText(optionsTextList)
self:UpdateDropListSelect(self.CvType)
self.RImgCollaboration.gameObject:SetActiveEx(false)
self.TxtTips.gameObject:SetActiveEx(false)
end
self:ResetPreviewExp()
self:CheckExp(characterId)
self:UpdateCvLabel()
end
function XUiPanelFavorabilityMain:UpdateDropListSelect(cvType)
local options = self.DrdSort.options
for i = 0, options.Count - 1 do
if options[i].text == JPNText and cvType == CvType.JPN then
self.DrdSort.value = i
self.DrdSort:RefreshShownValue()
break
end
if options[i].text == CNText and cvType == CvType.CN then
self.DrdSort.value = i
self.DrdSort:RefreshShownValue()
break
end
-- if options[i].text == HKText and cvType == CvType.HK then
-- self.DrdSort.value = i
-- self.DrdSort:RefreshShownValue()
-- break
-- end
if options[i].text == ENText and cvType == CvType.EN then
self.DrdSort.value = i
self.DrdSort:RefreshShownValue()
break
end
end
end
function XUiPanelFavorabilityMain:UpdatePreviewExp(args)
if not args then
self:ResetPreviewExp()
return
end
local trustItems = args[1]
--local count = args[2]
if not trustItems then
self:ResetPreviewExp()
return
end
local characterId = self.UiRoot:GetCurrFavorabilityCharacter()
local isMax = XDataCenter.FavorabilityManager.IsMaxFavorabilityLevel(characterId)
if isMax then
return
end
local curExp = tonumber(XDataCenter.FavorabilityManager.GetCurrCharacterExp(characterId))
local curFavorabilityTableData = XDataCenter.FavorabilityManager.GetFavorabilityTableData(characterId)
if not curFavorabilityTableData then
self:ResetPreviewExp()
return
end
local favorData = XFavorabilityConfigs.GetTrustExpById(characterId)
local addExp = 0
for i, var in ipairs(trustItems) do
local favorExp = var.TrustItem.Exp
for _, v in pairs(var.TrustItem.FavorCharacterId) do
if v == characterId then
favorExp = var.TrustItem.FavorExp
break
end
end
addExp = addExp + favorExp * var.Count
end
local totalExp = addExp + curExp
local startLevel = XDataCenter.FavorabilityManager.GetCurrCharacterFavorabilityLevel(characterId)
local trustLv, leftExp, levelExp = XFavorabilityConfigs.GetFavorabilityLevel(characterId, totalExp, startLevel)
self.ImgExp.gameObject:SetActiveEx(startLevel >= trustLv)
self.ImgExpUp.fillAmount = leftExp / levelExp
self.TxtLevel.text = trustLv
self.UiRoot:SetUiSprite(self.ImgHeart, XFavorabilityConfigs.GetTrustLevelIconByLevel(trustLv))
self.TxtFavorabilityLv.text = XDataCenter.FavorabilityManager.GetFavorabilityColorWorld(trustLv, favorData[trustLv].Name)--curFavorabilityTableData.Name
self.TxtFavorabilityExpNum.text = string.format("<color=%s>%d</color> / %s", blue, leftExp, levelExp)
local maxLevel = XFavorabilityConfigs.GetMaxFavorabilityLevel(characterId)
self.TxtFavorabilityExpNum.gameObject:SetActiveEx(maxLevel ~= trustLv)
self.TxtFavorabilityLv.rectTransform.anchoredPosition = maxLevel ~= trustLv and self.TxtNormalPos or self.TxtMaxPos
end
function XUiPanelFavorabilityMain:ResetPreviewExp()
self.ImgExpUp.fillAmount = 0
self:UpdateExpNum(white)
end
function XUiPanelFavorabilityMain:UpdateExpNum(color, showExp)
local characterId = self.UiRoot:GetCurrFavorabilityCharacter()
local curFavorabilityTableData = XDataCenter.FavorabilityManager.GetFavorabilityTableData(characterId)
local curExp = tonumber(XDataCenter.FavorabilityManager.GetCurrCharacterExp(characterId))
curExp = (showExp == nil) and curExp or showExp
self.TxtFavorabilityExpNum.gameObject:SetActiveEx(true)
self.TxtFavorabilityLv.rectTransform.anchoredPosition = self.TxtNormalPos
local isMax = XDataCenter.FavorabilityManager.IsMaxFavorabilityLevel(characterId)
if isMax then
self.TxtFavorabilityExpNum.gameObject:SetActiveEx(false)
self.TxtFavorabilityLv.rectTransform.anchoredPosition = self.TxtMaxPos
curExp = 0
end
if curFavorabilityTableData == nil then return end
if curFavorabilityTableData.Exp <= 0 then
self.TxtFavorabilityExpNum.text = string.format("%d", curExp)
else
self.TxtFavorabilityExpNum.text = string.format("<color=%s>%d</color> / %s", color, curExp, tostring(curFavorabilityTableData.Exp))
end
end
-- [发送检查红点事件]
function XUiPanelFavorabilityMain:CheckLockAndReddots()
local characterId = self.UiRoot:GetCurrFavorabilityCharacter()
XRedPointManager.Check(self.RedPointPlotId, { CharacterId = characterId })
XRedPointManager.Check(self.RedPointRumorId, { CharacterId = characterId })
XRedPointManager.Check(self.RedPointAudioId, { CharacterId = characterId })
XRedPointManager.Check(self.RedPointInfoId, { CharacterId = characterId })
XRedPointManager.Check(self.RedPointActionId, { CharacterId = characterId })
end
-- [关闭功能按钮界面]
function XUiPanelFavorabilityMain:CloseFuncBtns()
self.PanelMenu.gameObject:SetActiveEx(false)
self.RImgCollaboration.gameObject:SetActiveEx(false)
--self.PanelCvType.gameObject:SetActiveEx(false)
self.CvNameTextScrolling:Stop()
self.CvLabelTextScrolling:Play()
self.DrdSort.gameObject:SetActiveEx(false)
self.CVObject.gameObject:SetActiveEx(true)
self.ImageCVBG.gameObject:SetActiveEx(true)
self.FavorabilityAudio:UnScheduleAudio()
if self.CurSelectedPanel then
self.CurSelectedPanel:SetViewActive(false)
end
end
function XUiPanelFavorabilityMain:OpenFuncBtns()
self:PanelCvTypeShow()
if self.CurSelectedPanel then
self.CurSelectedPanel:SetViewActive(true)
end
end
-- [点击的功能是否开启,如果未开启,提示]
function XUiPanelFavorabilityMain:CheckClickIsLock(funcName)
local isOpen = XFunctionManager.JudgeCanOpen(funcName)
local uplockTips = XFunctionManager.GetFunctionOpenCondition(funcName)
if not isOpen then
XUiManager.TipError(uplockTips)
end
return isOpen
end
-- [打开档案]
function XUiPanelFavorabilityMain:OnBtnFileClick()
self.UiRoot:OpenInformationView()
end
-- [打开剧情]
function XUiPanelFavorabilityMain:OnBtnPlotClick()
if not self:CheckClickIsLock(XFunctionManager.FunctionName.FavorabilityStory) then return end
self.UiRoot:OpenPlotView()
end
-- [打开礼物]
function XUiPanelFavorabilityMain:OnBtnGiftClick()
if not self:CheckClickIsLock(XFunctionManager.FunctionName.FavorabilityGift) then return end
self.UiRoot:OpenGiftView()
end
function XUiPanelFavorabilityMain:OnBtnTabListClick(index)
if self.LastSelectTab then
self.UiRoot:PlayBaseTabAnim()
end
if index == self.CurrentSelectTab then
return
end
if self.CurrentSelectTab == FuncType.Gift then
self:UpdateMainInfo()
end
self.LastSelectTab = self.CurrentSelectTab
self.CurrentSelectTab = index
if self.CurSelectedPanel then
self.CurSelectedPanel:OnSelected(false)
end
self.UiRoot:ChangeViewType(index)
if index == FuncType.File then
self.CurSelectedPanel = self.FavorabilityFile
elseif index == FuncType.Info then
self.CurSelectedPanel = self.FavorabilityInfo
elseif index == FuncType.Secret then
self.CurSelectedPanel = self.FavorabilityRumors
elseif index == FuncType.Audio then
self.CurSelectedPanel = self.FavorabilityAudio
elseif index == FuncType.Story then
self.CurSelectedPanel = self.FavorabilityPlot
elseif index == FuncType.Gift then
self.CurSelectedPanel = self.FavorabilityGift
elseif index == FuncType.Action then
self.CurSelectedPanel = self.FavorabilityAction
end
self:PanelCvTypeShow()
self.CurSelectedPanel:OnSelected(true)
end
function XUiPanelFavorabilityMain:PanelCvTypeShow()
if self.CurrentSelectTab == FuncType.Audio or self.CurrentSelectTab == FuncType.Action then
local currentCharacterId = self.UiRoot:GetCurrFavorabilityCharacter()
self.CvNameTextScrolling:Stop()
self.CvLabelTextScrolling:Stop()
self.DrdSort.gameObject:SetActiveEx(true)
self.CVNameLabel.text = XFavorabilityConfigs.GetCharacterCvByIdAndType(currentCharacterId, self.CvType)
self.CVObject.gameObject:SetActiveEx(false)
self.ImageCVBG.gameObject:SetActiveEx(false)
self.CvNameTextScrolling:Play()
else
self.CvNameTextScrolling:Stop()
self.CvLabelTextScrolling:Play()
self.DrdSort.gameObject:SetActiveEx(false)
self.CVObject.gameObject:SetActiveEx(true)
self.ImageCVBG.gameObject:SetActiveEx(true)
end
end
-- [返回]
function XUiPanelFavorabilityMain:OnBtnReturnClick()
self.CurrentSelectTab = nil
self.UiRoot:SetCurrFavorabilityCharacter(nil)
self.UiRoot:Close()
end
function XUiPanelFavorabilityMain:OnBtnMainUiClick()
XLuaUiManager.RunMain()
end
function XUiPanelFavorabilityMain:StopCvContent()
return self.UiRoot:StopCvContent()
end
function XUiPanelFavorabilityMain:GetCurrFavorabilityCharacter()
return self.UiRoot:GetCurrFavorabilityCharacter()
end
function XUiPanelFavorabilityMain:DoFillAmountTween(lastLevel, lastExp, totalExp, isReset)
local characterId = self.UiRoot:GetCurrFavorabilityCharacter()
local levelUpDatas = XFavorabilityConfigs.GetTrustExpById(characterId)
if not levelUpDatas or not levelUpDatas[lastLevel] then
self:UpdateAnimInfo(characterId)
return
end
if isReset then
self.ImgExp.fillAmount = 0
else
XLuaUiManager.SetMask(true)
end
self.IsExpTweening = true
local progress = 1
if lastExp + totalExp < levelUpDatas[lastLevel].Exp then
progress = (lastExp + totalExp) / levelUpDatas[lastLevel].Exp
totalExp = 0
else
totalExp = totalExp - (levelUpDatas[lastLevel].Exp - lastExp)
end
self.ImgExp.gameObject:SetActiveEx(true)
self.ImgExp:DOFillAmount(progress, Delay_Second)
ExpSchedule = XScheduleManager.ScheduleOnce(function()
local maxLevel = XFavorabilityConfigs.GetMaxFavorabilityLevel(characterId)
if totalExp <= 0 or maxLevel == lastLevel then
self:UpdateAnimInfo(characterId)
self:UnScheduleExp()
else
self.TxtLevel.text = lastLevel + 1
self:DoFillAmountTween(lastLevel + 1, 0, totalExp, true)
end
end, Delay_Second * 1000 + 20)
end
-- 动画执行不了则走这里
function XUiPanelFavorabilityMain:UpdateAnimInfo(characterId)
local trustLv = XDataCenter.FavorabilityManager.GetCurrCharacterFavorabilityLevel(characterId)
self.TxtLevel.text = trustLv
self:CheckExp(characterId)
end
function XUiPanelFavorabilityMain:CheckExp(characterId)
local isMax = XDataCenter.FavorabilityManager.IsMaxFavorabilityLevel(characterId)
if isMax then
self.ImgExp.fillAmount = 0
self.TxtFavorabilityExpNum.text = 0
return
end
local curExp = tonumber(XDataCenter.FavorabilityManager.GetCurrCharacterExp(characterId))
if curExp <= 0 and self.ImgExp.fillAmount >= 1 then
self.ImgExp.fillAmount = 0
end
end
function XUiPanelFavorabilityMain:UnScheduleExp()
if ExpSchedule then
XScheduleManager.UnSchedule(ExpSchedule)
ExpSchedule = nil
self.IsExpTweening = false
XLuaUiManager.SetMask(false)
end
end
function XUiPanelFavorabilityMain:OnClose()
self:UnScheduleExp()
self.FavorabilityAudio:OnClose()
self.FavorabilityAction:OnClose()
end
function XUiPanelFavorabilityMain:SetTopControlActive(isActive)
self.TopControl.gameObject:SetActiveEx(isActive)
end
function XUiPanelFavorabilityMain:SetUiSprite(image, spriteName, callBack)
self.UiRoot:SetUiSprite(image, spriteName, callBack)
end
return XUiPanelFavorabilityMain