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

86 lines
No EOL
3.6 KiB
Lua

--######################## XUiBossSingleRoleGrid ########################
local XUiBattleRoomRoleGrid = require("XUi/XUiNewRoomSingle/XUiBattleRoomRoleGrid")
local XUiBossSingleRoleGrid = XClass(XUiBattleRoomRoleGrid, "XUiBossSingleRoleGrid")
function XUiBossSingleRoleGrid:SetData(entity)
self.Super.SetData(self, entity)
self.PanelStaminaBar.gameObject:SetActiveEx(true)
local maxStamina = XDataCenter.FubenBossSingleManager.GetMaxStamina()
local curStamina = maxStamina - XDataCenter.FubenBossSingleManager.GetCharacterChallengeCount(entity:GetId())
self.ImgStaminaExpFill.fillAmount = curStamina / maxStamina
end
--######################## XUiBossSingleBattleRoleRoom ########################
local XUiBattleRoleRoomDefaultProxy = require("XUi/XUiNewRoomSingle/XUiBattleRoleRoomDefaultProxy")
local XUiBossSingleBattleRoleRoom = XClass(XUiBattleRoleRoomDefaultProxy, "XUiBossSingleBattleRoleRoom")
function XUiBossSingleBattleRoleRoom:Ctor()
self.FubenBossSingleManager = XDataCenter.FubenBossSingleManager
end
function XUiBossSingleBattleRoleRoom:GetRoleDetailProxy()
return {
AOPOnBtnJoinTeamClickedBefore = function(proxy, rootUi)
local challengeCount = self.FubenBossSingleManager.GetCharacterChallengeCount(rootUi.CurrentEntityId)
if challengeCount >= self.FubenBossSingleManager.GetMaxStamina() then
XUiManager.TipCode(XCode.FubenBossSingleCharacterPointsNotEnough)
return true
end
end,
GetGridProxy = function()
return XUiBossSingleRoleGrid
end,
GetFilterControllerConfig = function ()
---@type XCharacterAgency
local ag = XMVCA:GetAgency(ModuleId.XCharacter)
return ag:GetModelCharacterFilterController()["UiFubenBossSingle"]
end
}
end
-- team : XTeam
-- stageId : number
function XUiBossSingleBattleRoleRoom:EnterFight(team, stageId, challengeCount, isAssist)
if not self:CheckRoleStanmina(team) then
return
end
self.Super.EnterFight(self,team, stageId, challengeCount, isAssist)
end
function XUiBossSingleBattleRoleRoom:AOPRefreshRoleInfosAfter(rootUi)
local entityIds = rootUi.Team:GetEntityIds()
local viewModel
local content
local maxStamina = self.FubenBossSingleManager.GetMaxStamina()
local curStamina
for index, id in ipairs(entityIds) do
viewModel = self:GetCharacterViewModelByEntityId(id)
rootUi["PanelStaminaBar" .. index].gameObject:SetActiveEx(viewModel ~= nil)
if viewModel then
curStamina = maxStamina - self.FubenBossSingleManager.GetCharacterChallengeCount(viewModel:GetId())
content = XUiHelper.GetText("RoomStamina", curStamina, maxStamina)
rootUi["TxtMyStamina" .. index].text = content
rootUi["ImgStaminaExpFill" .. index].fillAmount = curStamina / maxStamina
end
end
end
----------------------------------------
function XUiBossSingleBattleRoleRoom:CheckRoleStanmina(team)
for i = 1, 3 do
local posData = team:GetEntityIdByTeamPos(i)
if posData and posData > 0 then
local curStamina = self.FubenBossSingleManager.GetMaxStamina() - self.FubenBossSingleManager.GetCharacterChallengeCount(posData)
if curStamina <= 0 then
local charName = XCharacterConfigs.GetCharacterName(posData)
local text = CSXTextManagerGetText("BossSingleNoStamina", charName)
XUiManager.TipError(text)
return false
end
end
end
return true
end
return XUiBossSingleBattleRoleRoom