#pragma once #include "CoreMinimal.h" #include "GameEvent.h" #include "GuntowerModuleLevel.h" #include "GuntowerEvent.generated.h" class AGuntowerModule; class UDamageComponent; class USceneComponent; class USkeletalMeshComponent; UCLASS(Blueprintable) class AGuntowerEvent : public AGameEvent { GENERATED_BODY() public: UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) USceneComponent* Root; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) USkeletalMeshComponent* BaseMesh; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UDamageComponent* EndExplosionDamage; protected: UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TArray GuntowerLevels; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FName ModuleAttachBone; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float TowerExplodeDelay; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float DelayBetweenExplosions; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) TArray TowerModules; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, ReplicatedUsing=OnRep_ModuleActive, meta=(AllowPrivateAccess=true)) int32 ActiveHostileModules; public: AGuntowerEvent(); virtual void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; UFUNCTION(BlueprintAuthorityOnly, BlueprintCallable) void SpawnModules(); UFUNCTION(BlueprintCallable) void OnRep_ModuleActive(); UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void OnModulesSpawned(); UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void OnModuleExploded(AGuntowerModule* explodedModule); };