summaryrefslogtreecommitdiffstats
path: root/src/object/task/taskgungoal.cpp
diff options
context:
space:
mode:
authorDidier Raboud <odyx@debian.org>2014-07-02 11:33:47 +0200
committerDidier Raboud <odyx@debian.org>2014-07-02 11:33:47 +0200
commit2e136acd34c45e5e6d105cabf91c67e5865c38fe (patch)
tree8561603160cce0b41ba31250539a22d37a2951de /src/object/task/taskgungoal.cpp
parent562be6fe765d7742f7c38fbd82f8cc26369e238b (diff)
parentd9fee8b2adad613cf8c10d153cd5cd7b261b7863 (diff)
downloadcolobot-2e136acd34c45e5e6d105cabf91c67e5865c38fe.tar.gz
colobot-2e136acd34c45e5e6d105cabf91c67e5865c38fe.tar.bz2
colobot-2e136acd34c45e5e6d105cabf91c67e5865c38fe.zip
Merge tag 'colobot-gold-0.1.3-alpha' into debian
Diffstat (limited to 'src/object/task/taskgungoal.cpp')
-rw-r--r--src/object/task/taskgungoal.cpp24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/object/task/taskgungoal.cpp b/src/object/task/taskgungoal.cpp
index 3373610..c9c8d30 100644
--- a/src/object/task/taskgungoal.cpp
+++ b/src/object/task/taskgungoal.cpp
@@ -26,6 +26,7 @@
CTaskGunGoal::CTaskGunGoal(CObject* object) : CTask(object)
{
+ m_aimImpossible = false;
}
// Object's destructor.
@@ -116,6 +117,12 @@ Error CTaskGunGoal::Start(float dirV, float dirH)
m_progress = 0.0f;
+ // direction was constrainted, hence resulting in impossible move
+ if (dirV != m_finalDirV || dirH != m_finalDirH)
+ {
+ m_aimImpossible = true;
+ }
+
return ERR_OK;
}
@@ -126,12 +133,25 @@ Error CTaskGunGoal::IsEnded()
if ( m_engine->GetPause() ) return ERR_CONTINUE;
if ( m_initialDirV == m_finalDirV &&
- m_initialDirH == m_finalDirH ) return ERR_STOP;
- if ( m_progress < 1.0f ) return ERR_CONTINUE;
+ m_initialDirH == m_finalDirH )
+ {
+ if ( m_aimImpossible )
+ return ERR_AIM_IMPOSSIBLE;
+ else
+ return ERR_STOP;
+ }
+
+ if ( m_progress < 1.0f ) return ERR_CONTINUE;
m_object->SetGunGoalV(m_finalDirV);
m_object->SetGunGoalH(m_finalDirH);
Abort();
+
+ if ( m_aimImpossible )
+ {
+ return ERR_AIM_IMPOSSIBLE;
+ }
+
return ERR_STOP;
}