aboutsummaryrefslogtreecommitdiff
path: root/engines/mutationofjb/tasks/taskmanager.cpp
diff options
context:
space:
mode:
authorĽubomír Remák2018-07-21 20:29:11 +0200
committerEugene Sandulenko2018-08-25 23:12:01 +0200
commit3306cbfeaa2f1c6fd471daaee054290df7e44280 (patch)
tree56379cb27336281e9ca92b12d6db7ab6d84c31e8 /engines/mutationofjb/tasks/taskmanager.cpp
parent2e656e69b3b9416f5164f0963951df203f4978e5 (diff)
downloadscummvm-rg350-3306cbfeaa2f1c6fd471daaee054290df7e44280.tar.gz
scummvm-rg350-3306cbfeaa2f1c6fd471daaee054290df7e44280.tar.bz2
scummvm-rg350-3306cbfeaa2f1c6fd471daaee054290df7e44280.zip
MUTATIONOFJB: Implement SayCommand::execute.
Diffstat (limited to 'engines/mutationofjb/tasks/taskmanager.cpp')
-rw-r--r--engines/mutationofjb/tasks/taskmanager.cpp26
1 files changed, 22 insertions, 4 deletions
diff --git a/engines/mutationofjb/tasks/taskmanager.cpp b/engines/mutationofjb/tasks/taskmanager.cpp
index 11675007db..a6d4dc1e84 100644
--- a/engines/mutationofjb/tasks/taskmanager.cpp
+++ b/engines/mutationofjb/tasks/taskmanager.cpp
@@ -21,21 +21,39 @@
*/
#include "mutationofjb/tasks/taskmanager.h"
+
#include "mutationofjb/tasks/task.h"
+#include "common/translation.h"
+
namespace MutationOfJB {
-void TaskManager::addTask(const TaskPtr &task) {
+void TaskManager::startTask(const TaskPtr &task) {
_tasks.push_back(task);
task->setTaskManager(this);
task->start();
}
-void TaskManager::removeTask(const TaskPtr &task) {
+void TaskManager::stopTask(const TaskPtr &task) {
TaskPtrs::iterator it = Common::find(_tasks.begin(), _tasks.end(), task);
- if (it != _tasks.end()) {
- _tasks.erase(it);
+ if (it == _tasks.end()) {
+ warning(_("Task is not registered in TaskManager."));
+ return;
+ }
+
+ task->stop();
+ assert(task->getState() != Task::RUNNING);
+ _tasks.erase(it);
+}
+
+TaskPtr TaskManager::getTask(Task *const task) {
+ for (TaskPtrs::iterator it = _tasks.begin(); it != _tasks.end(); ++it) {
+ if (it->get() == task) {
+ return *it;
+ }
}
+
+ return TaskPtr();
}
void TaskManager::update() {