704 lines
26 KiB
Lua
704 lines
26 KiB
Lua
|
local XUiPanelSetting = XLuaUiManager.Register(XLuaUi, "UiPanelSetting")
|
|||
|
|
|||
|
local XUiGridCollectionWall = require("XUi/XUiCollectionWall/XUiCollectionWallGrid/XUiGridCollectionWall")
|
|||
|
local UiButtonState = CS.UiButtonState
|
|||
|
local tableInsert = table.insert
|
|||
|
local MAX_CHARACTER = 5
|
|||
|
local ScoreTitleType = {
|
|||
|
Babel = 2
|
|||
|
}
|
|||
|
local ShowTypeIndex = {
|
|||
|
All = 1,
|
|||
|
Friend = 2,
|
|||
|
Self = 3
|
|||
|
}
|
|||
|
|
|||
|
function XUiPanelSetting:OnStart(root)
|
|||
|
self.UiRoot = root
|
|||
|
self.UiRoot.UiPanelSetting = self
|
|||
|
|
|||
|
self.SortedDormitoryList = {} -- 拥有的宿舍数组,值为{ DormitoryId, DormitoryName },索引从1开始,对应的下拉列表值为索引减1,按照宿舍号进行排序
|
|||
|
self.DormIdToDropValue = {} -- 宿舍Id对应的下拉列表值,从0开始
|
|||
|
|
|||
|
self.OldWallShowSetting = {} -- 旧收藏品墙展示设置
|
|||
|
self.CurWallShowSetting = {} -- 当前收藏品墙展示设置
|
|||
|
self.WallPool = {} -- XUiGridCollectionWall池子
|
|||
|
|
|||
|
self.CharacterList = XPlayer.ShowCharacters
|
|||
|
self.RImgCharacter = {
|
|||
|
self.RImgCharacter1,
|
|||
|
self.RImgCharacter2,
|
|||
|
self.RImgCharacter3,
|
|||
|
self.RImgCharacter4,
|
|||
|
self.RImgCharacter5
|
|||
|
}
|
|||
|
self:AddListener()
|
|||
|
|
|||
|
self:InitCollectionShowBtnGroup()
|
|||
|
self:InitMemberShowBtnGroup()
|
|||
|
self:InitFashionShowBtnGroup()
|
|||
|
self:InitWeaponShowBtnGroup()
|
|||
|
self:InitDormitoryShowBtnGroup()
|
|||
|
|
|||
|
self:InitAppearanceSetting()
|
|||
|
self:UpdateCharacterHead()
|
|||
|
|
|||
|
self:InitUnfold()
|
|||
|
end
|
|||
|
|
|||
|
---
|
|||
|
--- 更新展示角色
|
|||
|
function XUiPanelSetting:UpdateCharacterHead()
|
|||
|
for i = 1, #self.RImgCharacter do
|
|||
|
if self.CharacterList[i] then
|
|||
|
self.RImgCharacter[i].gameObject:SetActive(true)
|
|||
|
local charIcon = XDataCenter.CharacterManager.GetCharSmallHeadIcon(self.CharacterList[i])
|
|||
|
self.RImgCharacter[i]:SetRawImage(charIcon)
|
|||
|
else
|
|||
|
self.RImgCharacter[i].gameObject:SetActive(false)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
---
|
|||
|
--- 初始化展示设置
|
|||
|
function XUiPanelSetting:InitAppearanceSetting()
|
|||
|
self.CurScoreTitleShowState = XDataCenter.MedalManager.GetScoreTitleShowState()
|
|||
|
self.OldScoreTitleShowState = XDataCenter.MedalManager.GetScoreTitleShowState()
|
|||
|
|
|||
|
-- 是否全角色展示,0全部显示,1自己选择显示
|
|||
|
self.OldCharactersAppearanceType = XPlayer.GetAppearanceShowType()
|
|||
|
self.CurCharactersAppearanceType = XPlayer.GetAppearanceShowType()
|
|||
|
local isShowAllCharacter = self.CurCharactersAppearanceType and self.CurCharactersAppearanceType == XPlayerInfoConfigs.CharactersAppearanceType.All or false
|
|||
|
self.BtnAllCharacterShow:SetButtonState(isShowAllCharacter and UiButtonState.Select or UiButtonState.Normal)
|
|||
|
self.MemberContent.gameObject:SetActiveEx(not isShowAllCharacter)
|
|||
|
self.HadAllChar.gameObject:SetActiveEx(isShowAllCharacter)
|
|||
|
|
|||
|
-- 展示设置,1全部可见,2朋友可见,3自己可见
|
|||
|
self.OldAppearanceSetting = XPlayer.GetAppearanceSettingInfo()
|
|||
|
self.CurAppearanceSetting = XPlayer.GetAppearanceSettingInfo()
|
|||
|
self.CollectionShowBtnGroup:SelectIndex(self.CurAppearanceSetting and self.CurAppearanceSetting.TitleType or ShowTypeIndex.All)
|
|||
|
self.MemberShowBtnGroup:SelectIndex(self.CurAppearanceSetting and self.CurAppearanceSetting.CharacterType or ShowTypeIndex.All)
|
|||
|
self.FashionShowBtnGroup:SelectIndex(self.CurAppearanceSetting and self.CurAppearanceSetting.FashionType or ShowTypeIndex.All)
|
|||
|
self.WeaponShowBtnGroup:SelectIndex(self.CurAppearanceSetting and self.CurAppearanceSetting.WeaponFashionType or ShowTypeIndex.All)
|
|||
|
self.DormitoryShowBtnGroup:SelectIndex(self.CurAppearanceSetting and self.CurAppearanceSetting.DormitoryType or ShowTypeIndex.All)
|
|||
|
|
|||
|
-- 判断宿舍系统是否开开启
|
|||
|
local isDormOpen = XFunctionManager.JudgeCanOpen( XFunctionManager.FunctionName.Dorm)
|
|||
|
self.TxtDromNotOpen.gameObject:SetActiveEx(not isDormOpen)
|
|||
|
self.DormitoryShowBtnGroup.gameObject:SetActiveEx(isDormOpen)
|
|||
|
if isDormOpen then
|
|||
|
-- 设置宿舍下拉列表
|
|||
|
XPlayer.GetDormitoryList(function(dormitoryList)
|
|||
|
self:InitDormitoryDrop(dormitoryList)
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
-- 在聊天与个人信息展示本期巴别塔等级设置
|
|||
|
local IsBabelScoreTitleShow = XDataCenter.MedalManager.CheckScoreTitleIsShow(ScoreTitleType.Babel)
|
|||
|
self.BtnBabelScoreTitleShow:SetButtonState(IsBabelScoreTitleShow and UiButtonState.Select or UiButtonState.Normal)
|
|||
|
local IsHaveType = XDataCenter.MedalManager.CheckHaveScoreTitleType(ScoreTitleType.Babel)
|
|||
|
local IsInTime = XDataCenter.MedalManager.CheckScoreTitleInTimeByType(ScoreTitleType.Babel)
|
|||
|
self.BtnBabelScoreTitleShow.gameObject:SetActiveEx(IsHaveType and IsInTime)
|
|||
|
end
|
|||
|
|
|||
|
---
|
|||
|
--- 初始化折叠信息
|
|||
|
function XUiPanelSetting:InitUnfold()
|
|||
|
local charUnfold = XSaveTool.GetData(string.format("%d%s", XPlayer.Id, "CharUnfold"))
|
|||
|
local displayUnfold = XSaveTool.GetData(string.format("%d%s", XPlayer.Id, "DisplayUnfold"))
|
|||
|
local collectionUnfold = XSaveTool.GetData(string.format("%d%s", XPlayer.Id, "CollectionUnfold"))
|
|||
|
|
|||
|
if charUnfold == nil or charUnfold == false then
|
|||
|
self.BtnCharUnfold:SetButtonState(UiButtonState.Normal)
|
|||
|
else
|
|||
|
self.BtnCharUnfold:SetButtonState(UiButtonState.Select)
|
|||
|
end
|
|||
|
|
|||
|
if displayUnfold == nil or displayUnfold == false then
|
|||
|
self.BtnDisplayUnfold:SetButtonState(UiButtonState.Normal)
|
|||
|
else
|
|||
|
self.BtnDisplayUnfold:SetButtonState(UiButtonState.Select)
|
|||
|
end
|
|||
|
|
|||
|
if collectionUnfold == nil or collectionUnfold == 1 then
|
|||
|
self.BtnCollectionUnfold:SetButtonState(UiButtonState.Select)
|
|||
|
else
|
|||
|
self.BtnCollectionUnfold:SetButtonState(UiButtonState.Normal)
|
|||
|
end
|
|||
|
|
|||
|
self:OnBtnCharUnfold()
|
|||
|
self:OnBtnDisplayUnfold()
|
|||
|
self:OnBtnCollectionUnfold()
|
|||
|
end
|
|||
|
|
|||
|
---
|
|||
|
--- 根据已解锁宿舍,初始化宿舍下拉列表
|
|||
|
--- @param dormitoryList table 已解锁的宿舍数组,结构为{ DormitoryId, DormitoryName }
|
|||
|
function XUiPanelSetting:InitDormitoryDrop(dormitoryList)
|
|||
|
if not dormitoryList or not next(dormitoryList) then
|
|||
|
XLog.Error("XUiPanelSetting:InitDormitoryDrop函数错误,dormitoryList为空")
|
|||
|
return
|
|||
|
end
|
|||
|
self.SortedDormitoryList = dormitoryList or {}
|
|||
|
|
|||
|
-- 排序下拉列表的宿舍
|
|||
|
table.sort(self.SortedDormitoryList, function(a, b)
|
|||
|
local cfg1 = XDormConfig.GetDormitoryCfgById(a.DormitoryId)
|
|||
|
local cfg2 = XDormConfig.GetDormitoryCfgById(b.DormitoryId)
|
|||
|
return cfg1.InitNumber < cfg2.InitNumber
|
|||
|
end)
|
|||
|
|
|||
|
-- 创建下拉列表选项
|
|||
|
local optionsDataList = CS.UnityEngine.UI.Dropdown.OptionDataList()
|
|||
|
for index, dorm in ipairs(self.SortedDormitoryList) do
|
|||
|
local optionContribute = CS.UnityEngine.UI.Dropdown.OptionData()
|
|||
|
optionContribute.text = dorm.DormitoryName
|
|||
|
optionsDataList.options:Add(optionContribute)
|
|||
|
self.DormIdToDropValue[dorm.DormitoryId] = index - 1
|
|||
|
end
|
|||
|
self.DormitoryDrop:ClearOptions()
|
|||
|
self.DormitoryDrop:AddOptions(optionsDataList.options)
|
|||
|
|
|||
|
-- 未解锁宿舍系统时,登录推送的宿舍Id为0,解锁宿舍系统后需要初始化为默认的宿舍Id
|
|||
|
if self.CurAppearanceSetting.DormitoryId == 0 or self.OldAppearanceSetting.DormitoryId == 0 then
|
|||
|
if self.CurAppearanceSetting.DormitoryId ~= self.OldAppearanceSetting.DormitoryId then
|
|||
|
XLog.Error("XUiPanelSetting:InitDormitoryDrop函数错误,当前设置宿舍ID 与 旧设置宿舍ID 一个为0,另一个不为0")
|
|||
|
end
|
|||
|
|
|||
|
if (self.SortedDormitoryList[1] or {}).DormitoryId then
|
|||
|
self.CurAppearanceSetting.DormitoryId = self.SortedDormitoryList[1].DormitoryId
|
|||
|
self.OldAppearanceSetting.DormitoryId = self.SortedDormitoryList[1].DormitoryId
|
|||
|
else
|
|||
|
XLog.Error("XUiPanelSetting:InitDormitoryDrop函数错误,展示设置宿舍Id为0,且SortedDormitoryList中没有宿舍数据")
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 选择对应的宿舍
|
|||
|
local dropValue = self.DormIdToDropValue[self.CurAppearanceSetting.DormitoryId]
|
|||
|
if dropValue then
|
|||
|
self.DormitoryDrop.value = dropValue
|
|||
|
else
|
|||
|
XLog.Error(string.format("XUiPanelSetting:CreateOptionsDataList函数错误,宿舍%s不在的解锁的宿舍数据中", tostring(self.CurAppearanceSetting.DormitoryId)))
|
|||
|
self.DormitoryDrop.value = 0
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
---
|
|||
|
--- 更改设置之后,检查与原来设置是否相同
|
|||
|
--- 不相同则在退出时提示是否需要保存
|
|||
|
function XUiPanelSetting:CheckSave()
|
|||
|
local needSave = false
|
|||
|
|
|||
|
-- 选择展示的成员
|
|||
|
for i = 1, MAX_CHARACTER do
|
|||
|
if self.CharacterList[i] ~= XPlayer.ShowCharacters[i] then
|
|||
|
needSave = true
|
|||
|
break
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 在聊天与个人信息展示本期巴别塔等级设置
|
|||
|
for index, showState in pairs(self.OldScoreTitleShowState) do
|
|||
|
if self.CurScoreTitleShowState[index].Hide ~= showState.Hide then
|
|||
|
needSave = true
|
|||
|
break
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 展示设置
|
|||
|
for index, showState in pairs(self.OldAppearanceSetting) do
|
|||
|
if self.CurAppearanceSetting[index] ~= showState then
|
|||
|
needSave = true
|
|||
|
break
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 全角色展示
|
|||
|
if self.CurCharactersAppearanceType ~= self.OldCharactersAppearanceType then
|
|||
|
needSave = true
|
|||
|
end
|
|||
|
|
|||
|
-- 收藏品墙展示
|
|||
|
for wallDataId, isShow in pairs(self.OldWallShowSetting) do
|
|||
|
if self.CurWallShowSetting[wallDataId] ~= isShow then
|
|||
|
needSave = true
|
|||
|
break
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
self.UiRoot.NeedSave = needSave
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelSetting:SaveScoreTitleShowData()
|
|||
|
local list = {}
|
|||
|
|
|||
|
for index, showState in pairs(self.OldScoreTitleShowState) do
|
|||
|
if self.CurScoreTitleShowState[index].Hide ~= showState.Hide then
|
|||
|
tableInsert(list, self.CurScoreTitleShowState[index])
|
|||
|
end
|
|||
|
end
|
|||
|
if #list > 0 then
|
|||
|
XDataCenter.MedalManager.SetScoreTitleShow(list, function()
|
|||
|
self.CurScoreTitleShowState = XDataCenter.MedalManager.GetScoreTitleShowState()
|
|||
|
self.OldScoreTitleShowState = XDataCenter.MedalManager.GetScoreTitleShowState()
|
|||
|
end)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
---
|
|||
|
--- 初始化收藏品墙展示设置
|
|||
|
function XUiPanelSetting:InitCollectionWallShow()
|
|||
|
self.UseWallDic = {} -- WallPool池子中正在使用的格子 { key:Id, value:XUiGridCollectionWall }
|
|||
|
self.OldWallShowSetting = {}
|
|||
|
self.CurWallShowSetting = {}
|
|||
|
self.GridCollectionWall.gameObject:SetActiveEx(false)
|
|||
|
|
|||
|
for _, wall in pairs(self.WallPool) do
|
|||
|
wall.GameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
|
|||
|
self.NormalCollectionWall = XDataCenter.CollectionWallManager.GetNormalWallEntityList()
|
|||
|
if #self.NormalCollectionWall <= 0 then
|
|||
|
self.CollectionWallNone.gameObject:SetActiveEx(true)
|
|||
|
self.BtnAllCollectionShow.gameObject:SetActiveEx(false)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
self.CollectionWallNone.gameObject:SetActiveEx(false)
|
|||
|
self.BtnAllCollectionShow.gameObject:SetActiveEx(true)
|
|||
|
|
|||
|
local isShowAll = true
|
|||
|
for i, wallData in ipairs(self.NormalCollectionWall) do
|
|||
|
local isShow = wallData:GetIsShow()
|
|||
|
self.OldWallShowSetting[wallData:GetId()] = isShow
|
|||
|
self.CurWallShowSetting[wallData:GetId()] = isShow
|
|||
|
|
|||
|
if isShow == false then
|
|||
|
-- 有一个收藏品墙不展示,所以不是全部展示
|
|||
|
isShowAll = false
|
|||
|
end
|
|||
|
|
|||
|
if not self.WallPool[i] then
|
|||
|
local ui = CS.UnityEngine.Object.Instantiate(self.GridCollectionWall)
|
|||
|
ui.transform:SetParent(self.CollectionWallContent, false)
|
|||
|
ui.gameObject:SetActive(true)
|
|||
|
|
|||
|
local collectionWall = XUiGridCollectionWall.New(ui, self, XCollectionWallConfigs.EnumWallGridOpenType.Setting)
|
|||
|
self.WallPool[i] = collectionWall
|
|||
|
end
|
|||
|
self.WallPool[i]:UpdateGrid(wallData)
|
|||
|
self.WallPool[i].GameObject:SetActiveEx(true)
|
|||
|
|
|||
|
self.UseWallDic[wallData:GetId()] = self.WallPool[i]
|
|||
|
end
|
|||
|
|
|||
|
-- 设置全部展示的状态
|
|||
|
if isShowAll then
|
|||
|
self.BtnAllCollectionShow:SetButtonState(CS.UiButtonState.Select)
|
|||
|
else
|
|||
|
self.BtnAllCollectionShow:SetButtonState(CS.UiButtonState.Normal)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
---
|
|||
|
--- 保存收藏品墙展示设置
|
|||
|
--- 在发送协议后更新收藏品墙数据实体(XCollectionWall)IsShow属性
|
|||
|
--- 然后在回调中更新设置缓存
|
|||
|
function XUiPanelSetting:SaveCollectionWallShow()
|
|||
|
if #self.NormalCollectionWall <= 0 then
|
|||
|
-- 没有对外展示的墙
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
-- 构造发送请求需要的数据
|
|||
|
local showInfoList = {}
|
|||
|
for id, isShow in pairs(self.CurWallShowSetting) do
|
|||
|
local showInfo = {}
|
|||
|
showInfo.Id = id
|
|||
|
showInfo.IsShow = isShow
|
|||
|
table.insert(showInfoList, showInfo)
|
|||
|
end
|
|||
|
|
|||
|
XDataCenter.CollectionWallManager.RequestEditCollectionWallIsShow(showInfoList, function()
|
|||
|
-- 保存后更新新旧设置缓存
|
|||
|
for _, wallData in ipairs(self.NormalCollectionWall) do
|
|||
|
self.OldWallShowSetting[wallData:GetId()] = wallData:GetIsShow()
|
|||
|
self.CurWallShowSetting[wallData:GetId()] = wallData:GetIsShow()
|
|||
|
end
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
---------------------------------------------------添加按钮响应函数---------------------------------------------------------
|
|||
|
|
|||
|
function XUiPanelSetting:AddListener()
|
|||
|
self.BtnAllCharacterShow.CallBack = function()
|
|||
|
self:OnBtnAllCharacterShow()
|
|||
|
end
|
|||
|
self.BtnCharacter1.CallBack = function()
|
|||
|
self:OnBtnCharacter(1)
|
|||
|
end
|
|||
|
self.BtnCharacter2.CallBack = function()
|
|||
|
self:OnBtnCharacter(2)
|
|||
|
end
|
|||
|
self.BtnCharacter3.CallBack = function()
|
|||
|
self:OnBtnCharacter(3)
|
|||
|
end
|
|||
|
self.BtnCharacter4.CallBack = function()
|
|||
|
self:OnBtnCharacter(4)
|
|||
|
end
|
|||
|
self.BtnCharacter5.CallBack = function()
|
|||
|
self:OnBtnCharacter(5)
|
|||
|
end
|
|||
|
|
|||
|
self.BtnBabelScoreTitleShow.CallBack = function()
|
|||
|
self:OnBtnBabelScoreTitleShow()
|
|||
|
end
|
|||
|
self.BtnSave.CallBack = function()
|
|||
|
self:OnBtnSave()
|
|||
|
end
|
|||
|
self.BtnView.CallBack = function()
|
|||
|
self:OnBtnView()
|
|||
|
end
|
|||
|
|
|||
|
self.DormitoryDrop.onValueChanged:AddListener(function()
|
|||
|
self:OnDormitoryDropClick()
|
|||
|
end)
|
|||
|
|
|||
|
self.BtnAllCollectionShow.CallBack = function()
|
|||
|
self:OnBtnAllCollectionShow()
|
|||
|
end
|
|||
|
|
|||
|
self.BtnCharUnfold.CallBack = function()
|
|||
|
self:OnBtnCharUnfold()
|
|||
|
end
|
|||
|
self.BtnDisplayUnfold.CallBack = function()
|
|||
|
self:OnBtnDisplayUnfold()
|
|||
|
end
|
|||
|
self.BtnCollectionUnfold.CallBack = function()
|
|||
|
self:OnBtnCollectionUnfold()
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelSetting:OnBtnCollectionUnfold()
|
|||
|
local isUnfold
|
|||
|
if self.BtnCollectionUnfold.ButtonState == CS.UiButtonState.Select then
|
|||
|
isUnfold = 1
|
|||
|
self.PanelCollectionWall.gameObject:SetActiveEx(true)
|
|||
|
else
|
|||
|
isUnfold = 2
|
|||
|
self.PanelCollectionWall.gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
|
|||
|
XSaveTool.SaveData(string.format("%d%s", XPlayer.Id, "CollectionUnfold"), isUnfold)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelSetting:OnBtnDisplayUnfold()
|
|||
|
local isUnfold = self.BtnDisplayUnfold.ButtonState == CS.UiButtonState.Select
|
|||
|
|
|||
|
self.PanelDisplaySetting.gameObject:SetActiveEx(isUnfold)
|
|||
|
XSaveTool.SaveData(string.format("%d%s", XPlayer.Id, "DisplayUnfold"), isUnfold)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelSetting:OnBtnCharUnfold()
|
|||
|
local isUnfold = self.BtnCharUnfold.ButtonState == CS.UiButtonState.Select
|
|||
|
local isShowAllCharacter = self.CurCharactersAppearanceType and self.CurCharactersAppearanceType == XPlayerInfoConfigs.CharactersAppearanceType.All or false
|
|||
|
|
|||
|
self.PanelMember.gameObject:SetActiveEx(isUnfold)
|
|||
|
|
|||
|
-- 展示全角色不显示头像
|
|||
|
self.MemberContent.gameObject:SetActiveEx(not isShowAllCharacter)
|
|||
|
self.HadAllChar.gameObject:SetActiveEx(isShowAllCharacter)
|
|||
|
XSaveTool.SaveData(string.format("%d%s", XPlayer.Id, "CharUnfold"), isUnfold)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelSetting:OnBtnAllCollectionShow()
|
|||
|
local isShowAll = self.BtnAllCollectionShow.ButtonState == UiButtonState.Select
|
|||
|
for _, wall in pairs(self.UseWallDic) do
|
|||
|
wall:SetIsSelect(isShowAll)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelSetting:OnBtnAllCharacterShow()
|
|||
|
local isShowAll = self.BtnAllCharacterShow.ButtonState == UiButtonState.Select
|
|||
|
|
|||
|
if isShowAll then
|
|||
|
self.CurCharactersAppearanceType = XPlayerInfoConfigs.CharactersAppearanceType.All
|
|||
|
else
|
|||
|
self.CurCharactersAppearanceType = XPlayerInfoConfigs.CharactersAppearanceType.Select
|
|||
|
end
|
|||
|
self.MemberContent.gameObject:SetActiveEx(not isShowAll)
|
|||
|
self.HadAllChar.gameObject:SetActiveEx(isShowAll)
|
|||
|
|
|||
|
self:CheckSave()
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelSetting:OnBtnCharacter(index)
|
|||
|
local curTeam = {}
|
|||
|
for i = 1, MAX_CHARACTER do
|
|||
|
curTeam[i] = self.CharacterList[i] or 0
|
|||
|
end
|
|||
|
|
|||
|
local cb = function(resTeam)
|
|||
|
self.CharacterList = {}
|
|||
|
for i = 1, #resTeam do
|
|||
|
if resTeam[i] ~= 0 then
|
|||
|
table.insert(self.CharacterList, resTeam[i])
|
|||
|
end
|
|||
|
end
|
|||
|
self.UiRoot.CharacterList = self.CharacterList
|
|||
|
self:CheckSave()
|
|||
|
self:UpdateCharacterHead()
|
|||
|
end
|
|||
|
|
|||
|
-- 根据选中的角色类型打开对应的页签
|
|||
|
local characterType
|
|||
|
if curTeam[index] and curTeam[index] ~= 0 then
|
|||
|
characterType = XCharacterConfigs.GetCharacterType(curTeam[index])
|
|||
|
else
|
|||
|
-- 添加新角色时,默认打开构造体页签
|
|||
|
characterType = XCharacterConfigs.CharacterType.Normal
|
|||
|
end
|
|||
|
|
|||
|
-- 角色展示不拦截角色类型,构造体与授格者可以同时展示
|
|||
|
XLuaUiManager.Open("UiRoomCharacter", curTeam, index, cb, nil, nil, { NotReset = true, SelectCharacterType = characterType })
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelSetting:OnBtnBabelScoreTitleShow()
|
|||
|
local state = self.CurScoreTitleShowState[ScoreTitleType.Babel]
|
|||
|
if state then
|
|||
|
state.Hide = (self.BtnBabelScoreTitleShow.ButtonState == UiButtonState.Select) and
|
|||
|
XMedalConfigs.Hide.OFF or
|
|||
|
XMedalConfigs.Hide.ON
|
|||
|
else
|
|||
|
self.BtnBabelScoreTitleShow:SetButtonState(UiButtonState.Normal)
|
|||
|
end
|
|||
|
self:CheckSave()
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelSetting:OnBtnSave()
|
|||
|
self.UiRoot.NeedSave = false
|
|||
|
self:SaveScoreTitleShowData()
|
|||
|
self:SaveCollectionWallShow()
|
|||
|
XDataCenter.PlayerInfoManager.SaveData(self.CurCharactersAppearanceType, self.CharacterList, self.CurAppearanceSetting, function()
|
|||
|
self.CurCharactersAppearanceType = XPlayer.GetAppearanceShowType()
|
|||
|
self.OldCharactersAppearanceType = XPlayer.GetAppearanceShowType()
|
|||
|
self.OldAppearanceSetting = XPlayer.GetAppearanceSettingInfo()
|
|||
|
self.CurAppearanceSetting = XPlayer.GetAppearanceSettingInfo()
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
---
|
|||
|
--- 展示预览
|
|||
|
function XUiPanelSetting:OnBtnView()
|
|||
|
XDataCenter.PlayerInfoManager.RequestPlayerInfoData(XPlayer.Id, function(data)
|
|||
|
XPlayer.SetPlayerLikes(data.Likes)
|
|||
|
local tmpData = {}
|
|||
|
for k, v in pairs(data) do
|
|||
|
tmpData[k] = v
|
|||
|
end
|
|||
|
if data.Id == XPlayer.Id then
|
|||
|
tmpData.AchievementDetail.Achievement = XDataCenter.AchievementManager.GetAchievementCompleteCount()
|
|||
|
tmpData.AchievementDetail.TotalAchievement = XDataCenter.AchievementManager.GetTotalAchievementCount()
|
|||
|
end
|
|||
|
tmpData.AppearanceSettingInfo = self.CurAppearanceSetting
|
|||
|
|
|||
|
if XFunctionManager.JudgeCanOpen(XFunctionManager.FunctionName.Dorm) then
|
|||
|
local dormDetail = {}
|
|||
|
dormDetail.DormitoryId = self.CurAppearanceSetting.DormitoryId
|
|||
|
for _, dorm in pairs(self.SortedDormitoryList) do
|
|||
|
if dorm.DormitoryId == dormDetail.DormitoryId then
|
|||
|
dormDetail.DormitoryName = dorm.DormitoryName
|
|||
|
end
|
|||
|
end
|
|||
|
if not dormDetail.DormitoryName then
|
|||
|
XLog.Error(string.format("XUiPanelSetting:OnBtnView函数错误,在self.SortedDormitoryList中没有宿舍%s的数据", dormDetail.DormitoryId))
|
|||
|
dormDetail = nil
|
|||
|
end
|
|||
|
tmpData.DormDetail = dormDetail
|
|||
|
end
|
|||
|
|
|||
|
--展示角色列表
|
|||
|
tmpData.CharacterShow = {}
|
|||
|
if self.CurCharactersAppearanceType == XPlayerInfoConfigs.CharactersAppearanceType.Select then
|
|||
|
for i = 1, MAX_CHARACTER do
|
|||
|
if self.CharacterList[i] then
|
|||
|
local char = XDataCenter.CharacterManager.GetCharacter(self.CharacterList[i])
|
|||
|
tmpData.CharacterShow[i] = char
|
|||
|
else
|
|||
|
tmpData.CharacterShow[i] = nil
|
|||
|
end
|
|||
|
end
|
|||
|
else
|
|||
|
--展示全角色
|
|||
|
tmpData.CharacterShow = XDataCenter.CharacterManager.GetOwnCharacterList()
|
|||
|
end
|
|||
|
|
|||
|
--请求的数据有缓冲,使用XPlayer的数据可以实时看到预览的改变
|
|||
|
tmpData.Sign = XPlayer.Sign
|
|||
|
tmpData.Level = XPlayer.Level
|
|||
|
tmpData.Likes = XPlayer.Likes
|
|||
|
tmpData.Birthday = XPlayer.Birthday
|
|||
|
tmpData.CurrHeadFrameId = XPlayer.CurrHeadFrameId
|
|||
|
tmpData.CurrHeadPortraitId = XPlayer.CurrHeadPortraitId
|
|||
|
tmpData.AppearanceShowType = self.CurCharactersAppearanceType --角色展示类型
|
|||
|
|
|||
|
--收藏品信息
|
|||
|
tmpData.CollectionShow = {}
|
|||
|
for _, v in pairs(XDataCenter.MedalManager.GetScoreTitleUnLockList()) do
|
|||
|
table.insert(tmpData.CollectionShow, v)
|
|||
|
end
|
|||
|
|
|||
|
tmpData.CollectionWall = {}
|
|||
|
for wallId, isShow in pairs(self.CurWallShowSetting) do
|
|||
|
if isShow then
|
|||
|
local wallData = XDataCenter.CollectionWallManager.GetWallEntityData(wallId)
|
|||
|
tableInsert(tmpData.CollectionWall, wallData)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
--成员涂装
|
|||
|
tmpData.FashionShow = {}
|
|||
|
for k, _ in pairs(XDataCenter.FashionManager.GetOwnFashionStatus()) do
|
|||
|
table.insert(tmpData.FashionShow, k)
|
|||
|
end
|
|||
|
|
|||
|
--武器涂装
|
|||
|
tmpData.WeaponFashionShow = {}
|
|||
|
for _, v in pairs(XDataCenter.WeaponFashionManager.GetOwnWeaponFashion()) do
|
|||
|
table.insert(tmpData.WeaponFashionShow, v.Id)
|
|||
|
end
|
|||
|
tmpData.CurrentWearNameplate = data.CurrentWearNameplate
|
|||
|
|
|||
|
XLuaUiManager.Open("UiPlayerInfo", tmpData, nil, true)
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelSetting:OnDormitoryDropClick()
|
|||
|
-- 选择的宿舍Id与当前设置的Id是否相同
|
|||
|
local selectDormId = self.SortedDormitoryList[self.DormitoryDrop.value + 1].DormitoryId
|
|||
|
|
|||
|
if selectDormId == self.CurAppearanceSetting.DormitoryId then
|
|||
|
return
|
|||
|
end
|
|||
|
self.CurAppearanceSetting.DormitoryId = selectDormId
|
|||
|
self:CheckSave()
|
|||
|
end
|
|||
|
|
|||
|
---
|
|||
|
--- 'wallDataId'墙的展示设置缓存更改为'isShow'
|
|||
|
--- 由XUiGridCollectionWall脚本的点击函数回调
|
|||
|
---@param wallDataId number
|
|||
|
---@param isShow boolean
|
|||
|
function XUiPanelSetting:ChangeCurShowSetting(wallDataId, isShow)
|
|||
|
local isShowAll = true
|
|||
|
|
|||
|
if self.CurWallShowSetting[wallDataId] ~= nil then
|
|||
|
self.CurWallShowSetting[wallDataId] = isShow
|
|||
|
self:CheckSave()
|
|||
|
else
|
|||
|
XLog.Error(string.format("XUiPanelSetting:ChangeCurShowSetting函数错误,没有Id:%s 收藏品墙数据", tostring(wallDataId)))
|
|||
|
end
|
|||
|
|
|||
|
for _, showSetting in pairs(self.CurWallShowSetting) do
|
|||
|
if showSetting == false then
|
|||
|
isShowAll = false
|
|||
|
break;
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
if isShowAll then
|
|||
|
self.BtnAllCollectionShow:SetButtonState(CS.UiButtonState.Select)
|
|||
|
else
|
|||
|
self.BtnAllCollectionShow:SetButtonState(CS.UiButtonState.Normal)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
--------------------------------------------------初始化展示设置的按钮组----------------------------------------------------------
|
|||
|
|
|||
|
---
|
|||
|
--- 宿舍展示
|
|||
|
function XUiPanelSetting:InitDormitoryShowBtnGroup()
|
|||
|
self.DormitoryShowBtns = { self.BtnDormitoryShowAll, self.BtnDormitoryShowFriend, self.BtnDormitoryShowSelf }
|
|||
|
self.DormitoryShowBtnGroup:Init(self.DormitoryShowBtns, function(tabIndex)
|
|||
|
self:OnDormitoryShowBtnGroup(tabIndex)
|
|||
|
end)
|
|||
|
end
|
|||
|
function XUiPanelSetting:OnDormitoryShowBtnGroup(tabIndex)
|
|||
|
if self.DormitoryShowIndex and self.DormitoryShowIndex == tabIndex then
|
|||
|
return
|
|||
|
end
|
|||
|
self.CurAppearanceSetting.DormitoryType = tabIndex
|
|||
|
self.DormitoryShowIndex = tabIndex
|
|||
|
self:CheckSave()
|
|||
|
end
|
|||
|
|
|||
|
---
|
|||
|
--- 成员展示
|
|||
|
function XUiPanelSetting:InitMemberShowBtnGroup()
|
|||
|
self.MemberShowBtns = { self.BtnMemberShowAll, self.BtnMemberShowFriend, self.BtnMemberShowSelf }
|
|||
|
self.MemberShowBtnGroup:Init(self.MemberShowBtns, function(tabIndex)
|
|||
|
self:OnMemberShowBtnGroup(tabIndex)
|
|||
|
end)
|
|||
|
end
|
|||
|
function XUiPanelSetting:OnMemberShowBtnGroup(tabIndex)
|
|||
|
if self.MemberShowIndex and self.MemberShowIndex == tabIndex then
|
|||
|
return
|
|||
|
end
|
|||
|
self.CurAppearanceSetting.CharacterType = tabIndex
|
|||
|
self.MemberShowIndex = tabIndex
|
|||
|
self:CheckSave()
|
|||
|
end
|
|||
|
|
|||
|
---
|
|||
|
--- 收藏品展示
|
|||
|
function XUiPanelSetting:InitCollectionShowBtnGroup()
|
|||
|
self.CollectionShowBtns = { self.BtnCollectionShowAll, self.BtnCollectionShowFriend, self.BtnCollectionShowSelf }
|
|||
|
self.CollectionShowBtnGroup:Init(self.CollectionShowBtns, function(tabIndex)
|
|||
|
self:OnCollectionShowBtnGroup(tabIndex)
|
|||
|
end)
|
|||
|
end
|
|||
|
function XUiPanelSetting:OnCollectionShowBtnGroup(tabIndex)
|
|||
|
if self.CollectionShowIndex and self.CollectionShowIndex == tabIndex then
|
|||
|
return
|
|||
|
end
|
|||
|
self.CurAppearanceSetting.TitleType = tabIndex
|
|||
|
self.CollectionShowIndex = tabIndex
|
|||
|
self:CheckSave()
|
|||
|
end
|
|||
|
|
|||
|
---
|
|||
|
--- 成员涂装展示
|
|||
|
function XUiPanelSetting:InitFashionShowBtnGroup()
|
|||
|
self.FashionShowBtns = { self.BtnFashionShowAll, self.BtnFashionShowFriend, self.BtnFashionShowSelf }
|
|||
|
self.FashionShowBtnGroup:Init(self.FashionShowBtns, function(tabIndex)
|
|||
|
self:OnFashionShowBtnGroup(tabIndex)
|
|||
|
end)
|
|||
|
end
|
|||
|
function XUiPanelSetting:OnFashionShowBtnGroup(tabIndex)
|
|||
|
if self.FashionShowIndex and self.FashionShowIndex == tabIndex then
|
|||
|
return
|
|||
|
end
|
|||
|
self.CurAppearanceSetting.FashionType = tabIndex
|
|||
|
self.FashionShowIndex = tabIndex
|
|||
|
self:CheckSave()
|
|||
|
end
|
|||
|
|
|||
|
---
|
|||
|
--- 武器涂装展示
|
|||
|
function XUiPanelSetting:InitWeaponShowBtnGroup()
|
|||
|
self.WeaponShowBtns = { self.BtnWeaponShowAll, self.BtnWeaponShowFriend, self.BtnWeaponShowSelf }
|
|||
|
self.WeaponShowBtnGroup:Init(self.WeaponShowBtns, function(tabIndex)
|
|||
|
self:OnWeaponShowBtnGroup(tabIndex)
|
|||
|
end)
|
|||
|
end
|
|||
|
function XUiPanelSetting:OnWeaponShowBtnGroup(tabIndex)
|
|||
|
if self.WeaponShowIndex and self.WeaponShowIndex == tabIndex then
|
|||
|
return
|
|||
|
end
|
|||
|
self.CurAppearanceSetting.WeaponFashionType = tabIndex
|
|||
|
self.WeaponShowIndex = tabIndex
|
|||
|
self:CheckSave()
|
|||
|
end
|