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

122 lines
No EOL
4 KiB
Lua

XUiPanelFavorabilityExchangeRole = XClass(nil, "XUiPanelFavorabilityExchangeRole")
function XUiPanelFavorabilityExchangeRole:Ctor(ui, uiRoot)
self.GameObject = ui.gameObject
self.Transform = ui.transform
self.UiRoot = uiRoot
XTool.InitUiObject(self)
self.BtnCancel.CallBack = function() self:OnBtnCancelClick() end
end
-- [刷新切换角色界面]
function XUiPanelFavorabilityExchangeRole:RefreshDatas()
self:LoadDatas()
end
function XUiPanelFavorabilityExchangeRole:LoadDatas()
local characterId = self.UiRoot:GetCurrFavorabilityCharacter()
local allCharDatas = XDataCenter.CharacterManager.GetCharacterList()
local characterList = {}
for _, v in pairs(allCharDatas or {}) do
local isOwn = XDataCenter.CharacterManager.IsOwnCharacter(v.Id)
if isOwn then
table.insert(characterList, {
Id = v.Id,
TrustLv = v.TrustLv or 1,
Selected = (characterId == v.Id)
})
end
end
table.sort(characterList, function(characterA, characterB)
if characterA.TrustLv == characterB.TrustLv then
return characterA.Id < characterB.Id
end
return characterA.TrustLv > characterB.TrustLv
end)
self:UpdateCharacterList(characterList)
end
-- [刷新角色ListView]
function XUiPanelFavorabilityExchangeRole:UpdateCharacterList(charList)
if not charList then
XLog.Warning("XUiPanelFavorabilityExchangeRole:UpdateCharacterList error: charList is nil")
return
end
self.CharList = charList
if not self.DynamicTabelCharacters then
self.DynamicTabelCharacters = XDynamicTableNormal.New(self.SViewSelectRole.gameObject)
self.DynamicTabelCharacters:SetProxy(XUiGridLikeRoleItem)
self.DynamicTabelCharacters:SetDelegate(self)
end
self.DynamicTabelCharacters:SetDataSource(self.CharList)
self.DynamicTabelCharacters:ReloadDataASync()
end
-- [监听动态列表事件]
function XUiPanelFavorabilityExchangeRole:OnDynamicTableEvent(event, index, grid)
local characterId = self.UiRoot:GetCurrFavorabilityCharacter()
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_INIT then
grid:Init(self.UiRoot)
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
local data = self.CharList[index]
if not data then return end
grid:OnRefresh(self.CharList[index], index)
if characterId == data.Id then
self.CurCharacter = self.CharList[index]
self.CurCharacterGrid = grid
end
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_TOUCHED then
self.CurCharacter = self.CharList[index]
local isOwn = XDataCenter.CharacterManager.IsOwnCharacter(self.CurCharacter.Id)
if not isOwn then
XUiManager.TipMsg(CS.XTextManager.GetText("FavorabilityNotOwnChar"))
return
end
if self.CurCharacterGrid then
if self.CurCharacter then
self.CurCharacter.Selected = false
end
self.CurCharacterGrid:OnSelect()
end
self.CurCharacter.Selected = true
grid:OnSelect()
self.CurCharacterGrid = grid
self:OnChangeCharacter()
end
end
-- [换人确定按钮]
function XUiPanelFavorabilityExchangeRole:OnChangeCharacter()
if self.CurCharacter == nil then
return
end
local isOwn = XDataCenter.CharacterManager.IsOwnCharacter(self.CurCharacter.Id)
if not isOwn then
XUiManager.TipError(CS.XTextManager.GetText("FavorabilityNotOwnChar"))
return
end
self.UiRoot:SetCurrFavorabilityCharacter(self.CurCharacter.Id)
self.UiRoot:UpdateCamera(false)
self.UiRoot:CloseChangeRoleView()
end
-- [取消按钮]
function XUiPanelFavorabilityExchangeRole:OnBtnCancelClick()
local characterId = self.UiRoot:GetCurrFavorabilityCharacter()
self.UiRoot:ChangeCharacterModel(characterId)
self.UiRoot:UpdateCamera(false)
self.UiRoot:CloseChangeRoleView()
end
return XUiPanelFavorabilityExchangeRole