PGRData/Script/matrix/xui/xuiguild/XUiGuildCustomName.lua

162 lines
5.9 KiB
Lua

local XUiGuildCustomName = XLuaUiManager.Register(XLuaUi, "UiGuildCustomName")
local Json = require("XCommon/Json")
local XUiGridCustomNameItem = require("XUi/XUiGuild/XUiChildItem/XUiGridCustomNameItem")
local Type = {
Main = 1,
NameSelect = 2,
}
function XUiGuildCustomName:OnAwake()
self.CustomName.gameObject:SetActiveEx(false)
self.GridName.gameObject:SetActiveEx(false)
self.BtnTanchuangClose.CallBack = function() self:OnBtnTanchuangClose() end
self.BtnNo.CallBack = function() self:OnBtnNoClick() end
self.BtnYse.CallBack = function() self:OnBtnYseClick() end
self.CustomNameList = {}
end
function XUiGuildCustomName:OnStart()
self:SwitchPanel(Type.Main)
self:RefreshAllPosition()
self.NameSelectIndex = 0
self.RankSelectIndex = 0
self.TabBtns = {}
self.NameItems = {}
self.GuildCustomName = XDataCenter.GuildManager.GetGuildCustomName()
end
function XUiGuildCustomName:SwitchPanel(type)
self.Type = type
self.PanelMain.gameObject:SetActiveEx(type == Type.Main)
self.PanelNameSelect.gameObject:SetActiveEx(type == Type.NameSelect)
if type == Type.Main then
self.TxtTitle.text = CS.XTextManager.GetText("GuildCustomRankTitle")
elseif type == Type.NameSelect then
self.TxtTitle.text = CS.XTextManager.GetText("GuildCustomRankSelectTitle")
end
end
function XUiGuildCustomName:RefreshAllPosition()
local allPositions = XGuildConfig.GetAllGuildPositions()
self.PositionConfigs = {}
for id, positionData in pairs(allPositions) do
table.insert(self.PositionConfigs, {
Id = id,
Name = positionData.Name,
Priority = positionData.Priority,
Authority = positionData.Authority,
})
end
table.sort(self.PositionConfigs, function(positionA, positionB)
return positionA.Priority < positionB.Priority
end)
for i = 1, #self.PositionConfigs do
if not self.CustomNameList[i] then
local ui = CS.UnityEngine.Object.Instantiate(self.CustomName)
ui.transform:SetParent(self.PanelCustomName, false)
self.CustomNameList[i] = XUiGridCustomNameItem.New(ui, self)
end
self.CustomNameList[i].GameObject:SetActiveEx(true)
self.CustomNameList[i]:SetItemData(self.PositionConfigs[i])
end
for i = #self.PositionConfigs + 1, #self.CustomNameList do
self.CustomNameList[i].GameObject:SetActiveEx(false)
end
end
function XUiGuildCustomName:OpenNameSelectPanel(rank, oldName)
self.RankSelectIndex = rank
self:SwitchPanel(Type.NameSelect)
self.NameSelectIndex = 1
for index, name in ipairs(self.GuildCustomName[rank]) do
if not self.TabBtns[index] then
local tmpGrid = CS.UnityEngine.Object.Instantiate(self.GridName)
tmpGrid.transform:SetParent(self.PanelNameGrp, false)
tmpGrid.gameObject:SetActiveEx(true)
local tmpObj = {Transform = tmpGrid.transform, GameObject = tmpGrid.gameObject}
XTool.InitUiObject(tmpObj)
tmpObj.BtnSelect.SubGroupIndex = -1
tmpObj.BtnSelect:SetName(name)
table.insert(self.NameItems, tmpObj)
table.insert(self.TabBtns, tmpObj.BtnSelect)
else
self.NameItems[index].GameObject:SetActiveEx(true)
self.TabBtns[index]:SetName(name)
end
if name == oldName then
self.NameSelectIndex = index
end
end
for i = #self.GuildCustomName[rank] + 1, #self.TabBtns do
self.NameItems[i].GameObject:SetActiveEx(false)
end
self.BtnGrpCustomName:Init(self.TabBtns, function(index) self:OnSelectedName(index) end)
self.BtnGrpCustomName:SelectIndex(self.NameSelectIndex, true)
return
end
function XUiGuildCustomName:OnSelectedName(index)
self.NameSelectIndex = index
end
function XUiGuildCustomName:OnBtnYseClick()
if self.Type == Type.Main then
local customNameTable = {}
local customNameCount = {}
local hasModify = false --是否跟上次一样
for i = 1, #self.PositionConfigs do
local positionData = self.PositionConfigs[i]
local customName = self.CustomNameList[i]:GetInputName()
local oldName = XDataCenter.GuildManager.GetRankNameByLevel(positionData.Id)
customName = (customName == "") and oldName or customName
table.insert(customNameTable,{
Id = positionData.Id,
Name = customName
})
if customName ~= oldName then
hasModify = true
end
if not customNameCount[customName] then
customNameCount[customName] = 0
end
customNameCount[customName] = customNameCount[customName] + 1
end
if not hasModify then
XUiManager.TipMsg(CS.XTextManager.GetText("GuildRankNameHasNotChanged"))
return
end
for _, count in pairs(customNameCount or {}) do
if count > 1 then
XUiManager.TipMsg(CS.XTextManager.GetText("GuildCustomRankHasSame"))
return
end
end
local encode_custom = Json.encode(customNameTable)
XDataCenter.GuildManager.ChangeRankName(encode_custom, function()
self:RefreshAllPosition()
self:Close()
end)
elseif self.Type == Type.NameSelect then
if self.RankSelectIndex == 0 or self.NameSelectIndex == 0 then return end
local rank = self.RankSelectIndex
self.CustomNameList[rank]:SetName(self.GuildCustomName[rank][self.NameSelectIndex])
self:SwitchPanel(Type.Main)
end
end
function XUiGuildCustomName:OnBtnNoClick()
if self.Type == Type.Main then
self:OnBtnTanchuangClose()
elseif self.Type == Type.NameSelect then
self.NameSelectIndex = 0
self:SwitchPanel(Type.Main)
end
end
function XUiGuildCustomName:OnBtnTanchuangClose()
self:Close()
end