summaryrefslogtreecommitdiffstats
path: root/src/object/auto/autobase.cpp
diff options
context:
space:
mode:
authorkrzys-h <krzys_h@interia.pl>2013-12-26 18:50:05 +0100
committerkrzys-h <krzys_h@interia.pl>2013-12-26 18:50:05 +0100
commit0d31f59b124658155bf93ca78eb427a98c664572 (patch)
treea5046a80ede9829d1c82a23808c1522fcbac1581 /src/object/auto/autobase.cpp
parentbd4f77986a025132b2b335ee34a6681c469439b1 (diff)
downloadcolobot-0d31f59b124658155bf93ca78eb427a98c664572.tar.gz
colobot-0d31f59b124658155bf93ca78eb427a98c664572.tar.bz2
colobot-0d31f59b124658155bf93ca78eb427a98c664572.zip
.takeoff() for SpaceShip (#265)
Diffstat (limited to 'src/object/auto/autobase.cpp')
-rw-r--r--src/object/auto/autobase.cpp99
1 files changed, 54 insertions, 45 deletions
diff --git a/src/object/auto/autobase.cpp b/src/object/auto/autobase.cpp
index 6d61bc2..06b5dbb 100644
--- a/src/object/auto/autobase.cpp
+++ b/src/object/auto/autobase.cpp
@@ -121,7 +121,6 @@ bool CAutoBase::EventProcess(const Event &event)
CObject* pObj;
Math::Vector pos, speed, vibCir, iPos;
Math::Point dim, p;
- Error err;
float angle, dist, time, h, len, vSpeed;
int i, max;
@@ -313,50 +312,7 @@ begin:
if ( event.type == EVENT_OBJECT_BTAKEOFF )
{
- err = CheckCloseDoor();
- if ( err != ERR_OK )
- {
- m_main->DisplayError(err, m_object);
- return false;
- }
-
- err = m_main->CheckEndMission(false);
- if ( err != ERR_OK )
- {
- m_main->DisplayError(err, m_object);
- return false;
- }
-
- FreezeCargo(true); // freeze whole cargo
- m_main->SetMovieLock(true); // blocks everything until the end
- m_main->DeselectAll();
-
- newEvent.type = EVENT_UPDINTERFACE;
- m_eventQueue->AddEvent(newEvent);
-
- m_camera->SetType(Gfx::CAM_TYPE_SCRIPT);
-
- pos = m_pos;
- pos.x -= 110.0f;
- m_terrain->AdjustToFloor(pos);
- pos.y += 10.0f;
- m_camera->SetScriptEye(pos);
- m_posSound = pos;
-
- pos = m_object->GetPosition(0);
- pos.y += 50.0f;
- m_camera->SetScriptLookat(pos);
-
- m_engine->SetFocus(1.0f);
-
- m_soundChannel = m_sound->Play(SOUND_MANIP, m_posSound, 0.3f, 1.5f, true);
- m_sound->AddEnvelope(m_soundChannel, 0.3f, 1.5f, BASE_DOOR_TIME2, SOPER_CONTINUE);
- m_sound->AddEnvelope(m_soundChannel, 0.0f, 1.5f, 0.5f, SOPER_STOP);
-
- m_phase = ABP_CLOSE2;
- m_progress = 0.0f;
- m_speed = 1.0f/BASE_DOOR_TIME2;
- return true;
+ return TakeOff(true);
}
if ( event.type != EVENT_FRAME ) return true;
@@ -1444,3 +1400,56 @@ void CAutoBase::EndTransit()
m_main->StartMusic();
}
+Error CAutoBase::TakeOff(bool printMsg)
+{
+
+ Event newEvent;
+ Math::Vector pos;
+ Error err;
+
+ err = CheckCloseDoor();
+ if ( err != ERR_OK )
+ {
+ if(printMsg) m_main->DisplayError(err, m_object);
+ return err;
+ }
+
+ err = m_main->CheckEndMission(false);
+ if ( err != ERR_OK )
+ {
+ if(printMsg) m_main->DisplayError(err, m_object);
+ return err;
+ }
+
+ FreezeCargo(true); // freeze whole cargo
+ m_main->SetMovieLock(true); // blocks everything until the end
+ m_main->DeselectAll();
+
+ newEvent.type = EVENT_UPDINTERFACE;
+ m_eventQueue->AddEvent(newEvent);
+
+ m_camera->SetType(Gfx::CAM_TYPE_SCRIPT);
+
+ pos = m_pos;
+ pos.x -= 110.0f;
+ m_terrain->AdjustToFloor(pos);
+ pos.y += 10.0f;
+ m_camera->SetScriptEye(pos);
+ m_posSound = pos;
+
+ pos = m_object->GetPosition(0);
+ pos.y += 50.0f;
+ m_camera->SetScriptLookat(pos);
+
+ m_engine->SetFocus(1.0f);
+
+ m_soundChannel = m_sound->Play(SOUND_MANIP, m_posSound, 0.3f, 1.5f, true);
+ m_sound->AddEnvelope(m_soundChannel, 0.3f, 1.5f, BASE_DOOR_TIME2, SOPER_CONTINUE);
+ m_sound->AddEnvelope(m_soundChannel, 0.0f, 1.5f, 0.5f, SOPER_STOP);
+
+ m_phase = ABP_CLOSE2;
+ m_progress = 0.0f;
+ m_speed = 1.0f/BASE_DOOR_TIME2;
+ return ERR_OK;
+}
+