Space Plunder
Loading...
Searching...
No Matches
CustomHUD.h
Go to the documentation of this file.
1// Fill out your copyright notice in the Description page of Project Settings.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Data/MenuData.h"
7#include "HUD/HUDBase.h"
9// #include "Interfaces/HitMarkerInterface.h"
15// #include "Interfaces/WeaponHUDInterface.h"
16#include "CustomHUD.generated.h"
17
18
19UCLASS()
20class CUSTOMALS_API ACustomHUD : public AHUDBase, public IMultiplayerGM,
21public IInteractionHUD, public IStaminaHUD, public ICompanionHUD
22 //,public IWeaponHUDInterface, public IHitMarkerInterface
23{
24 GENERATED_BODY()
25
26
27public:
28 ACustomHUD();
29
30 UFUNCTION(BlueprintCallable, Category="HUD")
31 void FadeIn();
32
33 UFUNCTION(BlueprintCallable, Category="HUD")
34 void SelectionUp() const;
35 UFUNCTION(BlueprintCallable, Category="HUD")
36 void SelectionDown() const;
37
38
39 UFUNCTION(BlueprintCallable, Category="HUD")
40 void FocusOnGame() const;
41 UFUNCTION(BlueprintCallable, Category="HUD")
42 void FocusOnWidget() const;
43
44 UFUNCTION(BlueprintCallable, Category="HUD")
45 void SetMultiplayerHUD(const bool bMultiplayerHUD = true){bMultiplayer = bMultiplayerHUD;};
46 UFUNCTION(BlueprintCallable, Category="HUD")
47 void ToggleGameMenuWidget(class UUserWidget* TargetWidget);
48
49 void StartOpenQuestMenu() const;
50 void StopOpenQuestMenu() const;
51
52 virtual void ToggleGameLog() override;
53
54 void OpenScoreboard(const bool bOpen = true) const;
55
56 class UChatBoxWidget* GetChatBoxWidget() const{return ChatBoxWidget;};
57 class UButtonPromptWidget* GetQuestMenuButton() const {return OpenQuestMenuButtonWidget;};
58
59
60 // //- Weapon Interface //
61
62 //~ Interaction //
63 virtual void StartFocusOnObject(const FString& ObjectName, const FInteractionData& InteractionData) override;
64 virtual void StartFocusOnCharacter(const FString& CharacterName, const FInteractionData& InteractionData) override;
65 virtual void ShowCustomPrompt(const FInteractionData& InteractionData) override;
66 virtual void HideCustomPrompt() override;
67 virtual void SetSelectedInteraction(const int32 SelectedIndex) override;
68 virtual void StartSelection(const float Time) override;
69 virtual void StopSelection() override;
70 virtual void EndFocus() override;
71 //~ Interaction //
72
73 //~ Companion Master Interface //
74 virtual void SetCompanionInteractions(const FInteractionData& CompanionData, const FString& Object) override;
75 virtual void ToggleCompanionInteractions(const bool bShow = true) override;
76 virtual void SetSelectedCompanionInteraction(const int32 SelectedIndex) override;
77 //~ Companion Master Interface //
78
79 //~ Quest HUD Interface //
80 // virtual void UpdatePlayerQuestStatus(const FPlayerQuestStatus& PlayerQuestStatus) override;
81 // virtual void ToggleQuestLog() const override;
82 // virtual void ToggleQuestTracker(const bool bForceHide = false) const override;
83 // // virtual bool GetIsQuestTrackerVisible() const override;
84 // virtual void SetQuestTracker(const FQuestInfo& QuestInfo) const override;
85 // virtual void AddQuestNotificationToQueue(const EFilterQuestType NotificationType, const FQuestInfo& QuestInfo) override;
86 //~ Quest HUD Interface //
87
88
89 //- Stamina //
90 virtual void UpdateStamina(const float CurrentStamina, const float MaxStamina) override;
91 virtual void DamageIndicator(const FVector& HitLocation, const float Damage, const UDamageType* DamageType) override;
92 virtual void StealthIndicator(AActor* ThreatActor, const float Amount = 0.0f) override;
93
94 virtual void OwnerDeath(const struct FPlayerDeath& PlayerDeathData) override;
95
96
97 //- TODO Implement
98 virtual void UpdateThreatIndication(const FVector& Location, const float DetectionAmount);
99
100 //- Multiplayer Functions //
101 virtual void PlayerDeath(FPlayerDeath& PlayerDeath) override;
102 virtual void AIDeath(FPlayerDeath& PlayerDeath) override;
103 // //- Don't use.. //
104 // virtual FMatchState& GetMultiplayerMatchState() const override {return FMatchState::Empty();};
105
106 void MatchOver(const FMatchState& MatchState, const TArray<FTeamScoreData>& Scores) const;
107 void RoundOver(const FMatchState& MatchState, const TArray<FTeamScoreData>& Scores) const;
108 void SetMultiplayerMatchState(const FMatchState& State) const;
109
110 //- Score Widget //
111 virtual void SetScore(const TArray<FTeamScoreData>& Scores, const int32 ScoreGoal);
112 virtual void SetMultiplayerMode(const EMultiplayerMode Mode);
113 virtual void SetRound(const int32 Num);
114
115
116 //- Multiplayer Team //
117 void SetPlayerTeamID(const int32 TeamID){MultiplayerTeamID = TeamID;};
118
119 //- Player Functions //
120 virtual void SetAiming(const bool bIsAiming);
121
122 UFUNCTION(BlueprintCallable, Category="HUD")
123 void SetupWidgets();
124
125 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Debug", meta = (ScriptName = "bChatWidgetPython"))
126 bool bChatWidget = true;
127 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Debug", meta = (ScriptName = "bHealthWidgetPython"))
128 bool bHealthWidget = true;
129 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Debug", meta = (ScriptName = "bInteractionCrosshairWidgetPython"))
130 bool bInteractionCrosshairWidget = true;
131 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Debug", meta = (ScriptName = "bInteractionContextWidgetPython"))
132 bool bInteractionContextWidget = true;
133 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Debug", meta = (ScriptName = "bWeaponBarWidgetPython"))
134 bool bWeaponBarWidget = true;
135 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Debug", meta = (ScriptName = "bCrosshairWidgetPython"))
136 bool bCrosshairWidget = true;
137 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Debug", meta = (ScriptName = "bQuestMenuButtonWidgetPython"))
138 bool bQuestMenuButtonWidget = true;
139 //@TODO remove Quest System Widget
140 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Debug", meta = (ScriptName = "bQuestSystemWidgetPython"))
141 bool bQuestSystemWidget = true;
142 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Debug", meta = (ScriptName = "bQuestLogWidgetPython"))
143 bool bQuestLogWidget = true;
144 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Debug", meta = (ScriptName = "bbQuestNotificationManagerWidgetPython"))
145 bool bQuestNotificationManagerWidget = true;
146 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Debug", meta = (ScriptName = "bQuestTrackerWidgetPython"))
147 bool bQuestTrackerWidget = true;
148
149 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Debug", meta = (ScriptName = "bScoreWidgetPython"))
150 bool bScoreWidget = true;
151 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Debug", meta = (ScriptName = "bKillFeedWidgetPython"))
152 bool bKillFeedWidget = true;
153 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Debug", meta = (ScriptName = "bScoreboardWidgetPython"))
154 bool bScoreboardWidget = true;
155 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Debug", meta = (ScriptName = "bMatchOverWidgetPython"))
156 bool bMatchOverWidget = true;
157 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Debug", meta = (ScriptName = "bStaminaWidgetPython"))
158 bool bStaminaWidget = true;
159 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Debug", meta = (ScriptName = "bDamageIndicatorPython"))
160 bool bDamageIndicator = true;
161 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Debug", meta = (ScriptName = "bStealthIndicatorPython"))
162 bool bStealthIndicator = true;
163 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Debug", meta = (ScriptName = "bGameLogWidgetPython"))
164 bool bGameLogWidget = true;
165
166 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Debug", meta = (ScriptName = "bScoreWidgetPython"))
167 float OpenQuestMenuTime = 1.0f;
168protected:
169
170
171 //- Game widgets //
172 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD|Layout")
173 class UHUDLayoutWidget* HUDLayoutWidget = nullptr;
174
175 //- Quest //
176 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD|Quest")
177 class UButtonPromptWidget* OpenQuestMenuButtonWidget = nullptr;
178 // UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD|Quest")
179 // class UQuestSystemWidget* QuestSystemWidget = nullptr;
180 // UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD|Quest")
181 // class UQuestLogWidget* QuestLogWidget = nullptr;
182 // UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD|Quest")
183 // class UQuestNotificationManager* QuestNotificationManagerWidget = nullptr;
184 // UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD|Quest")
185 // class UQuestTrackerWidget* QuestTrackerWidget = nullptr;
186
187 //- Interaction //
188 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD|Interaction")
189 class UInteractionCrosshairWidget* InteractionCrosshairWidget = nullptr;
190 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD|Interaction")
191 class UInteractionContextWidget* InteractionContextWidget = nullptr;
192
193 //- Weapon //
194 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD|Weapons")
195 class UWeaponSystemWidget* WeaponWidget = nullptr;
196 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD|Weapons")
197 class UCrosshairWidget* CrosshairWidget = nullptr;
198 //- Health //
199 // UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD|Health")
200 // class UHealthWidget* HealthWidget = nullptr;
201 // class IHealthInterface* HealthHUDWidget = nullptr;
202
203 //- Stamina //
204 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD|Stamina")
205 class UStaminaWidget* StaminaWidget = nullptr;
206 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD|Log")
207 class UGameLogWidget* GameLogWidget = nullptr;
208
209 //- Multiplayer //
210 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD|Multiplayer")
211 class UScoreWidget* ScoreWidget = nullptr;
212 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD|Multiplayer")
213 class UScoreboardWidget* ScoreboardWidget = nullptr;
214
215 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD|Multiplayer")
216 class UKillFeedWidget* KillFeedWidget = nullptr;
217
218 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD|Multiplayer")
219 class UChatBoxWidget* ChatBoxWidget = nullptr;
220 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD|Multiplayer")
221 class UMatchFinishedWidget* MatchFinishedWidget = nullptr;
222
223 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD|Debug")
224 int32 MultiplayerTeamID = 0;
225 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="HUD")
226 bool bMultiplayer = false;
227
228 virtual void BeginDestroy() override;
229
230 UFUNCTION(BlueprintCallable, Category="HUD|Layout")
231 void SetupLayoutWidget();
232 UFUNCTION(BlueprintCallable, Category="HUD|Quest")
233 void AddGameWidgetsToViewport();
234
235 UFUNCTION(BlueprintCallable, Category="HUD|Log")
236 void SetupGameLogWidget();
237
238
239 //- Open Quest Menu Button //
240 UFUNCTION(BlueprintCallable, Category="HUD|Quest")
241 void SetupQuestMenuButton();
242 // UFUNCTION(BlueprintCallable, Category="HUD|Quest")
243 // void SetupQuestSystemWidget();
244 // UFUNCTION(BlueprintCallable, Category="HUD|Quest")
245 // void SetupQuestLogWidget();
246 // UFUNCTION(BlueprintCallable, Category="HUD|Quest")
247 // void SetupQuestNotificationManagerWidget();
248 // UFUNCTION(BlueprintCallable, Category="HUD|Quest")
249 // void SetupQuestTrackerWidget();
250
251 //- Weapon Widgets //
252 // UFUNCTION(BlueprintCallable, Category="HUD|Weapons")
253 // void SetupWeaponWidget();
254 // UFUNCTION(BlueprintCallable, Category="HUD|Weapons")
255 // void SetupWeaponCrosshairWidget();
256 UFUNCTION(BlueprintCallable, Category="HUD|Interaction")
257 void SetupInteractionCrosshairWidget();
258 UFUNCTION(BlueprintCallable, Category="HUD|Interaction")
259 void SetupInteractionContextWidget();
260
261 // - Health Widgets //
262 // UFUNCTION(BlueprintCallable, Category="HUD|Health")
263 // void SetupHealthWidget();
264 UFUNCTION(BlueprintCallable, Category="HUD|Stamina")
265 void SetupStaminaWidget();
266 // UFUNCTION(BlueprintCallable, Category="HUD|Stamina")
267 // void SetupDamageIndicatorWidget();
268
269 //- Multiplayer //
270 void SetupKillFeedWidget();
271 void SetupScoreWidget();
272 void SetupScoreboardWidget();
273 void SetupMatchOverWidget();
274
275 void SetupChatBoxWidget();
276
277 //- Current Selected Widget //
278 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD")
279 UUserWidget* WidgetToFocus = nullptr;
280
281 //- In Game Selectable Menu Widgets, Quest Menu, Collectables, Dialogue? //
282 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD")
283 TArray<UUserWidget*> GameMenuWidgetList;
284 //- In Game Widgets,(HUD) - Ammo, Crosshair, Chat box, Waypoints //
285 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="HUD")
286 TArray<UUserWidget*> GameWidgetList;
287
288
289
290
291 //- Game widgets Classes //
292
293 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Weapons")
294 TSubclassOf<class UUserWidget> GameLogWidgetClass;
295
296 //- Quest //
297 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Quest")
298 TSubclassOf<class UButtonPromptWidget> OpenQuestMenuButtonWidgetClass;
299 // UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Quest")
300 // TSubclassOf<class UQuestLogWidget> QuestLogWidgetClass;
301 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Quest")
302 TSubclassOf<class UQuestNotificationManager> QuestNotificationManagerWidgetClass;
303 // UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Quest")
304 // TSubclassOf<class UQuestTrackerWidget> QuestTrackerWidgetClass;
305
306
307 //- Weapon //
308 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Weapons")
309 TSubclassOf<class UWeaponSystemWidget> WeaponWidgetClass;
310 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Weapons")
311 TSubclassOf<class UCrosshairWidget> CrosshairWidgetClass;
312 //- Health //
313 // UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Health")
314 // TSubclassOf<class UHealthWidget> HealthWidgetClass;
315 // UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Health")
316 // TSubclassOf<class UUserWidget> HealthHUDWidgetClass;
317
318 // - Stamina //
319 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Character")
320 TSubclassOf<class UStaminaWidget> StaminaWidgetClass;
321 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Character")
322 TSubclassOf<class UIncomingThreatWidget> DamageIndicatorWidgetClass;
323 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Character")
324 TSubclassOf<class UIncomingThreatWidget> StealthIndicatorWidgetClass;
325
326 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Interaction")
327 TSubclassOf<class UInteractionCrosshairWidget> InteractionCrosshairWidgetClass;
328 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Interaction")
329 TSubclassOf<class UInteractionContextWidget> InteractionContextWidgetClass;
330
331
332 //- Chat Box //
333 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Health")
334 TSubclassOf<class UChatBoxWidget> ChatWidgetClass;
335
336
337 //- Multiplayer //
338 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Multiplayer")
339 TSubclassOf<class UScoreWidget> MultiplayerScoreWidgetClass;
340 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Multiplayer")
341 TSubclassOf<class UScoreboardWidget> MultiplayerScoreboardWidgetClass;
342
343 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Multiplayer")
344 TSubclassOf<class UKillFeedWidget> KillFeedWidgetClass;
345 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Layout")
346 TSubclassOf<class UMatchFinishedWidget> MatchFinishedClass;
347
348 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="HUD|Layout")
349 TSubclassOf<class UHUDLayoutWidget> HUDLayoutWidgetClass;
350
351
352private:
353 bool bChatBoxOpen = false;
354 bool bCommandingMode = false;
355
356 UFUNCTION()
357 void ToggleQuestLogBind();
358 UFUNCTION()
359 void ToggleQuestTrackerBind();
360
361
362};
UCLASS(Blueprintable, BlueprintType, ClassGroup=(BucciGames), meta=(BlueprintSpawnableComponent)) class CHATSYSTEM_API UChatSystemComponent
Definition ChatSystemComponent.h:13
EMultiplayerMode
Definition MultiplayerData.h:10
Definition CustomHUD.h:23
class UButtonPromptWidget * GetQuestMenuButton() const
Definition CustomHUD.h:57
void SetPlayerTeamID(const int32 TeamID)
Definition CustomHUD.h:117
Definition HUDBase.h:23
Definition Health.Build.cs:6
Definition CompanionHUD.h:20
Definition InteractionHUD.h:17
Definition MultiplayerGM.h:19
Definition StaminaHUD.h:18
Definition Interaction.Build.cs:6
User widget representing a button prompt for It provides functionality for displaying a button icon,...
Definition ButtonPromptWidget.h:32
Definition ChatBoxWidget.h:17
Definition CrosshairWidget.h:18
Definition GameLogWidget.h:15
Definition HUDLayoutWidget.h:12
Base class for Damage Indicator & AI Threat Detector.
Definition IncomingThreatWidget.h:17
Definition InteractionContextWidget.h:16
Definition InteractionCrosshairWidget.h:13
Definition KillFeedWidget.h:13
Definition MatchFinishedWidget.h:13
Definition QuestNotificationManager.h:17
Definition ScoreWidget.h:14
Definition ScoreboardWidget.h:13
Definition StaminaWidget.h:11
Definition WeaponSystemWidget.h:15
Definition BaseData.h:420
Definition BaseData.h:1077
Definition BaseData.h:613