123 - Warmup Timer

This commit is contained in:
Kingsmedia 2022-05-10 13:31:39 +02:00
parent b9ac8954e7
commit 9f8760f862
8 changed files with 69 additions and 11 deletions

Binary file not shown.

View File

@ -0,0 +1,5 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "Announcement.h"

View File

@ -0,0 +1,25 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "Announcement.generated.h"
/**
*
*/
UCLASS()
class BLASTER_API UAnnouncement : public UUserWidget
{
GENERATED_BODY()
public:
UPROPERTY(meta = (BindWidget))
class UTextBlock* AnnouncementText;
UPROPERTY(meta = (BindWidget))
UTextBlock* WarmupTime;
};

View File

@ -3,6 +3,7 @@
#include "BlasterHUD.h"
#include "Announcement.h"
#include "CharacterOverlay.h"
#include "Blueprint/UserWidget.h"
@ -21,6 +22,16 @@ void ABlasterHUD::AddCharacterOverlay()
}
}
void ABlasterHUD::AddAnnouncementOverlay()
{
APlayerController* PlayerController = GetOwningPlayerController();
if (PlayerController && AnnouncementClass)
{
Announcement = CreateWidget<UAnnouncement>(PlayerController, AnnouncementClass);
Announcement->AddToViewport();
}
}
void ABlasterHUD::DrawHUD()
{
Super::DrawHUD();

View File

@ -32,6 +32,7 @@ class BLASTER_API ABlasterHUD : public AHUD
public:
virtual void DrawHUD() override;
void AddCharacterOverlay();
void AddAnnouncementOverlay();
UPROPERTY(EditAnywhere, Category = "Player Stats")
TSubclassOf<class UUserWidget> CharacterOverlayClass;
@ -39,6 +40,11 @@ public:
UPROPERTY()
class UCharacterOverlay* CharacterOverlay;
UPROPERTY(EditAnywhere, Category = "Announcements")
TSubclassOf<class UUserWidget> AnnouncementClass;
UPROPERTY()
class UAnnouncement* Announcement;
protected:
virtual void BeginPlay() override;

View File

@ -4,6 +4,7 @@
#include "BlasterPlayerController.h"
#include "Blaster/Character/BlasterCharacter.h"
#include "Blaster/HUD/Announcement.h"
#include "Blaster/HUD/BlasterHUD.h"
#include "Blaster/HUD/CharacterOverlay.h"
#include "Components/ProgressBar.h"
@ -17,6 +18,10 @@ void ABlasterPlayerController::BeginPlay()
Super::BeginPlay();
BlasterHUD = Cast<ABlasterHUD>(GetHUD());
if (BlasterHUD)
{
BlasterHUD->AddAnnouncementOverlay();
}
}
void ABlasterPlayerController::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
@ -72,17 +77,26 @@ float ABlasterPlayerController::GetServerTime()
return GetWorld()->GetTimeSeconds() + ClientServerDelta;
}
void ABlasterPlayerController::HandleMatchHasStarted()
{
BlasterHUD = BlasterHUD == nullptr ? Cast<ABlasterHUD>(GetHUD()) : BlasterHUD;
if (BlasterHUD)
{
BlasterHUD->AddCharacterOverlay();
if (BlasterHUD->Announcement)
{
BlasterHUD->Announcement->SetVisibility(ESlateVisibility::Hidden);
}
}
}
void ABlasterPlayerController::OnMatchStateSet(FName State)
{
MatchState = State;
if (MatchState == MatchState::InProgress)
{
BlasterHUD = BlasterHUD == nullptr ? Cast<ABlasterHUD>(GetHUD()) : BlasterHUD;
if (BlasterHUD)
{
BlasterHUD->AddCharacterOverlay();
}
HandleMatchHasStarted();
}
}
@ -90,11 +104,7 @@ void ABlasterPlayerController::OnRep_MatchState()
{
if (MatchState == MatchState::InProgress)
{
BlasterHUD = BlasterHUD == nullptr ? Cast<ABlasterHUD>(GetHUD()) : BlasterHUD;
if (BlasterHUD)
{
BlasterHUD->AddCharacterOverlay();
}
HandleMatchHasStarted();
}
}

View File

@ -37,6 +37,7 @@ protected:
virtual void BeginPlay() override;
void CheckTimeSync(float DeltaSeconds);
void HandleMatchHasStarted();
void SetHUDTime();
void PollInit();