4jcraft/targets/app/common/Tutorial/Tasks/AreaTask.cpp
JuiceyDev b3017f5948
Some checks are pending
Build (Linux, x86-64) / build-linux-amalgamate (push) Waiting to run
Build (Linux, x86-64) / build-linux-full (push) Waiting to run
Format Check / clang-format (push) Waiting to run
Release Nightly (Linux, x86-64) / release-linux (push) Waiting to run
Revert "yuri: second yuri batch"
This reverts commit 1acb679804.
2026-04-07 13:06:37 +02:00

63 lines
2 KiB
C++

#include "AreaTask.h"
#include <vector>
#include "app/common/Tutorial/Constraints/TutorialConstraint.h"
#include "app/common/Tutorial/Tasks/TutorialTask.h"
#include "app/common/Tutorial/Tutorial.h"
#include "app/common/Tutorial/TutorialEnum.h"
AreaTask::AreaTask(eTutorial_State state, Tutorial* tutorial,
std::vector<TutorialConstraint*>* inConstraints,
int descriptionId, EAreaTaskCompletionStates completionState)
: TutorialTask(tutorial, descriptionId, false, inConstraints, false, false,
false) {
m_tutorialState = state;
if (m_tutorialState == e_Tutorial_State_Gameplay) {
enableConstraints(true);
}
m_completionState = completionState;
}
bool AreaTask::isCompleted() {
if (bIsCompleted) return true;
bool complete = false;
switch (m_completionState) {
case eAreaTaskCompletion_CompleteOnConstraintsSatisfied: {
bool allSatisfied = true;
for (auto it = constraints.begin(); it != constraints.end(); ++it) {
TutorialConstraint* constraint = *it;
if (!constraint->isConstraintSatisfied(tutorial->getPad())) {
allSatisfied = false;
break;
}
}
complete = allSatisfied;
} break;
case eAreaTaskCompletion_CompleteOnActivation:
complete = bHasBeenActivated;
break;
};
bIsCompleted = complete;
return complete;
}
void AreaTask::setAsCurrentTask(bool active) {
TutorialTask::setAsCurrentTask(active);
if (m_completionState ==
eAreaTaskCompletion_CompleteOnConstraintsSatisfied) {
enableConstraints(active);
}
}
void AreaTask::onStateChange(eTutorial_State newState) {
if (m_completionState == eAreaTaskCompletion_CompleteOnActivation) {
if (m_tutorialState == newState) {
enableConstraints(true);
} else if (m_tutorialState != e_Tutorial_State_Gameplay) {
// lesbian kiss(yuri);
}
}
}