PGRData/Script/matrix/xui/xuimonstercombat/monster/XUiMonsterCombatInfo.lua
2024-09-01 22:49:41 +02:00

130 lines
No EOL
4.9 KiB
Lua

---@class XUiMonsterCombatInfo : XLuaUi
---@field BtnSkillGroup XUiButtonGroup
local XUiMonsterCombatInfo = XLuaUiManager.Register(XLuaUi, "UiMonsterCombatInfo")
local TabBtnIndex = {
Skill = 1, -- 技能
BindingSkill = 2, -- 羁绊技能
}
function XUiMonsterCombatInfo:OnAwake()
self:RegisterUiEvents()
self.PanelSkill.gameObject:SetActiveEx(false)
self.PanelBindingSkill.gameObject:SetActiveEx(false)
self.GridImgStarList = {}
self.GridBuffCharacterList = {}
end
---@param rootUi XUiMonsterCombatRoleList
function XUiMonsterCombatInfo:OnStart(rootUi)
self.RootUi = rootUi
local tabBtns = { self.BtnSkill, self.BtnBindingSkill }
self.BtnSkillGroup:Init(tabBtns, function(index) self:OnSelectSkillClick(index) end)
end
function XUiMonsterCombatInfo:Refresh(monsterId)
self.MonsterId = monsterId
self.MonsterEntity = XDataCenter.MonsterCombatManager.GetMonsterEntity(monsterId)
self:RefreshMonsterView()
self:RefreshMonsterStatus()
self.BtnSkillGroup:SelectIndex(1)
end
function XUiMonsterCombatInfo:RefreshMonsterView()
-- 怪物名称
self.TxtName.text = self.MonsterEntity:GetName()
self.TxtMosterName.text = self.MonsterEntity:GetName()
-- 负重
local cost = self.MonsterEntity:GetCost()
for i = 1, cost do
local grid = self.GridImgStarList[i]
if not grid then
grid = i == 1 and self.ImgStar or XUiHelper.Instantiate(self.ImgStar, self.PanelStars)
self.GridImgStarList[i] = grid
end
grid.gameObject:SetActiveEx(true)
end
for i = cost + 1, #self.GridImgStarList do
self.GridImgStarList[i].gameObject:SetActiveEx(false)
end
-- 战斗时间
self.TxtTime.text = XUiHelper.GetText("UiMonsterCombatMonsterFightTimeDesc", self.MonsterEntity:GetFightTime())
-- 怪物描述
self.TxtDate.text = self.MonsterEntity:GetDescription()
-- 解锁条件
self.TxtCondition.text = self.MonsterEntity:GetUnlockConditionDesc()
-- 主动技能
self.TxtActiveSkillName.text = self.MonsterEntity:GetActiveSkillName()
self.TxtActiveSkillDesc.text = self.MonsterEntity:GetActiveSkillDesc()
self.TxtActiveSkillCooling.text = XUiHelper.GetText("UiMonsterCombatMonsterCoolingTimeDesc", self.MonsterEntity:GetActiveSkillCooling())
-- 被动技能
self.TxtPassiveSkillName.text = self.MonsterEntity:GetPassiveSkillName()
self.TxtPassiveSkillDesc.text = self.MonsterEntity:GetPassiveSkillDesc()
-- 羁绊技能
local buffConfig = XMonsterCombatConfigs.GetBuffConfigByMonsterId(self.MonsterId)
self.TxtBuffName.text = buffConfig.Name
self.TxtBuffDesc.text = XUiHelper.ConvertLineBreakSymbol(buffConfig.Description)
-- 羁绊角色
local characterIds = buffConfig.CharacterIds
local charNum = #characterIds
for i = 1, charNum do
local grid = self.GridBuffCharacterList[i]
if not grid then
local go = i == 1 and self.GridCommon or XUiHelper.Instantiate(self.GridCommon, self.PanelDropContent)
grid = XTool.InitUiObjectByUi({}, go)
self.GridBuffCharacterList[i] = grid
end
local characterId = characterIds[i]
local headIcon = XDataCenter.CharacterManager.GetCharSmallHeadIcon(characterId)
grid.RImgIcon:SetRawImage(headIcon)
grid.Name.text = XEntityHelper.GetCharacterTradeName(characterId)
grid.GameObject:SetActiveEx(true)
end
for i = charNum + 1, #self.GridBuffCharacterList do
self.GridBuffCharacterList[i].GameObject:SetActiveEx(false)
end
end
function XUiMonsterCombatInfo:RefreshMonsterStatus()
local isUnlock = self.MonsterEntity:CheckIsUnlock()
self.PanelOwnedInfo.gameObject:SetActiveEx(isUnlock)
self.PanelOwnedInfoLock.gameObject:SetActiveEx(not isUnlock)
end
function XUiMonsterCombatInfo:SetJoinBtnIsActive(value)
self.BtnJoinTeam.gameObject:SetActiveEx(value)
self.BtnQuitTeam.gameObject:SetActiveEx(not value)
end
function XUiMonsterCombatInfo:SetTeamBtnStatus(value)
self.BtnQuitTeam.gameObject:SetActiveEx(value)
self.BtnJoinTeam.gameObject:SetActiveEx(value)
end
-- 怪物描述
function XUiMonsterCombatInfo:SetPanelDateActive(value)
if self.PanelDate then
self.PanelDate.gameObject:SetActiveEx(value)
end
end
function XUiMonsterCombatInfo:OnSelectSkillClick(index)
self.PanelSkill.gameObject:SetActiveEx(index == TabBtnIndex.Skill)
self.PanelBindingSkill.gameObject:SetActiveEx(index == TabBtnIndex.BindingSkill)
end
function XUiMonsterCombatInfo:RegisterUiEvents()
XUiHelper.RegisterClickEvent(self, self.BtnQuitTeam, self.OnBtnQuitTeamClick)
XUiHelper.RegisterClickEvent(self, self.BtnJoinTeam, self.OnBtnJoinTeamClick)
end
function XUiMonsterCombatInfo:OnBtnQuitTeamClick()
self.RootUi:OnBtnQuitTeamClicked()
end
function XUiMonsterCombatInfo:OnBtnJoinTeamClick()
self.RootUi:OnBtnJoinTeamClicked()
end
return XUiMonsterCombatInfo