LEAP Documentation 40220
Documentation for the LEAP project
ProjectXGameModeVIP.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"
7#include "ProjectXGameModeVIP.generated.h"
8
9UENUM(BlueprintType)
10enum class EVIPEvent : uint8
11{
12 NewVIP = 0,
13 VIPDown = 1,
14};
15
16class UAfflictionInstance;
17
18UCLASS()
19class PROJECTX_API AProjectXGameModeVIP : public AProjectXGameMode
20{
21 GENERATED_BODY()
22public:
23 virtual void OnDeath(AController* Killed, AController* Killer, TSubclassOf<class UProjectXDamageType> DamageType, bool bWasHeadshot) override;
24 virtual void CollectGamePlayObjects() override;
25 bool GetAverageVIPPosition(uint8 Team, FVector& AveragePosition);
26 virtual void InitGameState() override;
27
28 UFUNCTION(BlueprintCallable, BlueprintPure)
29 int32 GetNumberOfVIPS() const { return NumberOfVIPs; }
30 UFUNCTION(BlueprintCallable, BlueprintPure)
31 bool IsValidVIPID(uint8 VIPID) const {return VIPID >=0 && VIPID < NumberOfVIPs; }
32
33protected:
34 UFUNCTION()
35 void UpdateVIPTeamList(uint8 Team,uint8 VIPID);
36 UFUNCTION()
37 void OnVIPCharacterSpawned(APawn* NewPawn);
38 void CreateVIPPlayer(AProjectXPlayerState* const Player);
39 void InitializeVIPs();
40
41 virtual APawn* SpawnDefaultPawnAtTransform_Implementation(AController* NewPlayer, const FTransform& SpawnTransform) override;
42 virtual void HandleMatchWarmupEnded() override;
43
44protected:
45 /*Broadcast message for flag related events*/
46 UPROPERTY(EditDefaultsOnly, Category = GameMode)
47 TSubclassOf<class ULocalMessage> VIPBroadcastMessage;
48 /* Affliction applied to the vip*/
49 UPROPERTY(EditDefaultsOnly)
50 TSubclassOf<UAfflictionInstance> VIPAffliction;
51 /* maximum spawn distance from enemies*/
52 UPROPERTY(EditDefaultsOnly)
53 int32 MaximumSpawnRange = 30000.0;
54 /* minimum spawn distance from enemies*/
55 UPROPERTY(EditDefaultsOnly)
56 int32 MinimumSpawnRange = 60000.0;
57 /* maximum number of vips on a team away from the vip*/
58 UPROPERTY(EditDefaultsOnly)
59 int32 NumberOfVIPs = 3;
60 /*the radius around which a new vip can be selected based on the average vip position*/
61 UPROPERTY(EditDefaultsOnly)
62 float NewVIPSpawnRadius = 30000.0;
63 /*delay between new vip spawns*/
64 UPROPERTY(EditDefaultsOnly)
65 float NewVIPDelay = 4.0f;
66 FTimerHandle UpdateVIPHandle;
67 float VIPCheckTimer = 2.0f;
68};
EVIPEvent
Definition: ProjectXGameModeVIP.h:11
Definition: ProjectXGameMode.h:115
Definition: ProjectXGameModeVIP.h:20
Definition: ProjectXPlayerState.h:238