LEAP Documentation 40220
Documentation for the LEAP project
Explodables.h
Go to the documentation of this file.
1// Copyright Blue Isle Studios Inc 2018. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "GameFramework/Actor.h"
7#include "HealthInterface.h"
8#include "OwnedInterface.h"
9#include "TeamInterface.h"
10
11#include "Explodables.generated.h"
12
13class UWeaponInstance;
14
15UCLASS()
16class PROJECTX_API AExplodables : public AActor, public IHealthInterface, public ITeamInterface, public IOwnedInterface
17{
18 GENERATED_BODY()
19
20public:
22 UFUNCTION(BlueprintCallable,BlueprintPure)
23 FORCEINLINE float GetDamageMax() const { return ExplosionDamageMax; }
24 virtual APlayerState* GetOwnedPlayerState() const override;
25 virtual int32 GetTeam() const override;
26
27 void SetHitResult(const FHitResult& InHitResult);
28
29protected:
30 virtual void BeginPlay() override;
31 void TriggerExplosion();
32 void InternalTriggerExplosion();
33
34 virtual float TakeDamage(float Damage, struct FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser) override;
35 virtual bool ShouldTakeDamage(float Damage, FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser) const;
36 virtual float InternalTakeRadialDamage(float Damage, FRadialDamageEvent const& RadialDamageEvent, class AController* EventInstigator, class AActor* DamageCauser) override;
37 virtual void Died(float Damage, FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser);
38 virtual void TornOff() override;
39
40 UFUNCTION(NetMulticast, Reliable)
41 void Multicast_Reliable_Died(float Damage, FDamageEvent const& DamageEvent, AActor* DamageCauser);
42 virtual bool IsDead() const override { return bDied; }
43 UFUNCTION(BlueprintImplementableEvent)
44 void OnExplosionTriggered();
45
46 /*Damage Type to use for the explosion*/
47 UPROPERTY(EditDefaultsOnly, Category = Explodable)
48 TSubclassOf<UDamageType> DamageType;
49
50 /*Types affected by blast*/
51 UPROPERTY(EditDefaultsOnly, Category = Explodable)
52 TArray <TEnumAsByte<EObjectTypeQuery>> ObjectTypes;
53
54 /* How Much Health does this have*/
55 UPROPERTY(EditDefaultsOnly,Category = Explodable)
56 float MaxHealth = 0.0f;
57
58 UPROPERTY(EditDefaultsOnly, Category = Explodable)
59 TSubclassOf<class UWeaponInstance> OwningWeaponInstanceClass = nullptr;
60
61 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Explodable)
62 bool bDelayExplosion = false;
63
64 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta = (EditCondition = bDelayExplosion), Category = Explodable)
65 float ExplosionDelay = 1.0f;
66
67 /*Maximum Damage from the explosion*/
68 UPROPERTY(EditDefaultsOnly, Category = Explodable)
69 float ExplosionDamageMax = 75.0f;
70 /*Minimum Damage from the explosion*/
71 UPROPERTY(EditDefaultsOnly, Category = Explodable)
72 float ExplosionDamageMin = 1.0f;
73 /*How Much damage is reduced at edge of explosion*/
74 UPROPERTY(EditDefaultsOnly, Category = Explodable)
75 float DamageFallOff = 0.8f;
76 /* Size of the Explosion*/
77 UPROPERTY(EditDefaultsOnly, Category = Explodable)
78 float ExplosionRadius = 1000.0f;
79
80 FHitResult ExplodableHitResult;
81
82 FTimerHandle ExplosionDelayTimerHandle;
83 float Health = 0.0f;
84 bool bDied = false;
85};
Definition: Explodables.h:17
Definition: HealthInterface.h:28
Definition: OwnedInterface.h:20
Definition: TeamInterface.h:26
Definition: WeaponInstance.h:220
virtual void BeginPlay() override
Definition: WeaponInstance.cpp:192