2025-01-04 23:00:19 +08:00

91 lines
3.5 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.

local BuffAction_ShowEnemyPos = {
-- 以下参数信息可以通过manager的 GetBuffDefaultParam(BuffPath, ParamName)来获取 --
-- 默认颜色信息,非必要参数
BuffColor = {R = 0.97, G = 0.88, B = 0.1, A = 1.};
--BuffIconPath = "默认Icon路径非必要参数";
--BuffParticlePath = "默认粒子路径,非必要参数";
--BuffDesc = "Buff描述信息非必要参数";
--------------------------------------------------------------------------------
PlayerKey = {};
}
--- 必须包含ApplyBuff函数
---@param BuffTag any Buff的标签
---@param ValidPawn UGCPlayerPawn_C
---@tparam Any
---@return bool
function BuffAction_ShowEnemyPos:ApplyBuff(BuffTag, ValidPawn)
local SelfPlayerKey = ValidPawn.PlayerKey
local TeamId = UGCPlayerStateSystem.GetTeamID(SelfPlayerKey);
UGCSendRPCSystem.ActorRPCNotify(nil, UGCGameSystem.GameState, "ApplyShowEnemyPos", true, TeamId, self.BuffType);
self.PlayerKey = {};
local PCs = UGCGameSystem.GetAllPlayerController(false);
for i, v in pairs(PCs) do
local TheTeamId = UGCPlayerStateSystem.GetTeamID(v.PlayerKey);
if TeamId == TheTeamId then
self.PlayerKey[#self.PlayerKey + 1] = v.PlayerKey;
end
end
return true;
end
--- 可以包含RemoveBuff若包含该函数则玩家应用该Buff时会保存Buff信息缓存作为移除或者获取玩家当前Buff的备份信息
---@param BuffTag any Buff的标签
---@param ValidPawn UGCPlayerPawn_C
---@tparam Args ... Any Args顺序必须与ApplyBuff顺序一致
function BuffAction_ShowEnemyPos:RemoveBuff(BuffTag, ValidPawn)
-- Remove逻辑
-- 通过BuffManager调用RPC
--BP_BuffManager.GetBuffManager():BuffNotifyRPC(ValidPawn.PlayerKey, BP_BuffManager.GetBuffFileName(), "Client_RPCFunc", ValidPawn, false)
--UGCLogSystem.Log("[BuffAction_ShowEnemyPos:RemoveBuff] , self.BuffType = %s", self.BuffType);
--local TeamId = UGCPlayerStateSystem.GetTeamID(ValidPawn.PlayerKey);
--UGCSendRPCSystem.ActorRPCNotify(nil, UGCGameSystem.GameState, "ApplyShowEnemyPos", false, TeamId, self.BuffType);
end
function BuffAction_ShowEnemyPos:SetBuffType(InType)
UGCLogSystem.Log("[BuffAction_ShowEnemyPos:SetBuffType] InType = %s", tostring(InType));
self.BuffType = InType;
end
--- Tick函数 服务器客户端均会调用
--function BuffAction_ShowEnemyPos:Tick(DeltaTime)
-- -- Tick逻辑
--end
--- 触发的RPC函数
---@param ValidPawn UGCPlayerPawn_C
---@param Enable bool
function BuffAction_ShowEnemyPos:Client_RPCFunc(ValidPawn, Enable)
-- 显示一下
UGCLogSystem.Log("[BuffAction_ShowEnemyPos:Client_RPCFunc] 执行")
self:ApplyShowEnemyPos(Enable, ValidPawn.PlayerKey)
end
--- 应用显示敌方位置
function BuffAction_ShowEnemyPos:ApplyShowEnemyPos(Enable, TeamId)
if self.BuffType ~= nil then
local ShowTable = BP_BuffManager.CachedInit[self.BuffType];
local OtherTeamPlayers = UGCGameSystem.GameState:GetOtherPlayerKeys(TeamId);
if table.isEmpty(OtherTeamPlayers) then
return
end
for i = 1, #OtherTeamPlayers do
ShowTable[i]:SetTrackPlayerKey(OtherTeamPlayers[i]);
end
end
end
function BuffAction_ShowEnemyPos:GetBenefitPlayer()
return self.PlayerKey;
end
--- 当玩家死亡时会触发该函数作用于以PlayerKey给玩家Buff的BuffAction以防UGC的Pawn不删除机制所引发的Bug
function BuffAction_ShowEnemyPos:PlayerDeathCallBack(PlayerKey)
end
return BuffAction_ShowEnemyPos