PGRData/Script/matrix/xui/xuicharacter/XUiCharacter.lua

643 lines
24 KiB
Lua
Raw Normal View History

local XUiGridCharacterNew = require("XUi/XUiCharacter/XUiGridCharacterNew")
local XUiPanelRoleModel = require("XUi/XUiCharacter/XUiPanelRoleModel")
2024-09-01 20:49:41 +00:00
local XSpecialTrainActionRandom = require("XUi/XUiSpecialTrainBreakthrough/XSpecialTrainActionRandom")
local CSXTextManagerGetText = CS.XTextManager.GetText
local CAMERA_NUM = 6
local TabBtnIndex = {
Normal = 1,
Isomer = 2,
}
local CharacterTypeConvert = {
[TabBtnIndex.Normal] = XCharacterConfigs.CharacterType.Normal,
[TabBtnIndex.Isomer] = XCharacterConfigs.CharacterType.Isomer,
}
local LastSelectTabBtnIndex
local XUiCharacter = XLuaUiManager.Register(XLuaUi, "UiCharacter")
function XUiCharacter:OnAwake()
self:InitDynamicTable()
self:AutoAddListener()
2024-09-01 20:49:41 +00:00
self.FiltSortListTypeDic = {} --记录筛选排序缓存列表(根据独域和泛用机体类型储存)
self.AssetPanel = XUiPanelAsset.New(self, self.PanelAsset, XDataCenter.ItemManager.ItemId.FreeGem, XDataCenter.ItemManager.ItemId.ActionPoint, XDataCenter.ItemManager.ItemId.Coin)
self.GridCharacterNew.gameObject:SetActiveEx(false)
self.PanelTeamBtn.gameObject:SetActiveEx(false)
self.LogoCharacterGouzaoti.gameObject:SetActiveEx(false)
self.LogoCharacterShougezhe.gameObject:SetActiveEx(false)
local tempGo = self.Transform:Find("SafeAreaContentPane/BtnLensOut")
if not XTool.UObjIsNil(tempGo) then
tempGo.gameObject:SetActiveEx(false)
end
self.OnUiSceneLoadedCB = function(lastSceneUrl) self:OnUiSceneLoaded(lastSceneUrl) end
2024-09-01 20:49:41 +00:00
XDataCenter.RoomCharFilterTipsManager.Reset() -- 旧筛选器的清除也加上,有些界面的旧筛选器还没有替换成新的
XDataCenter.CommonCharacterFiltManager.ClearCacheData() --清除筛选缓存数据
self:SetBtnTeachingActive(true)
self:SetBtnFashionActive(true)
if XUiManager.IsHideFunc then
self.BthPaixu.gameObject:SetActiveEx(false)
self.BtnShaixuan.gameObject:SetActiveEx(false)
self.BtnSort.gameObject:SetActiveEx(false)
end
end
function XUiCharacter:OnStart(characterId, _, openFromTeamInfo, forbidGotoEquip, skipToProperty, isSupport, supportData, propertyIndex)
self:InitSceneRoot()
if openFromTeamInfo then
self.TeamCharIdMap = openFromTeamInfo.TeamCharIdMap
self.TeamSelectPos = openFromTeamInfo.TeamSelectPos
self.TeamResultCb = openFromTeamInfo.TeamResultCb
end
if forbidGotoEquip then
self.BtnOwnedDetail.gameObject:SetActiveEx(false)
2024-09-01 20:49:41 +00:00
self:SetBtnFashionActive(false)
self.ForbidGotoEquip = true
end
if isSupport then
self.BtnOwnedDetail.gameObject:SetActiveEx(false)
2024-09-01 20:49:41 +00:00
self:SetBtnFashionActive(false)
self.IsSupport = true
end
if not XTool.IsTableEmpty(supportData) then
self.BtnShaixuan.gameObject:SetActiveEx(false)
self.BtnShengxu.gameObject:SetActiveEx(false)
self.BtnJiangxu.gameObject:SetActiveEx(false)
end
self.SkipToProperty = skipToProperty
self.SupportData = supportData
self.PropertyIndex = propertyIndex
if characterId then
self.CharacterId = characterId
local isIsomer = XCharacterConfigs.IsIsomer(characterId)
--如果从外部打开界面LastSelectIsomerCharacterId与LastSelectNormalCharacterId未能赋值会拿到默认的显示在列表第一的角色ID
if isIsomer then
self.LastSelectIsomerCharacterId = characterId
self.SelectTabBtnIndex = TabBtnIndex.Isomer
else
self.LastSelectNormalCharacterId = characterId
self.SelectTabBtnIndex = TabBtnIndex.Normal
end
-- self.SelectTabBtnIndex = XCharacterConfigs.IsIsomer(characterId) and TabBtnIndex.Isomer or TabBtnIndex.Normal
else
-- 切换账号后不满足感染体解锁条件将上次记录强转成构造体
if LastSelectTabBtnIndex and LastSelectTabBtnIndex == TabBtnIndex.Isomer then
if not XFunctionManager.JudgeOpen(XFunctionManager.FunctionName.Isomer)
or XFunctionManager.CheckFunctionFitter(XFunctionManager.FunctionName.Isomer) then
LastSelectTabBtnIndex = TabBtnIndex.Normal
end
end
self.SelectTabBtnIndex = LastSelectTabBtnIndex or TabBtnIndex.Normal
end
self.IsAscendOrder = false --初始降序
self:CheckBtnFilterActive()
self.BtnTabShougezhe.gameObject:SetActiveEx(not XFunctionManager.CheckFunctionFitter(XFunctionManager.FunctionName.Isomer))
self.BtnTabShougezhe:SetDisable(not XFunctionManager.JudgeOpen(XFunctionManager.FunctionName.Isomer))
local tabBtns = { self.BtnTabGouzaoti, self.BtnTabShougezhe }
self.PanelCharacterTypeBtns:Init(tabBtns, function(index) self:OnSelectCharacterType(index) end)
self.LastChacaterFashionSceneUrl = nil
self.ReddotGouzaoti = XRedPointManager.AddRedPointEvent(self.BtnTabGouzaoti, self.CheckGouzaoti, self, { XRedPointConditions.Types.CONDITION_CHARACTER_TYPE }, XCharacterConfigs.CharacterType.Normal)
self.ReddotShougezhe = XRedPointManager.AddRedPointEvent(self.BtnTabShougezhe, self.CheckShougezhe, self, { XRedPointConditions.Types.CONDITION_CHARACTER_TYPE }, XCharacterConfigs.CharacterType.Isomer)
end
function XUiCharacter:CheckGouzaoti(count)
self.BtnTabGouzaoti:ShowReddot(count >= 0)
end
function XUiCharacter:CheckShougezhe(count)
self.BtnTabShougezhe:ShowReddot(count >= 0 and XFunctionManager.JudgeOpen(XFunctionManager.FunctionName.Isomer))
end
function XUiCharacter:OnEnable()
CS.XGraphicManager.UseUiLightDir = true
-- 父UI的OnEnable中无法正确检测子UI的打开关闭状态故需自己维护一个变量
if not self.ChildOpen then
self.PanelCharacterTypeBtns:SelectIndex(self.SelectTabBtnIndex)
else
self:UpdateCurCharacterInfo(self.CharacterId)
end
if self.ReddotGouzaoti then
XRedPointManager.Check(self.ReddotGouzaoti)
end
if self.ReddotShougezhe then
XRedPointManager.Check(self.ReddotShougezhe)
end
end
function XUiCharacter:OnDisable()
CS.XGraphicManager.UseUiLightDir = false
end
function XUiCharacter:OnDestroy()
LastSelectTabBtnIndex = self.SelectTabBtnIndex
2024-09-01 20:49:41 +00:00
-- XDataCenter.RoomCharFilterTipsManager.Reset()
self.FiltSortListTypeDic = nil
XDataCenter.CommonCharacterFiltManager.ClearCacheData() --清除筛选缓存数据
--界面销毁如果有正在播放的角色语音,则停止播放
XDataCenter.FavorabilityManager.StopCv()
if self.CuteRandomController then
self.CuteRandomController:Stop()
end
end
function XUiCharacter:OnGetEvents()
return { XEventId.EVENT_CHARACTER_SYN }
end
function XUiCharacter:OnNotify(evt, ...)
local args = { ... }
local characterId = args[1]
if evt == XEventId.EVENT_CHARACTER_SYN then
self:UpdateCharacterList(characterId)
end
end
function XUiCharacter:InitSceneRoot()
local root = self.UiModelGo.transform
-- if self.PanelRoleModel then
-- self.PanelRoleModel:DestroyChildren()
-- end
self.PanelRoleModel = root:FindTransform("PanelRoleModel")
self.ImgEffectHuanren = root:FindTransform("ImgEffectHuanren")
self.ImgEffectHuanren1 = root:FindTransform("ImgEffectHuanren1")
self.ImgEffectLogoGouzao = root:FindTransform("ImgEffectLogoGouzao")
self.ImgEffectLogoGanran = root:FindTransform("ImgEffectLogoGanran")
self.CameraFar = {
root:FindTransform("UiCamFarLv"),
root:FindTransform("UiCamFarGrade"),
root:FindTransform("UiCamFarQuality"),
root:FindTransform("UiCamFarSkill"),
root:FindTransform("UiCamFarrExchange"),
root:FindTransform("UiCamFarEnhanceSkill"),
}
self.CameraNear = {
root:FindTransform("UiCamNearLv"),
root:FindTransform("UiCamNearGrade"),
root:FindTransform("UiCamNearQuality"),
root:FindTransform("UiCamNearSkill"),
root:FindTransform("UiCamNearrExchange"),
root:FindTransform("UiCamNearEnhanceSkill"),
}
self.RoleModelPanel = XUiPanelRoleModel.New(self.PanelRoleModel, self.Name, nil, true, nil, true)
2024-09-01 20:49:41 +00:00
self.CuteRandomController = XSpecialTrainActionRandom.New()
end
function XUiCharacter:InitDynamicTable()
self.DynamicTable = XDynamicTableNormal.New(self.SViewCharacterList)
self.DynamicTable:SetProxy(XUiGridCharacterNew)
self.DynamicTable:SetDelegate(self)
end
2024-09-01 20:49:41 +00:00
-- doNotSort 默认不传传true 则不会排序再刷新
function XUiCharacter:OnSelectCharacterType(index, doNotSort)
if index == TabBtnIndex.Isomer and not XFunctionManager.DetectionFunction(XFunctionManager.FunctionName.Isomer) then
return
end
self.SelectTabBtnIndex = index
if index == TabBtnIndex.Normal then
self.ImgEffectLogoGouzao.gameObject:SetActiveEx(true)
self.ImgEffectLogoGanran.gameObject:SetActiveEx(false)
2024-09-01 20:49:41 +00:00
self:UpdateCharacterList(self.LastSelectNormalCharacterId, doNotSort)
elseif index == TabBtnIndex.Isomer then
self.ImgEffectLogoGouzao.gameObject:SetActiveEx(false)
self.ImgEffectLogoGanran.gameObject:SetActiveEx(true)
2024-09-01 20:49:41 +00:00
self:UpdateCharacterList(self.LastSelectIsomerCharacterId, doNotSort)
end
end
2024-09-01 20:49:41 +00:00
function XUiCharacter:UpdateCharacterList(characterId, doNotSort)
local characterType = CharacterTypeConvert[self.SelectTabBtnIndex]
if characterId then
--选中角色与当前类型页签不符时,强制选中对应角色类型页签
self.CharacterId = characterId
local paramCharacterType = XCharacterConfigs.GetCharacterType(characterId)
if paramCharacterType ~= characterType then
if XCharacterConfigs.IsIsomer(characterId) then
self.LastSelectIsomerCharacterId = characterId
self.PanelCharacterTypeBtns:SelectIndex(TabBtnIndex.Isomer)
else
self.LastSelectNormalCharacterId = characterId
self.PanelCharacterTypeBtns:SelectIndex(TabBtnIndex.Normal)
end
return
end
end
local index = 1
2024-09-01 20:49:41 +00:00
local characterList = self.FiltSortListTypeDic[characterType] or
(self.SupportData and self.SupportData.GetCharacters and self.SupportData.GetCharacters(characterType) or
XDataCenter.CharacterManager.GetCharacterList(characterType, false, self.IsAscendOrder, true))
-- 排序器回调后 这里不再排序(拿到列表后 在更新前进行一次排序)
if not doNotSort then
local selectTagType = XDataCenter.CommonCharacterFiltManager.GetSortData(characterType)
characterList = XDataCenter.CommonCharacterFiltManager.DoSort(characterList, selectTagType, self.IsAscendOrder)
end
local isSetCharacterId = true
if characterId then
for k, v in pairs(characterList) do
if v.Id == characterId then
index = k
isSetCharacterId = false
break
end
end
else
characterId = characterList[1].Id
end
if isSetCharacterId then
characterId = characterList[1].Id
self.CharacterId = characterId
end
if self.SelectTabBtnIndex == TabBtnIndex.Normal then
self.LastSelectNormalCharacterId = characterId
elseif self.SelectTabBtnIndex == TabBtnIndex.Isomer then
self.LastSelectIsomerCharacterId = characterId
end
self:UpdateCurCharacterInfo(characterId)
2024-09-01 20:49:41 +00:00
self.CharacterList = characterList
self.InTeamCheckTable = XDataCenter.TeamManager.GetInTeamCheckTable()
self.DynamicTable:SetDataSource(characterList)
self.DynamicTable:ReloadDataASync(index)
end
function XUiCharacter:OnDynamicTableEvent(event, index, grid)
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_INIT then
grid:Init(self)
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
local data = self.CharacterList[index]
grid:Reset()
grid:UpdateGrid(data)
grid:SetInTeam(self.InTeamCheckTable[data.Id] ~= nil)
grid:UpdateSupport(self.SupportData)
if self.CharacterId == data.Id then
self.CurSelectGrid = grid
end
grid:SetSelect(self.CharacterId == data.Id)
if self.SupportData then
grid:HideRedPoint()
end
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_TOUCHED then
local characterId = self.CharacterList[index].Id
if XCharacterConfigs.IsCharacterForeShow(characterId) then
if self.CharacterId ~= characterId then
if self.CurSelectGrid then
self.CurSelectGrid:SetSelect(false)
end
grid:SetSelect(true)
self.CurSelectGrid = grid
self:UpdateCurCharacterInfo(characterId)
end
else
XUiManager.TipMsg(CSXTextManagerGetText("ComingSoon"), XUiManager.UiTipType.Tip)
end
end
end
function XUiCharacter:UpdateCurCharacterInfo(characterId)
self.CharacterId = characterId
if XCharacterConfigs.IsIsomer(characterId) then
self.LastSelectIsomerCharacterId = characterId
else
self.LastSelectNormalCharacterId = characterId
end
self:UpdateSceneAndModel()
if self.SkipToProperty and not self.ChildOpen then
self:OpenOneChildUi("UiPanelCharProperty", self, self.PropertyIndex)
self.ChildOpen = true
self.SkipToProperty = false
self.PropertyIndex = nil
return
end
if not self.ChildOpen then
local isOwn = XDataCenter.CharacterManager.IsOwnCharacter(characterId)
if isOwn then
local childUi = self:FindChildUiObj("UiCharacterOwnedInfo")
childUi:PreSetCharacterId(characterId)
if not XLuaUiManager.IsUiShow("UiCharacterOwnedInfo") then
self:OpenOneChildUi("UiCharacterOwnedInfo", self.ForbidGotoEquip, function()
self:OpenOneChildUi("UiPanelCharProperty", self)
self.ChildOpen = true
2024-09-01 20:49:41 +00:00
end, self.IsSupport, self.SupportData, self)
else
childUi:UpdateView(characterId)
childUi:PlayAnimation("AnimEnable")
end
else
local childUi = self:FindChildUiObj("UiCharacterUnOwnedInfo")
childUi:PreSetCharacterId(characterId)
if not XLuaUiManager.IsUiShow("UiCharacterUnOwnedInfo") then
self:OpenOneChildUi("UiCharacterUnOwnedInfo", characterId)
else
childUi:UpdateView(characterId)
childUi:PlayAnimation("AnimEnable")
end
end
end
if self.TeamCharIdMap then
self:UpdateTeamBtn()
end
end
function XUiCharacter:UpdateCamera(index)
self.CurCameraIndex = index
for i = 1, CAMERA_NUM do
if self.CurCameraIndex ~= i then
self.CameraFar[i].gameObject:SetActiveEx(false)
self.CameraNear[i].gameObject:SetActiveEx(false)
end
end
if self.CameraFar[self.CurCameraIndex] then
self.CameraFar[self.CurCameraIndex].gameObject:SetActiveEx(true)
end
if self.CameraNear[self.CurCameraIndex] then
self.CameraNear[self.CurCameraIndex].gameObject:SetActiveEx(true)
end
end
function XUiCharacter:LoadModelScene()
local sceneUrl = self:GetSceneUrl()
local modelUrl = self:GetDefaultUiModelUrl()
self:LoadUiScene(sceneUrl, modelUrl, self.OnUiSceneLoadedCB, false)
end
function XUiCharacter:GetSceneUrl()
local sceneUrl = XDataCenter.CharacterManager.GetCharShowFashionSceneUrl(self.CharacterId)
if sceneUrl and sceneUrl ~= "" then
return sceneUrl
else
return self:GetDefaultSceneUrl()
end
end
function XUiCharacter:OnUiSceneLoaded(lastSceneUrl)
if lastSceneUrl ~= self.LastChacaterFashionSceneUrl then
2024-09-01 20:49:41 +00:00
--self:SetGameObject()
self:InitSceneRoot()
self.LastChacaterFashionSceneUrl = lastSceneUrl
end
end
function XUiCharacter:UpdateSceneAndModel()
self:LoadModelScene()
self:UpdateRoleModel()
end
--更新模型
function XUiCharacter:UpdateRoleModel()
2024-09-01 20:49:41 +00:00
if self.CuteRandomController then
self.CuteRandomController:Stop()
end
self.ImgEffectHuanren.gameObject:SetActiveEx(false)
self.ImgEffectHuanren1.gameObject:SetActiveEx(false)
2024-09-01 20:49:41 +00:00
-- 愚人节检测
if XDataCenter.AprilFoolDayManager.IsInCuteModelTime() and XCharacterCuteConfig.CheckHasCuteModel(self.CharacterId) then
self.RoleModelPanel:UpdateCuteModel(nil, self.CharacterId, nil, nil, nil, nil, true, nil, self.Name)
self.CuteRandomController:SetAnimator(self.RoleModelPanel:GetAnimator(), {}, self.RoleModelPanel)
self.CuteRandomController:Play()
else
self.RoleModelPanel:UpdateCharacterModel(self.CharacterId, self.PanelRoleModel, XModelManager.MODEL_UINAME.XUiCharacter, function(model)
self.PanelDrag.Target = model.transform
if self.SelectTabBtnIndex == TabBtnIndex.Normal then
self.ImgEffectHuanren.gameObject:SetActiveEx(true)
elseif self.SelectTabBtnIndex == TabBtnIndex.Isomer then
self.ImgEffectHuanren1.gameObject:SetActiveEx(true)
end
end)
end
end
function XUiCharacter:UpdateTeamBtn()
if not next(self.TeamCharIdMap) then
return
end
local isInTeam = false
local characterId = self.CharacterId
for _, v in pairs(self.TeamCharIdMap) do
if characterId == v then
isInTeam = true
break
end
end
self.BtnQuitTeam.gameObject:SetActiveEx(isInTeam)
self.BtnJoinTeam.gameObject:SetActiveEx(not isInTeam)
self.ImgEnjoinTeam.gameObject:SetActiveEx(false)
end
function XUiCharacter:AutoAddListener()
self:RegisterClickEvent(self.BtnBack, self.OnBtnBackClick)
self:RegisterClickEvent(self.BtnMainUi, self.OnBtnMainUiClick)
self:BindHelpBtn(self.BtnHelp, "Character")
self:RegisterClickEvent(self.BtnJoinTeam, self.OnBtnJoinTeamClick)
self:RegisterClickEvent(self.BtnQuitTeam, self.OnBtnQuitTeamClick)
self:RegisterClickEvent(self.BtnFashion, self.OnBtnFashionClick)
self:RegisterClickEvent(self.BtnOwnedDetail, self.OnBtnOwnedDetailClick)
self:RegisterClickEvent(self.BtnShaixuan, self.OnBtnShaixuanClick)
2024-09-01 20:49:41 +00:00
self:RegisterClickEvent(self.BtnSort, self.OnBtnSortClick)
self:RegisterClickEvent(self.BtnShengxu, self.OnBtnOrderClick)
self:RegisterClickEvent(self.BtnJiangxu, self.OnBtnOrderClick)
self:RegisterClickEvent(self.BtnTeaching, self.OnBtnTeachingClick)
end
function XUiCharacter:OnBtnBackClick()
if XLuaUiManager.IsUiShow("UiPanelCharacterExchange") then
self:CloseChildUi("UiPanelCharacterExchange")
return
end
if XLuaUiManager.IsUiShow("UiPanelCharProperty") then
local propertyChildUi = self:FindChildUiObj("UiPanelCharProperty")
if not propertyChildUi:RecoveryPanel() then
self:CloseChildUi("UiPanelCharProperty")
self.ChildOpen = false
self:UpdateCharacterList(self.CharacterId)
self:UpdateCamera(XCharacterConfigs.XUiCharacter_Camera.MAIN)
end
return
end
self:Close()
end
function XUiCharacter:OnBtnMainUiClick()
XLuaUiManager.RunMain()
end
function XUiCharacter:OnBtnJoinTeamClick()
local id = self.CharacterId
for k, v in pairs(self.TeamCharIdMap) do
if v == id then
self.TeamCharIdMap[k] = 0
break
end
end
self.TeamCharIdMap[self.TeamSelectPos] = id
if self.TeamResultCb then
self.TeamResultCb(self.TeamCharIdMap)
end
self:Close()
end
function XUiCharacter:OnBtnQuitTeamClick()
local count = 0
for _, v in pairs(self.TeamCharIdMap) do
if v > 0 then
count = count + 1
end
end
local id = self.CharacterId
for k, v in pairs(self.TeamCharIdMap) do
if v == id then
self.TeamCharIdMap[k] = 0
break
end
end
if self.TeamResultCb then
self.TeamResultCb(self.TeamCharIdMap)
end
self:Close()
end
function XUiCharacter:OnBtnFashionClick()
XLuaUiManager.Open("UiFashion", self.CharacterId)
end
function XUiCharacter:OnBtnOwnedDetailClick()
XLuaUiManager.Open("UiCharacterDetail", self.CharacterId)
end
2024-09-01 20:49:41 +00:00
-- 筛选要用导入该界面的源列表,排序要用当前界面的展示列表(self.CharacterList)
function XUiCharacter:OnBtnShaixuanClick()
local characterType = CharacterTypeConvert[self.SelectTabBtnIndex]
2024-09-01 20:49:41 +00:00
-- XLuaUiManager.Open("UiRoomCharacterFilterTips",
-- self,
-- XRoomCharFilterTipsConfigs.EnumFilterType.Common,
-- XRoomCharFilterTipsConfigs.EnumSortType.Common,
-- characterType)
-- 打开筛选器(v1.30新筛选器)
local characterList = self.SupportData and self.SupportData.GetCharacters and self.SupportData.GetCharacters(characterType) or
XDataCenter.CharacterManager.GetCharacterList(characterType, false, self.IsAscendOrder, true)
XLuaUiManager.Open("UiCommonCharacterFilterTipsOptimization", characterList, characterType, function (afterFiltList)
self.FiltSortListTypeDic[characterType] = afterFiltList
self:OnSelectCharacterType(self.SelectTabBtnIndex)
end, characterType)
end
-- 排序
function XUiCharacter:OnBtnSortClick()
local characterType = CharacterTypeConvert[self.SelectTabBtnIndex]
XLuaUiManager.Open("UiCommonCharacterFilterTipsSort", self.CharacterList, characterType, self.IsAscendOrder, function (afterSortList)
self.FiltSortListTypeDic[characterType] = afterSortList -- 这里本可不记录,但是拆开了和 UpdateCharacterList 里的排序,所以要把这里的值传给 UpdateCharacterList 方法刷新列表
self:OnSelectCharacterType(self.SelectTabBtnIndex, true) -- 这边已经排序过一次了,所以刷新就不排了
end)
end
function XUiCharacter:OpenChangeCharacterView()
self:OpenOneChildUi("UiPanelCharacterExchange", self, function(characterId)
self:UpdateCharacterList(characterId)
self:OpenOneChildUi("UiPanelCharProperty", self)
self.ChildOpen = true
end)
self:UpdateCamera(XCharacterConfigs.XUiCharacter_Camera.EXCHANGE)
self.SViewCharacterList.gameObject:SetActiveEx(false)
self.PanelCharacterTypeBtns.gameObject:SetActiveEx(false)
2024-09-01 20:49:41 +00:00
self:SetBtnFashionActive(false)
self.BtnOwnedDetail.gameObject:SetActiveEx(false)
2024-09-01 20:49:41 +00:00
self:SetBtnTeachingActive(false)
end
function XUiCharacter:Filter(selectTagGroupDic, sortTagId, isThereFilterData)
local characterType = CharacterTypeConvert[self.SelectTabBtnIndex]
local characterList = XDataCenter.CharacterManager.GetCharacterList(characterType, true, nil, true)
if isThereFilterData and isThereFilterData(characterList) then
self:OnSelectCharacterType(self.SelectTabBtnIndex)
end
end
function XUiCharacter:OnBtnOrderClick()
self.IsAscendOrder = not self.IsAscendOrder
self:CheckBtnFilterActive()
self:OnSelectCharacterType(self.SelectTabBtnIndex)
end
function XUiCharacter:OnBtnTeachingClick()
XDataCenter.PracticeManager.OpenUiFubenPractice(self.CharacterId)
end
function XUiCharacter:CheckBtnFilterActive()
if not XTool.IsTableEmpty(self.SupportData) then return end
self.BtnShengxu.gameObject:SetActiveEx(self.IsAscendOrder)
self.BtnJiangxu.gameObject:SetActiveEx(not self.IsAscendOrder)
end
2024-09-01 20:49:41 +00:00
function XUiCharacter:SetBtnTeachingActive(isActive)
if XUiManager.IsHideFunc then
isActive = false
end
self.BtnTeaching.gameObject:SetActiveEx(isActive)
end
function XUiCharacter:SetBtnFashionActive(isActive)
if XUiManager.IsHideFunc then
isActive = false
end
self.BtnFashion.gameObject:SetActiveEx(isActive)
end
--===========================================================================
--v1.28【角色】升阶拆分 - 打开品质预览
--===========================================================================
function XUiCharacter:OpenQualityPreview(characterId, star)
if not XLuaUiManager.IsUiShow("UiPanelQualityPreview")then
self:OpenChildUi("UiPanelQualityPreview", self, characterId)
self.ChildUiPanelQualityPreview:UpdateDynamicTableData(characterId, star)
-- 层级调整,避免特效残留和点击穿透
self.ChildUiPanelQualityPreview.Ui:SetCanvasOrder(999)
end
end