DRG-Femboy-Voice/Source/FSD/Public/CappedResource.h
2025-04-15 12:39:31 -07:00

88 lines
2.8 KiB
C++
Executable file

#pragma once
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "UObject/Object.h"
#include "ResourceAddedSignatureDelegate.h"
#include "ResourceChangedSignatureDelegate.h"
#include "ResourceFullSignatureDelegate.h"
#include "CappedResource.generated.h"
class UCappedResource;
class UResourceData;
UCLASS(Blueprintable)
class UCappedResource : public UObject {
GENERATED_BODY()
public:
UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
FResourceChangedSignature OnChanged;
UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
FResourceAddedSignature OnIncreased;
UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
FResourceFullSignature OnFull;
protected:
UPROPERTY(BlueprintReadWrite, EditAnywhere, Replicated, meta=(AllowPrivateAccess=true))
UResourceData* Data;
UPROPERTY(BlueprintReadWrite, EditAnywhere, ReplicatedUsing=OnRep_CurrentAmount, meta=(AllowPrivateAccess=true))
float currentAmount;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Replicated, meta=(AllowPrivateAccess=true))
float MaxAmount;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Replicated, meta=(AllowPrivateAccess=true))
float TotalCollected;
UPROPERTY(BlueprintReadWrite, EditAnywhere, ReplicatedUsing=OnRep_FullFlag, meta=(AllowPrivateAccess=true))
int32 FullFlag;
public:
UCappedResource();
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
UFUNCTION(BlueprintCallable)
float TransferAll(UCappedResource* Receiver);
UFUNCTION(BlueprintCallable)
float Transfer(float Amount, UCappedResource* Receiver);
protected:
UFUNCTION(BlueprintCallable)
void OnRep_FullFlag(int32 OldValue);
UFUNCTION(BlueprintCallable)
void OnRep_CurrentAmount(float OldAmount);
UFUNCTION(BlueprintCallable, BlueprintPure, meta=(WorldContext="WorldContext"))
bool IsObjectiveResource(UObject* WorldContext, bool& IsCompleted) const;
public:
UFUNCTION(BlueprintCallable, BlueprintPure)
bool IsFull() const;
UFUNCTION(BlueprintCallable, BlueprintPure)
bool isEmpty() const;
UFUNCTION(BlueprintCallable, BlueprintPure)
bool IsCraftingResource() const;
UFUNCTION(BlueprintCallable, BlueprintPure)
FText GetTitle() const;
UFUNCTION(BlueprintCallable, BlueprintPure)
FColor GetColor() const;
UFUNCTION(BlueprintCallable, BlueprintPure)
float GetCapacityPct() const;
UFUNCTION(BlueprintCallable)
float Deduct(float Amount);
UFUNCTION(BlueprintCallable)
float Add(float Amount);
};