Moved the variable m_time_since_stuck from the kart.hpp/kart.cpp files to the default robot. Since there is other code to catch the same situation, the code dealing with the m_time_since_stuck variable is disabled for now as a test.

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/trunk/supertuxkart@1377 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
cosmosninja 2008-01-09 02:20:58 +00:00
parent 49dc3abc5b
commit 298a81da04
4 changed files with 35 additions and 23 deletions

View File

@ -137,7 +137,6 @@ Kart::Kart (const KartProperties* kartProperties_, int position_ ,
m_finish_time = 0.0f; m_finish_time = 0.0f;
m_prev_accel = 0.0f; m_prev_accel = 0.0f;
m_wheelie_angle = 0.0f; m_wheelie_angle = 0.0f;
m_time_since_stuck = 0.0f;
m_smokepuff = NULL; m_smokepuff = NULL;
m_smoke_system = NULL; m_smoke_system = NULL;
m_exhaust_pipe = NULL; m_exhaust_pipe = NULL;
@ -555,17 +554,6 @@ void Kart::handleExplosion(const sgVec3& pos, bool direct_hit)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void Kart::update (float dt) void Kart::update (float dt)
{ {
// check if kart is stuck
if(!isPlayerKart() && getVehicle()->getRigidBody()->getLinearVelocity().length()<2.0f
&& !m_rescue && world->getPhase() != World::START_PHASE)
{
m_time_since_stuck += dt;
}
else
{
m_time_since_stuck = 0.0f;
}
m_zipper_time_left = m_zipper_time_left>0.0f ? m_zipper_time_left-dt : 0.0f; m_zipper_time_left = m_zipper_time_left>0.0f ? m_zipper_time_left-dt : 0.0f;
//m_wheel_position gives the rotation around the X-axis, and since velocity's //m_wheel_position gives the rotation around the X-axis, and since velocity's
@ -1196,14 +1184,6 @@ void Kart::placeModel ()
m_model_transform->setTransform(&c); m_model_transform->setTransform(&c);
Moveable::placeModel(); Moveable::placeModel();
// Check if a kart needs to be rescued.
if((fabs(m_curr_pos.hpr[2])>60 && getSpeed()<3.0f) ||
m_time_since_stuck > 2.0f)
{
m_rescue=true;
m_time_since_stuck=0.0f;
}
} // placeModel } // placeModel
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------

View File

@ -104,7 +104,6 @@ protected:
btVehicleRaycaster *m_vehicle_raycaster; btVehicleRaycaster *m_vehicle_raycaster;
btRaycastVehicle *m_vehicle; btRaycastVehicle *m_vehicle;
float m_kart_height; float m_kart_height;
float m_time_since_stuck;
private: private:
int m_num_herrings_gobbled; int m_num_herrings_gobbled;

View File

@ -46,8 +46,6 @@ DefaultRobot::DefaultRobot( const KartProperties *kart_properties,
AutoKart( kart_properties, position, init_pos ) AutoKart( kart_properties, position, init_pos )
{ {
m_kart_properties = kart_properties; m_kart_properties = kart_properties;
m_time_since_last_shot = 0.0f;
m_start_kart_crash_direction = 0;
reset(); reset();
switch( world->m_race_setup.m_difficulty ) switch( world->m_race_setup.m_difficulty )
@ -480,6 +478,30 @@ void DefaultRobot::handle_rescue(const float DELTA)
m_rescue = true; m_rescue = true;
m_crash_time = 0.0f; m_crash_time = 0.0f;
} }
#if 0
//FIXME: this is from the kart.cpp; since we already have a way to rescue,
//I don't know if this is needed.
// check if kart is stuck
if(!isPlayerKart() && getVehicle()->getRigidBody()->getLinearVelocity().length()<2.0f
&& !m_rescue && world->getPhase() != World::START_PHASE)
{
m_time_since_stuck += dt;
}
else
{
m_time_since_stuck = 0.0f;
}
// Check if a kart needs to be rescued.
if((fabs(m_curr_pos.hpr[2])>60 &&
sgLengthVec3(m_velocity.xyz)<3.0f) || m_time_since_stuck > 2.0f)
{
m_rescue=true;
m_time_since_stuck=0.0f;
}
#endif
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -725,6 +747,9 @@ void DefaultRobot::find_non_crashing_point( sgVec2 result )
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void DefaultRobot::reset() void DefaultRobot::reset()
{ {
m_time_since_last_shot = 0.0f;
m_start_kart_crash_direction = 0;
m_sector = Track::UNKNOWN_SECTOR; m_sector = Track::UNKNOWN_SECTOR;
m_inner_curve = 0; m_inner_curve = 0;
m_curve_target_speed = getMaxSpeed(); m_curve_target_speed = getMaxSpeed();
@ -738,6 +763,10 @@ void DefaultRobot::reset()
m_crash_time = 0.0f; m_crash_time = 0.0f;
#if 0
m_time_since_stuck = 0.0f;
#endif
AutoKart::reset(); AutoKart::reset();
} }

View File

@ -93,6 +93,10 @@ private:
float m_curve_target_speed; float m_curve_target_speed;
float m_curve_angle; float m_curve_angle;
#if 0
float m_time_since_stuck;
#endif
int m_start_kart_crash_direction; //-1 = left, 1 = right, 0 = no crash. int m_start_kart_crash_direction; //-1 = left, 1 = right, 0 = no crash.
/*Functions called directly from update(). They all represent an action /*Functions called directly from update(). They all represent an action