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);
|
||||
if (BlasterPlayer)
|
||||
{
|
||||
BlasterPlayer->OnMatchStateSet(MatchState);
|
||||
BlasterPlayer->OnMatchStateSet(MatchState, bTeamsMatch);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,6 +41,8 @@ public:
|
|||
|
||||
float LevelStartingTime = 0.f;
|
||||
|
||||
bool bTeamsMatch = false;
|
||||
|
||||
protected:
|
||||
virtual void BeginPlay() override;
|
||||
virtual void OnMatchStateSet() override;
|
||||
|
|
|
@ -6,6 +6,11 @@
|
|||
#include "Blaster/GameState/BlasterGameState.h"
|
||||
#include "Kismet/GameplayStatics.h"
|
||||
|
||||
ATeamsGameMode::ATeamsGameMode()
|
||||
{
|
||||
bTeamsMatch = true;
|
||||
}
|
||||
|
||||
void ATeamsGameMode::PostLogin(APlayerController* NewPlayer)
|
||||
{
|
||||
Super::PostLogin(NewPlayer);
|
||||
|
|
|
@ -15,6 +15,7 @@ class BLASTER_API ATeamsGameMode : public ABlasterGameMode
|
|||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
ATeamsGameMode();
|
||||
virtual void PostLogin(APlayerController* NewPlayer) override;
|
||||
virtual void Logout(AController* Exiting) 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()
|
||||
{
|
||||
|
||||
|
|
|
@ -22,6 +22,10 @@ public:
|
|||
TArray<ABlasterPlayerState*> TopScoringPlayers;
|
||||
|
||||
// Teams
|
||||
|
||||
void RedTeamScores();
|
||||
void BlueTeamScores();
|
||||
|
||||
TArray<ABlasterPlayerState*> RedTeam;
|
||||
TArray<ABlasterPlayerState*> BlueTeam;
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
#include "CoreMinimal.h"
|
||||
#include "Blueprint/UserWidget.h"
|
||||
#include "Components/Border.h"
|
||||
#include "Components/Image.h"
|
||||
#include "CharacterOverlay.generated.h"
|
||||
|
||||
|
@ -32,6 +33,18 @@ public:
|
|||
UPROPERTY(meta = (BindWidget))
|
||||
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))
|
||||
UTextBlock* DefeatsValue;
|
||||
|
||||
|
|
|
@ -71,6 +71,72 @@ void ABlasterPlayerController::GetLifetimeReplicatedProps(TArray<FLifetimeProper
|
|||
Super::GetLifetimeReplicatedProps(OutLifetimeProps);
|
||||
|
||||
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)
|
||||
|
@ -156,6 +222,18 @@ void ABlasterPlayerController::ShowReturnToMainMenu()
|
|||
}
|
||||
}
|
||||
|
||||
void ABlasterPlayerController::OnRep_ShowTeamScores()
|
||||
{
|
||||
if (bShowTeamScores)
|
||||
{
|
||||
InitTeamScores();
|
||||
}
|
||||
else
|
||||
{
|
||||
HideTeamScores();
|
||||
}
|
||||
}
|
||||
|
||||
// Is the ping to high?
|
||||
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;
|
||||
|
||||
if (MatchState == MatchState::InProgress)
|
||||
{
|
||||
HandleMatchHasStarted();
|
||||
HandleMatchHasStarted(bTeamsMatch);
|
||||
}
|
||||
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;
|
||||
if (BlasterHUD)
|
||||
{
|
||||
|
@ -588,6 +668,16 @@ void ABlasterPlayerController::HandleMatchHasStarted()
|
|||
if (BlasterHUD->Announcement)
|
||||
{
|
||||
BlasterHUD->Announcement->SetVisibility(ESlateVisibility::Hidden);
|
||||
|
||||
if (!HasAuthority()) return;
|
||||
if (bTeamsMatch)
|
||||
{
|
||||
InitTeamScores();
|
||||
}
|
||||
else
|
||||
{
|
||||
HideTeamScores();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,6 +23,10 @@ public:
|
|||
virtual void OnPossess(APawn* InPawn) override;
|
||||
virtual void ReceivedPlayer() override; // Sync with server clock as soon as possible
|
||||
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 SetDebugMsg2(FString Key, FString Value);
|
||||
|
@ -45,7 +49,7 @@ public:
|
|||
// Synced with server world clock
|
||||
virtual float GetServerTime();
|
||||
|
||||
void OnMatchStateSet(FName State);
|
||||
void OnMatchStateSet(FName State, bool bTeamsMatch = false);
|
||||
void HandleCooldown();
|
||||
|
||||
float SingleTripTime = 0.f;
|
||||
|
@ -58,7 +62,7 @@ protected:
|
|||
virtual void SetupInputComponent() override;
|
||||
virtual void BeginPlay() override;
|
||||
void CheckTimeSync(float DeltaTime);
|
||||
void HandleMatchHasStarted();
|
||||
void HandleMatchHasStarted(bool bTeamsMatch = false);
|
||||
void SetHUDTime();
|
||||
void PollInit();
|
||||
|
||||
|
@ -94,6 +98,12 @@ protected:
|
|||
UFUNCTION(Client, Reliable)
|
||||
void ClientElimAnnouncement(APlayerState* Attacker, APlayerState* Victim);
|
||||
|
||||
UPROPERTY(ReplicatedUsing = OnRep_ShowTeamScores)
|
||||
bool bShowTeamScores = false;
|
||||
|
||||
UFUNCTION()
|
||||
void OnRep_ShowTeamScores();
|
||||
|
||||
private:
|
||||
UPROPERTY()
|
||||
class UDebugWidget* DebugWidget;
|
||||
|
|
Loading…
Reference in New Issue