Something went wrong. Try again.
the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
Something went wrong. Try again.
5.6 kB · 263 lines
C++
at master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263#include "stdafx.h"#include "ProcedureCompoundTask.h"
ProcedureCompoundTask::~ProcedureCompoundTask(){ for(AUTO_VAR(it, m_taskSequence.begin()); it < m_taskSequence.end(); ++it) { delete (*it); }}
void ProcedureCompoundTask::AddTask(TutorialTask *task){ if(task != NULL) { m_taskSequence.push_back(task); }}
int ProcedureCompoundTask::getDescriptionId(){ if(bIsCompleted) return -1;
// Return the id of the first task not completed int descriptionId = -1; AUTO_VAR(itEnd, m_taskSequence.end()); for(AUTO_VAR(it, m_taskSequence.begin()); it < itEnd; ++it) { TutorialTask *task = *it; if(!task->isCompleted()) { task->setAsCurrentTask(true); descriptionId = task->getDescriptionId(); break; } else if(task->getCompletionAction() == e_Tutorial_Completion_Complete_State) { bIsCompleted = true; break; } } return descriptionId;}
int ProcedureCompoundTask::getPromptId(){ if(bIsCompleted) return -1;
// Return the id of the first task not completed int promptId = -1; AUTO_VAR(itEnd, m_taskSequence.end()); for(AUTO_VAR(it, m_taskSequence.begin()); it < itEnd; ++it) { TutorialTask *task = *it; if(!task->isCompleted()) { promptId = task->getPromptId(); break; } } return promptId;}
bool ProcedureCompoundTask::isCompleted(){ // Return whether all tasks are completed
bool allCompleted = true; bool isCurrentTask = true; AUTO_VAR(itEnd, m_taskSequence.end()); for(AUTO_VAR(it, m_taskSequence.begin()); it < itEnd; ++it) { TutorialTask *task = *it;
if(allCompleted && isCurrentTask) { if(task->isCompleted()) { if(task->getCompletionAction() == e_Tutorial_Completion_Complete_State) { allCompleted = true; break; } } else { task->setAsCurrentTask(true); allCompleted = false; isCurrentTask = false; } } else if (!allCompleted) { task->setAsCurrentTask(false); } }
if(allCompleted) { //Disable all constraints itEnd = m_taskSequence.end(); for(AUTO_VAR(it, m_taskSequence.begin()); it < itEnd; ++it) { TutorialTask *task = *it; task->enableConstraints(false); } } bIsCompleted = allCompleted; return allCompleted;}
void ProcedureCompoundTask::onCrafted(shared_ptr<ItemInstance> item){ AUTO_VAR(itEnd, m_taskSequence.end()); for(AUTO_VAR(it, m_taskSequence.begin()); it < itEnd; ++it) { TutorialTask *task = *it; task->onCrafted(item); }}
void ProcedureCompoundTask::handleUIInput(int iAction){ AUTO_VAR(itEnd, m_taskSequence.end()); for(AUTO_VAR(it, m_taskSequence.begin()); it < itEnd; ++it) { TutorialTask *task = *it; task->handleUIInput(iAction); }}
void ProcedureCompoundTask::setAsCurrentTask(bool active /*= true*/){ bool allCompleted = true; AUTO_VAR(itEnd, m_taskSequence.end()); for(AUTO_VAR(it, m_taskSequence.begin()); it < itEnd; ++it) { TutorialTask *task = *it; if(allCompleted && !task->isCompleted()) { task->setAsCurrentTask(true); allCompleted = false; } else if (!allCompleted) { task->setAsCurrentTask(false); } }}
bool ProcedureCompoundTask::ShowMinimumTime(){ if(bIsCompleted) return false;
bool showMinimumTime = false; AUTO_VAR(itEnd, m_taskSequence.end()); for(AUTO_VAR(it, m_taskSequence.begin()); it < itEnd; ++it) { TutorialTask *task = *it; if(!task->isCompleted()) { showMinimumTime = task->ShowMinimumTime(); break; } } return showMinimumTime;}
bool ProcedureCompoundTask::hasBeenActivated(){ if(bIsCompleted) return true;
bool hasBeenActivated = false; AUTO_VAR(itEnd, m_taskSequence.end()); for(AUTO_VAR(it, m_taskSequence.begin()); it < itEnd; ++it) { TutorialTask *task = *it; if(!task->isCompleted()) { hasBeenActivated = task->hasBeenActivated(); break; } } return hasBeenActivated;}
void ProcedureCompoundTask::setShownForMinimumTime(){ AUTO_VAR(itEnd, m_taskSequence.end()); for(AUTO_VAR(it, m_taskSequence.begin()); it < itEnd; ++it) { TutorialTask *task = *it; if(!task->isCompleted()) { task->setShownForMinimumTime(); break; } }}
bool ProcedureCompoundTask::AllowFade(){ if(bIsCompleted) return true;
bool allowFade = true; AUTO_VAR(itEnd, m_taskSequence.end()); for(AUTO_VAR(it, m_taskSequence.begin()); it < itEnd; ++it) { TutorialTask *task = *it; if(!task->isCompleted()) { allowFade = task->AllowFade(); break; } } return allowFade;}
void ProcedureCompoundTask::useItemOn(Level *level, shared_ptr<ItemInstance> item, int x, int y, int z,bool bTestUseOnly){ AUTO_VAR(itEnd, m_taskSequence.end()); for(AUTO_VAR(it, m_taskSequence.begin()); it < itEnd; ++it) { TutorialTask *task = *it; task->useItemOn(level, item, x, y, z, bTestUseOnly); }}
void ProcedureCompoundTask::useItem(shared_ptr<ItemInstance> item, bool bTestUseOnly){ AUTO_VAR(itEnd, m_taskSequence.end()); for(AUTO_VAR(it, m_taskSequence.begin()); it < itEnd; ++it) { TutorialTask *task = *it; task->useItem(item, bTestUseOnly); }}
void ProcedureCompoundTask::onTake(shared_ptr<ItemInstance> item, unsigned int invItemCountAnyAux, unsigned int invItemCountThisAux){ AUTO_VAR(itEnd, m_taskSequence.end()); for(AUTO_VAR(it, m_taskSequence.begin()); it < itEnd; ++it) { TutorialTask *task = *it; task->onTake(item, invItemCountAnyAux, invItemCountThisAux); }}
void ProcedureCompoundTask::onStateChange(eTutorial_State newState){ AUTO_VAR(itEnd, m_taskSequence.end()); for(AUTO_VAR(it, m_taskSequence.begin()); it < itEnd; ++it) { TutorialTask *task = *it; task->onStateChange(newState); }}