71 lines
2.2 KiB
C++
71 lines
2.2 KiB
C++
// Project Lab - NHTV Igad
|
|
|
|
#pragma once
|
|
|
|
#include "Spawners/CreatureSpawn.h"
|
|
#include "KOTHSpawnerBase.generated.h"
|
|
|
|
/**
|
|
*
|
|
*/
|
|
UCLASS()
|
|
class UNREALPROJECT_API AKOTHSpawnerBase : public ACreatureSpawn
|
|
{
|
|
GENERATED_BODY()
|
|
public:
|
|
AKOTHSpawnerBase(const FObjectInitializer& init);
|
|
void BeginPlay() override;
|
|
void Tick(float DeltaTime) override;
|
|
|
|
// Overrided capture camp behaviour
|
|
virtual void CaptureCamp(int team) override;
|
|
|
|
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnBeginCapture);
|
|
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnEndCapture, int32, targetTeam);
|
|
|
|
UFUNCTION(BlueprintImplementableEvent, Category = "KOTH Spawner")
|
|
void OnBeginCaptureCamp();
|
|
UFUNCTION(BlueprintImplementableEvent, Category = "KOTH Spawner")
|
|
void OnEndCaptureCamp(int32 targetTeam);
|
|
UPROPERTY(BlueprintAssignable)
|
|
FOnBeginCapture onBeginCapture;
|
|
UPROPERTY(BlueprintAssignable)
|
|
FOnEndCapture onEndCapture;
|
|
|
|
UFUNCTION(BlueprintCallable, Category = "KOTH Spawner")
|
|
bool IsContested(int32 targetTeam) const;
|
|
|
|
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnCampCaptured, int32, targetTeam);
|
|
UPROPERTY(BlueprintAssignable, Category = "Game")
|
|
FOnCampCaptured onCampCaptured;
|
|
|
|
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Capture Particle")
|
|
UParticleSystemComponent* captureParticle;
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "KOTH Spawner Properties")
|
|
bool beingCaptured;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "KOTH Spawner Properties")
|
|
float captureRadius;
|
|
// The duration the camp is captured for
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "KOTH Spawner Properties")
|
|
float captureTime;
|
|
// The time it takes to capture a camp
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "KOTH Spawner Properties")
|
|
float possesionTime;
|
|
class AKOTHBossSpawner* bossSpawner;
|
|
|
|
protected:
|
|
// Handle to start the capture process
|
|
void m_OnCampCleared() override;
|
|
|
|
// Called when a camp is no longer contested and should be captured by the target team
|
|
UFUNCTION(NetMulticast, Reliable)
|
|
void m_ExeCaptureCamp(int32 targetTeam);
|
|
|
|
float m_captureTimer;
|
|
float m_possesionTimer;
|
|
int m_currentTeam;
|
|
bool m_reset;
|
|
};
|