Space Plunder
Loading...
Searching...
No Matches
UScoreboardWidget Class Reference

#include <ScoreboardWidget.h>

Inheritance diagram for UScoreboardWidget:

Public Member Functions

 UScoreboardWidget (const FObjectInitializer &ObjectInitializer)
 
virtual bool Initialize () override
 
virtual void NativeConstruct () override
 
virtual void NativePreConstruct () override
 
void SetNumberOfTeams (int32 Amount)
 
void SetTotalScores (TArray< FTeamScoreData > Score, int32 Goal)
 
void UpdateScoreboard ()
 
void GetTeams ()
 
void UpdateScoreboardPlayers (TArray< APlayerState * > PlayerStates)
 

Protected Attributes

class UTextBlock * GameModeTextBlock
 
class UVerticalBox * TeamsVerticalBox
 
int32 Teams = 1
 
float ScoreboardUpdateFrequency = 0.5f
 
TArray< class UScoreboardTeamWidget * > TeamWidgets
 

Private Member Functions

void CreateTeamWidgets ()
 Remove just used SetTotalScores instead.
 
void VisibilityChanged (ESlateVisibility NewVisibility)
 

Private Attributes

FTimerHandle UpdateScoreboardTimerHandle
 
TSubclassOf< class UScoreboardRowWidgetScoreboardRowWidgetClass
 
TSubclassOf< class UScoreboardTeamWidgetScoreboardTeamWidgetClass
 
TArray< APlayerState * > AllPlayerStates
 

Constructor & Destructor Documentation

◆ UScoreboardWidget()

UScoreboardWidget::UScoreboardWidget ( const FObjectInitializer & ObjectInitializer)
17 : Super(ObjectInitializer)
18{
19 const ConstructorHelpers::FClassFinder<UScoreboardRowWidget> ScoreboardRowWidgetBP(TEXT("/MenuSystem/Widgets/Multiplayer/Scoreboard/WBP_ScoreboardRow"));
20 if (!ensure(ScoreboardRowWidgetBP.Class != nullptr)) return;
21 ScoreboardRowWidgetClass = ScoreboardRowWidgetBP.Class;
22 const ConstructorHelpers::FClassFinder<UScoreboardTeamWidget> ScoreboardTeamWidgetBP(TEXT("/MenuSystem/Widgets/Multiplayer/Scoreboard/WBP_ScoreboardTeam"));
23 if (!ensure(ScoreboardTeamWidgetBP.Class != nullptr)) return;
24 ScoreboardTeamWidgetClass = ScoreboardTeamWidgetBP.Class;
25}
TSubclassOf< class UScoreboardTeamWidget > ScoreboardTeamWidgetClass
Definition ScoreboardWidget.h:61
TSubclassOf< class UScoreboardRowWidget > ScoreboardRowWidgetClass
Definition ScoreboardWidget.h:59

Member Function Documentation

◆ CreateTeamWidgets()

void UScoreboardWidget::CreateTeamWidgets ( )
private

Remove just used SetTotalScores instead.

51{
52 // TeamsVerticalBox->ClearChildren();
53 // for(int i = 0; i < (Teams); i++)
54 // {
55 // if(ScoreboardTeamWidgetClass == nullptr){UE_LOG(LogMenuSystem, Warning, TEXT("ScoreboardTeam Class Failed"));return;}
56 // UScoreboardTeamWidget* ScoreboardTeam = CreateWidget<UScoreboardTeamWidget>(GetOwningPlayer(),ScoreboardTeamWidgetClass);
57 // if(ScoreboardTeam == nullptr){UE_LOG(LogMenuSystem, Warning, TEXT("ScoreboardTeam Failed to Create"));return;}
58 // TeamWidgets.AddUnique(ScoreboardTeam);
59 // //TODO Set Team ID
60 // TeamsVerticalBox->AddChild(ScoreboardTeam);
61 // // UScoreboardRowWidget* ScoreboardRow = CreateWidget<UScoreboardRowWidget>(GetOwningPlayer(), ScoreboardRowWidgetClass);
62 // // if(ScoreboardRow == nullptr){UE_LOG(LogMenuSystem, Warning, TEXT("Scoreboard Row Failed to Create"));return;}
63 // // TeamsVerticalBox->AddChild(ScoreboardRow);
64 // }
65}

◆ GetTeams()

void UScoreboardWidget::GetTeams ( )
131{
132
133}

◆ Initialize()

bool UScoreboardWidget::Initialize ( )
overridevirtual
28{
29 const bool Success = Super::Initialize();
30 if(!Success) return false;
31 if (!ensure(GameModeTextBlock != nullptr)) return false;
32 if (!ensure(TeamsVerticalBox != nullptr)) return false;
33 OnVisibilityChanged.AddDynamic(this, &UScoreboardWidget::VisibilityChanged);
34 return true;
35}
class UTextBlock * GameModeTextBlock
Definition ScoreboardWidget.h:39
class UVerticalBox * TeamsVerticalBox
Definition ScoreboardWidget.h:41
void VisibilityChanged(ESlateVisibility NewVisibility)
Definition ScoreboardWidget.cpp:67

◆ NativeConstruct()

void UScoreboardWidget::NativeConstruct ( )
overridevirtual
38{
39 Super::NativeConstruct();
40 GetTeams();
41 // CreateTeamWidgets();
42}
void GetTeams()
Definition ScoreboardWidget.cpp:130

◆ NativePreConstruct()

void UScoreboardWidget::NativePreConstruct ( )
overridevirtual
45{
46 Super::NativePreConstruct();
47}

◆ SetNumberOfTeams()

void UScoreboardWidget::SetNumberOfTeams ( int32 Amount)
inline
25{Teams = Amount;};
int32 Teams
Definition ScoreboardWidget.h:44

◆ SetTotalScores()

void UScoreboardWidget::SetTotalScores ( TArray< FTeamScoreData > Score,
int32 Goal )
82{
83 Teams = Scores.Num();
84 TeamsVerticalBox->ClearChildren();
85 for(const FTeamScoreData Data : Scores)
86 {
87 if(ScoreboardTeamWidgetClass == nullptr){UE_LOG(LogMenuSystem, Warning, TEXT("ScoreboardTeam Class Failed"));return;}
88 UScoreboardTeamWidget* ScoreboardTeam = CreateWidget<UScoreboardTeamWidget>(GetOwningPlayer(),ScoreboardTeamWidgetClass);
89 if(ScoreboardTeam == nullptr){UE_LOG(LogMenuSystem, Warning, TEXT("ScoreboardTeam Failed to Create"));return;}
90 TeamWidgets.AddUnique(ScoreboardTeam);
91 ScoreboardTeam->SetTeam("Team Name", Data.TeamID, nullptr);
92 ScoreboardTeam->SetGoalScore(Goal);
93 ScoreboardTeam->UpdateTeamScore(Data.TeamScore);
94
95 TeamsVerticalBox->AddChild(ScoreboardTeam);
96 }
97}
Definition ScoreboardTeamWidget.h:11
void SetGoalScore(int32 Goal)
Definition ScoreboardTeamWidget.cpp:29
void SetTeam(FString Name, int32 ID, UTexture2D *Icon)
Definition ScoreboardTeamWidget.cpp:21
void UpdateTeamScore(int32 Score)
Definition ScoreboardTeamWidget.cpp:34
TArray< class UScoreboardTeamWidget * > TeamWidgets
Definition ScoreboardWidget.h:49
Definition MultiplayerData.h:37

◆ UpdateScoreboard()

void UScoreboardWidget::UpdateScoreboard ( )
101{
102
103 // AGameStateBase* GameState = UGameplayStatics::GetGameState(GetOwningPlayer());
104 // if(GameState == nullptr){UE_LOG(LogMenuSystem, Error, TEXT("Game State Missing in Update scoreboard scoreboard widget"));return;}
105 for(const UScoreboardTeamWidget* TeamWidget : TeamWidgets)
106 {
107 TeamWidget->PlayersScrollBox->ClearChildren();
108 const int32 TeamWidgetID = TeamWidget->GetTeamID();
109 int32 Index = 0;
110 for(APlayerState* PlayerState : AllPlayerStates)
111 {
112 //TODO maybe have Interface for player state,
113 const AMenuSystemPlayerState* MenuPlayerState = Cast<AMenuSystemPlayerState>(PlayerState);
114 if(MenuPlayerState == nullptr){UE_LOG(LogMenuSystem, Error, TEXT("Scoreboard Failed to cast Menu Player State"));return;}
115 //todo Temp remove team check
116 if(TeamWidgetID == MenuPlayerState->GetTeamID())
117 {
118 UScoreboardRowWidget* ScoreboardRow = CreateWidget<UScoreboardRowWidget>(GetOwningPlayer(), ScoreboardRowWidgetClass);
119 if(ScoreboardRow == nullptr){UE_LOG(LogMenuSystem, Error, TEXT("Scoreboard Row Failed to Create"));return;}
120 ScoreboardRow->SetPlayerState(PlayerState);
121 ScoreboardRow->SetRowIndex(Index);
122 ScoreboardRow->UpdatePlayerStats();
123 TeamWidget->PlayersScrollBox->AddChild(ScoreboardRow);
124 }
125 ++Index;
126 }
127 }
128}
Definition MenuSystemPlayerState.h:19
int32 GetTeamID() const
Definition MenuSystemPlayerState.h:45
Definition ScoreboardRowWidget.h:11
void SetPlayerState(class APlayerState *PlayerState)
Definition ScoreboardRowWidget.cpp:38
void UpdatePlayerStats()
Definition ScoreboardRowWidget.cpp:66
void SetRowIndex(int32 Index)
Definition ScoreboardRowWidget.cpp:77
TArray< APlayerState * > AllPlayerStates
Definition ScoreboardWidget.h:63

◆ UpdateScoreboardPlayers()

void UScoreboardWidget::UpdateScoreboardPlayers ( TArray< APlayerState * > PlayerStates)
136{
137 AllPlayerStates = PlayerStates;
138 // for(UScoreboardTeamWidget* TeamWidget : TeamWidgets)
139 // {
140 // TeamWidget->PlayersScrollBox->ClearChildren();
141 // const int32 TeamWidgetID = TeamWidget->GetTeamID();
142 // for(APlayerState* PlayerState : PlayerStates)
143 // {
144 // //TODO maybe have Interface for player state,
145 // const AMenuSystemPlayerState* MenuPlayerState = Cast<AMenuSystemPlayerState>(PlayerState);
146 // if(MenuPlayerState == nullptr){UE_LOG(LogMenuSystem, Error, TEXT("Scoreboard Failed to cast Menu Player State"));return;}
147 // if(TeamWidgetID == MenuPlayerState->GetTeamID())
148 // {
149 // UScoreboardRowWidget* ScoreboardRow = CreateWidget<UScoreboardRowWidget>(GetOwningPlayer(), ScoreboardRowWidgetClass);
150 // if(ScoreboardRow == nullptr){UE_LOG(LogMenuSystem, Error, TEXT("Scoreboard Row Failed to Create"));return;}
151 // ScoreboardRow->SetPlayerState(PlayerState);
152 // ScoreboardRow->UpdatePlayerStats();
153 // TeamWidget->PlayersScrollBox->AddChild(ScoreboardRow);
154 // }
155 // }
156 // }
157}

◆ VisibilityChanged()

void UScoreboardWidget::VisibilityChanged ( ESlateVisibility NewVisibility)
private
68{
69 if(IsVisible())
70 {
71 GetWorld()->GetTimerManager().SetTimer(UpdateScoreboardTimerHandle, this, &UScoreboardWidget::UpdateScoreboard, ScoreboardUpdateFrequency, true);
73 }
74 else
75 {
76 GetWorld()->GetTimerManager().ClearTimer(UpdateScoreboardTimerHandle);
77 }
78}
void UpdateScoreboard()
Definition ScoreboardWidget.cpp:100
float ScoreboardUpdateFrequency
Definition ScoreboardWidget.h:46
FTimerHandle UpdateScoreboardTimerHandle
Definition ScoreboardWidget.h:56

Member Data Documentation

◆ AllPlayerStates

TArray<APlayerState*> UScoreboardWidget::AllPlayerStates
private

◆ GameModeTextBlock

class UTextBlock* UScoreboardWidget::GameModeTextBlock
protected

◆ ScoreboardRowWidgetClass

TSubclassOf<class UScoreboardRowWidget> UScoreboardWidget::ScoreboardRowWidgetClass
private

◆ ScoreboardTeamWidgetClass

TSubclassOf<class UScoreboardTeamWidget> UScoreboardWidget::ScoreboardTeamWidgetClass
private

◆ ScoreboardUpdateFrequency

float UScoreboardWidget::ScoreboardUpdateFrequency = 0.5f
protected

◆ Teams

int32 UScoreboardWidget::Teams = 1
protected

◆ TeamsVerticalBox

class UVerticalBox* UScoreboardWidget::TeamsVerticalBox
protected

◆ TeamWidgets

TArray<class UScoreboardTeamWidget*> UScoreboardWidget::TeamWidgets
protected

◆ UpdateScoreboardTimerHandle

FTimerHandle UScoreboardWidget::UpdateScoreboardTimerHandle
private

The documentation for this class was generated from the following files: