diff --git a/Source/StudyFrameworkPlugin/Private/HUD/SFConditionListEntry.cpp b/Source/StudyFrameworkPlugin/Private/HUD/SFConditionListEntry.cpp index dcc74e6b964943a3e96046ef2e801aa00ae90e66..0569bb9af2f770032de8ded711ce64ad1195d8d0 100644 --- a/Source/StudyFrameworkPlugin/Private/HUD/SFConditionListEntry.cpp +++ b/Source/StudyFrameworkPlugin/Private/HUD/SFConditionListEntry.cpp @@ -98,7 +98,8 @@ void USFConditionListEntry::GoTo() void USFConditionListEntry::UpdateData() { IsActive = USFGameInstance::Get()->GetParticipant()->GetCurrentCondition() == Condition && USFGameInstance::Get()-> - GetParticipant()->GetCurrentCondition()->WasStarted(); + GetParticipant()->GetCurrentCondition()->WasStarted() && USFGameInstance::Get()->IsStarted(); + //the last part IsStarted() is needed when continuing a run where the first condition was already started IsDone = Condition->IsFinished(); if (IsHeader) diff --git a/Source/StudyFrameworkPlugin/Private/HUD/SFMasterHUD.cpp b/Source/StudyFrameworkPlugin/Private/HUD/SFMasterHUD.cpp index b91bdd7e9b398df6e01a271cc3fa503c45774e6a..e118d4b1be8cf305c96669f82a0bfe902a28bc9f 100644 --- a/Source/StudyFrameworkPlugin/Private/HUD/SFMasterHUD.cpp +++ b/Source/StudyFrameworkPlugin/Private/HUD/SFMasterHUD.cpp @@ -101,7 +101,7 @@ void ASFMasterHUD::BeginPlay() SetNextConditionButtonVisibility(ESlateVisibility::Collapsed); } - if (USFGameInstance::Get()->GetParticipant() && USFGameInstance::Get()->GetParticipant()->GetAllConditions()[0]->IsFinished()) + if (USFGameInstance::Get()->IsContinueStudyStart()) { Cast<UTextBlock>(HUDWidget->GetStartButton()->GetAllChildren()[0])->SetText( FText::FromString("Continue Study")); diff --git a/Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp b/Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp index 15f0a96f9726ffc1c9ceef6ebda2e9e55632b149..c138a6a6fdd0c07ebcb315d852c92885bd2b79ee 100644 --- a/Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp +++ b/Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp @@ -381,7 +381,7 @@ bool USFGameInstance::StartStudy() return false; } - if (!StartCondition) + if (!bInDebugMode) { //we are actually doing a real start and not just a "debug-start" if (!Participant->StartStudy()) @@ -625,6 +625,11 @@ bool USFGameInstance::IsInDebugMode() const return bInDebugMode; } +bool USFGameInstance::IsContinueStudyStart() const +{ + return !bInDebugMode && StartCondition; +} + bool USFGameInstance::HasEnded() const { return bStudyEnded; diff --git a/Source/StudyFrameworkPlugin/Public/SFGameInstance.h b/Source/StudyFrameworkPlugin/Public/SFGameInstance.h index c4c1b5e40275f200d7b5c2f8e5ba64fe2efc7010..051d561dac3a89761439fd65a5a783c867a21f66 100644 --- a/Source/StudyFrameworkPlugin/Public/SFGameInstance.h +++ b/Source/StudyFrameworkPlugin/Public/SFGameInstance.h @@ -72,12 +72,15 @@ public: UFUNCTION(BlueprintCallable) bool IsInDebugMode() const; + UFUNCTION(BlueprintCallable) + bool IsContinueStudyStart() const; + //Whether the study is done (this is actually only true for a short duration), as once faded out Unreal is quit UFUNCTION(BlueprintCallable) bool HasEnded() const; - + //the time that passed since the start of the study in seconds UFUNCTION(BlueprintCallable)