summaryrefslogtreecommitdiffstats
path: root/src/object
diff options
context:
space:
mode:
authorkrzys-h <krzys_h@interia.pl>2014-10-07 21:40:51 +0200
committerkrzys-h <krzys_h@interia.pl>2014-10-07 21:40:51 +0200
commit2770ee8927cb91419b1918f46228435026790cf6 (patch)
tree40de09a8b567a6e8f0b95b6f0c7f133708323281 /src/object
parent7557b888bc8cb1b1de4dd1b330a81cd5ac50af04 (diff)
downloadcolobot-2770ee8927cb91419b1918f46228435026790cf6.tar.gz
colobot-2770ee8927cb91419b1918f46228435026790cf6.tar.bz2
colobot-2770ee8927cb91419b1918f46228435026790cf6.zip
Fixed issue #324
Diffstat (limited to 'src/object')
-rw-r--r--src/object/brain.cpp16
-rw-r--r--src/object/brain.h1
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);