#pragma once #include "CoreMinimal.h" #include "Objective.h" #include "RepairObjective.generated.h" class AActor; class UDebrisPositioning; class UGemResourceData; class URepairableComponent; UCLASS(Blueprintable, ClassGroup=Custom, meta=(BlueprintSpawnableComponent)) class URepairObjective : public UObjective { GENERATED_BODY() public: protected: UPROPERTY(BlueprintReadWrite, EditAnywhere, ReplicatedUsing=OnRep_RepairedObjectives, meta=(AllowPrivateAccess=true)) int32 RepairedObjectives; UPROPERTY(BlueprintReadWrite, EditAnywhere, ReplicatedUsing=OnRep_ObjectivesToRepair, meta=(AllowPrivateAccess=true)) int32 ObjectivesToRepair; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSoftClassPtr RepairObjectiveClass; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UGemResourceData* RepairObjectiveResource; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UDebrisPositioning* Positioning; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) int32 RepairResourcesPerActor; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float RepairResourceDistanceFromActor; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float MinRepairObjectiveDistanceToLandingZone; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) TArray RepairedObjectivesList; public: URepairObjective(); virtual void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; protected: UFUNCTION(BlueprintCallable) void OnRep_RepairedObjectives(); UFUNCTION(BlueprintCallable) void OnRep_ObjectivesToRepair(); UFUNCTION(BlueprintCallable) void OnObjectiveRepaired(URepairableComponent* repairable); UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void AllObjectivesRepaired(); };