PGRData/Script/matrix/xui/xuinewroomsingle/XUiNewRoomSingleTip.lua

186 lines
6.5 KiB
Lua
Raw Normal View History

local XUiNewRoomSingleTip = XLuaUiManager.Register(XLuaUi, "UiNewRoomSingleTip")
local MAX_CHAR_COUNT = 3
function XUiNewRoomSingleTip:OnAwake()
self:AddListener()
self:InitSelectTabGroup()
for i = 1, MAX_CHAR_COUNT do
local panelEnable = string.format("%s%s", "Ena0", i)
local panelDisable = string.format("%s%s", "Dis0", i)
local btnSelect = string.format("%s%s", "BtnSel0", i)
if self[panelEnable] then
self[panelEnable].gameObject:SetActiveEx(false)
end
if self[panelDisable] then
self[panelDisable].gameObject:SetActiveEx(true)
end
if self[btnSelect] then
self[btnSelect]:SetButtonState(CS.UiButtonState.Disable)
end
end
end
function XUiNewRoomSingleTip:AddListener()
self.BtnTanchuangCloseBig.CallBack = function() self:OnCloseClick() end
end
function XUiNewRoomSingleTip:InitSelectTabGroup()
self.tabGroup = {
self.BtnSel01,
self.BtnSel02,
self.BtnSel03,
}
self.PanelBtnSel:Init(self.tabGroup, function(tabIndex)
self:OnClickTabCallBack(tabIndex)
end)
end
function XUiNewRoomSingleTip:OnClickTabCallBack(index)
if self.CurCaptainPos == index or self.tabGroup[index].ButtonState == CS.UiButtonState.Disable then
return
else
self.CurCaptainPos = index
end
end
---=================================
--- 'teamData'是当前队伍角色
--- 索引1中间2左边3右边
--- 值角色的CharacterId或RobotId
---
--- 'curCaptainPos'是当前队长技能位置
--- 当关闭当前界面时,会调用'cb'函数更新相应界面
---
---'characterIdToIsIsAssitantDic'是角色是否为援助角色(即该角色是否不属于自己的)
---索引角色的CharacterId或RobotId
---值:是否为援助角色
---@param rootUi table
---@param teamData table
---@param curCaptainPos number
---@param cb function
---=================================
function XUiNewRoomSingleTip:OnStart(rootUi, teamData, curCaptainPos, cb, characterIdToIsIsAssitantDic)
self.RootUi = rootUi
self.TeamData = teamData
self.CurCaptainPos = curCaptainPos
self.Cb = cb
self.CharacterIdToIsIsAssitantDic = characterIdToIsIsAssitantDic
self:Refresh()
end
function XUiNewRoomSingleTip:Refresh()
if not self.TeamData then
XLog.Error("XUiNewRoomSingleTip:Refresh函数错误self.TeamData为nil")
return
end
-- 设置三个角色栏的技能信息
for i, char in pairs(self.TeamData) do
local charId = 0
if self.RootUi.IsExpedition and self.RootUi:IsExpedition() then
local eCharCfg = XDataCenter.ExpeditionManager.GetMemberECfgByBaseId(char)
charId = eCharCfg and eCharCfg.RobotId or 0
else
charId = char
end
if charId > 0 then
local captianSkillInfo
local head
local skillDesc
local isAssitant
local charConfig = XCharacterConfigs.GetCharacterTemplate(charId)
if charConfig == nil then
return
end
if not XRobotManager.CheckIsRobotId(charId) then
-- 玩家角色
captianSkillInfo = XDataCenter.CharacterManager.GetCaptainSkillInfo(charId)
if captianSkillInfo == nil then
return
end
-- 如果机器人使用了CharacterId会误判断成玩家角色并使用玩家角色的数据
head = XDataCenter.CharacterManager.GetCharSmallHeadIcon(charId)
isAssitant = self.CharacterIdToIsIsAssitantDic and self.CharacterIdToIsIsAssitantDic[charId] or false
skillDesc = (captianSkillInfo.Level > 0 or isAssitant) and captianSkillInfo.Intro
or string.format("%s%s", captianSkillInfo.Intro, CS.XTextManager.GetText("CaptainSkillLock"))
else
-- 使用了RobotId的机器人
head = XRobotManager.GetRobotSmallHeadIcon(charId)
captianSkillInfo = XRobotManager.GetRobotCaptainSkillInfo(charId)
if captianSkillInfo == nil then
return
end
skillDesc = captianSkillInfo.Intro
end
local name = string.format("%s%s", "TextName0", i)
local skillName = string.format("%s%s", "TextJinengName0", i)
local ImgHead = string.format("%s%s", "RawImage0", i)
local skillInfo = string.format("%s%s", "TextJinengInfo0", i)
local panelEnable = string.format("%s%s", "Ena0", i)
local panelDisable = string.format("%s%s", "Dis0", i)
local btnSelect = string.format("%s%s", "BtnSel0", i)
if self[name] then
self[name].text = string.format("%s-%s", charConfig.Name, charConfig.TradeName)
end
if self[skillName] then
self[skillName].text = captianSkillInfo.Name
end
if head and self[ImgHead] then
self[ImgHead]:SetRawImage(head)
end
if skillDesc and self[skillInfo] then
self[skillInfo].text = skillDesc
end
if self[panelEnable] then
self[panelEnable].gameObject:SetActiveEx(true)
end
if self[panelDisable] then
self[panelDisable].gameObject:SetActiveEx(false)
end
if self[btnSelect] then
self[btnSelect]:SetButtonState(CS.UiButtonState.Normal)
end
else
local panelEnable = string.format("%s%s", "Ena0", i)
local panelDisable = string.format("%s%s", "Dis0", i)
local btnSelect = string.format("%s%s", "BtnSel0", i)
-- 当前位置未上阵角色
if self[panelEnable] then
self[panelEnable].gameObject:SetActiveEx(false)
end
if self[panelDisable] then
self[panelDisable].gameObject:SetActiveEx(true)
end
if self[btnSelect] then
self[btnSelect]:SetButtonState(CS.UiButtonState.Disable)
end
end
end
if not self.CurCaptainPos or self.CurCaptainPos <= 0 or self.CurCaptainPos > 3 then
XLog.Error("XUiNewRoomSingleTip:Refresh函数错误self.CurCaptainPos超出队伍索引范围")
return
end
self.PanelBtnSel:SelectIndex(self.CurCaptainPos)
end
function XUiNewRoomSingleTip:OnCloseClick()
if self.Cb then
self.Cb(self.CurCaptainPos)
end
self:Close()
end