#pragma once #include "CoreMinimal.h" #include "Objective.h" #include "PlagueObjective.generated.h" class APlagueControlActor; class APlagueInfectionNode; class UDialogDataAsset; class UEnemyWaveController; UCLASS(Abstract, Blueprintable, ClassGroup=Custom, meta=(BlueprintSpawnableComponent)) class UPlagueObjective : public UObjective { GENERATED_BODY() public: protected: UPROPERTY(BlueprintReadWrite, EditAnywhere, Replicated, meta=(AllowPrivateAccess=true)) int32 StartPlagueAmount; UPROPERTY(BlueprintReadWrite, EditAnywhere, ReplicatedUsing=OnRep_CurrentPlagueAmount, meta=(AllowPrivateAccess=true)) int32 CurrentPlagueAmount; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) int32 TargetPlagueAmount; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float PercentageRequiredForCompletion; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) int32 SpawningTowersCount; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UDialogDataAsset* NodeKilledShout; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UDialogDataAsset* LastNodeKilledShout; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UDialogDataAsset* OverridePrimaryObjCompletedShout_SelfCompleted; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UDialogDataAsset* OverridePrimaryObjCompletedShout_SelfNotCompleted; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) bool AllPlagueCleaned; UPROPERTY(BlueprintReadWrite, EditAnywhere, Replicated, Transient, meta=(AllowPrivateAccess=true)) APlagueControlActor* PlagueController; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSoftClassPtr PlagueControllerClass; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TArray ActivePlagueCenters; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSoftClassPtr ScriptedPlagueWave; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float ScriptedPlagueWaveWeight; public: UPlagueObjective(); virtual void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; protected: UFUNCTION(BlueprintCallable) void OnRep_CurrentPlagueAmount(int32 OldAmount); public: UFUNCTION(BlueprintCallable, BlueprintPure) TArray GetPlagueCenters(); };