LEAP Documentation 40220
Documentation for the LEAP project
ProjectXHUD.h
Go to the documentation of this file.
1// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "ContextMenuWidget.h"
7#include "GameFramework/HUD.h"
8#include "ProjectXHUD.generated.h"
9
12class UTexture2D;
13class UReticleWidget;
14
16DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnHUDVisibilityChanged, bool, bShowHUD);
17
18UCLASS()
19class AProjectXHUD : public AHUD
20{
21 GENERATED_BODY()
22
23public:
25
26 virtual void BeginPlay() override;
27 virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
28 virtual void DrawHUD() override;
29 virtual void ShowHUD() override;
30 virtual void PlayerDeath();
31
32 UFUNCTION(BlueprintCallable, Category = "Menus")
33 void ToggleWidgetByClass(TSubclassOf<UAdvancedUserWidget> WidgetClass, EWindowToggleCommand ToggleCommand = EWindowToggleCommand::Toggle);
34 UFUNCTION(BlueprintCallable, Category = "Menus")
35 UAdvancedUserWidget* CreateMenuWidget(TSubclassOf<UAdvancedUserWidget> WidgetClass, int32 ZOrder = 1);
36
37 UFUNCTION(BlueprintCallable, Category = "HUD")
38 UHUDBasicUserWidget* CreateHUDUserWidget(UClass* WidgetClass, const int32 ZOrder);
39 UFUNCTION(BlueprintCallable, Category = "HUD")
40 void RemoveHUDUserWidget(UUserWidget* Widget);
41
42 UFUNCTION(BlueprintPure, Category = "Accessors")
43 UUserWidget* GetWidgetByType(TSubclassOf<UUserWidget> WidgetClass) const;
44
45 UFUNCTION(BlueprintCallable, Category = "HUD")
46 UReticleWidget* UpdateReticleWidget(TSubclassOf<UReticleWidget> WidgetClass);
47
48 UFUNCTION(BlueprintCallable, Category = "HUD")
49 void OpenPostGameMenu();
50 UFUNCTION(BlueprintCallable, Category = "HUD")
51 void ShowMatchResultWidget();
52 UFUNCTION(BlueprintCallable, Category = "HUD")
53 void ShowPodium();
54 UFUNCTION(BlueprintCallable, Category = "HUD")
55 void OpenFollowScreen();
56 UFUNCTION(BlueprintCallable,Category = "HUD")
57 void CloseQuickChat();
58 UFUNCTION(BlueprintCallable, Category = "HUD")
59 void ToggleNVIDIAReflexStats(bool bVisibility);
60 UFUNCTION(BlueprintPure, Category = HUD)
61 UReticleWidget* GetReticleWidget() const { return ReticleWidget.Get(); }
62 UFUNCTION(BlueprintPure, Category = HUD)
63 UUserWidget* GetMapWidget() const { return GetWidgetByType(MapWidgetClass); }
64 UFUNCTION(BlueprintPure, Category = HUD)
65 UHUDBasicUserWidget* const GetGameplayWidget() const;
66 UFUNCTION(BlueprintImplementableEvent, Category = "HUD")
67 void OnPlayerDeath();
68 UFUNCTION(BlueprintCallable, Category = HUD)
69 virtual void DeferredOpenMap(float Delay = -1.f);
70
71 TSubclassOf<UAdvancedUserWidget> GetLoadoutWidget() const { return LoadoutWidgetClass; }
72 TSubclassOf<UAdvancedUserWidget> GetDeployScreenWidget() const { return MapWidgetClass; }
73 TSubclassOf<AActor> GetDisplayMeshClass() const { return InGameLoadoutDisplayClass; }
74 UPROPERTY(BlueprintAssignable)
75 FOnHUDVisibilityChanged OnHUDVisibilityChanged;
76
77protected:
78 UFUNCTION()
79 void DrawProjectileDebug();
80
81private:
83
84 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Menus", meta = (AllowPrivateAccess = true))
85 TSubclassOf<UAdvancedUserWidget> GameSettingsWidgetClass;
86 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Menus", meta = (AllowPrivateAccess = true))
87 TSubclassOf<UAdvancedUserWidget> MapWidgetClass;
88 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Menus", meta = (AllowPrivateAccess = true))
89 TSubclassOf<UAdvancedUserWidget> MainMenuWidgetClass;
90 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Menus", meta = (AllowPrivateAccess = true))
91 TSubclassOf<UAdvancedUserWidget> EscMenuWidgetClass;
92 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Menus", meta = (AllowPrivateAccess = true))
93 TSubclassOf<UAdvancedUserWidget> ContextMenuWidgetClass;
94 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Menus", meta = (AllowPrivateAccess = true))
95 TSubclassOf<UAdvancedUserWidget> GlobalMessageDialogueWidgetClass;
96 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Menus", meta = (AllowPrivateAccess = true))
97 TSubclassOf<UAdvancedUserWidget> ScoreboardWidgetClass;
98 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Menus", meta = (AllowPrivateAccess = true))
99 TSubclassOf<UAdvancedUserWidget> PostGameWidgetClass;
100 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Menus", meta = (AllowPrivateAccess = true))
101 TSubclassOf<UAdvancedUserWidget> KickVoteWidgetClass;
102 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Menus", meta = (AllowPrivateAccess = true))
103 TSubclassOf<UAdvancedUserWidget> MapVoteWidgetClass;
104 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Menus", meta = (AllowPrivateAccess = true))
105 TSubclassOf<UAdvancedUserWidget> QuickChatWidgetClass;
106 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Menus", meta = (AllowPrivateAccess = true))
107 TSubclassOf<UUserWidget> GameModeWidgetClass;
108 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Menus", meta = (AllowPrivateAccess = true))
109 TSubclassOf<UAdvancedUserWidget> MissionResultWidgetClass;
110 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Menus", meta = (AllowPrivateAccess = true))
111 TSubclassOf<UAdvancedUserWidget> LoadoutWidgetClass;
112 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Menus", meta = (AllowPrivateAccess = true))
113 TSubclassOf<UAdvancedUserWidget> DeathWidgetClass;
114 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Menus", meta = (AllowPrivateAccess = true))
115 TSubclassOf<UAdvancedUserWidget> LandingScreenWidgetClass;
116 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Menus", meta = (AllowPrivateAccess = true))
117 TSubclassOf<UUserWidget> FollowWidgetClass;
118 UPROPERTY(EditDefaultsOnly)
119 TSubclassOf<AActor> InGameLoadoutDisplayClass;
120 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Menus", meta = (AllowPrivateAccess = true))
121 TSubclassOf<UHUDBasicUserWidget> NVIDIAReflexStatsClass;
122
123 /* Our current reticle widget. */
124 TWeakObjectPtr<UReticleWidget> ReticleWidget = NULL;
125
126 UProjectXGameViewportClient* GetGameViewportClient() const;
127
128 UPROPERTY()
129 mutable UProjectXGameViewportClient* ViewportClient = nullptr;
130
131 UPROPERTY(EditDefaultsOnly, Category = "Debug", meta = (AllowPrivateAccess = true))
132 class UFont* DebugFont = NULL;
133 // how long does the match result show on screen
134 UPROPERTY(EditDefaultsOnly, Category = "UI", meta = (AllowPrivateAccess = true))
135 float PostGameUIDelay = 5.0f;
136 // how long does the podium show on screen
137 UPROPERTY(EditDefaultsOnly, Category = "UI", meta = (AllowPrivateAccess = true))
138 float PodiumDuration = 10.0f;
139 /* How much time after death before opening up the deploy screen when no "DeathWidgetClass" is setup for this HUD */
140 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "UI", meta = (AllowPrivateAccess = true))
141 float TimeBeforeShowingMapOnDeath = 12.0f;
142
143public:
144 /* Get the Pre-casted ProjectX HUD */
145 UFUNCTION(BlueprintPure, Category = "UI", meta = (WorldContext = "WorldContextObject"))
146 static AProjectXHUD* GetHUD(const UObject* WorldContextObject, const int32 Slot = 0);
147 UFUNCTION(BlueprintCallable, Category = "UI", meta = (WorldContext = "WorldContextObject"))
148 static UContextMenuWidget* CreateContextMenu(const UObject* WorldContextObject, TArray<FContextMenuOption> const ContextMenuOptions, const FText Title, const bool bIsDismissable = true, const UObject* ContextObject = nullptr);
149 UFUNCTION(BlueprintCallable, Category = "UI", meta = (WorldContext = "WorldContextObject"))
150 static UContextMenuWidget* CreateGlobalMessageDialogue(const UObject* WorldContextObject, const FContextMenuOption ContextMenuOption1, const FContextMenuOption ContextMenuOption2, const FText Title, const FText Message, const bool bIsDismissable = true, const UObject* ContextObject = nullptr);
151
152};
EWindowToggleCommand
Definition: AdvancedUserWidget.h:22
@ Toggle
Definition: AdvancedUserWidget.h:23
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnHUDVisibilityChanged, bool, bShowHUD)
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnHUDDestroyed)
Definition: ProjectXHUD.h:20
TSubclassOf< UAdvancedUserWidget > GetDeployScreenWidget() const
Definition: ProjectXHUD.h:72
TSubclassOf< AActor > GetDisplayMeshClass() const
Definition: ProjectXHUD.h:73
Definition: Debug.h:14
Definition: AdvancedUserWidget.h:30
Definition: ContextMenuWidget.h:37
Definition: HUDBasicUserWidget.h:14
Definition: ProjectXGameViewportClient.h:23
Definition: ReticleWidget.h:13
Definition: ContextMenuWidget.h:14