UGCProjects/SoldierWar/Script/Blueprint/UGCPlayerState.lua
2025-01-04 23:00:19 +08:00

93 lines
2.4 KiB
Lua

---@class UGCPlayerState_C:BP_UGCPlayerState_C
--Edit Below--
---@type UGCPlayerState_C
local UGCPlayerState = {};
UGCPlayerState.WeaponInfiniteType = 0;
--- 用于技能的能量,对应着的是 SkillConfig 里面的 Cost
UGCPlayerState.SkillEnergy = 0;
UGCPlayerState.MaxSkillEnergy = 100;
--function UGCPlayerState:ReceiveBeginPlay()
-- self.SuperClass.ReceiveBeginPlay(self);
--end
--function UGCPlayerState:ReceiveTick(DeltaTime)
-- self.SuperClass.ReceiveTick(self, DeltaTime);
--end
--[[
function UGCPlayerState:ReceiveEndPlay()
self.SuperClass.ReceiveEndPlay(self);
end
--]]
function UGCPlayerState:AddSkillEnergy(InVal)
if InVal == 0 then
return true;
elseif InVal < 0 then
if self.SkillEnergy + InVal < 0 then return false; end
self.SkillEnergy = self.SkillEnergy + InVal;
else
self.SkillEnergy = math.clamp(self.SkillEnergy + InVal, 0, self.MaxSkillEnergy)
end
DOREPONCE(self, "SkillEnergy");
return true;
end
function UGCPlayerState:AddArchiveData(InKey, InVal)
local ArchiveData = UGCPlayerStateSystem.GetPlayerArchiveData(self.UID);
if ArchiveData[InKey] == nil then
ArchiveData[InKey] = InVal;
end
UGCPlayerStateSystem.SavePlayerArchiveData(self.UID, ArchiveData);
end
function UGCPlayerState:GetArchiveData(InKey)
local ArchiveData = UGCPlayerStateSystem.GetPlayerArchiveData(self.UID);
return ArchiveData;
end
--- 每次玩家选择兵种都会在此记录
function UGCPlayerState:AddArchive_Soldier(InSoldier)
if InSoldier == nil then return ; end
local Data = UGCPlayerStateSystem.GetPlayerArchiveData(self.UID);
if Data.Soldiers == nil then Data.Soldiers = {}; end
Data.Soldiers[InSoldier] = (Data.Soldiers[InSoldier] or 0) + 1;
UGCPlayerStateSystem.SavePlayerArchiveData(self.UID, Data);
end
function UGCPlayerState:GetReplicatedProperties()
return
{ "WeaponInfiniteType", "Lazy" }
, { "SkillEnergy", "Lazy" }
end
---@param InType EFillBulletType
function UGCPlayerState:SetInfiniteType(InType)
self.WeaponInfiniteType = InType;
DOREPONCE(self, "WeaponInfiniteType");
end
function UGCPlayerState:GetInfiniteType() return self.WeaponInfiniteType; end
--- 重置击杀数
function UGCPlayerState:ResetKillNum()
-- 重置击杀数
self.Kills = 0;
self.KillPlayerNum = 0;
DOREPONCE(self, "Kills")
DOREPONCE(self, "KillPlayerNum")
end
function UGCPlayerState:ResetGame()
self:ResetKillNum();
end
--[[
function UGCPlayerState:GetAvailableServerRPCs()
return
end
--]]
return UGCPlayerState;