#pragma once #include "CoreMinimal.h" #include "ResourceBasedObjective.h" #include "ResourceObjective.generated.h" class UCappedResource; class UResourceData; UCLASS(Abstract, Blueprintable, ClassGroup=Custom, meta=(BlueprintSpawnableComponent)) class FSD_API UResourceObjective : public UResourceBasedObjective { GENERATED_BODY() public: protected: UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UResourceData* Resource; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float ResourcesRequired; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, ReplicatedUsing=OnRep_ResourcesCollected, meta=(AllowPrivateAccess=true)) float ResourcesCollected; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float ResourceBuffer; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float RoundToNearest; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FText ObjectivesText; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FText CreditsRewardText; public: UResourceObjective(); virtual void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; protected: UFUNCTION(BlueprintCallable) void OnResourceChanged(UCappedResource* CappedResource, float Amount); UFUNCTION(BlueprintCallable) void OnRep_ResourcesCollected(float prevAmount); public: UFUNCTION(BlueprintCallable, BlueprintPure) float GetRequiredAmount(float missionScaling) const; };