From a61da7404bf8430132864d493c7e75a6b4c3d978 Mon Sep 17 00:00:00 2001 From: MrSimbax Date: Sat, 8 Mar 2014 22:36:35 +0100 Subject: Added fall damage + changed window title --- src/app/app.cpp | 2 +- src/physics/physics.cpp | 16 ++++++++++++++++ src/physics/physics.h | 3 +++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/app/app.cpp b/src/app/app.cpp index 70bec81..51f1e42 100644 --- a/src/app/app.cpp +++ b/src/app/app.cpp @@ -112,7 +112,7 @@ CApplication::CApplication() m_debugModes = 0; m_customDataPath = false; - m_windowTitle = "COLOBOT"; + m_windowTitle = "COLOBOT GOLD"; m_simulationSuspended = false; diff --git a/src/physics/physics.cpp b/src/physics/physics.cpp index a7e1e6c..c84040e 100644 --- a/src/physics/physics.cpp +++ b/src/physics/physics.cpp @@ -107,6 +107,9 @@ CPhysics::CPhysics(CObject* object) m_bFreeze = false; m_bForceUpdate = true; m_bLowLevel = false; + m_fallingHeight = 0.0f; + m_fallDamageFraction = 0.0f; + m_minFallingHeight = 0.0f; memset(&m_linMotion, 0, sizeof(Motion)); memset(&m_cirMotion, 0,sizeof(Motion)); @@ -912,9 +915,15 @@ void CPhysics::MotorUpdate(float aTime, float rTime) if ( m_reactorRange < 0.5f ) m_bLowLevel = true; } + m_minFallingHeight = 20.0f; + m_fallDamageFraction = 0.007f; + if ( m_reactorRange == 0.0f ) // reactor tilt? { motorSpeed.y = -1.0f; // grave + + if (m_fallingHeight == 0.0f && m_floorHeight >= m_minFallingHeight) + m_fallingHeight = m_floorHeight; } } @@ -974,6 +983,13 @@ void CPhysics::MotorUpdate(float aTime, float rTime) m_cirMotion.motorSpeed.y = 0.0f; } + if ( m_bLand && m_fallingHeight != 0.0f ) // if fell + { + float force = m_fallingHeight * m_fallDamageFraction; + m_object->ExploObject(EXPLO_BOUM, force); + m_fallingHeight = 0.0f; + } + if ( m_type == TYPE_FLYING && m_bLand ) // flying on the ground? { if ( type == OBJECT_HUMAN || diff --git a/src/physics/physics.h b/src/physics/physics.h index 834d7b8..cf15b13 100644 --- a/src/physics/physics.h +++ b/src/physics/physics.h @@ -248,5 +248,8 @@ protected: bool m_bSoundSlow; bool m_bForceUpdate; bool m_bLowLevel; + float m_fallingHeight; + float m_fallDamageFraction; + float m_minFallingHeight; }; -- cgit v1.2.3-1-g7c22