5#include "CoreMinimal.h"
6#include "Components/ActorComponent.h"
7#include "GameFramework/Actor.h"
8#include "GlobalAmmoComponent.generated.h"
17 GENERATED_USTRUCT_BODY()
23 RestockModifier = Modifier;
39 float RestockTimerStart = -1.f;
41 float RestockModifier = 0.0f;
48 void UpdateProgressAmmoRestock(class UGlobalAmmoComponent*
OwningComponent);
51 void ClientCheckRestockTimer(class UGlobalAmmoComponent*
OwningComponent);
57 return this->IsEqualTo(Other);
62 return !(*
this == Other);
73UCLASS( ClassGroup=(
Custom), meta=(BlueprintSpawnableComponent) )
74class PROJECTX_API UGlobalAmmoComponent :
public UActorComponent
78 UGlobalAmmoComponent();
82 virtual
void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
89 UFUNCTION(BlueprintCallable, Category = PlayerState)
92 UFUNCTION(BlueprintCallable, Category = PlayerState)
100 TMap<TSubclassOf<
UWeaponInstance>, FTimerHandle>& GetRestockTimerMap() {
return GlobalAmmoTimerMap; }
101 TMap<TSubclassOf<UWeaponInstance>, int32>& GetRestockInterpolatorMap() {
return GlobalAmmoInterpolatorMap; }
104 void ForceNetUpdate() {
if (GetOwner()) { GetOwner()->ForceNetUpdate(); } }
107 virtual void OverrideWith(UGlobalAmmoComponent* GlobalAmmoComponent);
108 virtual void CopyProperties(UGlobalAmmoComponent* GlobalAmmoComponent);
111 UPROPERTY(BlueprintAssignable, Category = PlayerState)
112 FGlobalAmmoChangedSignature OnGlobalAmmoChanged;
113 UPROPERTY(BlueprintAssignable, Category = PlayerState)
114 FGlobalAmmoRestockTimerChangedSignature OnGlobalAmmoRestockTimerChanged;
115 UPROPERTY(BlueprintAssignable, Category = PlayerState)
116 FGlobalAmmoRestockCompleteSignature OnGlobalAmmoRestockComplete;
118 void MarkGlobalAmmoDirty();
124 UPROPERTY(Replicated)
125 TArray<FGlobalWeaponAmmo> GlobalAmmoList;
126 UPROPERTY(ReplicatedUsing = OnRep_GlobalAmmoList)
128 TArray<FGlobalWeaponAmmo> PreviousGlobalAmmoList;
130 TMap<TSubclassOf<UWeaponInstance>, FTimerHandle> GlobalAmmoTimerMap;
131 TMap<TSubclassOf<UWeaponInstance>, int32> GlobalAmmoInterpolatorMap;
134 virtual
void OnRep_GlobalAmmoList();
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FGlobalAmmoRestockTimerChangedSignature, TSubclassOf< UWeaponInstance >, Weapon, FTimerHandle, Timer)
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FGlobalAmmoChangedSignature)
Definition: WeaponInstance.h:220
virtual bool ConsumeAmmo(float Amount, uint8 Mode=0)
Definition: WeaponInstance.cpp:2073
virtual bool HasEnoughAmmo(float Amount, uint8 Mode=0) const
Definition: WeaponInstance.cpp:2052
UWeaponComponent * OwningComponent
Definition: WeaponInstance.h:1182
Definition: GlobalAmmoComponent.h:16
FGlobalWeaponAmmo()
Definition: GlobalAmmoComponent.h:26
bool operator!=(const FGlobalWeaponAmmo &Other) const
Definition: GlobalAmmoComponent.h:60
static FGlobalWeaponAmmo InvalidEntry
Definition: GlobalAmmoComponent.h:66