219 - Updating Team Scores
This commit is contained in:
parent
5d3c2aacf7
commit
efbb1d9269
Binary file not shown.
|
@ -67,7 +67,7 @@ void ABlasterGameMode::OnMatchStateSet()
|
||||||
ABlasterPlayerController* BlasterPlayer = Cast<ABlasterPlayerController>(*It);
|
ABlasterPlayerController* BlasterPlayer = Cast<ABlasterPlayerController>(*It);
|
||||||
if (BlasterPlayer)
|
if (BlasterPlayer)
|
||||||
{
|
{
|
||||||
BlasterPlayer->OnMatchStateSet(MatchState);
|
BlasterPlayer->OnMatchStateSet(MatchState, bTeamsMatch);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,6 +41,8 @@ public:
|
||||||
|
|
||||||
float LevelStartingTime = 0.f;
|
float LevelStartingTime = 0.f;
|
||||||
|
|
||||||
|
bool bTeamsMatch = false;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void BeginPlay() override;
|
virtual void BeginPlay() override;
|
||||||
virtual void OnMatchStateSet() override;
|
virtual void OnMatchStateSet() override;
|
||||||
|
|
|
@ -6,6 +6,11 @@
|
||||||
#include "Blaster/GameState/BlasterGameState.h"
|
#include "Blaster/GameState/BlasterGameState.h"
|
||||||
#include "Kismet/GameplayStatics.h"
|
#include "Kismet/GameplayStatics.h"
|
||||||
|
|
||||||
|
ATeamsGameMode::ATeamsGameMode()
|
||||||
|
{
|
||||||
|
bTeamsMatch = true;
|
||||||
|
}
|
||||||
|
|
||||||
void ATeamsGameMode::PostLogin(APlayerController* NewPlayer)
|
void ATeamsGameMode::PostLogin(APlayerController* NewPlayer)
|
||||||
{
|
{
|
||||||
Super::PostLogin(NewPlayer);
|
Super::PostLogin(NewPlayer);
|
||||||
|
|
|
@ -15,6 +15,7 @@ class BLASTER_API ATeamsGameMode : public ABlasterGameMode
|
||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
ATeamsGameMode();
|
||||||
virtual void PostLogin(APlayerController* NewPlayer) override;
|
virtual void PostLogin(APlayerController* NewPlayer) override;
|
||||||
virtual void Logout(AController* Exiting) override;
|
virtual void Logout(AController* Exiting) override;
|
||||||
virtual float CalculateDamage(AController* Attacker, AController* Victim, float BaseDamage) override;
|
virtual float CalculateDamage(AController* Attacker, AController* Victim, float BaseDamage) override;
|
||||||
|
|
|
@ -34,6 +34,16 @@ void ABlasterGameState::UpdateTopScore(ABlasterPlayerState* ScoringPlayer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ABlasterGameState::RedTeamScores()
|
||||||
|
{
|
||||||
|
++RedTeamScore;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ABlasterGameState::BlueTeamScores()
|
||||||
|
{
|
||||||
|
++BlueTeamScore;
|
||||||
|
}
|
||||||
|
|
||||||
void ABlasterGameState::OnRep_RedTeamScore()
|
void ABlasterGameState::OnRep_RedTeamScore()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,10 @@ public:
|
||||||
TArray<ABlasterPlayerState*> TopScoringPlayers;
|
TArray<ABlasterPlayerState*> TopScoringPlayers;
|
||||||
|
|
||||||
// Teams
|
// Teams
|
||||||
|
|
||||||
|
void RedTeamScores();
|
||||||
|
void BlueTeamScores();
|
||||||
|
|
||||||
TArray<ABlasterPlayerState*> RedTeam;
|
TArray<ABlasterPlayerState*> RedTeam;
|
||||||
TArray<ABlasterPlayerState*> BlueTeam;
|
TArray<ABlasterPlayerState*> BlueTeam;
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "Blueprint/UserWidget.h"
|
#include "Blueprint/UserWidget.h"
|
||||||
|
#include "Components/Border.h"
|
||||||
#include "Components/Image.h"
|
#include "Components/Image.h"
|
||||||
#include "CharacterOverlay.generated.h"
|
#include "CharacterOverlay.generated.h"
|
||||||
|
|
||||||
|
@ -31,7 +32,19 @@ public:
|
||||||
|
|
||||||
UPROPERTY(meta = (BindWidget))
|
UPROPERTY(meta = (BindWidget))
|
||||||
UTextBlock* ScoreValue;
|
UTextBlock* ScoreValue;
|
||||||
|
|
||||||
|
UPROPERTY(meta = (BindWidget))
|
||||||
|
UBorder* RedTeamScoreBorder;
|
||||||
|
|
||||||
|
UPROPERTY(meta = (BindWidget))
|
||||||
|
UTextBlock* RedTeamScore;
|
||||||
|
|
||||||
|
UPROPERTY(meta = (BindWidget))
|
||||||
|
UBorder* BlueTeamScoreBorder;
|
||||||
|
|
||||||
|
UPROPERTY(meta = (BindWidget))
|
||||||
|
UTextBlock* BlueTeamScore;
|
||||||
|
|
||||||
UPROPERTY(meta = (BindWidget))
|
UPROPERTY(meta = (BindWidget))
|
||||||
UTextBlock* DefeatsValue;
|
UTextBlock* DefeatsValue;
|
||||||
|
|
||||||
|
|
|
@ -71,6 +71,72 @@ void ABlasterPlayerController::GetLifetimeReplicatedProps(TArray<FLifetimeProper
|
||||||
Super::GetLifetimeReplicatedProps(OutLifetimeProps);
|
Super::GetLifetimeReplicatedProps(OutLifetimeProps);
|
||||||
|
|
||||||
DOREPLIFETIME(ABlasterPlayerController, MatchState);
|
DOREPLIFETIME(ABlasterPlayerController, MatchState);
|
||||||
|
DOREPLIFETIME(ABlasterPlayerController, bShowTeamScores);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ABlasterPlayerController::HideTeamScores()
|
||||||
|
{
|
||||||
|
BlasterHUD = BlasterHUD == nullptr ? Cast<ABlasterHUD>(GetHUD()) : BlasterHUD;
|
||||||
|
bool bHUDValid = BlasterHUD &&
|
||||||
|
BlasterHUD->CharacterOverlay &&
|
||||||
|
BlasterHUD->CharacterOverlay->RedTeamScore &&
|
||||||
|
BlasterHUD->CharacterOverlay->RedTeamScoreBorder &&
|
||||||
|
BlasterHUD->CharacterOverlay->BlueTeamScore &&
|
||||||
|
BlasterHUD->CharacterOverlay->BlueTeamScoreBorder;
|
||||||
|
if (bHUDValid)
|
||||||
|
{
|
||||||
|
BlasterHUD->CharacterOverlay->RedTeamScore->SetText(FText());
|
||||||
|
BlasterHUD->CharacterOverlay->RedTeamScoreBorder->SetVisibility(ESlateVisibility::Hidden);
|
||||||
|
BlasterHUD->CharacterOverlay->BlueTeamScore->SetText(FText());
|
||||||
|
BlasterHUD->CharacterOverlay->BlueTeamScoreBorder->SetVisibility(ESlateVisibility::Hidden);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ABlasterPlayerController::InitTeamScores()
|
||||||
|
{
|
||||||
|
BlasterHUD = BlasterHUD == nullptr ? Cast<ABlasterHUD>(GetHUD()) : BlasterHUD;
|
||||||
|
bool bHUDValid = BlasterHUD &&
|
||||||
|
BlasterHUD->CharacterOverlay &&
|
||||||
|
BlasterHUD->CharacterOverlay->RedTeamScore &&
|
||||||
|
BlasterHUD->CharacterOverlay->RedTeamScoreBorder &&
|
||||||
|
BlasterHUD->CharacterOverlay->BlueTeamScore &&
|
||||||
|
BlasterHUD->CharacterOverlay->BlueTeamScoreBorder;
|
||||||
|
if (bHUDValid)
|
||||||
|
{
|
||||||
|
FString Zero("0");
|
||||||
|
BlasterHUD->CharacterOverlay->RedTeamScore->SetText(FText::FromString(Zero));
|
||||||
|
BlasterHUD->CharacterOverlay->RedTeamScoreBorder->SetVisibility(ESlateVisibility::Visible);
|
||||||
|
BlasterHUD->CharacterOverlay->BlueTeamScore->SetText(FText::FromString(Zero));
|
||||||
|
BlasterHUD->CharacterOverlay->BlueTeamScoreBorder->SetVisibility(ESlateVisibility::Visible);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ABlasterPlayerController::SetHUDRedTeamScore(int32 RedScore)
|
||||||
|
{
|
||||||
|
BlasterHUD = BlasterHUD == nullptr ? Cast<ABlasterHUD>(GetHUD()) : BlasterHUD;
|
||||||
|
bool bHUDValid = BlasterHUD &&
|
||||||
|
BlasterHUD->CharacterOverlay &&
|
||||||
|
BlasterHUD->CharacterOverlay->RedTeamScore &&
|
||||||
|
BlasterHUD->CharacterOverlay->RedTeamScoreBorder;
|
||||||
|
if (bHUDValid)
|
||||||
|
{
|
||||||
|
const FString ScoreText = FString::Printf(TEXT("%d"), RedScore);
|
||||||
|
BlasterHUD->CharacterOverlay->RedTeamScore->SetText(FText::FromString(ScoreText));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ABlasterPlayerController::SetHUDBlueTeamScore(int32 BlueScore)
|
||||||
|
{
|
||||||
|
BlasterHUD = BlasterHUD == nullptr ? Cast<ABlasterHUD>(GetHUD()) : BlasterHUD;
|
||||||
|
bool bHUDValid = BlasterHUD &&
|
||||||
|
BlasterHUD->CharacterOverlay &&
|
||||||
|
BlasterHUD->CharacterOverlay->BlueTeamScore &&
|
||||||
|
BlasterHUD->CharacterOverlay->BlueTeamScoreBorder;
|
||||||
|
if (bHUDValid)
|
||||||
|
{
|
||||||
|
const FString ScoreText = FString::Printf(TEXT("%d"), BlueScore);
|
||||||
|
BlasterHUD->CharacterOverlay->BlueTeamScore->SetText(FText::FromString(ScoreText));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ABlasterPlayerController::SetDebugMsg1(FString Key, FString Value)
|
void ABlasterPlayerController::SetDebugMsg1(FString Key, FString Value)
|
||||||
|
@ -156,6 +222,18 @@ void ABlasterPlayerController::ShowReturnToMainMenu()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ABlasterPlayerController::OnRep_ShowTeamScores()
|
||||||
|
{
|
||||||
|
if (bShowTeamScores)
|
||||||
|
{
|
||||||
|
InitTeamScores();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
HideTeamScores();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Is the ping to high?
|
// Is the ping to high?
|
||||||
void ABlasterPlayerController::ServerReportPingStatus_Implementation(bool bHighPing)
|
void ABlasterPlayerController::ServerReportPingStatus_Implementation(bool bHighPing)
|
||||||
{
|
{
|
||||||
|
@ -553,13 +631,13 @@ void ABlasterPlayerController::ReceivedPlayer()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ABlasterPlayerController::OnMatchStateSet(FName State)
|
void ABlasterPlayerController::OnMatchStateSet(FName State, bool bTeamsMatch)
|
||||||
{
|
{
|
||||||
MatchState = State;
|
MatchState = State;
|
||||||
|
|
||||||
if (MatchState == MatchState::InProgress)
|
if (MatchState == MatchState::InProgress)
|
||||||
{
|
{
|
||||||
HandleMatchHasStarted();
|
HandleMatchHasStarted(bTeamsMatch);
|
||||||
}
|
}
|
||||||
else if (MatchState == MatchState::Cooldown)
|
else if (MatchState == MatchState::Cooldown)
|
||||||
{
|
{
|
||||||
|
@ -579,8 +657,10 @@ void ABlasterPlayerController::OnRep_MatchState()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ABlasterPlayerController::HandleMatchHasStarted()
|
void ABlasterPlayerController::HandleMatchHasStarted(bool bTeamsMatch)
|
||||||
{
|
{
|
||||||
|
if (HasAuthority()) bShowTeamScores = bTeamsMatch;
|
||||||
|
|
||||||
BlasterHUD = BlasterHUD == nullptr ? Cast<ABlasterHUD>(GetHUD()) : BlasterHUD;
|
BlasterHUD = BlasterHUD == nullptr ? Cast<ABlasterHUD>(GetHUD()) : BlasterHUD;
|
||||||
if (BlasterHUD)
|
if (BlasterHUD)
|
||||||
{
|
{
|
||||||
|
@ -588,6 +668,16 @@ void ABlasterPlayerController::HandleMatchHasStarted()
|
||||||
if (BlasterHUD->Announcement)
|
if (BlasterHUD->Announcement)
|
||||||
{
|
{
|
||||||
BlasterHUD->Announcement->SetVisibility(ESlateVisibility::Hidden);
|
BlasterHUD->Announcement->SetVisibility(ESlateVisibility::Hidden);
|
||||||
|
|
||||||
|
if (!HasAuthority()) return;
|
||||||
|
if (bTeamsMatch)
|
||||||
|
{
|
||||||
|
InitTeamScores();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
HideTeamScores();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,11 @@ public:
|
||||||
virtual void OnPossess(APawn* InPawn) override;
|
virtual void OnPossess(APawn* InPawn) override;
|
||||||
virtual void ReceivedPlayer() override; // Sync with server clock as soon as possible
|
virtual void ReceivedPlayer() override; // Sync with server clock as soon as possible
|
||||||
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
|
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
|
||||||
|
void HideTeamScores();
|
||||||
|
void InitTeamScores();
|
||||||
|
void SetHUDRedTeamScore(int32 RedScore);
|
||||||
|
void SetHUDBlueTeamScore(int32 BlueScore);
|
||||||
|
|
||||||
void SetDebugMsg1(FString Key, FString Value);
|
void SetDebugMsg1(FString Key, FString Value);
|
||||||
void SetDebugMsg2(FString Key, FString Value);
|
void SetDebugMsg2(FString Key, FString Value);
|
||||||
void SetDebugMsg3(FString Key, FString Value);
|
void SetDebugMsg3(FString Key, FString Value);
|
||||||
|
@ -45,7 +49,7 @@ public:
|
||||||
// Synced with server world clock
|
// Synced with server world clock
|
||||||
virtual float GetServerTime();
|
virtual float GetServerTime();
|
||||||
|
|
||||||
void OnMatchStateSet(FName State);
|
void OnMatchStateSet(FName State, bool bTeamsMatch = false);
|
||||||
void HandleCooldown();
|
void HandleCooldown();
|
||||||
|
|
||||||
float SingleTripTime = 0.f;
|
float SingleTripTime = 0.f;
|
||||||
|
@ -58,7 +62,7 @@ protected:
|
||||||
virtual void SetupInputComponent() override;
|
virtual void SetupInputComponent() override;
|
||||||
virtual void BeginPlay() override;
|
virtual void BeginPlay() override;
|
||||||
void CheckTimeSync(float DeltaTime);
|
void CheckTimeSync(float DeltaTime);
|
||||||
void HandleMatchHasStarted();
|
void HandleMatchHasStarted(bool bTeamsMatch = false);
|
||||||
void SetHUDTime();
|
void SetHUDTime();
|
||||||
void PollInit();
|
void PollInit();
|
||||||
|
|
||||||
|
@ -93,6 +97,12 @@ protected:
|
||||||
|
|
||||||
UFUNCTION(Client, Reliable)
|
UFUNCTION(Client, Reliable)
|
||||||
void ClientElimAnnouncement(APlayerState* Attacker, APlayerState* Victim);
|
void ClientElimAnnouncement(APlayerState* Attacker, APlayerState* Victim);
|
||||||
|
|
||||||
|
UPROPERTY(ReplicatedUsing = OnRep_ShowTeamScores)
|
||||||
|
bool bShowTeamScores = false;
|
||||||
|
|
||||||
|
UFUNCTION()
|
||||||
|
void OnRep_ShowTeamScores();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
|
|
Loading…
Reference in New Issue