#pragma once #include "CoreMinimal.h" #include "UObject/NoExportTypes.h" #include "UObject/NoExportTypes.h" #include "Engine/NetSerialization.h" #include "AnimatedItem.h" #include "CharacterChangedDelegateDelegate.h" #include "EExtractorState.h" #include "FloatDelegateDelegate.h" #include "Throwable.h" #include "ExtractorItem.generated.h" class AResourceChunk; class UAnimMontage; class UBoxComponent; class UDialogDataAsset; class UFSDAudioComponent; class UFirstPersonParticleSystemComponent; class UForceFeedbackEffect; class UParticleSystem; class UParticleSystemComponent; class UPointLightComponent; class UResourceData; class USkeletalMeshComponent; class USoundCue; UCLASS(Blueprintable) class FSD_API AExtractorItem : public AAnimatedItem, public IThrowable { GENERATED_BODY() public: UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FFloatDelegate OnCurrentLoadChangedEvent; UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FCharacterChangedDelegate OnCharacterEquipChange; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UBoxComponent* DroppedCollider; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) USkeletalMeshComponent* DroppedMesh; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UFirstPersonParticleSystemComponent* FP_DrillParticles; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UFSDAudioComponent* AudioComponent; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UPointLightComponent* SurfaceLight; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UParticleSystemComponent* MeltingParticles; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UParticleSystemComponent* InvalidSurfaceParticles; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UParticleSystemComponent* FPMuzzleParticles; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UParticleSystemComponent* FPMuzzleInvalidParticles; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UParticleSystemComponent* TPMuzzleParticles; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UParticleSystemComponent* TPMuzzleInvalidParticles; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UAnimMontage* FPMineMontage; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UAnimMontage* TPMineMontage; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UAnimMontage* FPGunsling; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UAnimMontage* TPGunsling; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FName MiningSpeedAudioParamterName; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UParticleSystem* DrillParticles; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UForceFeedbackEffect* DrillRumble; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float BlockParticlesScaleFP; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float BlockParticlesScaleTP; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) EExtractorState State; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float MovementPenalty; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float CarverRayCastLength; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float CarveTerrainDistanceCheck; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) float CurrentDrillSpeed; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float DrillParticlesDuration; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UResourceData* ExtractetMaterial; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float TimeBeforeInvalidShout; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UDialogDataAsset* InvalidSurfaceShout; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UDialogDataAsset* ShoutFull; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) USoundCue* DigSound; UPROPERTY(BlueprintReadWrite, EditAnywhere, ReplicatedUsing=OnRep_SimulatingMining, meta=(AllowPrivateAccess=true)) bool IsMining; UPROPERTY(BlueprintReadWrite, EditAnywhere, ReplicatedUsing=OnRep_IsGunslinging, meta=(AllowPrivateAccess=true)) bool IsGunslinging; UPROPERTY(BlueprintReadWrite, EditAnywhere, Replicated, Transient, meta=(AllowPrivateAccess=true)) bool ReadyToExtract; protected: UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UParticleSystem* VacuumEffect; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UParticleSystem* ChunkSplatEffect; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) USoundCue* ChunkSplatSound; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float MaxDifference; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float MeltingTime; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float ChunkMultiplier; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float CollectChunkCooldown; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float CrossfadeSpeed; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float VacuumEffectOffset; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float MaxCapacity; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float PlayerCountBonus; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FColor SurfaceLightInitialColor; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FColor SurfaceLightEndColor; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float SurfaceLightMinIntensity; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float SurfaceLightMaxIntensity; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, ReplicatedUsing=OnRep_CurrentLoad, meta=(AllowPrivateAccess=true)) float CurrentLoad; public: AExtractorItem(); virtual void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; UFUNCTION(BlueprintAuthorityOnly, BlueprintCallable, BlueprintImplementableEvent) void SetCanPickup(bool canPickup); UFUNCTION(BlueprintCallable, Reliable, Server) void Server_StopMining(); UFUNCTION(BlueprintCallable, Reliable, Server) void Server_StartMining(); protected: UFUNCTION(BlueprintCallable, Reliable, Server) void Server_SetReadyToExtract(bool IsReady); public: UFUNCTION(BlueprintCallable, Reliable, Server) void Server_DigBlock(FVector_NetQuantize Start, FVector_NetQuantize End); UFUNCTION(BlueprintCallable, Reliable, Server) void Server_CollectChunk(AResourceChunk* chunk); UFUNCTION(BlueprintAuthorityOnly, BlueprintCallable) void ResetCurrentLoad(); protected: UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void OnValidSurfaceChanged(bool IsValid); public: UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void OnThrown(FVector Direction); UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void OnStopDrilling(); UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void OnStartDrilling(); UFUNCTION(BlueprintCallable) void OnRep_SimulatingMining(); UFUNCTION(BlueprintCallable) void OnRep_IsGunslinging(); protected: UFUNCTION(BlueprintCallable) void OnRep_CurrentLoad(); UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void OnCurrentLoadChanged(float load); public: UFUNCTION(BlueprintCallable) void OnChunkCooldownOver(); UFUNCTION(BlueprintCallable, BlueprintPure) bool IsFull() const; UFUNCTION(BlueprintCallable, BlueprintPure) UBoxComponent* GetRootCollider() const; UFUNCTION(BlueprintCallable, NetMulticast, Unreliable) void All_SimulateDigBlock(FVector_NetQuantize Position, bool SpawnParticles, int32 Material); UFUNCTION(BlueprintCallable, NetMulticast, Unreliable) void All_ChunkSplat(AResourceChunk* chunk); UFUNCTION(BlueprintCallable) void AddResource(float Amount); // Fix for true pure virtual functions not being implemented };