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

#include <QuestLogWidget.h>

Inheritance diagram for UQuestLogWidget:
UBaseQuestWidget IQuestLogHUD UBaseActivatableWidget

Public Member Functions

 UQuestLogWidget (const FObjectInitializer &ObjectInitializer)
 
virtual void UpdateQuestStatus () override
 
virtual void PopulateQuestList (const bool bHideSelectedQuest)
 
void SetFilterType (const EFilterQuestType NewFilterType)
 
void ClearSelectedQuestInfo ()
 
void ClearSelectedQuestInfo_Implementation ()
 
bool GetSelectedQuest (FQuestInfo &QuestInfo) const
 
void LoadQuestLogSettings (const EFilterQuestType SavedFilterType, const FQuestInfo &SavedCurrentQuest)
 
void UpdateInfoOnButtonClicked (const FQuestInfo &QuestInfo)
 
UQuestButtonWidgetGetQuestButtonFromQuestID (const FString &QuestID) const
 
void OnQuestCompleted (const FQuestInfo &QuestInfo, const FQuestOutcome &Outcome)
 Check what this actually does, Replace with .Complete()
 
EFilterQuestType GetFilterType () const
 

Protected Member Functions

virtual bool Initialize () override
 
virtual void NativeConstruct () override
 
void UpdateQuestInformation (const FQuestInfo &QuestInfo) const
 
- Protected Member Functions inherited from UBaseQuestWidget
class IQuestViewGetQuestViewer ()
 
class IQuestDataInterfaceGetQuestData ()
 
class IQuestReporterGetQuestReporter ()
 
virtual void NativeTick (const FGeometry &MyGeometry, float InDeltaTime) override
 
- Protected Member Functions inherited from UBaseActivatableWidget
void LogDebugError (const FString &Message) const
 
void LogDebugError (const FString &Message, const int32 Value) const
 
void LogDebugError (const FString &Message, const float Value) const
 
void LogDebugWarning (const FString &Message) const
 
void LogDebugWarning (const FString &Message, const int32 Value) const
 
void LogDebugWarning (const FString &Message, const float Value) const
 
void LogDebugMessage (const FString &Message, const bool bWarning=false, const bool bError=false) const
 
void LogDebugMessage (const FString &Message, const int32 Value, const bool bWarning=false, const bool bError=false) const
 
void LogDebugMessage (const FString &Message, const float Value, const bool bWarning=false, const bool bError=false) const
 
void LogDebugMessage (const FString &Message, const bool bValue, const bool bWarning, const bool bError) const
 
void LogOnScreenMessage (const int32 Key, const FString &Message, FColor Color=FColor::Green) const
 
void SetCategoryName (const FLogCategoryBase &Category)
 

Protected Attributes

EFilterQuestType FilterType = EFilterQuestType::All
 
TSubclassOf< UQuestButtonWidgetQuestButtonWidgetClass = nullptr
 
TSubclassOf< UQuestSystemObjectiveWidgetQuestSystemObjectiveWidgetClass = nullptr
 
TSubclassOf< class UBaseQuestSystemWidgetQuestRewardWidgetClass = nullptr
 
TArray< UQuestButtonWidget * > QuestButtonWidgets
 
TArray< UQuestButtonWidget * > QuestFilterButtonWidgets
 
class UScrollBox * QuestBox = nullptr
 
class UScrollBox * QuestFilterBox = nullptr
 
class UButton * AbandonQuestButton = nullptr
 
class UButton * TrackQuestButton = nullptr
 
class UTextBlock * CurrentQuestText = nullptr
 
class UTextBlock * QuestCategoryText = nullptr
 
class UPanelWidget * ObjectivesBox = nullptr
 
class UTextBlock * QuestAreaText = nullptr
 
class UTextBlock * QuestDescriptionText = nullptr
 
class UTextBlock * QuestCurrentObjectiveText = nullptr
 
class UScrollBox * QuestRewardsBox = nullptr
 
class UButton * RemoveQuestButton = nullptr
 
class UButton * FinishQuestButton = nullptr
 
class UButton * FailQuestButton = nullptr
 
- Protected Attributes inherited from UBaseActivatableWidget
bool bDebuggingMode = false
 

Private Member Functions

void UpdateSelectedQuest (const FPlayerQuestStatus &PlayerQuestStatus)
 
void PopulateFilterList ()
 
void RemoveAllQuestButtons ()
 
bool CreateQuestButton (const FQuestInfo &QuestInfo)
 
void SetCurrentQuestObjectives (const TArray< FQuestObjectives > &QuestObjectives) const
 
void CreateRewardWidget (const FString &Title, const float RewardAmount) const
 
void TrackQuestButtonClicked ()
 
void FinishQuestButtonClicked ()
 
void RemoveQuestButtonClicked ()
 
void FailQuestButtonClicked ()
 
void AbandonQuestButtonClicked ()
 

Private Attributes

bool bQuestSelected = false
 
FQuestInfo SelectedQuest
 

Constructor & Destructor Documentation

◆ UQuestLogWidget()

UQuestLogWidget::UQuestLogWidget ( const FObjectInitializer & ObjectInitializer)
explicit
22 : UBaseQuestWidget(ObjectInitializer)
23{
24 //- Get Default Widget Classes //
25 QuestButtonWidgetClass = UBaseHelpersBPLib::GetDefaultWidgetBPClass("/QuestSystem/Widgets/WBP_QuestSystemButton");
26 QuestRewardWidgetClass = UBaseHelpersBPLib::GetDefaultWidgetBPClass("/QuestSystem/Widgets/WBP_QuestSystemReward");
27 QuestSystemObjectiveWidgetClass = UBaseHelpersBPLib::GetDefaultWidgetBPClass("/QuestSystem/Widgets/WBP_QuestSystemObjective");
28
29}
static TSubclassOf< UUserWidget > GetDefaultWidgetBPClass(const FString &Location)
Definition BaseHelpersBPLib.cpp:227
Definition BaseQuestWidget.h:17
TSubclassOf< UQuestButtonWidget > QuestButtonWidgetClass
Definition QuestLogWidget.h:77
TSubclassOf< class UBaseQuestSystemWidget > QuestRewardWidgetClass
Definition QuestLogWidget.h:81
TSubclassOf< UQuestSystemObjectiveWidget > QuestSystemObjectiveWidgetClass
Definition QuestLogWidget.h:79

Member Function Documentation

◆ AbandonQuestButtonClicked()

void UQuestLogWidget::AbandonQuestButtonClicked ( )
private
351{
352 if(GetQuestReporter() == nullptr){LogDebugError("AbandonQuestButtonClicked GetQuestOwner Failed");return;}
353 if(SelectedQuest.IsValid() == false || bQuestSelected == false) {LogDebugError("AbandonQuestButtonClicked SelectedQuest in Invalid..");return;}
354 GetQuestReporter()->DebugFinishQuest(SelectedQuest, EQuestStatus::Abandoned);
355 bQuestSelected = false;
356 PopulateQuestList(true);
357}
virtual void DebugFinishQuest(const struct FQuestInfo &QuestInfo, const EQuestStatus Outcome)=0
void LogDebugError(const FString &Message) const
Definition BaseActivatableWidget.cpp:6
class IQuestReporter * GetQuestReporter()
Definition BaseQuestWidget.cpp:16
virtual void PopulateQuestList(const bool bHideSelectedQuest)
Definition QuestLogWidget.cpp:114
FQuestInfo SelectedQuest
Definition QuestLogWidget.h:145
bool bQuestSelected
Definition QuestLogWidget.h:144
bool IsValid() const
Definition QuestData.h:893

◆ ClearSelectedQuestInfo()

void UQuestLogWidget::ClearSelectedQuestInfo ( )

◆ ClearSelectedQuestInfo_Implementation()

void UQuestLogWidget::ClearSelectedQuestInfo_Implementation ( )
78{
79 //- BP Default event //
80 QuestCategoryText->SetText(FText());
81 QuestCurrentObjectiveText->SetText(FText());
82 QuestAreaText->SetText(FText());
83 QuestDescriptionText->SetText(FText());
84 CurrentQuestText->SetText(FText());
85 QuestRewardsBox->ClearChildren();
86 ObjectivesBox->ClearChildren();
87 QuestCurrentObjectiveText->SetText(FText::FromString("Current Objective"));
88}
class UTextBlock * QuestCategoryText
Definition QuestLogWidget.h:103
class UPanelWidget * ObjectivesBox
Definition QuestLogWidget.h:105
class UTextBlock * QuestDescriptionText
Definition QuestLogWidget.h:109
class UScrollBox * QuestRewardsBox
Definition QuestLogWidget.h:113
class UTextBlock * QuestAreaText
Definition QuestLogWidget.h:107
class UTextBlock * CurrentQuestText
Definition QuestLogWidget.h:101
class UTextBlock * QuestCurrentObjectiveText
Definition QuestLogWidget.h:111

◆ CreateQuestButton()

bool UQuestLogWidget::CreateQuestButton ( const FQuestInfo & QuestInfo)
private
164{
165 UQuestButtonWidget* ButtonWidget = CreateWidget<UQuestButtonWidget>(GetOwningPlayer(), QuestButtonWidgetClass);
166 if(ButtonWidget != nullptr)
167 {
168 ButtonWidget->QuestInfo = QuestInfo;
169 QuestBox->AddChild(ButtonWidget);
170 ButtonWidget->OnQuestButtonClicked.AddUniqueDynamic(this, &UQuestLogWidget::UpdateInfoOnButtonClicked);
171 QuestButtonWidgets.Add(ButtonWidget);
172 return true;
173 }
174 return false;
175}
Definition QuestButtonWidget.h:17
FOnQuestButtonClicked OnQuestButtonClicked
Definition QuestButtonWidget.h:23
FQuestInfo QuestInfo
Definition QuestButtonWidget.h:34
class UScrollBox * QuestBox
Definition QuestLogWidget.h:91
void UpdateInfoOnButtonClicked(const FQuestInfo &QuestInfo)
Definition QuestLogWidget.cpp:185
TArray< UQuestButtonWidget * > QuestButtonWidgets
Definition QuestLogWidget.h:84

◆ CreateRewardWidget()

void UQuestLogWidget::CreateRewardWidget ( const FString & Title,
const float RewardAmount ) const
private
289{
290 if(QuestRewardWidgetClass == nullptr){return;}
291 UBaseQuestSystemWidget* RewardWidget = CreateWidget<UBaseQuestSystemWidget>(GetOwningPlayer(), QuestRewardWidgetClass);
292 if(RewardWidget == nullptr){return;}
293
294 RewardWidget->TitleText = Title;
295 RewardWidget->DescriptionText = FString::SanitizeFloat(RewardAmount);
296 if(QuestRewardsBox != nullptr)
297 {
298 QuestRewardsBox->AddChild(RewardWidget);
299 }
300}
Definition BaseQuestSystemWidget.h:12
FString TitleText
Definition BaseQuestSystemWidget.h:17
FString DescriptionText
Definition BaseQuestSystemWidget.h:19

◆ FailQuestButtonClicked()

void UQuestLogWidget::FailQuestButtonClicked ( )
private
343{
344 if(GetQuestReporter() == nullptr){LogDebugError("FailQuestButtonClicked GetQuestOwner Failed");return;}
345 if(SelectedQuest.IsValid() == false || bQuestSelected == false) {LogDebugError("FailQuestButtonClicked SelectedQuest in Invalid..");return;}
346 GetQuestReporter()->DebugFinishQuest(SelectedQuest, EQuestStatus::Failed);
347 bQuestSelected = false;
348}

◆ FinishQuestButtonClicked()

void UQuestLogWidget::FinishQuestButtonClicked ( )
private
325{
326 if(GetQuestReporter() == nullptr){LogDebugError("FinishQuestButtonClicked GetQuestOwner Failed");return;}
327 if(SelectedQuest.IsValid() == false || bQuestSelected == false){LogDebugError("FinishQuestButtonClicked SelectedQuest in Invalid..");return;}
328 GetQuestReporter()->DebugFinishQuest(SelectedQuest, EQuestStatus::Completed);
329 bQuestSelected = false;
330 PopulateQuestList(true);
331}

◆ GetFilterType()

EFilterQuestType UQuestLogWidget::GetFilterType ( ) const
inline
61{return FilterType;};
EFilterQuestType FilterType
Definition QuestLogWidget.h:68

◆ GetQuestButtonFromQuestID()

UQuestButtonWidget * UQuestLogWidget::GetQuestButtonFromQuestID ( const FString & QuestID) const
361{
362 for(UQuestButtonWidget* QuestButton : QuestButtonWidgets)
363 {
364 if(QuestButton->QuestInfo.QuestID == QuestID)
365 {
366 return QuestButton;
367 }
368 }
369 return nullptr;
370}

◆ GetSelectedQuest()

bool UQuestLogWidget::GetSelectedQuest ( FQuestInfo & QuestInfo) const
91{
92 QuestInfo = SelectedQuest;
93 return bQuestSelected;
94}

◆ Initialize()

bool UQuestLogWidget::Initialize ( )
overrideprotectedvirtual

Reimplemented from UBaseQuestWidget.

32{
33 const bool Success = Super::Initialize();
34 if (!ensure(QuestBox != nullptr)) return false;
35 if (!ensure(QuestFilterBox != nullptr)) return false;
36 if (!ensure(AbandonQuestButton != nullptr)) return false;
37 if (!ensure(CurrentQuestText != nullptr)) return false;
38 if (!ensure(QuestCategoryText != nullptr)) return false;
39 if (!ensure(ObjectivesBox != nullptr)) return false;
40 if (!ensure(QuestAreaText != nullptr)) return false;
41 if (!ensure(QuestDescriptionText != nullptr)) return false;
42 if (!ensure(QuestCurrentObjectiveText != nullptr)) return false;
43 if (!ensure(QuestRewardsBox != nullptr)) return false;
44 if (!ensure(RemoveQuestButton != nullptr)) return false;
45 if (!ensure(FinishQuestButton != nullptr)) return false;
46 if (!ensure(FailQuestButton != nullptr)) return false;
47 if (!ensure(TrackQuestButton != nullptr)) return false;
48 AbandonQuestButton->OnClicked.AddUniqueDynamic(this, &UQuestLogWidget::AbandonQuestButtonClicked);
49 TrackQuestButton->OnClicked.AddUniqueDynamic(this, &UQuestLogWidget::TrackQuestButtonClicked);
50 FailQuestButton->OnClicked.AddUniqueDynamic(this, &UQuestLogWidget::FailQuestButtonClicked);
51 FinishQuestButton->OnClicked.AddUniqueDynamic(this, &UQuestLogWidget::FinishQuestButtonClicked);
52 RemoveQuestButton->OnClicked.AddUniqueDynamic(this, &UQuestLogWidget::RemoveQuestButtonClicked);
53 if(!Success) return false;
54 return true;
55}
void FailQuestButtonClicked()
Definition QuestLogWidget.cpp:342
void RemoveQuestButtonClicked()
Definition QuestLogWidget.cpp:333
class UButton * FinishQuestButton
Definition QuestLogWidget.h:119
class UScrollBox * QuestFilterBox
Definition QuestLogWidget.h:93
class UButton * FailQuestButton
Definition QuestLogWidget.h:121
class UButton * AbandonQuestButton
Definition QuestLogWidget.h:95
class UButton * TrackQuestButton
Definition QuestLogWidget.h:97
void AbandonQuestButtonClicked()
Definition QuestLogWidget.cpp:350
class UButton * RemoveQuestButton
Definition QuestLogWidget.h:117
void TrackQuestButtonClicked()
Definition QuestLogWidget.cpp:302
void FinishQuestButtonClicked()
Definition QuestLogWidget.cpp:324

◆ LoadQuestLogSettings()

void UQuestLogWidget::LoadQuestLogSettings ( const EFilterQuestType SavedFilterType,
const FQuestInfo & SavedCurrentQuest )
97{
98 FilterType = SavedFilterType;
99 SelectedQuest = SavedCurrentQuest;
101}

◆ NativeConstruct()

void UQuestLogWidget::NativeConstruct ( )
overrideprotectedvirtual

Reimplemented from UBaseQuestWidget.

58{
59 Super::NativeConstruct();
63 {
64 FinishQuestButton->SetVisibility(ESlateVisibility::Visible);
65 FailQuestButton->SetVisibility(ESlateVisibility::Visible);
66 RemoveQuestButton->SetVisibility(ESlateVisibility::Visible);
67 }
68 else
69 {
70 FinishQuestButton->SetVisibility(ESlateVisibility::Collapsed);
71 FailQuestButton->SetVisibility(ESlateVisibility::Collapsed);
72 RemoveQuestButton->SetVisibility(ESlateVisibility::Collapsed);
73 }
74 bQuestSelected = false;
75}
bool bDebuggingMode
Definition BaseActivatableWidget.h:39
void PopulateFilterList()
Definition QuestLogWidget.cpp:414
void ClearSelectedQuestInfo()

◆ OnQuestCompleted()

void UQuestLogWidget::OnQuestCompleted ( const FQuestInfo & QuestInfo,
const FQuestOutcome & Outcome )

Check what this actually does, Replace with .Complete()

374{
375 switch(Outcome.Outcome)
376 {
377 default:
378 case EQuestStatus::Completed:
379 PopulateQuestList(true);
380 break;
381 case EQuestStatus::Abandoned:
382 case EQuestStatus::Active:
383 case EQuestStatus::Failed:
384 case EQuestStatus::NotAvailable:
385 case EQuestStatus::NotStarted:
386 UpdateQuestInformation(QuestInfo);
387 break;
388 }
389}
void UpdateQuestInformation(const FQuestInfo &QuestInfo) const
Definition QuestLogWidget.cpp:199
EQuestStatus Outcome
Definition QuestData.h:1094

◆ PopulateFilterList()

void UQuestLogWidget::PopulateFilterList ( )
private
415{
416 const UEnum* QuestFilterEnum = StaticEnum<EFilterQuestType>();
417 if(QuestFilterEnum == nullptr || QuestFilterBox == nullptr){return;}
418 for(int32 i = 0; i < QuestFilterEnum->NumEnums() -1; ++i)
419 {
420 //- Convert the enum value to a string //
421 FString QuestFilter = QuestFilterEnum->GetDisplayNameTextByIndex(i).ToString();
422 UQuestButtonWidget* ButtonWidget = CreateWidget<UQuestButtonWidget>(GetOwningPlayer(), QuestButtonWidgetClass);
423 if(ButtonWidget != nullptr)
424 {
425 ButtonWidget->ButtonText = QuestFilter;
426 const EFilterQuestType QuestCategory = static_cast<EFilterQuestType>(i);
427 ButtonWidget->Category = QuestCategory;
428 ButtonWidget->bFilterButton = true;
429 ButtonWidget->OnFilterButtonClicked.AddUniqueDynamic(this, &UQuestLogWidget::SetFilterType);
430 QuestFilterBox->AddChild(ButtonWidget);
431 }
432 }
433}
EFilterQuestType
Definition QuestData.h:28
FOnFilterButtonClicked OnFilterButtonClicked
Definition QuestButtonWidget.h:25
FString ButtonText
Definition QuestButtonWidget.h:29
EFilterQuestType Category
Definition QuestButtonWidget.h:31
bool bFilterButton
Definition QuestButtonWidget.h:37
void SetFilterType(const EFilterQuestType NewFilterType)
Definition QuestLogWidget.cpp:103

◆ PopulateQuestList()

void UQuestLogWidget::PopulateQuestList ( const bool bHideSelectedQuest)
virtual
115{
116 if(GetQuestData() == nullptr){LogDebugError("PopulateQuestList GET QUEST REPORTER FAILED");return;}
118 //- Remove All Quest Buttons //
120 if(bHideSelectedQuest)
121 {
123 }
124 UpdateSelectedQuest(PlayerQuestStatus);
125 QuestBox->ClearChildren();
126
127 //- Add in All Active Quests //
128 if(FilterType != EFilterQuestType::Abandoned && FilterType != EFilterQuestType::Completed || FilterType != EFilterQuestType::Failed)
129 {
130 for(const FQuestInfo& LocalQuest : PlayerQuestStatus.FilterQuests(EQuestStatus::Active))
131 {
132 if(FilterType == EFilterQuestType::All || LocalQuest.Category == FilterType)
133 {
134 CreateQuestButton(LocalQuest);
135 }
136 }
137 }
138 //- changed from QuestID to Quest Data for The Completed Quests
139 if(FilterType == EFilterQuestType::Completed)
140 {
141 for(const FQuestInfo& CompletedQuest : PlayerQuestStatus.FilterQuests(EQuestStatus::Completed))
142 {
143 CreateQuestButton(CompletedQuest);
144 }
145 }
146 //- Just Uses String, Doesn't get full info... //
147 else if(FilterType == EFilterQuestType::Abandoned)
148 {
149 for(const FQuestInfo& LocalAbandoned : PlayerQuestStatus.FilterQuests(EQuestStatus::Abandoned))
150 {
151 CreateQuestButton(LocalAbandoned);
152 }
153 }
154 else if(FilterType == EFilterQuestType::Failed)
155 {
156 for(const FQuestInfo& CompletedQuest : PlayerQuestStatus.FilterQuests(EQuestStatus::Failed))
157 {
158 CreateQuestButton(CompletedQuest);
159 }
160 }
161}
@ Failed
Definition InteractionData.h:29
EQuestStatus
Definition QuestData.h:57
virtual FPlayerQuestStatus GetPlayerQuestStatus() const =0
class IQuestDataInterface * GetQuestData()
Definition BaseQuestWidget.cpp:29
bool CreateQuestButton(const FQuestInfo &QuestInfo)
Definition QuestLogWidget.cpp:163
void RemoveAllQuestButtons()
Definition QuestLogWidget.cpp:177
void UpdateSelectedQuest(const FPlayerQuestStatus &PlayerQuestStatus)
Definition QuestLogWidget.cpp:392
Definition QuestData.h:1117
Definition QuestData.h:798

◆ RemoveAllQuestButtons()

void UQuestLogWidget::RemoveAllQuestButtons ( )
private
178{
179 for(UQuestButtonWidget* QuestButtonWidget : QuestButtonWidgets)
180 {
181 QuestButtonWidget->RemoveFromParent();
182 }
183}

◆ RemoveQuestButtonClicked()

void UQuestLogWidget::RemoveQuestButtonClicked ( )
private
334{
335 if(GetQuestReporter() == nullptr){LogDebugError("RemoveQuestButtonClicked GetQuestOwner Failed");return;}
336 if(SelectedQuest.IsValid() == false || bQuestSelected == false){LogDebugError("RemoveQuestButtonClicked SelectedQuest in Invalid..");return;}
338 bQuestSelected = false;
339 PopulateQuestList(true);
340}
virtual void DebugRemoveQuest(const struct FQuestInfo &QuestInfo)=0

◆ SetCurrentQuestObjectives()

void UQuestLogWidget::SetCurrentQuestObjectives ( const TArray< FQuestObjectives > & QuestObjectives) const
private
262{
263 for(const FQuestObjectives& LocalObjective : QuestObjectives)
264 {
265 // if(LocalObjective == nullptr){continue;}
266 switch (FilterType)
267 {
268 case EFilterQuestType::Completed:
269 QuestCurrentObjectiveText->SetText(FText::FromString("Quest Completed"));
270 break;
271 case EFilterQuestType::Abandoned:
272 QuestCurrentObjectiveText->SetText(FText::FromString("Quest Abandoned"));
273 break;
274 case EFilterQuestType::Failed:
275 QuestCurrentObjectiveText->SetText(FText::FromString("Quest Failed"));
276 break;
277 default:
278 QuestCurrentObjectiveText->SetText(FText::FromString("Current Objectives"));
279 break;
280 }
281 UQuestSystemObjectiveWidget* ObjectiveWidget = CreateWidget<UQuestSystemObjectiveWidget>(GetOwningPlayer(), QuestSystemObjectiveWidgetClass);
282 if(ObjectiveWidget == nullptr){return;}
283 ObjectiveWidget->SetObjective(LocalObjective);
284 ObjectivesBox->AddChild(ObjectiveWidget);
285 }
286}
A widget class used to display quest objectives.
Definition QuestSystemObjectiveWidget.h:18
void SetObjective(const FQuestObjectives &Objective)
Definition QuestSystemObjectiveWidget.cpp:159
Definition QuestData.h:361

◆ SetFilterType()

void UQuestLogWidget::SetFilterType ( const EFilterQuestType NewFilterType)
104{
105 FilterType = NewFilterType;
106 PopulateQuestList(true);
107}

◆ TrackQuestButtonClicked()

void UQuestLogWidget::TrackQuestButtonClicked ( )
private
303{
304 if(GetQuestViewer() == nullptr){LogDebugError("UQuestLogWidget::TrackQuestButtonClicked GetQuestOwner Failed");return;}
305 if(SelectedQuest.IsValid() == false){LogDebugError("UQuestLogWidget::TrackQuestButtonClicked SelectedQuest in Invalid..");return;}
306 if(bQuestSelected == false){LogDebugError("UQuestLogWidget::TrackQuestButtonClicked bQuestSelected false");return;}
307 if(GetQuestViewer()->GetIsActiveQuest(SelectedQuest) == false)
308 {
309 UE_LOG(LogQuestWidget, Error, TEXT("UQuestLogWidget::TrackQuestButtonClicked Not Active Quest "))
310 GetQuestViewer()->SetQuestTrackerVisibility(false);
311 return;
312 }
313 const bool bAlreadyCurrent = GetQuestViewer()->SetCurrentQuest(SelectedQuest);
314 if(bAlreadyCurrent)
315 {
316 const bool bVisible = GetQuestViewer()->ToggleQuestTrackerVisibility();
317 }
318 else
319 {
321 }
322}
virtual bool ToggleQuestTrackerVisibility()
Definition QuestView.h:44
virtual void SetQuestTrackerVisibility(const bool bVisible) const =0
class IQuestView * GetQuestViewer()
Definition BaseQuestWidget.cpp:41

◆ UpdateInfoOnButtonClicked()

void UQuestLogWidget::UpdateInfoOnButtonClicked ( const FQuestInfo & QuestInfo)
186{
187 LogDebugMessage(FString::Printf(TEXT("UpdateInfoOnButtonClicked QuestName: %s "), *QuestInfo.QuestName));
188 if(QuestInfo == SelectedQuest && bQuestSelected)
189 {
190 bQuestSelected = false;
192 return;
193 }
194 SelectedQuest = QuestInfo;
195 bQuestSelected = true;
196 UpdateQuestInformation(QuestInfo);
197}
void LogDebugMessage(const FString &Message, const bool bWarning=false, const bool bError=false) const
Definition BaseActivatableWidget.cpp:36
FString QuestName
Definition QuestData.h:805

◆ UpdateQuestInformation()

void UQuestLogWidget::UpdateQuestInformation ( const FQuestInfo & QuestInfo) const
protected
200{
201 LogDebugMessage(FString::Printf(TEXT("UpdateQuestInformation %s QuestName: "), *QuestInfo.QuestName));
202 if(FilterType == EFilterQuestType::Abandoned || FilterType == EFilterQuestType::Failed)
203 {
204 //@TODO Better way to write this else statement
205 }
206 else
207 {
208 // OnCreateTrackedWidget.Broadcast(QuestInfo);
209 }
210 CurrentQuestText->SetText(FText::FromString(QuestInfo.QuestName));
211
212 //- Convert the Category to a string
213 bool bConvertedCategory = false;
214 const FString CategoryConverted = UQuestBPLib::ConvertQuestFilterToString(QuestInfo.Category, bConvertedCategory);
215 if(bConvertedCategory)
216 {
217 QuestCategoryText->SetText(FText::FromString(CategoryConverted));
218 }
219 //- Convert the Location to a string
220 bool bLocationConverted = false;
221 const FString LocationConverted = UQuestBPLib::ConvertQuestLocationToString(QuestInfo.Location, bLocationConverted);
222 if(bLocationConverted)
223 {
224 QuestAreaText->SetText(FText::FromString(LocationConverted));
225 }
226
227 QuestDescriptionText->SetText(FText::FromString(QuestInfo.Description));
228
229 //- Add in Quest Objectives //
230 ObjectivesBox->ClearChildren();
231
233
234
235 //- Add in Quest Rewards //
236 QuestRewardsBox->ClearChildren();
238 CreateRewardWidget("Credits", QuestInfo.GetFullQuestReward().Credits);
239
240 //- Add in Abandon Quest Button //
241 const bool bFilter = (FilterType == EFilterQuestType::Completed || FilterType == EFilterQuestType::Abandoned || FilterType == EFilterQuestType::Failed);
242 if(QuestInfo.bCanQuestBeAbandoned && !bFilter)
243 {
244 AbandonQuestButton->SetVisibility(ESlateVisibility::Visible);
245 }
246 else
247 {
248 AbandonQuestButton->SetVisibility(ESlateVisibility::Collapsed);
249 }
250 if(QuestInfo.GetIsActive())
251 {
252 TrackQuestButton->SetVisibility(ESlateVisibility::Visible);
253 }
254 else
255 {
256 TrackQuestButton->SetVisibility(ESlateVisibility::Collapsed);
257 }
258}
static FString ConvertQuestLocationToString(const EQuestLocation QuestLocation, bool &bSuccess)
Definition QuestBPLib.cpp:516
static FString ConvertQuestFilterToString(const EFilterQuestType FilterType, bool &bSuccess)
Check Function //.
Definition QuestBPLib.cpp:490
void CreateRewardWidget(const FString &Title, const float RewardAmount) const
Definition QuestLogWidget.cpp:288
void SetCurrentQuestObjectives(const TArray< FQuestObjectives > &QuestObjectives) const
Definition QuestLogWidget.cpp:261
bool bCanQuestBeAbandoned
Definition QuestData.h:826
EQuestLocation Location
Definition QuestData.h:849
bool GetIsActive() const
Definition QuestData.h:906
FString Description
Definition QuestData.h:807
TArray< FQuestObjectives > GetObjectives() const
Definition QuestData.h:1012
EFilterQuestType Category
Definition QuestData.h:847
FQuestReward GetFullQuestReward() const
Definition QuestData.h:1002
int32 Experience
Definition QuestData.h:171
int32 Credits
Definition QuestData.h:173

◆ UpdateQuestStatus()

void UQuestLogWidget::UpdateQuestStatus ( )
overridevirtual

Implements IQuestLogHUD.

110{
111 PopulateQuestList(false);
112}

◆ UpdateSelectedQuest()

void UQuestLogWidget::UpdateSelectedQuest ( const FPlayerQuestStatus & PlayerQuestStatus)
private
393{
394 int32 QuestIndex = -1;
395 if(SelectedQuest.IsValid() == false){return;}
396 if(PlayerQuestStatus.GetQuestIndex(SelectedQuest, QuestIndex))
397 {
398 if(PlayerQuestStatus.GetQuest(QuestIndex, SelectedQuest))
399 {
401 }
402 else
403 {
404 LogDebugError("PopulateQuestList GetQuest Failed");
405 }
406 }
407 else
408 {
409 LogDebugError("PopulateQuestList GetQuestIndex Failed");
410 }
411}
bool GetQuestIndex(const FQuestInfo &QuestInfo, int32 &Index) const
Definition QuestData.h:1399
bool GetQuest(const int32 QuestIndex, FQuestInfo &QuestInfo) const
Definition QuestData.h:1598

Member Data Documentation

◆ AbandonQuestButton

class UButton* UQuestLogWidget::AbandonQuestButton = nullptr
protected

◆ bQuestSelected

bool UQuestLogWidget::bQuestSelected = false
private

◆ CurrentQuestText

class UTextBlock* UQuestLogWidget::CurrentQuestText = nullptr
protected

◆ FailQuestButton

class UButton* UQuestLogWidget::FailQuestButton = nullptr
protected

◆ FilterType

EFilterQuestType UQuestLogWidget::FilterType = EFilterQuestType::All
protected

◆ FinishQuestButton

class UButton* UQuestLogWidget::FinishQuestButton = nullptr
protected

◆ ObjectivesBox

class UPanelWidget* UQuestLogWidget::ObjectivesBox = nullptr
protected

◆ QuestAreaText

class UTextBlock* UQuestLogWidget::QuestAreaText = nullptr
protected

◆ QuestBox

class UScrollBox* UQuestLogWidget::QuestBox = nullptr
protected

◆ QuestButtonWidgetClass

TSubclassOf<UQuestButtonWidget> UQuestLogWidget::QuestButtonWidgetClass = nullptr
protected

◆ QuestButtonWidgets

TArray<UQuestButtonWidget*> UQuestLogWidget::QuestButtonWidgets
protected

◆ QuestCategoryText

class UTextBlock* UQuestLogWidget::QuestCategoryText = nullptr
protected

◆ QuestCurrentObjectiveText

class UTextBlock* UQuestLogWidget::QuestCurrentObjectiveText = nullptr
protected

◆ QuestDescriptionText

class UTextBlock* UQuestLogWidget::QuestDescriptionText = nullptr
protected

◆ QuestFilterBox

class UScrollBox* UQuestLogWidget::QuestFilterBox = nullptr
protected

◆ QuestFilterButtonWidgets

TArray<UQuestButtonWidget*> UQuestLogWidget::QuestFilterButtonWidgets
protected

◆ QuestRewardsBox

class UScrollBox* UQuestLogWidget::QuestRewardsBox = nullptr
protected

◆ QuestRewardWidgetClass

TSubclassOf<class UBaseQuestSystemWidget> UQuestLogWidget::QuestRewardWidgetClass = nullptr
protected

◆ QuestSystemObjectiveWidgetClass

TSubclassOf<UQuestSystemObjectiveWidget> UQuestLogWidget::QuestSystemObjectiveWidgetClass = nullptr
protected

◆ RemoveQuestButton

class UButton* UQuestLogWidget::RemoveQuestButton = nullptr
protected

◆ SelectedQuest

FQuestInfo UQuestLogWidget::SelectedQuest
private

◆ TrackQuestButton

class UButton* UQuestLogWidget::TrackQuestButton = nullptr
protected

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