diff --git a/Content/Blueprints/HUD/BP_BlasterHUD.uasset b/Content/Blueprints/HUD/BP_BlasterHUD.uasset index a137d65..92481c8 100644 Binary files a/Content/Blueprints/HUD/BP_BlasterHUD.uasset and b/Content/Blueprints/HUD/BP_BlasterHUD.uasset differ diff --git a/Content/Blueprints/HUD/WBP_DebugWidget.uasset b/Content/Blueprints/HUD/WBP_DebugWidget.uasset new file mode 100644 index 0000000..92017fb Binary files /dev/null and b/Content/Blueprints/HUD/WBP_DebugWidget.uasset differ diff --git a/Source/Blaster/HUD/BlasterHUD.cpp b/Source/Blaster/HUD/BlasterHUD.cpp index 032525b..6760288 100644 --- a/Source/Blaster/HUD/BlasterHUD.cpp +++ b/Source/Blaster/HUD/BlasterHUD.cpp @@ -5,13 +5,25 @@ #include "Announcement.h" #include "CharacterOverlay.h" +#include "DebugWidget.h" #include "Blueprint/UserWidget.h" +#include "Components/TextBlock.h" void ABlasterHUD::BeginPlay() { Super::BeginPlay(); } +void ABlasterHUD::AddDebugWidget() +{ + APlayerController* PlayerController = GetOwningPlayerController(); + if (PlayerController && DebugWidgetClass) + { + DebugWidget = CreateWidget(PlayerController, DebugWidgetClass); + DebugWidget->AddToViewport(); + } +} + void ABlasterHUD::AddCharacterOverlay() { APlayerController* PlayerController = GetOwningPlayerController(); diff --git a/Source/Blaster/HUD/BlasterHUD.h b/Source/Blaster/HUD/BlasterHUD.h index 7688097..b689d03 100644 --- a/Source/Blaster/HUD/BlasterHUD.h +++ b/Source/Blaster/HUD/BlasterHUD.h @@ -31,6 +31,7 @@ class BLASTER_API ABlasterHUD : public AHUD public: virtual void DrawHUD() override; + void AddDebugWidget(); void AddCharacterOverlay(); void AddAnnouncementOverlay(); @@ -40,6 +41,12 @@ public: UPROPERTY() class UCharacterOverlay* CharacterOverlay; + UPROPERTY() + class UDebugWidget* DebugWidget; + + UPROPERTY(EditAnywhere, Category = "Widget") + TSubclassOf DebugWidgetClass; + UPROPERTY(EditAnywhere, Category = "Announcements") TSubclassOf AnnouncementClass; diff --git a/Source/Blaster/HUD/DebugWidget.cpp b/Source/Blaster/HUD/DebugWidget.cpp new file mode 100644 index 0000000..54440c9 --- /dev/null +++ b/Source/Blaster/HUD/DebugWidget.cpp @@ -0,0 +1,5 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "DebugWidget.h" + diff --git a/Source/Blaster/HUD/DebugWidget.h b/Source/Blaster/HUD/DebugWidget.h new file mode 100644 index 0000000..c556c31 --- /dev/null +++ b/Source/Blaster/HUD/DebugWidget.h @@ -0,0 +1,41 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Blueprint/UserWidget.h" +#include "DebugWidget.generated.h" + +/** + * + */ +UCLASS() +class BLASTER_API UDebugWidget : public UUserWidget +{ + GENERATED_BODY() + +public: + + UPROPERTY(meta = (BindWidget)) + class UTextBlock* DebugMsg1; + + UPROPERTY(meta = (BindWidget)) + UTextBlock* DebugMsg2; + + UPROPERTY(meta = (BindWidget)) + UTextBlock* DebugMsg3; + + UPROPERTY(meta = (BindWidget)) + UTextBlock* DebugMsg4; + + UPROPERTY(meta = (BindWidget)) + UTextBlock* DebugMsg5; + + UPROPERTY(meta = (BindWidget)) + UTextBlock* DebugMsg6; + + UPROPERTY(meta = (BindWidget)) + UTextBlock* DebugMsg7; + + +}; \ No newline at end of file diff --git a/Source/Blaster/PlayerController/BlasterPlayerController.cpp b/Source/Blaster/PlayerController/BlasterPlayerController.cpp index 859cb0a..f222fd0 100644 --- a/Source/Blaster/PlayerController/BlasterPlayerController.cpp +++ b/Source/Blaster/PlayerController/BlasterPlayerController.cpp @@ -9,6 +9,7 @@ #include "Blaster/HUD/Announcement.h" #include "Blaster/HUD/BlasterHUD.h" #include "Blaster/HUD/CharacterOverlay.h" +#include "Blaster/HUD/DebugWidget.h" #include "Components/ProgressBar.h" #include "Components/TextBlock.h" #include "GameFramework/GameMode.h" @@ -38,6 +39,59 @@ void ABlasterPlayerController::Tick(float DeltaTime) SetHUDTime(); CheckTimeSync(DeltaTime); PollInit(); + + if (DebugWidget) + { + SetDebugMsg1(TEXT("GetServerTime(): "), FString::Printf(TEXT("%02f"), GetServerTime())); + SetDebugMsg2(TEXT("ClientServerDelta: "), FString::Printf(TEXT("%f"), ClientServerDelta)); + SetDebugMsg3(TEXT("LevelStartingTime: "), FString::Printf(TEXT("%f"), LevelStartingTime)); + SetDebugMsg4(TEXT("WarmupTime: "), FString::Printf(TEXT("%f"), WarmupTime)); + SetDebugMsg5(TEXT("MatchTime: "), FString::Printf(TEXT("%f"), MatchTime)); + SetDebugMsg6(TEXT("CooldownTime: "), FString::Printf(TEXT("%f"), CooldownTime)); + SetDebugMsg7(TEXT("CountdownInt: "), FString::Printf(TEXT("%d"), CountdownInt)); + } +} + +void ABlasterPlayerController::SetDebugMsg1(FString Key, FString Value) +{ + bool bHUDValid = BlasterHUD && BlasterHUD->DebugWidget && BlasterHUD->DebugWidget->DebugMsg1; + if (bHUDValid) BlasterHUD->DebugWidget->DebugMsg1->SetText(FText::FromString(Key.Append(Value))); +} + +void ABlasterPlayerController::SetDebugMsg2(FString Key, FString Value) +{ + bool bHUDValid = BlasterHUD && BlasterHUD->DebugWidget && BlasterHUD->DebugWidget->DebugMsg2; + if (bHUDValid) BlasterHUD->DebugWidget->DebugMsg2->SetText(FText::FromString(Key.Append(Value))); +} + +void ABlasterPlayerController::SetDebugMsg3(FString Key, FString Value) +{ + bool bHUDValid = BlasterHUD && BlasterHUD->DebugWidget && BlasterHUD->DebugWidget->DebugMsg3; + if (bHUDValid) BlasterHUD->DebugWidget->DebugMsg3->SetText(FText::FromString(Key.Append(Value))); +} + +void ABlasterPlayerController::SetDebugMsg4(FString Key, FString Value) +{ + bool bHUDValid = BlasterHUD && BlasterHUD->DebugWidget && BlasterHUD->DebugWidget->DebugMsg4; + if (bHUDValid) BlasterHUD->DebugWidget->DebugMsg4->SetText(FText::FromString(Key.Append(Value))); +} + +void ABlasterPlayerController::SetDebugMsg5(FString Key, FString Value) +{ + bool bHUDValid = BlasterHUD && BlasterHUD->DebugWidget && BlasterHUD->DebugWidget->DebugMsg5; + if (bHUDValid) BlasterHUD->DebugWidget->DebugMsg5->SetText(FText::FromString(Key.Append(Value))); +} + +void ABlasterPlayerController::SetDebugMsg6(FString Key, FString Value) +{ + bool bHUDValid = BlasterHUD && BlasterHUD->DebugWidget && BlasterHUD->DebugWidget->DebugMsg6; + if (bHUDValid) BlasterHUD->DebugWidget->DebugMsg6->SetText(FText::FromString(Key.Append(Value))); +} + +void ABlasterPlayerController::SetDebugMsg7(FString Key, FString Value) +{ + bool bHUDValid = BlasterHUD && BlasterHUD->DebugWidget && BlasterHUD->DebugWidget->DebugMsg7; + if (bHUDValid) BlasterHUD->DebugWidget->DebugMsg7->SetText(FText::FromString(Key.Append(Value))); } void ABlasterPlayerController::CheckTimeSync(float DeltaTime) @@ -74,6 +128,7 @@ void ABlasterPlayerController::ClientJoinMidgame_Implementation(FName StateOfMat OnMatchStateSet(MatchState); if (BlasterHUD && MatchState == MatchState::WaitingToStart) { + BlasterHUD->AddDebugWidget(); BlasterHUD->AddAnnouncementOverlay(); } } @@ -252,6 +307,14 @@ void ABlasterPlayerController::SetHUDTime() void ABlasterPlayerController::PollInit() { + if (DebugWidget == nullptr) + { + if (BlasterHUD && BlasterHUD->DebugWidget) + { + DebugWidget = BlasterHUD->DebugWidget; + } + } + if (CharacterOverlay == nullptr) { if (BlasterHUD && BlasterHUD->CharacterOverlay) diff --git a/Source/Blaster/PlayerController/BlasterPlayerController.h b/Source/Blaster/PlayerController/BlasterPlayerController.h index a995292..daa9e22 100644 --- a/Source/Blaster/PlayerController/BlasterPlayerController.h +++ b/Source/Blaster/PlayerController/BlasterPlayerController.h @@ -20,7 +20,14 @@ public: virtual void OnPossess(APawn* InPawn) override; virtual void ReceivedPlayer() override; // Sync with server clock as soon as possible virtual void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; - + + void SetDebugMsg1(FString Key, FString Value); + void SetDebugMsg2(FString Key, FString Value); + void SetDebugMsg3(FString Key, FString Value); + void SetDebugMsg4(FString Key, FString Value); + void SetDebugMsg5(FString Key, FString Value); + void SetDebugMsg6(FString Key, FString Value); + void SetDebugMsg7(FString Key, FString Value); void SetHUDHealth(float Health, float MaxHealth); void SetHUDScore(float Score); void SetHUDDefeats(int32 Defeats); @@ -68,6 +75,9 @@ protected: void ClientJoinMidgame(FName StateOfMatch, float Warmup, float Match, float Cooldown, float StartingTime); private: + UPROPERTY() + class UDebugWidget* DebugWidget; + UPROPERTY() class ABlasterHUD* BlasterHUD;