88 lines
3.4 KiB
Lua
88 lines
3.4 KiB
Lua
|
---@class WBP_TeamPanel_C:UUserWidget
|
||
|
---@field Panel_AttackBossInfo UWBP_AttackBossPanel_C
|
||
|
---@field PlayerList UVerticalBox
|
||
|
---@field Team_Item_1 UWBP_TeamPanel_Item_C
|
||
|
---@field Team_Item_2 UWBP_TeamPanel_Item_C
|
||
|
---@field Team_Item_3 UWBP_TeamPanel_Item_C
|
||
|
---@field Team_Item_4 UWBP_TeamPanel_Item_C
|
||
|
---@field TextBlock_CoinPoint UTextBlock
|
||
|
---@field TextBlock_KillPoint UTextBlock
|
||
|
--Edit Below--
|
||
|
local WBP_TeamPanel = {
|
||
|
bInitDoOnce = false,
|
||
|
|
||
|
TeamInfoPanels = {},
|
||
|
};
|
||
|
|
||
|
function WBP_TeamPanel:Construct()
|
||
|
WBP_TeamPanel.SuperClass.Construct(self)
|
||
|
self.Panel_AttackBossInfo:Construct() --engine bug fixed: 按理说construct不需要手动调用
|
||
|
|
||
|
self.TeamInfoPanels = {
|
||
|
self.Team_Item_1,
|
||
|
self.Team_Item_2,
|
||
|
self.Team_Item_3,
|
||
|
self.Team_Item_4,
|
||
|
}
|
||
|
|
||
|
for Idx, TeamItem in pairs(self.TeamInfoPanels) do
|
||
|
TeamItem:SetVisibility(ESlateVisibility.Collapsed)
|
||
|
end
|
||
|
|
||
|
self:Init()
|
||
|
self:RegisterEvents()
|
||
|
end
|
||
|
|
||
|
function WBP_TeamPanel:Destruct()
|
||
|
self:UnRegisterEvents()
|
||
|
WBP_TeamPanel.SuperClass.Destruct(self)
|
||
|
end
|
||
|
|
||
|
function WBP_TeamPanel:RegisterEvents()
|
||
|
EventSystem:AddListener(EventType.PlayerDataListChanged, WBP_TeamPanel.OnPlayerDataListChanged, self)
|
||
|
EventSystem:AddListener(EventType.PlayerCoinPointChanged, WBP_TeamPanel.OnPlayerCoinPointChanged, self)
|
||
|
EventSystem:AddListener(EventType.PlayerKillPointChanged, WBP_TeamPanel.OnPlayerKillPointChanged, self)
|
||
|
EventSystem:AddListener(EventType.OnGameStageChanged, WBP_TeamPanel.OnGameStageChange, self)
|
||
|
end
|
||
|
|
||
|
function WBP_TeamPanel:UnRegisterEvents()
|
||
|
EventSystem:RemoveListener(EventType.PlayerDataListChanged, WBP_TeamPanel.OnPlayerDataListChanged, self)
|
||
|
EventSystem:RemoveListener(EventType.PlayerCoinPointChanged, WBP_TeamPanel.OnPlayerCoinPointChanged, self)
|
||
|
EventSystem:RemoveListener(EventType.PlayerKillPointChanged, WBP_TeamPanel.OnPlayerKillPointChanged, self)
|
||
|
EventSystem:RemoveListener(EventType.OnGameStageChanged, WBP_TeamPanel.OnGameStageChange, self)
|
||
|
end
|
||
|
|
||
|
function WBP_TeamPanel:Init()
|
||
|
self:OnPlayerDataListChanged(UGCGameSystem.GameState.PlayerDataList)
|
||
|
self:OnPlayerCoinPointChanged(GameDataManager.GetLocalPlayerState().CoinPoint.Current)
|
||
|
self:OnPlayerKillPointChanged(GameDataManager.GetLocalPlayerState().KillPoint.Current)
|
||
|
self:OnGameStageChange(UGCGameSystem.GameState.GameStage)
|
||
|
end
|
||
|
|
||
|
function WBP_TeamPanel:OnPlayerDataListChanged(InPlayerDataList)
|
||
|
for PlayerKey, PlayerData in pairs(InPlayerDataList) do
|
||
|
UE.Log("[WBP_TeamPanel:OnPlayerDataListChanged] IndexInTeam=%d, PlayerKey=%d, PlayerName=%s", PlayerData.IdxInTeam, PlayerData.PlayerKey, PlayerData.PlayerName)
|
||
|
local TeamInfoItem = self.TeamInfoPanels[PlayerData.IdxInTeam]
|
||
|
if TeamInfoItem then
|
||
|
TeamInfoItem:SetPlayerData(PlayerData)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function WBP_TeamPanel:OnPlayerCoinPointChanged(InCoinPoint)
|
||
|
self.TextBlock_CoinPoint:SetText(tostring(math.ceil(InCoinPoint).." "))
|
||
|
end
|
||
|
|
||
|
function WBP_TeamPanel:OnPlayerKillPointChanged(InKillPoint)
|
||
|
self.TextBlock_KillPoint:SetText(tostring(math.ceil(InKillPoint).." "))
|
||
|
end
|
||
|
|
||
|
function WBP_TeamPanel:OnGameStageChange(InGameStage)
|
||
|
if InGameStage >= EGameStage.GameFight then
|
||
|
self.Panel_AttackBossInfo:SetVisibility(ESlateVisibility.SelfHitTestInvisible)
|
||
|
else
|
||
|
self.Panel_AttackBossInfo:SetVisibility(ESlateVisibility.Collapsed)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return WBP_TeamPanel;
|