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

198 lines
No EOL
7 KiB
Lua

local XUiFavorabilityLineRoomCharacter = XLuaUiManager.Register(XLuaUi, "UiFavorabilityLineRoomCharacter")
local XUiPanelRoleModel = require("XUi/XUiCharacter/XUiPanelRoleModel")
function XUiFavorabilityLineRoomCharacter:OnAwake()
self:InitUi()
local root = self.UiModelGo.transform
self.PanelRoleModel = root:FindTransform("PanelRoleModel")
self.ImgEffectHuanren = root:FindTransform("ImgEffectHuanren")
self.ImgEffectHuanren1 = root:FindTransform("ImgEffectHuanren1")
self.ImgEffectHuanren1.gameObject:SetActive(false)
self.ImgEffectHuanren.gameObject:SetActive(false)
end
function XUiFavorabilityLineRoomCharacter:InitUi()
self.AssetPanel = XUiPanelAsset.New(self, self.PanelAsset, XDataCenter.ItemManager.ItemId.FreeGem, XDataCenter.ItemManager.ItemId.ActionPoint, XDataCenter.ItemManager.ItemId.Coin)
self.BtnBack.CallBack = function()
self:Close()
end
self.BtnMainUi.CallBack = function()
XLuaUiManager.RunMain()
end
self.BtnExchange.CallBack = function()
self:OnBtnExchangeClick()
end
self.BtnFashion.CallBack = function()
self:OnBtnFashionClick()
end
self.DynamicTableCharacter = XDynamicTableNormal.New(self.SViewCharacterList.gameObject)
self.DynamicTableCharacter:SetProxy(XUiGridLineCharacter)
self.DynamicTableCharacter:SetDelegate(self)
end
function XUiFavorabilityLineRoomCharacter:OnStart()
self.RoleModelPanel = XUiPanelRoleModel.New(self.PanelRoleModel, self.Name, nil, true)
self.Characters = self:LoadDatas()
local index = 1
for i, v in ipairs(self.Characters) do
if v.Selected then
self.CurCharacter = v
index = i
break
end
end
self.DynamicTableCharacter:SetDataSource(self.Characters)
self.DynamicTableCharacter:ReloadDataASync(index)
end
function XUiFavorabilityLineRoomCharacter:OnEnable()
local curAssistantId = self.CurCharacter and self.CurCharacter.Id or XDataCenter.DisplayManager.GetDisplayChar().Id
self:UpdateRoleModel(curAssistantId)
self:UpdateChangeStatus(curAssistantId)
local charType = XCharacterConfigs.GetCharacterType(curAssistantId)
if charType == 1 then
self.ImgEffectHuanren.gameObject:SetActive(false)
self.ImgEffectHuanren.gameObject:SetActive(true)
else
self.ImgEffectHuanren1.gameObject:SetActive(false)
self.ImgEffectHuanren1.gameObject:SetActive(true)
end
end
function XUiFavorabilityLineRoomCharacter:LoadDatas()
local curAssistantId = XDataCenter.DisplayManager.GetDisplayChar().Id
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 = (curAssistantId == 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)
return characterList
end
-- [监听动态列表事件]
function XUiFavorabilityLineRoomCharacter: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.Characters[index]
if not data then return end
grid:OnRefresh(self.Characters[index], index)
local selected = data.Selected or false
if selected then
self.CurCharacter = self.Characters[index]
self.CurCharacterGrid = grid
end
if data.Id == XDataCenter.DisplayManager.GetDisplayChar().Id then
self.CurAssist = grid
end
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_TOUCHED then
if not self.Characters[index] then return end
if self.CurCharacterGrid then
if self.CurCharacter then
self.CurCharacter.Selected = false
end
self.CurCharacterGrid:OnSelect()
end
self.CurCharacter = self.Characters[index]
self.CurCharacter.Selected = true
self.CurCharacterGrid = grid
grid:OnSelect()
self:UpdateRoleModel(self.CurCharacter.Id)
self:UpdateChangeStatus(self.CurCharacter.Id)
end
end
function XUiFavorabilityLineRoomCharacter:UpdateChangeStatus(characterId)
local currDisplayId = XDataCenter.DisplayManager.GetDisplayChar().Id
local isOwn = XDataCenter.CharacterManager.IsOwnCharacter(characterId)
if not isOwn then
self.BtnExchange:SetButtonState(CS.UiButtonState.Disable)
return
end
local btnState = (currDisplayId ~= characterId) and CS.UiButtonState.Normal or CS.UiButtonState.Disable
self.BtnExchange:SetButtonState(btnState)
end
function XUiFavorabilityLineRoomCharacter:OnBtnExchangeClick()
if not self.CurCharacter then return end
local isOwn = XDataCenter.CharacterManager.IsOwnCharacter(self.CurCharacter.Id)
if not isOwn then
XUiManager.TipMsg(CS.XTextManager.GetText("FavorabilityNotOwnChar"))
return
end
local currDisplayId = XDataCenter.DisplayManager.GetDisplayChar().Id
local characterId = self.CurCharacter.Id
if currDisplayId ~= characterId then
XDataCenter.DisplayManager.SetDisplayCharById(characterId, function()
if self.CurAssist then
self.CurAssist:RefreshAssist()
end
self.CurAssist = self.CurCharacterGrid
self.CurCharacterGrid:RefreshAssist()
self:UpdateChangeStatus(characterId)
local currDisplayCharacterName = XCharacterConfigs.GetCharacterName(characterId)
local displayTips = CS.XTextManager.GetText("FavorabilitySetAssistSucc", currDisplayCharacterName)
XUiManager.TipMsg(displayTips)
end)
end
end
function XUiFavorabilityLineRoomCharacter:OnBtnFashionClick()
if not self.CurCharacter then return end
local isOwn = XDataCenter.CharacterManager.IsOwnCharacter(self.CurCharacter.Id)
if not isOwn then
XUiManager.TipMsg(CS.XTextManager.GetText("FavorabilityNotOwnChar"))
return
end
XLuaUiManager.Open("UiFashion", self.CurCharacter.Id)
end
function XUiFavorabilityLineRoomCharacter:UpdateRoleModel(characterId)
local charType = XCharacterConfigs.GetCharacterType(characterId)
self.RoleModelPanel:UpdateCharacterModel(characterId, self.PanelRoleModel, XModelManager.MODEL_UINAME.XUiFavorabilityLineRoomCharacter, nil, function()
if charType == 1 then
self.ImgEffectHuanren.gameObject:SetActive(false)
self.ImgEffectHuanren.gameObject:SetActive(true)
else
self.ImgEffectHuanren1.gameObject:SetActive(false)
self.ImgEffectHuanren1.gameObject:SetActive(true)
end
end)
end