PGRData/Script/matrix/xui/xuiguildwar/XUiGuildWarBattleRoleRoom.lua
2024-09-01 22:49:41 +02:00

178 lines
6.9 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--######################## XUiTeamSkillGrid ########################
local XUiTeamSkillGrid = XClass(nil, "XUiTeamSkillGrid")
function XUiTeamSkillGrid:Ctor(ui)
XUiHelper.InitUiClass(self, ui)
end
function XUiTeamSkillGrid:SetData(buffData, isActive, currentCount, maxCount)
self.RImgSkillIcon:SetRawImage(buffData.Icon)
self.TxtSkillName.text = string.format("%s(%s/%s)", buffData.Name, currentCount, maxCount)
self.TxtSkillDesc.text = buffData.Desc
self.PanelSelect.gameObject:SetActiveEx(isActive)
self.PanelNone.gameObject:SetActiveEx(not isActive)
end
--######################## XUiChildPanel ########################
local XUiChildPanel = XClass(nil, "XUiChildPanel")
function XUiChildPanel:Ctor(ui)
self.GuildWarManager = XDataCenter.GuildWarManager
XUiHelper.InitUiClass(self, ui)
end
function XUiChildPanel:SetData(team)
-- 特攻标记换了地方显示
for i = 1, 3 do
local uiIcon = self["RImgIcon" .. i]
uiIcon.gameObject:SetActiveEx(false)
end
end
--######################## XUiGuildWarBattleRoleRoom ########################
local XUiGuildWarFlagSpecialAndAssistant = require("XUi/XUiGuildWar/Assistant/XUiGuildWarFlagSpecialAndAssistant")
local XPartner = require("XEntity/XPartner/XPartner")
local XUiBattleRoleRoomDefaultProxy = require("XUi/XUiNewRoomSingle/XUiBattleRoleRoomDefaultProxy")
local XUiGuildWarBattleRoleRoom = XClass(XUiBattleRoleRoomDefaultProxy, "XUiGuildWarBattleRoleRoom")
function XUiGuildWarBattleRoleRoom:Ctor(team, stageId)
self.GuildWarManager = XDataCenter.GuildWarManager
---@type XGuildWarTeam
self.Team = team
end
function XUiGuildWarBattleRoleRoom:GetChildPanelData()
return {
assetPath = XUiConfigs.GetComponentUrl("UpCharacterIcon"),
proxy = XUiChildPanel,
proxyArgs = { "Team" },
}
end
function XUiGuildWarBattleRoleRoom:GetRoleDetailProxy()
return require("XUi/XUiGuildWar/XUiGuildWarBattleRoomRoleDetail")
end
function XUiGuildWarBattleRoleRoom:CreateCustomTipGo(panel)
panel.gameObject:SetActiveEx(true)
local go = panel:LoadPrefab(XUiConfigs.GetComponentUrl("UPCharacterTeamSkills"))
local teamSkillGrid = XUiTeamSkillGrid.New(go)
local teamBuff = self.GuildWarManager.GetSpecialTeamBuff()
if teamBuff == nil then return end
local currentCount, maxCount, isActive = self.GuildWarManager.CheckIsSpecialTeam(self.Team:GetMembers())
teamSkillGrid:SetData(teamBuff, isActive, currentCount, maxCount)
end
-- return : bool 是否开启自动关闭检查
-- , number 自动关闭的时间戳(秒)
-- , function 每秒更新的回调 function(isClose) isClose标志是否到达结束时间
function XUiGuildWarBattleRoleRoom:GetAutoCloseInfo()
return true, self.GuildWarManager.GetRoundEndTime(), function(isClose)
if isClose then
self.GuildWarManager.OnActivityEndHandler()
end
end
end
function XUiGuildWarBattleRoleRoom:AOPOnCharacterClickBefore(rootUi, index)
RunAsyn(function()
local oldMember = rootUi.Team:GetMember(index)
local oldEntityId = oldMember and oldMember:GetEntityId()
XLuaUiManager.Open("UiGuildWarCharacterSelect", rootUi.Team , index)
local signalCode, newMemberData = XLuaUiManager.AwaitSignal("UiGuildWarCharacterSelect", "UpdateEntityId", self)
if signalCode ~= XSignalCode.SUCCESS then return end
local newEntityId = newMemberData and newMemberData.EntityId
if oldEntityId == newEntityId then return end
if not rootUi.Team:GetMember(index) then return end
-- 播放音效
local soundType = XFavorabilityConfigs.SoundEventType.MemberJoinTeam
if rootUi.Team:GetCaptainPos() == index then
soundType = XFavorabilityConfigs.SoundEventType.CaptainJoinTeam
end
rootUi.FavorabilityManager.PlayCvByType(newMemberData.EntityId, soundType)
end)
return true
end
function XUiGuildWarBattleRoleRoom:AOPHideCharacterLimits()
return true
end
function XUiGuildWarBattleRoleRoom:ClearErrorTeamEntityId(team)
team:KickOutInvalidMembers()
end
---@param team XGuildWarTeam
function XUiGuildWarBattleRoleRoom:AOPGoPartnerCarry(team, pos)
team:GoPartnerCarry(pos)
return true
end
-- 检查是否满足关卡配置的强制性条件
-- return : bool
function XUiGuildWarBattleRoleRoom:CheckStageForceConditionWithTeamEntityId(team, stageId, showTip)
local fubenManager = XDataCenter.FubenManager
local _, forceConditionIds = fubenManager.GetConditonByMapId(stageId)
return fubenManager.CheckFightConditionByTeamData(forceConditionIds, team:GetEntityIds(), showTip)
end
-- 根据实体id获取角色视图数据
-- return : XCharacterViewModel
function XUiGuildWarBattleRoleRoom:GetCharacterViewModelByEntityId(entityId)
local member = self.Team:GetMemberByEntityId(entityId)
return member and member:GetCharacterViewModel() or nil
end
-- 通过实体Id获取角色Id基本上只要实现好GetCharacterViewModelByEntityId接口可不必处理该接口
-- return : number 角色id
function XUiGuildWarBattleRoleRoom:GetCharacterIdByEntityId(entityId)
local viewModel = self:GetCharacterViewModelByEntityId(entityId)
if viewModel == nil then return end
return viewModel:GetId()
end
-- 获取实体战力,如有特殊战力计算公式,可重写
-- return : number 战力
function XUiGuildWarBattleRoleRoom:GetRoleAbility(entityId)
local member = self.Team:GetMemberByEntityId(entityId)
return member:GetAbility()
end
-- 根据实体Id获取伙伴实体
-- return : XPartner
function XUiGuildWarBattleRoleRoom:GetPartnerByEntityId(entityId)
local member = self.Team:GetMemberByEntityId(entityId)
if not member then return nil end
local partnerId = member:GetPartner()
if not partnerId then
return nil
end
return XPartner.New(nil, partnerId, true)
end
-- 进入战斗
-- team : XTeam
-- stageId : number
function XUiGuildWarBattleRoleRoom:EnterFight(team, stageId, challengeCount, isAssist)
XDataCenter.GuildWarManager.RequestSetTeam(team:GetTeamInfo(), function()
XUiGuildWarBattleRoleRoom.Super.EnterFight(self, team, stageId, challengeCount, isAssist)
end)
end
function XUiGuildWarBattleRoleRoom:AOPRefreshRoleInfosAfter(uiRoom)
if not uiRoom.UiPanelGuildwarTips1 then
uiRoom.UiPanelGuildwarTips1 = XUiGuildWarFlagSpecialAndAssistant.New(uiRoom.PanelGuildwarTips1)
end
if not uiRoom.UiPanelGuildwarTips2 then
uiRoom.UiPanelGuildwarTips2 = XUiGuildWarFlagSpecialAndAssistant.New(uiRoom.PanelGuildwarTips2)
end
if not uiRoom.UiPanelGuildwarTips3 then
uiRoom.UiPanelGuildwarTips3 = XUiGuildWarFlagSpecialAndAssistant.New(uiRoom.PanelGuildwarTips3)
end
uiRoom.UiPanelGuildwarTips1:Update(uiRoom.Team:GetMember(1))
uiRoom.UiPanelGuildwarTips2:Update(uiRoom.Team:GetMember(2))
uiRoom.UiPanelGuildwarTips3:Update(uiRoom.Team:GetMember(3))
end
return XUiGuildWarBattleRoleRoom