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

76 lines
1.8 KiB
Lua

---@class BP_BuffItem_C:BP_CustomItemBase_C
---@field ParticleSystem UParticleSystemComponent
---@field Widget UWidgetComponent
---@field DynamicTextRender UDynamicTextRenderComponent
--Edit Below--
local ItemBase = require('Script.Blueprint/SceneObj/PickUp/BP_CustomItemBase')
---@type BP_BuffItem_C
local BP_BuffItem = ItemBase:new(DefaultSettings.SceneObj.Buff);
function BP_BuffItem:ReceiveBeginPlay()
self:LuaInit();
end
function BP_BuffItem:PostInit()
if IsClient then
self.DynamicTextRender:Deactivate();
end
end
---@param InPawn
function BP_BuffItem:OnPlayerAddItem(InPawn)
InPawn:ApplyBuff(self.ItemId);
self:OnItemUsed(InPawn);
end
--- 随机添加一个新的 Buff
function BP_BuffItem:RandomNewItem()
-- 要不等于自己
self:SetItemId(BuffTable.RandomBuff());
end
function BP_BuffItem:OnRep_ItemId()
UGCLogSystem.Log("[BP_BuffItem:OnRep_BuffId] ItemId = %s", tostring(self.ItemId));
self.DynamicTextRender:SetText(self:GetBuffName());
self.Widget:SetVisibility(self:IsItemIdValid());
self:HandleEffect(self.ParticleSystem, "SceneObj_Buff");
end
function BP_BuffItem:GetBuffName()
if self.ItemId == 0 then return '' end
if BuffTable.BuffInfo[self.ItemId] == nil then return '' end
return BuffTable.GetBuffName(self.ItemId);
end
function BP_BuffItem:ReceiveTick(DeltaTime)
self.SuperClass.ReceiveTick(self, DeltaTime);
if IsClient then
if LocalPlayerKey ~= nil then
-- 锁住 Y
local Pawn = UGCGameSystem.GetPlayerPawnByPlayerKey(LocalPlayerKey);
if Pawn then
UE.ComponentTowardActor(self.Widget, Pawn, "Y");
end
end
end
end
--[[
function BP_BuffItem:ReceiveEndPlay()
self.SuperClass.ReceiveEndPlay(self);
end
--]]
--function BP_BuffItem:GetReplicatedProperties()
-- return
--end
--[[
function BP_BuffItem:GetAvailableServerRPCs()
return
end
--]]
return BP_BuffItem;