198 lines
No EOL
7 KiB
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 |