DRG-Femboy-Voice/Source/FSD/Public/HeavyParticleCannon.h
2025-04-15 12:39:31 -07:00

198 lines
7.3 KiB
C++
Executable file

#pragma once
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "UObject/NoExportTypes.h"
#include "AmmoDrivenWeapon.h"
#include "BoosterModuleActiveDelegate.h"
#include "DecalData.h"
#include "ReflectionTraceResult.h"
#include "HeavyParticleCannon.generated.h"
class AActor;
class UDamageComponent;
class UFSDPhysicalMaterial;
class UFirstPersonNiagaraComponent;
class UNiagaraComponent;
class UNiagaraSystem;
class UReflectionHitscanComponent;
class USoundBase;
class UStickyFlameSpawner;
class UTerrainType;
UCLASS(Blueprintable)
class AHeavyParticleCannon : public AAmmoDrivenWeapon {
GENERATED_BODY()
public:
protected:
UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true))
UDamageComponent* Damage;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true))
UReflectionHitscanComponent* HitscanComponent;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true))
UStickyFlameSpawner* StickyFlamesSpawner;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true))
UFirstPersonNiagaraComponent* FirstPersonBeam;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true))
UFirstPersonNiagaraComponent* FirstPersonLaserSight;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true))
UNiagaraComponent* ThirdPersonBeam;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
USoundBase* BeamHitLocationGenericSound;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
USoundBase* BeamHitLocationEnemySound;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
USoundBase* BeamHitLocationEnemy_Local_Sound;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float BeamHitSoundFadeSwitchTime;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
USoundBase* BeamHitLocationTailSound;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
USoundBase* BoosterModuleActivated;
UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
FBoosterModuleActive OnBoosterActiveChanged;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
UNiagaraSystem* ReflectedBeam;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
UNiagaraSystem* ReflectedBeam_PhotoSensitive;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
UNiagaraSystem* ReflectedLaserSight;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
UNiagaraSystem* ImpactParticle;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
UNiagaraSystem* ImpactParticle_PhotoSensitive;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
UNiagaraSystem* ProjectionModuleParticle;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true))
UNiagaraComponent* ImpactParticleComp;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
FDecalData ImpactDecal_ShortTime;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
FDecalData ImpactDecal_LongTime;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
bool bReloadOnButtonRelease;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float MinTimeBetweenBiomassGain;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
bool BulkyBeam;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float NormalBeamWidth;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float BulkyBeamWidth;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float ExtraRadialDamagePerSec;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float ExtraRadialRangePerSec;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float CancelCostPercentage;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float ChargeupTime;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
USoundBase* StartChargeSound;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
FVector LastDecalLocation;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
bool IsNewDecalBeam;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float ProjectionModuleDamage;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
UTerrainType* PlatformTerrainType;
UPROPERTY(BlueprintReadWrite, EditAnywhere, ReplicatedUsing=OnRep_BoostActive, meta=(AllowPrivateAccess=true))
bool BoostActive;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
bool bReloadBoostsBeam;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float ExtraReloadTimeAfterBoost;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float BoostExtraAmmoCost;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float BeamDependentReloadDuration;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
FVector2D BeamDistanceRange;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
FVector2D BeamTesselationRange;
UPROPERTY(BlueprintReadWrite, EditAnywhere, ReplicatedUsing=OnRep_bIsBeamActive, meta=(AllowPrivateAccess=true))
bool bIsBeamActive;
public:
AHeavyParticleCannon();
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
protected:
UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
void UpdateBeamsVisibility(bool isBeamVisible);
UFUNCTION(BlueprintCallable)
void UpdateBeam(const FReflectionTraceResult& Path);
UFUNCTION(BlueprintCallable, Reliable, Server)
void ServerSetBoostActive(bool newActive);
UFUNCTION(BlueprintCallable, Reliable, Server)
void Server_SetBeamActive(bool inIsBeamActive);
UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
void Server_ExplodePlatform(FVector Location);
UFUNCTION(BlueprintCallable)
void OnTargetKilled(AActor* Target, UFSDPhysicalMaterial* PhysMat, bool wasDirectHit);
UFUNCTION(BlueprintCallable)
void OnRep_BoostActive();
UFUNCTION(BlueprintCallable)
void OnRep_bIsBeamActive();
UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
void IsHittngEnemyChanged(bool isHittingEnemy);
UFUNCTION(BlueprintCallable)
void ChargeUpComplete();
UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
void ChargeChanged(bool isCharging);
};