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

#include <QuestTrackerWidget.h>

Inheritance diagram for UQuestTrackerWidget:
UBaseQuestSystemWidget IQuestTrackerHUD

Public Member Functions

 UQuestTrackerWidget (const FObjectInitializer &ObjectInitializer)
 
virtual void SetQuestTracker (const FQuestInfo &Info) override
 
virtual void SetTrackerVisibility (const bool bVisible) override
 
virtual bool GetIsTrackerVisible () const override
 
- Public Member Functions inherited from UBaseQuestSystemWidget
void SetQuestID (FString Quest)
 
virtual void UpdateQuestInfo (const FString &Quest, const FQuestInfo &NewQuestInfo)
 
virtual void UpdateQuestInfo (const FQuestInfo &NewQuestInfo)
 
void OnUpdateQuestInfo (const FString &Quest, const FQuestInfo &NewQuestInfo)
 
void SetQuestInfo (const FQuestInfo &NewQuestInfo)
 

Protected Member Functions

virtual bool Initialize () override
 
virtual void NativeConstruct () override
 

Protected Attributes

UTextBlock * QuestNameText = nullptr
 
UProgressBar * QuestProgressBar = nullptr
 
UPanelWidget * ObjectiveBox = nullptr
 
- Protected Attributes inherited from UBaseQuestSystemWidget
FString QuestID = "DefaultQuestID"
 
FQuestInfo QuestInfo
 

Private Attributes

TSubclassOf< class UUserWidget > ObjectiveWidgetClass
 

Additional Inherited Members

- Public Attributes inherited from UBaseQuestSystemWidget
FString TitleText = "Title"
 
FString DescriptionText = "Description"
 

Constructor & Destructor Documentation

◆ UQuestTrackerWidget()

UQuestTrackerWidget::UQuestTrackerWidget ( const FObjectInitializer & ObjectInitializer)
13 :Super(ObjectInitializer)
14{
15 ObjectiveWidgetClass = UBaseHelpersBPLib::GetDefaultWidgetBPClass("/QuestSystem/Widgets/WBP_QuestSystemObjective");
16}
static TSubclassOf< UUserWidget > GetDefaultWidgetBPClass(const FString &Location)
Definition BaseHelpersBPLib.cpp:227
TSubclassOf< class UUserWidget > ObjectiveWidgetClass
Definition QuestTrackerWidget.h:52

Member Function Documentation

◆ GetIsTrackerVisible()

bool UQuestTrackerWidget::GetIsTrackerVisible ( ) const
overridevirtual

Implements IQuestTrackerHUD.

85{
86 return IsVisible();
87}

◆ Initialize()

bool UQuestTrackerWidget::Initialize ( )
overrideprotectedvirtual
20{
21 const bool Success = Super::Initialize();
22 if (!ensure(QuestNameText != nullptr)) return false;
23 if (!ensure(QuestProgressBar != nullptr)) return false;
24 if (!ensure(ObjectiveBox != nullptr)) return false;
25 if(!Success) return false;
26 return true;
27}
UPanelWidget * ObjectiveBox
Definition QuestTrackerWidget.h:46
UProgressBar * QuestProgressBar
Definition QuestTrackerWidget.h:44
UTextBlock * QuestNameText
Definition QuestTrackerWidget.h:42

◆ NativeConstruct()

void UQuestTrackerWidget::NativeConstruct ( )
overrideprotectedvirtual
30{
31 Super::NativeConstruct();
32 if(!QuestInfo.IsValid()){SetVisibility(ESlateVisibility::Collapsed);}
33}
FQuestInfo QuestInfo
Definition BaseQuestSystemWidget.h:36
bool IsValid() const
Definition QuestData.h:893

◆ SetQuestTracker()

void UQuestTrackerWidget::SetQuestTracker ( const FQuestInfo & Info)
overridevirtual

Implements IQuestTrackerHUD.

37{
38 if(!Info.IsValid()){SetVisibility(ESlateVisibility::Collapsed);UE_LOG(LogQuestSystem,Warning,TEXT("UQuestTrackerWidget::SetQuestTracker No Quest Info, Quest Tracker Hidden"));return;}
39 Super::UpdateQuestInfo(Info.QuestID, Info);
40 QuestNameText->SetText(FText::FromString(Info.QuestName));
41 ObjectiveBox->ClearChildren();
42 float TotalProgress = 0.0f;
43 float TotalRequired = 0.0f;
44
45 if(ObjectiveWidgetClass == nullptr){UE_LOG(LogQuestSystem,Warning,TEXT("ObjectiveWidgetClass NULL in QuestTracker"));return;}
46 if(GetOwningPlayer() == nullptr){UE_LOG(LogQuestSystem,Warning,TEXT("Owning Player NULL in QuestTracker"));return;}
47 for(const auto Objective : Info.GetObjectives())
48 {
49 UQuestSystemObjectiveWidget* ObjectiveWidget = CreateWidget<UQuestSystemObjectiveWidget>(GetOwningPlayer(), ObjectiveWidgetClass);
50 if(ObjectiveWidget == nullptr){continue;}
51 ObjectiveWidget->SetObjective(Objective);
52 if(!Objective.bIsOptional && Objective.GetIsStarted())
53 {
54 TotalProgress += Objective.GetCurrentProgress();
55 TotalRequired += Objective.RequiredProgress;
56 }
57 //- If We don't have enough progress to see the Objective, don't show //
58 if(Objective.bIsUnlockedAtCertainProgress && Objective.UnlockProgressNeeded > Info.GetTotalProgress())
59 {
60 continue;
61 }
62 ObjectiveBox->AddChild(ObjectiveWidget);
63 }
64 if(TotalRequired != 0.0f)
65 {
66 QuestProgressBar->SetPercent(TotalProgress / TotalRequired);
67 }
69 {
70 QuestProgressBar->SetVisibility(ESlateVisibility::HitTestInvisible);
71 }
72 else
73 {
74 QuestProgressBar->SetVisibility(ESlateVisibility::Collapsed);
75 }
76}
A widget class used to display quest objectives.
Definition QuestSystemObjectiveWidget.h:18
void SetObjective(const FQuestObjectives &Objective)
Definition QuestSystemObjectiveWidget.cpp:159
bool bShowOverallProgress
Definition QuestData.h:816
FString QuestID
Definition QuestData.h:802
FString QuestName
Definition QuestData.h:805
int32 GetTotalProgress() const
Definition QuestData.h:932

◆ SetTrackerVisibility()

void UQuestTrackerWidget::SetTrackerVisibility ( const bool bVisible)
overridevirtual

Implements IQuestTrackerHUD.

79{
80 const ESlateVisibility NewVisibility = bVisible ? ESlateVisibility::Visible : ESlateVisibility::Collapsed;
81 SetVisibility(NewVisibility);
82}

Member Data Documentation

◆ ObjectiveBox

UPanelWidget* UQuestTrackerWidget::ObjectiveBox = nullptr
protected

◆ ObjectiveWidgetClass

TSubclassOf<class UUserWidget> UQuestTrackerWidget::ObjectiveWidgetClass
private

◆ QuestNameText

UTextBlock* UQuestTrackerWidget::QuestNameText = nullptr
protected

◆ QuestProgressBar

UProgressBar* UQuestTrackerWidget::QuestProgressBar = nullptr
protected

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