#pragma once #include "CoreMinimal.h" #include "UObject/NoExportTypes.h" #include "EventParticipant.h" #include "FSDPawn.h" #include "TowerEventModule.generated.h" class ATowerEventModule; class UArmorHealthDamageComponent; class UEnemyHealthComponent; class UParticleSystem; class UParticleSystemComponent; class USceneComponent; class USkeletalMesh; class USkeletalMeshComponent; class USoundCue; class UStaticMesh; class UStaticMeshComponent; class UWeakpointGlowComponent; UCLASS(Blueprintable) class FSD_API ATowerEventModule : public AFSDPawn, public IEventParticipant { GENERATED_BODY() public: UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) USceneComponent* Root; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) USkeletalMeshComponent* Mesh; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UEnemyHealthComponent* Health; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UArmorHealthDamageComponent* ArmorDamage; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UWeakpointGlowComponent* WeakpointGlow; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UParticleSystemComponent* SmokeParticles; protected: UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) FRotator MainBodyRotation; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) USkeletalMesh* DestroyedMesh; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) USoundCue* ExplosionSound; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UParticleSystem* ExplosionEffect; UPROPERTY(BlueprintReadWrite, EditAnywhere, Replicated, Transient, meta=(AllowPrivateAccess=true)) ATowerEventModule* PreviousModule; UPROPERTY(BlueprintReadWrite, EditAnywhere, Replicated, Transient, meta=(AllowPrivateAccess=true)) ATowerEventModule* NextModule; private: UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UStaticMesh* ArmorMesh; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) int32 ArmorPieces; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float ArmorLifetime; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float ArmorPopForce; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float ArmorShedDelay; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, Transient, meta=(AllowPrivateAccess=true)) TArray ArmorMeshes; public: ATowerEventModule(); virtual void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; protected: UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void OnAttack(); UFUNCTION(BlueprintCallable) void HideArmorPlates(); UFUNCTION(BlueprintCallable) void DestroyArmor(); // Fix for true pure virtual functions not being implemented };