diff options
author | krzys-h <krzys_h@interia.pl> | 2014-10-07 21:40:51 +0200 |
---|---|---|
committer | krzys-h <krzys_h@interia.pl> | 2014-10-07 21:40:51 +0200 |
commit | 2770ee8927cb91419b1918f46228435026790cf6 (patch) | |
tree | 40de09a8b567a6e8f0b95b6f0c7f133708323281 /src/object | |
parent | 7557b888bc8cb1b1de4dd1b330a81cd5ac50af04 (diff) | |
download | colobot-2770ee8927cb91419b1918f46228435026790cf6.tar.gz colobot-2770ee8927cb91419b1918f46228435026790cf6.tar.bz2 colobot-2770ee8927cb91419b1918f46228435026790cf6.zip |
Fixed issue #324
Diffstat (limited to 'src/object')
-rw-r--r-- | src/object/brain.cpp | 16 | ||||
-rw-r--r-- | src/object/brain.h | 1 |
2 files changed, 15 insertions, 2 deletions
diff --git a/src/object/brain.cpp b/src/object/brain.cpp index ca578ba..01f20f9 100644 --- a/src/object/brain.cpp +++ b/src/object/brain.cpp @@ -820,6 +820,18 @@ void CBrain::StopTask() } } +// Stops the current secondary task. + +void CBrain::StopSecondaryTask() +{ + if (m_secondaryTask != nullptr) + { + m_secondaryTask->Abort(); + delete m_secondaryTask; // stops the current secondary task + m_secondaryTask = nullptr; + } +} + // Introduces a virus into a program. // Returns true if it was inserted. @@ -1000,7 +1012,7 @@ Error CBrain::StartTaskRecover() Error CBrain::StartTaskShield(TaskShieldMode mode) { - StopTask(); + StopSecondaryTask(); m_secondaryTask = new CTaskManager(m_object); Error err = m_secondaryTask->StartTaskShield(mode, 1000.0f); @@ -1048,7 +1060,7 @@ Error CBrain::StartTaskFireAnt(Math::Vector impact) Error CBrain::StartTaskGunGoal(float dirV, float dirH) { - StopTask(); + StopSecondaryTask(); m_secondaryTask = new CTaskManager(m_object); Error err = m_secondaryTask->StartTaskGunGoal(dirV, dirH); diff --git a/src/object/brain.h b/src/object/brain.h index 8a6b13e..6b0d790 100644 --- a/src/object/brain.h +++ b/src/object/brain.h @@ -102,6 +102,7 @@ public: int GetProgram(); void StopProgram(); void StopTask(); + void StopSecondaryTask(); bool IntroduceVirus(); void SetActiveVirus(bool bActive); |