From 6e6cec4223b81abc6c30b5094c7f715ecb605a5c Mon Sep 17 00:00:00 2001
From: "jonathan.ehret" <ehret@vr.rwth-aachen.de>
Date: Wed, 12 Jul 2023 12:43:58 +0200
Subject: [PATCH] fix crash when having more than 6 factors due to limited
 number of text blocks in HUD

---
 Source/StudyFrameworkPlugin/Private/HUD/SFHUDWidget.cpp | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/Source/StudyFrameworkPlugin/Private/HUD/SFHUDWidget.cpp b/Source/StudyFrameworkPlugin/Private/HUD/SFHUDWidget.cpp
index 4615653..703778d 100644
--- a/Source/StudyFrameworkPlugin/Private/HUD/SFHUDWidget.cpp
+++ b/Source/StudyFrameworkPlugin/Private/HUD/SFHUDWidget.cpp
@@ -4,6 +4,7 @@
 #include "HUD/SFHUDWidget.h"
 
 #include "Help/SFUtils.h"
+#include "Logging/SFLoggingUtils.h"
 
 
 USFHUDWidget::USFHUDWidget(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer)
@@ -27,12 +28,18 @@ void USFHUDWidget::SetPhase(const FString& Text)
 
 void USFHUDWidget::SetCondition(const TMap<FString, FString>& Texts)
 {
+	//TODO: as of now we have a fixed number of text blocks, maybe this can be made dynamic
 	TArray<UTextBlock*> TextBlocks = {
 		ConditionText1, ConditionText2, ConditionText3, ConditionText4, ConditionText5, ConditionText6
 	};
 	int TextIndex=0;
 	for(auto FactorLevel : Texts)
 	{
+		if(TextIndex>=TextBlocks.Num())
+		{
+			FSFLoggingUtils::Log("Not all factor levels fit in the HUD, so only showing the first 6 levels");
+			break;
+		}
 		TextBlocks[TextIndex++]->SetText(FText::FromString(FactorLevel.Key + ": "+FactorLevel.Value));
 	}
 	while(TextIndex<TextBlocks.Num())
-- 
GitLab