PGRData/Script/matrix/xui/xuiguilddorm/XUiGuildDormPerson.lua

87 lines
No EOL
3.4 KiB
Lua

--######################## XUiGuildDormPersonItem ########################
local XUiGuildDormPersonItem = XClass(nil, "XUiGuildDormPersonItem")
function XUiGuildDormPersonItem:Ctor(ui)
XUiHelper.InitUiClass(self, ui)
self.CharacterData = nil
end
function XUiGuildDormPersonItem:SetData(characterData)
self.CharacterData = characterData
local iconpath = XDormConfig.GetCharacterStyleConfigQIconById(characterData.CharacterId)
if iconpath then
self.ImgIcon:SetRawImage(iconpath)
end
local charStyleConfig = XDormConfig.GetCharacterStyleConfigById(characterData.CharacterId)
if charStyleConfig then
self.TxtName.text = charStyleConfig.Name
end
self.ImgDorm.gameObject:SetActiveEx(characterData.CharacterId
== XDataCenter.GuildDormManager.GetCurrentPlayerRoleId())
end
function XUiGuildDormPersonItem:SetSelected(characterId)
self.ImgSelect.gameObject:SetActiveEx(self.CharacterData.CharacterId == characterId)
end
--######################## XUiGuildDormPerson ########################
local XUiGuildDormPerson = XLuaUiManager.Register(XLuaUi, "UiGuildDormPerson")
function XUiGuildDormPerson:OnAwake()
self.AllCharacterDatas = nil
self.CurrentSelectId = nil
-- 角色动态列表
self.DynamicSelectTable = XDynamicTableNormal.New(self.PanelSelectList)
self.DynamicSelectTable:SetProxy(XUiGuildDormPersonItem)
self.DynamicSelectTable:SetDelegate(self)
self.DormSelectItem.gameObject:SetActiveEx(false)
self:RegisterUiEvents()
end
function XUiGuildDormPerson:OnStart()
-- 设置默认显示全部角色
self.DropdownType.value = 0
self:RefreshDynamicSelectTable(0)
end
--######################## 私有方法 ########################
function XUiGuildDormPerson:RefreshDynamicSelectTable(value)
self.AllCharacterDatas = XDataCenter.GuildDormManager.GetCharacterDatas(value)
self.ImgNonePerson.gameObject:SetActiveEx(#self.AllCharacterDatas <= 0)
self.TxtSelect.text = #self.AllCharacterDatas > 0 and "1/1" or "0/1"
self.CurrentSelectId = #self.AllCharacterDatas > 0 and self.AllCharacterDatas[1].CharacterId or nil
self.DynamicSelectTable:SetDataSource(self.AllCharacterDatas)
self.DynamicSelectTable:ReloadDataSync(1)
end
function XUiGuildDormPerson:RegisterUiEvents()
XUiHelper.RegisterClickEvent(self, self.BtnCancel, self.Close)
XUiHelper.RegisterClickEvent(self, self.BtnTanchuangClose, self.Close)
XUiHelper.RegisterClickEvent(self, self.BtnClose, self.Close)
XUiHelper.RegisterClickEvent(self, self.BtnConfirm, self.OnBtnConfirmClicked)
self.DropdownType.onValueChanged:AddListener(function()
self:RefreshDynamicSelectTable(self.DropdownType.value)
end)
end
function XUiGuildDormPerson:OnBtnConfirmClicked()
XDataCenter.GuildDormManager.RequestChangeRoleId(self.CurrentSelectId, function()
self:Close()
end)
end
function XUiGuildDormPerson:OnDynamicTableEvent(event, index, grid)
local data = self.DynamicSelectTable.DataSource[index]
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
grid:SetData(data)
grid:SetSelected(self.CurrentSelectId)
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_TOUCHED then
self.CurrentSelectId = data.CharacterId
for _, grid in pairs(self.DynamicSelectTable:GetGrids()) do
grid:SetSelected(self.CurrentSelectId)
end
end
end
return XUiGuildDormPerson