From: <hik...@us...> - 2008-07-17 01:33:52
|
Revision: 2168 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2168&view=rev Author: hikerstk Date: 2008-07-17 01:33:49 +0000 (Thu, 17 Jul 2008) Log Message: ----------- 1) Updated the physics parameters: crashes of karts with the track when accelerating have been removed; sound when hitting parts of the track have been re-enabled. 2) Special handling of smaller karts (wilber/hexley) has been removed. 3) Added option to specify the exact wheel positions for the physics. 4) Added option to move the center of gravity along all three axis (not only height). 5) Added --kartsize-debug command line option to print the sizes of each kart (which is useful when specifying the wheel positions). 6) Removed unused entry from stk_config.data. Modified Paths: -------------- trunk/supertuxkart/data/stk_config.data trunk/supertuxkart/src/kart.cpp trunk/supertuxkart/src/kart.hpp trunk/supertuxkart/src/kart_properties.cpp trunk/supertuxkart/src/kart_properties.hpp trunk/supertuxkart/src/main.cpp trunk/supertuxkart/src/player_kart.cpp trunk/supertuxkart/src/stk_config.cpp trunk/supertuxkart/src/stk_config.hpp trunk/supertuxkart/src/user_config.cpp trunk/supertuxkart/src/user_config.hpp Modified: trunk/supertuxkart/data/stk_config.data =================================================================== --- trunk/supertuxkart/data/stk_config.data 2008-07-15 23:45:43 UTC (rev 2167) +++ trunk/supertuxkart/data/stk_config.data 2008-07-17 01:33:49 UTC (rev 2168) @@ -60,7 +60,7 @@ (max-speed-angle 12 6.4) (engine-power 400 ) (mass 225 ) - (suspension-stiffness 8.0 ) + (suspension-stiffness 18.0 ) (wheel-damping-relaxation 2.3 ) (wheel-damping-compression 4.4 ) (friction-slip 10000000 ) @@ -71,9 +71,10 @@ (chassis-angular-damping 0.2 ) (maximum-speed 22.22 ) ;; = 80 km/h (max-speed-reverse-ratio 0.2 ) ;; percentage of max speed for reverse gear - (gravity-center-shift 0.4 ) ;; Shift center of gravity down by that many - ;; units of kart_height (usually between 0 and 0.5) - (suspension-rest 0.1 ) + (gravity-center-shift 0.0 0.0 0.3 ) ;; Shift center of gravity + (front-wheel-connection 0.38 0.6 0) + (rear-wheel-connection 0.38 -0.6 0) + (suspension-rest 0.2 ) (suspension-travel-cm 500 ) ;; The z-axis velocity set when a jump is initiated. This will cause the Modified: trunk/supertuxkart/src/kart.cpp =================================================================== --- trunk/supertuxkart/src/kart.cpp 2008-07-15 23:45:43 UTC (rev 2167) +++ trunk/supertuxkart/src/kart.cpp 2008-07-17 01:33:49 UTC (rev 2168) @@ -118,10 +118,8 @@ btTransform shiftCenterOfGravity; shiftCenterOfGravity.setIdentity(); // Shift center of gravity downwards, so that the kart - // won't topple over too easy. This must be between 0 and 0.5 - // (it's in units of kart_height) - const float CENTER_SHIFT = getGravityCenterShift(); - shiftCenterOfGravity.setOrigin(btVector3(0.0f,0.0f,CENTER_SHIFT*kart_height)); + // won't topple over too easy. + shiftCenterOfGravity.setOrigin(getGravityCenterShift()); m_kart_chassis.addChildShape(shiftCenterOfGravity, shape); @@ -157,42 +155,45 @@ // Add wheels // ---------- - float wheel_width = m_kart_properties->getWheelWidth(); - float wheel_radius = m_kart_properties->getWheelRadius(); + float wheel_width = m_kart_properties->getWheelWidth(); + float wheel_radius = m_kart_properties->getWheelRadius(); float suspension_rest = m_kart_properties->getSuspensionRest(); - float connection_height = -(0.5f-CENTER_SHIFT)*kart_height; + Vec3 front_wheel = m_kart_properties->getFrontWheelConnection(); + if(front_wheel.getX()==STKConfig::UNDEFINED) + front_wheel.setX(0.5f*kart_width-0.3f*wheel_width); + if(front_wheel.getY()==STKConfig::UNDEFINED) + front_wheel.setY(0.5f*kart_length-wheel_radius); + if(front_wheel.getZ()==STKConfig::UNDEFINED) + front_wheel.setZ(0); btVector3 wheel_direction(0.0f, 0.0f, -1.0f); btVector3 wheel_axle(1.0f,0.0f,0.0f); // right front wheel - btVector3 wheel_coord(0.5f*kart_width-0.3f*wheel_width, - 0.5f*kart_length-wheel_radius, - connection_height); - m_vehicle->addWheel(wheel_coord, wheel_direction, wheel_axle, + m_vehicle->addWheel(front_wheel, wheel_direction, wheel_axle, suspension_rest, wheel_radius, *m_tuning, /* isFrontWheel: */ true); - // left front wheel - wheel_coord = btVector3(-0.5f*kart_width+0.3f*wheel_width, - 0.5f*kart_length-wheel_radius, - connection_height); - m_vehicle->addWheel(wheel_coord, wheel_direction, wheel_axle, + // left front wheel: mirror X axis + front_wheel.setX(-front_wheel.getX()); + m_vehicle->addWheel(front_wheel, wheel_direction, wheel_axle, suspension_rest, wheel_radius, *m_tuning, /* isFrontWheel: */ true); // right rear wheel - wheel_coord = btVector3(0.5f*kart_width-0.3f*wheel_width, - -0.5f*kart_length+wheel_radius, - connection_height); - m_vehicle->addWheel(wheel_coord, wheel_direction, wheel_axle, + Vec3 rear_wheel = m_kart_properties->getRearWheelConnection(); + if(rear_wheel.getX()==STKConfig::UNDEFINED) + rear_wheel.setX(0.5f*kart_width-0.3f*wheel_width); + if(rear_wheel.getY()==STKConfig::UNDEFINED) + rear_wheel.setY(-0.5f*kart_length+wheel_radius); + if(rear_wheel.getZ()==STKConfig::UNDEFINED) + rear_wheel.setZ(0); + m_vehicle->addWheel(rear_wheel, wheel_direction, wheel_axle, suspension_rest, wheel_radius, *m_tuning, /* isFrontWheel: */ false); - // right rear wheel - wheel_coord = btVector3(-0.5f*kart_width+0.3f*wheel_width, - -0.5f*kart_length+wheel_radius, - connection_height); - m_vehicle->addWheel(wheel_coord, wheel_direction, wheel_axle, + // left rear wheel: mirror X axis + rear_wheel.setX(-rear_wheel.getX()); + m_vehicle->addWheel(rear_wheel, wheel_direction, wheel_axle, suspension_rest, wheel_radius, *m_tuning, /* isFrontWheel: */ false); @@ -1047,12 +1048,12 @@ if (m_wheel_rear_l) m_wheel_rear_l->setTransform(wheel_rot); if (m_wheel_rear_r) m_wheel_rear_r->setTransform(wheel_rot); - const float CENTER_SHIFT = getGravityCenterShift(); + Vec3 center_shift = getGravityCenterShift(); + center_shift.setZ(-center_shift.getZ() + + 0.3f*fabs(sin(DEGREE_TO_RAD(m_wheelie_angle))) ); const float offset_pitch = DEGREE_TO_RAD(m_wheelie_angle); - const float offset_z = 0.3f*fabs(sin(m_wheelie_angle*SG_DEGREES_TO_RADIANS)) - - (0.5f-CENTER_SHIFT)*getKartHeight(); - Moveable::updateGraphics(Vec3(0, 0, offset_z), Vec3(0, offset_pitch, 0)); + Moveable::updateGraphics(center_shift, Vec3(0, offset_pitch, 0)); } // updateGraphics //----------------------------------------------------------------------------- Modified: trunk/supertuxkart/src/kart.hpp =================================================================== --- trunk/supertuxkart/src/kart.hpp 2008-07-15 23:45:43 UTC (rev 2167) +++ trunk/supertuxkart/src/kart.hpp 2008-07-17 01:33:49 UTC (rev 2168) @@ -166,11 +166,10 @@ float getTimeFullSteer () const {return m_kart_properties->getTimeFullSteer();} float getBrakeFactor () const {return m_kart_properties->getBrakeFactor();} float getWheelBase () const {return m_kart_properties->getWheelBase();} - float getHeightCOG () const {return m_kart_properties->getHeightCOG();} float getFrictionSlip () const {return m_kart_properties->getFrictionSlip();} float getMaxSteerAngle () const {return m_kart_properties->getMaxSteerAngle(getSpeed());} - float getGravityCenterShift () const + const Vec3& getGravityCenterShift () const {return m_kart_properties->getGravityCenterShift(); } float getWheelieMaxSpeedRatio () const {return m_kart_properties->getWheelieMaxSpeedRatio(); } Modified: trunk/supertuxkart/src/kart_properties.cpp =================================================================== --- trunk/supertuxkart/src/kart_properties.cpp 2008-07-15 23:45:43 UTC (rev 2167) +++ trunk/supertuxkart/src/kart_properties.cpp 2008-07-17 01:33:49 UTC (rev 2168) @@ -30,6 +30,8 @@ #include "stk_config.hpp" #include "translation.hpp" #include "ssg_help.hpp" +#include "user_config.hpp" + #if defined(WIN32) && !defined(__CYGWIN__) # define snprintf _snprintf #endif @@ -103,23 +105,14 @@ ssgStripify(m_model); float x_min, x_max, y_min, y_max, z_min, z_max; MinMax(m_model, &x_min, &x_max, &y_min, &y_max, &z_min, &z_max); - if(getName()=="Hexley" || getName()=="Wilber") - { - // These kart models are too small, so we get problems with stability. - // Till we find either better (bigger) models or improve their physics - // parameters to become playable, we just adjust the size of their - // physical models to be the same as the tuxkart model - x_min=-0.473799f; - x_max= 0.486361f; - y_min=-0.772244f; - y_max= 0.739075f; - z_min= 0.002806f; - z_max= 0.701095f; - } m_kart_width = x_max - x_min; m_kart_length = y_max - y_min; m_kart_height = z_max - z_min; - if(m_kart_length<1.2) m_kart_length=1.5f; + + // Useful when tweaking kart parameters + if(user_config->m_print_kart_sizes) + printf("%s:\twidth: %f\tlength: %f\theight: %f\n",getIdent().c_str(), + m_kart_width, m_kart_length, m_kart_height); m_model->ref(); } // if if(!dont_load_materials) @@ -146,7 +139,6 @@ lisp->get("rgb", m_color); lisp->get("wheel-base", m_wheel_base); - lisp->get("heightCOG", m_height_cog); lisp->get("engine-power", m_engine_power); lisp->get("time-full-steer", m_time_full_steer); lisp->get("brake-factor", m_brake_factor); @@ -202,6 +194,8 @@ lisp->get("max-speed-reverse-ratio", m_max_speed_reverse_ratio ); lisp->get("maximum-speed", m_maximum_speed ); lisp->get("gravity-center-shift", m_gravity_center_shift ); + lisp->get("front-wheel-connection", m_front_wheel_connection ); + lisp->get("rear-wheel-connection", m_rear_wheel_connection ); lisp->get("suspension-rest", m_suspension_rest ); lisp->get("suspension-travel-cm", m_suspension_travel_cm ); lisp->get("jump-velocity", m_jump_velocity ); @@ -242,7 +236,6 @@ m_kart_width = 1.0f; m_kart_length = 1.5f; m_wheel_base = stk_config->m_wheel_base; - m_height_cog = stk_config->m_height_cog; m_engine_power = stk_config->m_engine_power; m_time_full_steer = stk_config->m_time_full_steer; m_brake_factor = stk_config->m_brake_factor; @@ -267,6 +260,8 @@ m_maximum_speed = stk_config->m_maximum_speed; m_max_speed_reverse_ratio = stk_config->m_max_speed_reverse_ratio; m_gravity_center_shift = stk_config->m_gravity_center_shift; + m_front_wheel_connection = stk_config->m_front_wheel_connection; + m_rear_wheel_connection = stk_config->m_rear_wheel_connection; m_suspension_rest = stk_config->m_suspension_rest; m_suspension_travel_cm = stk_config->m_suspension_travel_cm; m_jump_velocity = stk_config->m_jump_velocity; Modified: trunk/supertuxkart/src/kart_properties.hpp =================================================================== --- trunk/supertuxkart/src/kart_properties.hpp 2008-07-15 23:45:43 UTC (rev 2167) +++ trunk/supertuxkart/src/kart_properties.hpp 2008-07-17 01:33:49 UTC (rev 2168) @@ -57,7 +57,6 @@ float m_kart_height; // height of kart float m_mass; // weight of kart float m_wheel_base; // distance between front and read wheels - float m_height_cog; // height of center of gravity float m_engine_power; // maximum force from engine float m_brake_factor; // braking factor * engine_power = braking force float m_time_full_steer; // time for player karts to reach full steer angle @@ -85,7 +84,10 @@ float m_chassis_angular_damping; float m_maximum_speed; float m_max_speed_reverse_ratio; - float m_gravity_center_shift; + Vec3 m_gravity_center_shift; // shift of center of gravity + Vec3 m_front_wheel_connection; // connection point relative to center of + Vec3 m_rear_wheel_connection; // gravity for front and rear right wheels + // (X is mirrored for left wheels) float m_suspension_rest; float m_suspension_travel_cm; float m_jump_velocity; // z velocity set when jumping @@ -136,7 +138,6 @@ float getTimeFullSteer () const {return m_time_full_steer; } float getBrakeFactor () const {return m_brake_factor; } float getWheelBase () const {return m_wheel_base; } - float getHeightCOG () const {return m_height_cog; } float getMaxSpeedReverseRatio () const {return m_max_speed_reverse_ratio; } float getWheelieMaxSpeedRatio () const {return m_wheelie_max_speed_ratio; } float getWheelieMaxPitch () const {return m_wheelie_max_pitch; } @@ -156,7 +157,9 @@ float getChassisLinearDamping () const {return m_chassis_linear_damping; } float getChassisAngularDamping () const {return m_chassis_angular_damping; } float getMaximumSpeed () const {return m_maximum_speed; } - float getGravityCenterShift () const {return m_gravity_center_shift; } + const Vec3& getGravityCenterShift() const {return m_gravity_center_shift; } + const Vec3& getFrontWheelConnection()const {return m_front_wheel_connection; } + const Vec3& getRearWheelConnection()const {return m_rear_wheel_connection; } float getSuspensionRest () const {return m_suspension_rest; } float getSuspensionTravelCM () const {return m_suspension_travel_cm; } float getJumpVelocity () const {return m_jump_velocity; } Modified: trunk/supertuxkart/src/main.cpp =================================================================== --- trunk/supertuxkart/src/main.cpp 2008-07-15 23:45:43 UTC (rev 2167) +++ trunk/supertuxkart/src/main.cpp 2008-07-17 01:33:49 UTC (rev 2168) @@ -145,6 +145,10 @@ { user_config->m_bullet_debug=1; } + else if(!strcmp(argv[i], "--kartsize-debug")) + { + user_config->m_print_kart_sizes=true; + } else if( (!strcmp(argv[i], "--kart") && i+1<argc )) { std::string filename=file_manager->getKartFile(std::string(argv[i+1])+".tkkf"); Modified: trunk/supertuxkart/src/player_kart.cpp =================================================================== --- trunk/supertuxkart/src/player_kart.cpp 2008-07-15 23:45:43 UTC (rev 2167) +++ trunk/supertuxkart/src/player_kart.cpp 2008-07-17 01:33:49 UTC (rev 2168) @@ -211,15 +211,8 @@ if(world->getTime() - m_time_last_crash_sound > 0.5f) { - // FIXME: sounds when hitting the track (i.e. the kart argument is NULL) - // are disabled for now, since the chassis of the karts hits - // the track when accelerating, causing a constant crash sfx - // to be played. Might be fixed with better physics parameters - if(kart) - { - sound_manager->playSfx( SOUND_CRASH ); - m_time_last_crash_sound = world->getTime(); - } + sound_manager->playSfx( SOUND_CRASH ); + m_time_last_crash_sound = world->getTime(); } } // crashed Modified: trunk/supertuxkart/src/stk_config.cpp =================================================================== --- trunk/supertuxkart/src/stk_config.cpp 2008-07-15 23:45:43 UTC (rev 2167) +++ trunk/supertuxkart/src/stk_config.cpp 2008-07-17 01:33:49 UTC (rev 2168) @@ -21,6 +21,7 @@ #include "file_manager.hpp" STKConfig* stk_config=0; +float STKConfig::UNDEFINED = -99.9f; //----------------------------------------------------------------------------- void STKConfig::load(const std::string filename) @@ -35,7 +36,7 @@ // Check that all necessary values are indeed set // ----------------------------------------------- -#define CHECK_NEG( a,strA) if(a<-99) { \ +#define CHECK_NEG( a,strA) if(a==UNDEFINED) { \ fprintf(stderr,"Missing default value for '%s' in '%s'.\n", \ strA,filename.c_str());exit(-1); \ } @@ -71,7 +72,6 @@ CHECK_NEG(m_grid_order, "grid-order" ); CHECK_NEG(m_mass, "mass" ); - CHECK_NEG(m_height_cog, "heightCOG" ); CHECK_NEG(m_wheel_base, "wheel-base" ); CHECK_NEG(m_engine_power, "engine-power" ); CHECK_NEG(m_min_speed_turn, "min-speed-angle" ); @@ -106,7 +106,9 @@ CHECK_NEG(m_chassis_angular_damping, "chassis-angular-damping" ); CHECK_NEG(m_maximum_speed, "maximum-speed" ); CHECK_NEG(m_max_speed_reverse_ratio, "max-speed-reverse-ratio" ); - CHECK_NEG(m_gravity_center_shift, "gravity-center-shift" ); + CHECK_NEG(m_gravity_center_shift[0], "gravity-center-shift" ); + CHECK_NEG(m_gravity_center_shift[1], "gravity-center-shift" ); + CHECK_NEG(m_gravity_center_shift[2], "gravity-center-shift" ); CHECK_NEG(m_bomb_time, "bomb-time" ); CHECK_NEG(m_bomb_time_increase, "bomb-time-increase" ); CHECK_NEG(m_anvil_time, "anvil-time" ); @@ -135,7 +137,7 @@ */ void STKConfig::init_defaults() { - m_wheel_base = m_height_cog = m_mass = + m_wheel_base = m_mass = m_min_speed_turn = m_angle_at_min = m_max_speed_turn = m_angle_at_max = m_anvil_weight = m_parachute_friction = m_parachute_time = m_parachute_done_fraction = m_parachute_time_other = @@ -151,16 +153,18 @@ m_wheel_damping_compression = m_friction_slip = m_roll_influence = m_wheel_radius = m_wheel_width = m_wheelie_power_boost = m_chassis_linear_damping = m_chassis_angular_damping = - m_maximum_speed = m_gravity_center_shift = m_suspension_rest = + m_maximum_speed = m_suspension_rest = m_max_speed_reverse_ratio = m_explosion_impulse = m_jump_velocity = m_explosion_impulse_objects = m_upright_tolerance = m_upright_max_force = m_suspension_travel_cm = // Camera - m_camera_max_accel = m_camera_max_brake = m_camera_distance = -99.9f; - - m_max_karts = -100; - m_grid_order = -100; - m_title_music = NULL; + m_camera_max_accel = m_camera_max_brake = m_camera_distance = UNDEFINED; + m_gravity_center_shift = Vec3(UNDEFINED); + m_front_wheel_connection = Vec3(UNDEFINED); + m_rear_wheel_connection = Vec3(UNDEFINED); + m_max_karts = -100; + m_grid_order = -100; + m_title_music = NULL; m_scores.clear(); m_leader_intervals.clear(); } // init_defaults Modified: trunk/supertuxkart/src/stk_config.hpp =================================================================== --- trunk/supertuxkart/src/stk_config.hpp 2008-07-15 23:45:43 UTC (rev 2167) +++ trunk/supertuxkart/src/stk_config.hpp 2008-07-17 01:33:49 UTC (rev 2168) @@ -27,6 +27,7 @@ class STKConfig : public KartProperties { public: + static float UNDEFINED; float m_anvil_weight; // Additional kart weight if anvil is attached float m_anvil_speed_factor; // To decrease speed once when attached float m_parachute_friction; // Increased air friction when parachute Modified: trunk/supertuxkart/src/user_config.cpp =================================================================== --- trunk/supertuxkart/src/user_config.cpp 2008-07-15 23:45:43 UTC (rev 2167) +++ trunk/supertuxkart/src/user_config.cpp 2008-07-17 01:33:49 UTC (rev 2168) @@ -104,6 +104,7 @@ m_herring_style = "new"; m_background_music = ""; m_profile = 0; + m_print_kart_sizes = false; m_skidding = false; m_max_fps = 120; m_sfx_volume = 1.0f; Modified: trunk/supertuxkart/src/user_config.hpp =================================================================== --- trunk/supertuxkart/src/user_config.hpp 2008-07-15 23:45:43 UTC (rev 2167) +++ trunk/supertuxkart/src/user_config.hpp 2008-07-17 01:33:49 UTC (rev 2168) @@ -168,6 +168,7 @@ bool m_smoke; bool m_display_fps; int m_profile; // Positive number: time in seconds, neg: # laps + bool m_print_kart_sizes; // print all kart sizes // 0 if no profiling. Never saved in config file! bool m_skidding; float m_sfx_volume; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <au...@us...> - 2008-07-21 01:58:30
|
Revision: 2173 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2173&view=rev Author: auria Date: 2008-07-21 01:55:41 +0000 (Mon, 21 Jul 2008) Log Message: ----------- Turned Spark into Bowling Ball Modified Paths: -------------- trunk/supertuxkart/data/textures/materials.dat trunk/supertuxkart/src/collectable.cpp trunk/supertuxkart/src/collectable_manager.cpp trunk/supertuxkart/src/collectable_manager.hpp trunk/supertuxkart/src/flyable.cpp trunk/supertuxkart/src/flyable.hpp trunk/supertuxkart/src/gui/help_page_two.cpp trunk/supertuxkart/src/gui/race_gui.cpp trunk/supertuxkart/src/kart.cpp trunk/supertuxkart/src/kart.hpp trunk/supertuxkart/src/moveable.hpp trunk/supertuxkart/src/projectile_manager.cpp trunk/supertuxkart/src/projectile_manager.hpp trunk/supertuxkart/src/robots/default_robot.cpp trunk/supertuxkart/src/spark.cpp trunk/supertuxkart/src/stk_config.cpp trunk/supertuxkart/src/stk_config.hpp Added Paths: ----------- trunk/supertuxkart/data/bowling.projectile trunk/supertuxkart/data/models/bowling.ac trunk/supertuxkart/data/textures/bowling.rgb trunk/supertuxkart/data/textures/bowlingicon.rgb Removed Paths: ------------- trunk/supertuxkart/data/models/spark.ac trunk/supertuxkart/data/spark.projectile trunk/supertuxkart/data/textures/spark.rgb Added: trunk/supertuxkart/data/bowling.projectile =================================================================== --- trunk/supertuxkart/data/bowling.projectile (rev 0) +++ trunk/supertuxkart/data/bowling.projectile 2008-07-21 01:55:41 UTC (rev 2173) @@ -0,0 +1,20 @@ +;; -*- mode: lisp -*- + +(tuxkart-collectable + (name "Bowling") + (model "bowling.ac") + (icon "bowlingicon.rgb") + (speed 5.0) + (min-height 0.2) ; height above terrain below which a spark is + ; started to be pulled up + (max-height 1.0) ; height above terrain at which a spark is + ; started to be pulled back to ground + (force-updown 1.0) ; force pushing the spark down + ; when it's too high above ground + (force-to-target 20) ; force with which a spark flies towards + ; the nearest kart + (max-distance 10) ; maximum distance the spark can be away + ; from a kart when accelerating towards it +) + +;; EOF ;; Added: trunk/supertuxkart/data/models/bowling.ac =================================================================== --- trunk/supertuxkart/data/models/bowling.ac (rev 0) +++ trunk/supertuxkart/data/models/bowling.ac 2008-07-21 01:55:41 UTC (rev 2173) @@ -0,0 +1,784 @@ +AC3Db +MATERIAL "DefaultWhite" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0 +OBJECT world +kids 1 +OBJECT poly +name "bowling" +data 7 +bowling +texture "bowling.rgb" +texrep 1 1 +crease 30.000000 +numvert 98 +0 0 -0.441011 +0.176056 0 -0.411378 +0 -0.176056 -0.411378 +-0.176056 0 -0.411378 +0 0.176056 -0.411378 +0.163854 0.163854 -0.383488 +0.163854 -0.163854 -0.383488 +-0.163854 -0.163854 -0.383488 +-0.163854 0.163854 -0.383488 +0 0 0.441011 +0 0.176056 0.411378 +-0.176056 0 0.411378 +0 -0.176056 0.411378 +0.176056 0 0.411378 +0.163854 0.163854 0.383488 +-0.163854 0.163854 0.383488 +-0.163854 -0.163854 0.383488 +0.163854 -0.163854 0.383488 +0.441011 0 0 +0.411378 0.176056 0 +0.411378 0 0.176056 +0.411378 -0.176056 0 +0.411378 0 -0.176056 +0.383488 0.163854 -0.163854 +0.383488 0.163854 0.163854 +0.383488 -0.163854 0.163854 +0.383488 -0.163854 -0.163854 +0 -0.441011 0 +0.176056 -0.411378 0 +0 -0.411378 0.176056 +-0.176056 -0.411378 0 +0 -0.411378 -0.176056 +0.163854 -0.383488 -0.163854 +0.163854 -0.383488 0.163854 +-0.163854 -0.383488 0.163854 +-0.163854 -0.383488 -0.163854 +-0.441011 0 0 +-0.411378 -0.176056 0 +-0.411378 0 0.176056 +-0.411378 0.176056 0 +-0.411378 0 -0.176056 +-0.383488 -0.163854 -0.163854 +-0.383488 -0.163854 0.163854 +-0.383488 0.163854 0.163854 +-0.383488 0.163854 -0.163854 +0 0.441011 0 +0.176056 0.411378 0 +0 0.411378 -0.176056 +-0.176056 0.411378 0 +0 0.411378 0.176056 +0.163854 0.383488 0.163854 +0.163854 0.383488 -0.163854 +-0.163854 0.383488 -0.163854 +-0.163854 0.383488 0.163854 +0.151652 -0.300689 -0.300689 +0 -0.322914 -0.322914 +-0.151652 -0.300689 -0.300689 +0.300689 0.151652 -0.300689 +0.322914 0 -0.322914 +0.300689 -0.151652 -0.300689 +0.151652 0.300689 -0.300689 +0 0.322914 -0.322914 +-0.151652 0.300689 -0.300689 +-0.300689 -0.151652 -0.300689 +-0.322914 0 -0.322914 +-0.300689 0.151652 -0.300689 +0.300689 0.151652 0.300689 +0.322914 0 0.322914 +0.300689 -0.151652 0.300689 +0.151652 -0.30069 0.300689 +0 -0.322914 0.322914 +-0.151652 -0.300689 0.300689 +-0.30069 -0.151652 0.300689 +-0.322914 0 0.322914 +-0.300689 0.151652 0.300689 +0.151652 0.300689 0.300689 +0 0.322914 0.322914 +-0.151652 0.300689 0.300689 +0.300689 -0.30069 -0.151652 +0.322914 -0.322914 0 +0.300689 -0.30069 0.151652 +0.300689 0.300689 -0.151652 +0.322914 0.322914 0 +0.300689 0.300689 0.151652 +-0.30069 -0.300689 -0.151652 +-0.322914 -0.322914 0 +-0.30069 -0.300689 0.151652 +-0.300689 0.300689 -0.151652 +-0.322914 0.322914 0 +-0.300689 0.300689 0.151652 +0.255659 0.255659 -0.255659 +0.255659 -0.255659 -0.255659 +-0.255659 -0.255659 -0.255659 +-0.255659 0.255659 -0.255659 +0.255659 0.255658 0.255659 +0.255658 -0.255659 0.255659 +-0.255659 -0.255659 0.255659 +-0.255659 0.255659 0.255659 +numsurf 96 +SURF 0x10 +mat 0 +refs 4 +0 0.971503973007 0.494542956352 +4 0.952786266804 0.627975404263 +5 0.841649055481 0.598315775394 +1 0.846283316612 0.494104087353 +SURF 0x10 +mat 0 +refs 4 +1 0.846283316612 0.494104087353 +5 0.841649055481 0.598315775394 +57 0.744733572006 0.583938419819 +58 0.745049834251 0.493749082088 +SURF 0x10 +mat 0 +refs 4 +4 0.952786266804 0.627975404263 +61 0.90722745657 0.745713591576 +60 0.813135445118 0.696763515472 +5 0.841649055481 0.598315775394 +SURF 0x10 +mat 0 +refs 4 +5 0.841649055481 0.598315775394 +60 0.813135445118 0.696763515472 +90 0.744470477104 0.658952236176 +57 0.744733572006 0.583938419819 +SURF 0x10 +mat 0 +refs 4 +0 0.971503973007 0.494542956352 +1 0.846283316612 0.494104087353 +6 0.842379570007 0.389862418175 +2 0.953721761703 0.360982596874 +SURF 0x10 +mat 0 +refs 4 +2 0.953721761703 0.360982596874 +6 0.842379570007 0.389862418175 +54 0.8145570755 0.291217565536 +55 0.908989429474 0.242928564548 +SURF 0x10 +mat 0 +refs 4 +1 0.846283316612 0.494104087353 +58 0.745049834251 0.493749082088 +59 0.745366096497 0.403560042381 +6 0.842379570007 0.389862418175 +SURF 0x10 +mat 0 +refs 4 +6 0.842379570007 0.389862418175 +59 0.745366096497 0.403560042381 +91 0.74562895298 0.328546285629 +54 0.8145570755 0.291217565536 +SURF 0x10 +mat 0 +refs 4 +0 0.234210848808 0.250000119209 +2 0.161899507046 0.229852631688 +7 0.186450302601 0.17065833509 +3 0.243660032749 0.180879756808 +SURF 0x10 +mat 0 +refs 4 +3 0.243660032749 0.180879756808 +7 0.186450302601 0.17065833509 +63 0.201515674591 0.118194371462 +64 0.251299053431 0.124999985099 +SURF 0x10 +mat 0 +refs 4 +2 0.161899507046 0.229852631688 +55 0.100229121745 0.196036249399 +56 0.134179472923 0.147673606873 +7 0.186450302601 0.17065833509 +SURF 0x10 +mat 0 +refs 4 +7 0.186450302601 0.17065833509 +56 0.134179472923 0.147673606873 +92 0.160109043121 0.112533859909 +63 0.201515674591 0.118194371462 +SURF 0x10 +mat 0 +refs 4 +0 0.234210848808 0.250000119209 +3 0.243660032749 0.180879756808 +8 0.301514178514 0.186388194561 +4 0.309276670218 0.250000119209 +SURF 0x10 +mat 0 +refs 4 +4 0.309276670218 0.250000119209 +8 0.301514178514 0.186388194561 +62 0.358036339283 0.178275987506 +61 0.377760797739 0.233976602554 +SURF 0x10 +mat 0 +refs 4 +3 0.243660032749 0.180879756808 +64 0.251299053431 0.124999985099 +65 0.301082521677 0.131805568933 +8 0.301514178514 0.186388194561 +SURF 0x10 +mat 0 +refs 4 +8 0.301514178514 0.186388194561 +65 0.301082521677 0.131805568933 +93 0.342489302158 0.13746599853 +62 0.358036339283 0.178275987506 +SURF 0x10 +mat 0 +refs 4 +9 0.234212100506 1.0 +13 0.243661120534 0.9308796525 +14 0.301515191793 0.936387956142 +10 0.30927786231 0.999999701977 +SURF 0x10 +mat 0 +refs 4 +10 0.30927786231 0.999999701977 +14 0.301515191793 0.936387956142 +75 0.358037143946 0.928275644779 +76 0.377761751413 0.983976006508 +SURF 0x10 +mat 0 +refs 4 +13 0.243661120534 0.9308796525 +67 0.251300126314 0.874999940395 +66 0.301083475351 0.881805419922 +14 0.301515191793 0.936387956142 +SURF 0x10 +mat 0 +refs 4 +14 0.301515191793 0.936387956142 +66 0.301083475351 0.881805419922 +94 0.342490136623 0.887465894222 +75 0.358037143946 0.928275644779 +SURF 0x10 +mat 0 +refs 4 +9 0.401224255562 0.384807258844 +10 0.464590460062 0.468489974737 +15 0.38712400198 0.513534069061 +11 0.332145988941 0.45368874073 +SURF 0x10 +mat 0 +refs 4 +11 0.332145988941 0.45368874073 +15 0.38712400198 0.513534069061 +74 0.325911581516 0.559128582478 +73 0.276300191879 0.509375452995 +SURF 0x10 +mat 0 +refs 4 +10 0.464590460062 0.468489974737 +76 0.504538118839 0.55836135149 +77 0.425793468952 0.583392083645 +15 0.38712400198 0.513534069061 +SURF 0x10 +mat 0 +refs 4 +15 0.38712400198 0.513534069061 +77 0.425793468952 0.583392083645 +97 0.367175161839 0.600510120392 +74 0.325911581516 0.559128582478 +SURF 0x10 +mat 0 +refs 4 +9 0.401224255562 0.384807258844 +11 0.332145988941 0.45368874073 +16 0.272457838058 0.398540228605 +12 0.317722678185 0.321202456951 +SURF 0x10 +mat 0 +refs 4 +12 0.317722678185 0.321202456951 +16 0.272457838058 0.398540228605 +71 0.202710211277 0.359671443701 +70 0.227965563536 0.280998468399 +SURF 0x10 +mat 0 +refs 4 +11 0.332145988941 0.45368874073 +73 0.276300191879 0.509375452995 +72 0.226688832045 0.459622323513 +16 0.272457838058 0.398540228605 +SURF 0x10 +mat 0 +refs 4 +16 0.272457838058 0.398540228605 +72 0.226688832045 0.459622323513 +96 0.185425102711 0.418240875006 +71 0.202710211277 0.359671443701 +SURF 0x10 +mat 0 +refs 4 +9 0.234212100506 1.0 +12 0.161900550127 0.979852735996 +17 0.18645131588 0.920658230782 +13 0.243661120534 0.9308796525 +SURF 0x10 +mat 0 +refs 4 +13 0.243661120534 0.9308796525 +17 0.18645131588 0.920658230782 +68 0.201516747475 0.868194282055 +67 0.251300126314 0.874999940395 +SURF 0x10 +mat 0 +refs 4 +12 0.161900550127 0.979852735996 +70 0.100229837 0.946036398411 +69 0.134180366993 0.897673487663 +17 0.18645131588 0.920658230782 +SURF 0x10 +mat 0 +refs 4 +17 0.18645131588 0.920658230782 +69 0.134180366993 0.897673487663 +95 0.160110071301 0.862533628941 +68 0.201516747475 0.868194282055 +SURF 0x10 +mat 0 +refs 4 +18 0.5185957551 0.492954909801 +22 0.643816232681 0.493394196033 +23 0.647719800472 0.597635746002 +19 0.536377370358 0.626515507698 +SURF 0x10 +mat 0 +refs 4 +19 0.536377370358 0.626515507698 +23 0.647719800472 0.597635746002 +81 0.675542116165 0.696281254292 +82 0.581109285355 0.744570016861 +SURF 0x10 +mat 0 +refs 4 +22 0.643816232681 0.493394196033 +58 0.745049834251 0.493749082088 +57 0.744733572006 0.583938419819 +23 0.647719800472 0.597635746002 +SURF 0x10 +mat 0 +refs 4 +23 0.647719800472 0.597635746002 +57 0.744733572006 0.583938419819 +90 0.744470477104 0.658952236176 +81 0.675542116165 0.696281254292 +SURF 0x10 +mat 0 +refs 4 +18 0.268388241529 0.750000238419 +19 0.340699195862 0.770147323608 +24 0.316148728132 0.8293415308 +20 0.258939146996 0.819120287895 +SURF 0x10 +mat 0 +refs 4 +20 0.258939146996 0.819120287895 +24 0.316148728132 0.8293415308 +66 0.301083475351 0.881805419922 +67 0.251300126314 0.874999940395 +SURF 0x10 +mat 0 +refs 4 +19 0.340699195862 0.770147323608 +82 0.402369588614 0.803963184357 +83 0.368419587612 0.852325975895 +24 0.316148728132 0.8293415308 +SURF 0x10 +mat 0 +refs 4 +24 0.316148728132 0.8293415308 +83 0.368419587612 0.852325975895 +94 0.342490136623 0.887465894222 +66 0.301083475351 0.881805419922 +SURF 0x10 +mat 0 +refs 4 +18 0.268388241529 0.750000238419 +20 0.258939146996 0.819120287895 +25 0.201085269451 0.813611805439 +21 0.193322971463 0.750000238419 +SURF 0x10 +mat 0 +refs 4 +21 0.193322971463 0.750000238419 +25 0.201085269451 0.813611805439 +80 0.1445633322 0.821723759174 +79 0.124839223921 0.766023278236 +SURF 0x10 +mat 0 +refs 4 +20 0.258939146996 0.819120287895 +67 0.251300126314 0.874999940395 +68 0.201516747475 0.868194282055 +25 0.201085269451 0.813611805439 +SURF 0x10 +mat 0 +refs 4 +25 0.201085269451 0.813611805439 +68 0.201516747475 0.868194282055 +95 0.160110071301 0.862533628941 +80 0.1445633322 0.821723759174 +SURF 0x10 +mat 0 +refs 4 +18 0.5185957551 0.492954909801 +21 0.537313938141 0.359522521496 +26 0.648450791836 0.389182507992 +22 0.643816232681 0.493394196033 +SURF 0x10 +mat 0 +refs 4 +22 0.643816232681 0.493394196033 +26 0.648450791836 0.389182507992 +59 0.745366096497 0.403560042381 +58 0.745049834251 0.493749082088 +SURF 0x10 +mat 0 +refs 4 +21 0.537313938141 0.359522521496 +79 0.582872986794 0.241785287857 +78 0.676964461803 0.290735185146 +26 0.648450791836 0.389182507992 +SURF 0x10 +mat 0 +refs 4 +26 0.648450791836 0.389182507992 +78 0.676964461803 0.290735185146 +91 0.74562895298 0.328546285629 +59 0.745366096497 0.403560042381 +SURF 0x10 +mat 0 +refs 4 +27 0.746645748615 0.0384870767593 +31 0.839451014996 0.13675352931 +32 0.746043145657 0.210451811552 +28 0.65315413475 0.136100381613 +SURF 0x10 +mat 0 +refs 4 +28 0.65315413475 0.136100381613 +32 0.746043145657 0.210451811552 +78 0.676964461803 0.290735185146 +79 0.582872986794 0.241785287857 +SURF 0x10 +mat 0 +refs 4 +31 0.839451014996 0.13675352931 +55 0.908989429474 0.242928564548 +54 0.8145570755 0.291217565536 +32 0.746043145657 0.210451811552 +SURF 0x10 +mat 0 +refs 4 +32 0.746043145657 0.210451811552 +54 0.8145570755 0.291217565536 +91 0.74562895298 0.328546285629 +78 0.676964461803 0.290735185146 +SURF 0x10 +mat 0 +refs 4 +27 0.0 0.840645074844 +28 0.0610913299024 0.796618878841 +33 0.0949230864644 0.853622078896 +29 0.047032803297 0.899453163147 +SURF 0x10 +mat 0 +refs 4 +29 0.047032803297 0.899453163147 +33 0.0949230864644 0.853622078896 +69 0.134180366993 0.897673487663 +70 0.100229837 0.946036398411 +SURF 0x10 +mat 0 +refs 4 +28 0.0610913299024 0.796618878841 +79 0.124839223921 0.766023278236 +80 0.1445633322 0.821723759174 +33 0.0949230864644 0.853622078896 +SURF 0x10 +mat 0 +refs 4 +33 0.0949230864644 0.853622078896 +80 0.1445633322 0.821723759174 +95 0.160110071301 0.862533628941 +69 0.134180366993 0.897673487663 +SURF 0x10 +mat 0 +refs 4 +27 0.0258678700775 0.258228480816 +29 0.131129086018 0.261017858982 +34 0.120463214815 0.353093594313 +30 0.0283575262874 0.363497078419 +SURF 0x10 +mat 0 +refs 4 +30 0.0283575262874 0.363497078419 +34 0.120463214815 0.353093594313 +86 0.126806721091 0.43535900116 +85 0.0480621382594 0.460389941931 +SURF 0x10 +mat 0 +refs 4 +29 0.131129086018 0.261017858982 +70 0.227965563536 0.280998468399 +71 0.202710211277 0.359671443701 +34 0.120463214815 0.353093594313 +SURF 0x10 +mat 0 +refs 4 +34 0.120463214815 0.353093594313 +71 0.202710211277 0.359671443701 +96 0.185425102711 0.418240875006 +86 0.126806721091 0.43535900116 +SURF 0x10 +mat 0 +refs 4 +27 0.0 0.0906459093094 +30 0.0610905252397 0.0466197691858 +35 0.0949223339558 0.103622458875 +31 0.0470324940979 0.149453282356 +SURF 0x10 +mat 0 +refs 4 +31 0.0470324940979 0.149453282356 +35 0.0949223339558 0.103622458875 +56 0.134179472923 0.147673606873 +55 0.100229121745 0.196036249399 +SURF 0x10 +mat 0 +refs 4 +30 0.0610905252397 0.0466197691858 +85 0.124837882817 0.0160239171237 +84 0.144562199712 0.0717241019011 +35 0.0949223339558 0.103622458875 +SURF 0x10 +mat 0 +refs 4 +35 0.0949223339558 0.103622458875 +84 0.144562199712 0.0717241019011 +92 0.160109043121 0.112533859909 +56 0.134179472923 0.147673606873 +SURF 0x10 +mat 0 +refs 4 +36 0.26838684082 0.0 +40 0.258937984705 0.0691202506423 +41 0.201084062457 0.0636119395494 +37 0.193321421742 4.02792693421e-07 +SURF 0x10 +mat 0 +refs 4 +37 0.193321421742 4.02792693421e-07 +41 0.201084062457 0.0636119395494 +84 0.144562199712 0.0717241019011 +85 0.124837882817 0.0160239171237 +SURF 0x10 +mat 0 +refs 4 +40 0.258937984705 0.0691202506423 +64 0.251299053431 0.124999985099 +63 0.201515674591 0.118194371462 +41 0.201084062457 0.0636119395494 +SURF 0x10 +mat 0 +refs 4 +41 0.201084062457 0.0636119395494 +63 0.201515674591 0.118194371462 +92 0.160109043121 0.112533859909 +84 0.144562199712 0.0717241019011 +SURF 0x10 +mat 0 +refs 4 +36 0.151376381516 0.633943736553 +37 0.0880100503564 0.550261318684 +42 0.165476366878 0.505217015743 +38 0.22045455873 0.56506216526 +SURF 0x10 +mat 0 +refs 4 +38 0.22045455873 0.56506216526 +42 0.165476366878 0.505217015743 +72 0.226688832045 0.459622323513 +73 0.276300191879 0.509375452995 +SURF 0x10 +mat 0 +refs 4 +37 0.0880100503564 0.550261318684 +85 0.0480621382594 0.460389941931 +86 0.126806721091 0.43535900116 +42 0.165476366878 0.505217015743 +SURF 0x10 +mat 0 +refs 4 +42 0.165476366878 0.505217015743 +86 0.126806721091 0.43535900116 +96 0.185425102711 0.418240875006 +72 0.226688832045 0.459622323513 +SURF 0x10 +mat 0 +refs 4 +36 0.151376381516 0.633943736553 +38 0.22045455873 0.56506216526 +43 0.280142605305 0.620210587978 +39 0.234877839684 0.697548270226 +SURF 0x10 +mat 0 +refs 4 +39 0.234877839684 0.697548270226 +43 0.280142605305 0.620210587978 +89 0.349889993668 0.659079432487 +88 0.324634671211 0.737751960754 +SURF 0x10 +mat 0 +refs 4 +38 0.22045455873 0.56506216526 +73 0.276300191879 0.509375452995 +74 0.325911581516 0.559128582478 +43 0.280142605305 0.620210587978 +SURF 0x10 +mat 0 +refs 4 +43 0.280142605305 0.620210587978 +74 0.325911581516 0.559128582478 +97 0.367175161839 0.600510120392 +89 0.349889993668 0.659079432487 +SURF 0x10 +mat 0 +refs 4 +36 0.26838684082 0.0 +39 0.340698212385 0.0201469715685 +44 0.316147774458 0.0793414711952 +40 0.258937984705 0.0691202506423 +SURF 0x10 +mat 0 +refs 4 +40 0.258937984705 0.0691202506423 +44 0.316147774458 0.0793414711952 +65 0.301082521677 0.131805568933 +64 0.251299053431 0.124999985099 +SURF 0x10 +mat 0 +refs 4 +39 0.340698212385 0.0201469715685 +88 0.402369022369 0.0539628379047 +87 0.368418842554 0.102325983346 +44 0.316147774458 0.0793414711952 +SURF 0x10 +mat 0 +refs 4 +44 0.316147774458 0.0793414711952 +87 0.368418842554 0.102325983346 +93 0.342489302158 0.13746599853 +65 0.301082521677 0.131805568933 +SURF 0x10 +mat 0 +refs 4 +45 0.502600073814 0.909352779388 +49 0.44150942564 0.953379690647 +50 0.407677084208 0.89637696743 +46 0.455566704273 0.850545585155 +SURF 0x10 +mat 0 +refs 4 +46 0.455566704273 0.850545585155 +50 0.407677084208 0.89637696743 +83 0.368419587612 0.852325975895 +82 0.402369588614 0.803963184357 +SURF 0x10 +mat 0 +refs 4 +49 0.44150942564 0.953379690647 +76 0.377761751413 0.983976006508 +75 0.358037143946 0.928275644779 +50 0.407677084208 0.89637696743 +SURF 0x10 +mat 0 +refs 4 +50 0.407677084208 0.89637696743 +75 0.358037143946 0.928275644779 +94 0.342490136623 0.887465894222 +83 0.368419587612 0.852325975895 +SURF 0x10 +mat 0 +refs 4 +45 0.74345356226 0.949013352394 +46 0.650647699833 0.850745916367 +51 0.744056582451 0.777047157288 +47 0.836946129799 0.851399183273 +SURF 0x10 +mat 0 +refs 4 +47 0.836946129799 0.851399183273 +51 0.744056582451 0.777047157288 +60 0.813135445118 0.696763515472 +61 0.90722745657 0.745713591576 +SURF 0x10 +mat 0 +refs 4 +46 0.650647699833 0.850745916367 +82 0.581109285355 0.744570016861 +81 0.675542116165 0.696281254292 +51 0.744056582451 0.777047157288 +SURF 0x10 +mat 0 +refs 4 +51 0.744056582451 0.777047157288 +81 0.675542116165 0.696281254292 +90 0.744470477104 0.658952236176 +60 0.813135445118 0.696763515472 +SURF 0x10 +mat 0 +refs 4 +45 0.502600073814 0.159353360534 +47 0.441508889198 0.203380391002 +52 0.407676458359 0.14637722075 +48 0.455566495657 0.100545614958 +SURF 0x10 +mat 0 +refs 4 +48 0.455566495657 0.100545614958 +52 0.407676458359 0.14637722075 +87 0.368418842554 0.102325983346 +88 0.402369022369 0.0539628379047 +SURF 0x10 +mat 0 +refs 4 +47 0.441508889198 0.203380391002 +61 0.377760797739 0.233976602554 +62 0.358036339283 0.178275987506 +52 0.407676458359 0.14637722075 +SURF 0x10 +mat 0 +refs 4 +52 0.407676458359 0.14637722075 +62 0.358036339283 0.178275987506 +93 0.342489302158 0.13746599853 +87 0.368418842554 0.102325983346 +SURF 0x10 +mat 0 +refs 4 +45 0.526731610298 0.760522723198 +48 0.421470761299 0.757732868195 +53 0.432136803865 0.665657401085 +49 0.524242341518 0.655254304409 +SURF 0x10 +mat 0 +refs 4 +49 0.524242341518 0.655254304409 +53 0.432136803865 0.665657401085 +77 0.425793468952 0.583392083645 +76 0.504538118839 0.55836135149 +SURF 0x10 +mat 0 +refs 4 +48 0.421470761299 0.757732868195 +88 0.324634671211 0.737751960754 +89 0.349889993668 0.659079432487 +53 0.432136803865 0.665657401085 +SURF 0x10 +mat 0 +refs 4 +53 0.432136803865 0.665657401085 +89 0.349889993668 0.659079432487 +97 0.367175161839 0.600510120392 +77 0.425793468952 0.583392083645 +kids 0 Deleted: trunk/supertuxkart/data/models/spark.ac =================================================================== --- trunk/supertuxkart/data/models/spark.ac 2008-07-17 10:43:44 UTC (rev 2172) +++ trunk/supertuxkart/data/models/spark.ac 2008-07-21 01:55:41 UTC (rev 2173) @@ -1,58 +0,0 @@ -AC3Db -MATERIAL "ac3dmat1" rgb 1 1 1 amb 1 1 1 emis 1 1 1 spec 0 0 0 shi 0 trans 0 -OBJECT world -kids 3 -OBJECT poly -name "box" -loc 0 -0.3 0 -texture "../images/spark.rgb" -numvert 4 -0.00353554 0.28162 0.454694 --0.555078 0.602028 -0.00289614 --0.00353554 0.91838 -0.454694 -0.555078 0.597972 0.00289614 -numsurf 1 -SURF 0x20 -mat 0 -refs 4 -0 1 0 -1 1 1 -2 0 1 -3 0 0 -kids 0 -OBJECT poly -name "box" -loc 0 -0.3 0 -texture "../images/spark.rgb" -numvert 4 --0.279308 1.08786 0.000635528 -0.279308 0.767456 0.458226 -0.279308 0.112136 -0.000635528 --0.279308 0.432544 -0.458226 -numsurf 1 -SURF 0x20 -mat 0 -refs 4 -0 0 1 -1 0 0 -2 1 0 -3 1 1 -kids 0 -OBJECT poly -name "box" -loc 0 -0.3 0 -texture "../images/spark.rgb" -numvert 4 --0.275772 0.114164 -0.00353168 --0.275772 0.769484 0.45533 -0.275772 1.08584 0.00353168 -0.275772 0.430516 -0.45533 -numsurf 1 -SURF 0x20 -mat 0 -refs 4 -0 0 0 -1 1 0 -2 1 1 -3 0 1 -kids 0 Deleted: trunk/supertuxkart/data/spark.projectile =================================================================== --- trunk/supertuxkart/data/spark.projectile 2008-07-17 10:43:44 UTC (rev 2172) +++ trunk/supertuxkart/data/spark.projectile 2008-07-21 01:55:41 UTC (rev 2173) @@ -1,20 +0,0 @@ -;; -*- mode: lisp -*- - -(tuxkart-collectable - (name "spark") - (model "spark.ac") - (icon "spark.rgb") - (speed 5.0) - (min-height 0.2) ; height above terrain below which a spark is - ; started to be pulled up - (max-height 1.0) ; height above terrain at which a spark is - ; started to be pulled back to ground - (force-updown 2.0) ; force pushing the spark down - ; when it's too high above ground - (force-to-target 20) ; force with which a spark flies towards - ; the nearest kart - (max-distance 10) ; maximum distance the spark can be away - ; from a kart when accelerating towards it -) - -;; EOF ;; Property changes on: trunk/supertuxkart/data/textures/bowling.rgb ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: trunk/supertuxkart/data/textures/bowlingicon.rgb ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/supertuxkart/data/textures/materials.dat =================================================================== --- trunk/supertuxkart/data/textures/materials.dat 2008-07-17 10:43:44 UTC (rev 2172) +++ trunk/supertuxkart/data/textures/materials.dat 2008-07-21 01:55:41 UTC (rev 2173) @@ -129,7 +129,7 @@ "roadway.rgb" Y N Y 0.0 Y N 0.0000003 N N N N "track.rgb" N N Y 0.0 Y N 0.0000003 N N N N "trackborder.rgb" N N N 0.0 N N 0.0000003 N N N N -"chess.rgb" N N N 0.0 Y N 0.0000003 N N N N +"chess.rgb" N N N 0.0 Y N 0.0000003 N N N N "rainbow.rgb" N N Y 0.0 N N 0.0000003 N N N N "rainbow3.rgb" N N Y 0.0 Y N 0.0000003 N N N N "tinytux.rgb" Y Y Y 0.8 N N 1.0 Y N N N @@ -141,7 +141,6 @@ "bananawrap.rgb" Y Y Y 0.5 N N 1.0 N Y N N "fuzzy.rgb" Y Y Y 0.2 N N 0.5 Y N N N "generickartshadow.rgb" Y Y Y 0.0 N N 1.0 Y N N N -"spark.rgb" Y Y N 0.2 N N 1.0 Y N N N "smoke.rgb" N N Y 0.0 N N 1.0 Y N N N "explode.rgb" Y Y Y 0.2 N N 1.0 Y N N N "missile.rgb" Y Y Y 0.1 N N 1.0 Y N N N Modified: trunk/supertuxkart/src/collectable.cpp =================================================================== --- trunk/supertuxkart/src/collectable.cpp 2008-07-17 10:43:44 UTC (rev 2172) +++ trunk/supertuxkart/src/collectable.cpp 2008-07-21 01:55:41 UTC (rev 2173) @@ -77,7 +77,7 @@ case COLLECT_ZIPPER: m_owner->handleZipper(); break ; case COLLECT_HOMING: - case COLLECT_SPARK: + case COLLECT_BOWLING: case COLLECT_MISSILE: if(m_owner->isPlayerKart()) sound_manager->playSfx(SOUND_SHOT); Modified: trunk/supertuxkart/src/collectable_manager.cpp =================================================================== --- trunk/supertuxkart/src/collectable_manager.cpp 2008-07-17 10:43:44 UTC (rev 2172) +++ trunk/supertuxkart/src/collectable_manager.cpp 2008-07-21 01:55:41 UTC (rev 2173) @@ -43,7 +43,7 @@ initCollectableType ict[]= { {COLLECT_ZIPPER, "zipper.collectable" }, - {COLLECT_SPARK, "spark.projectile" }, + {COLLECT_BOWLING, "bowling.projectile" }, {COLLECT_MISSILE, "missile.projectile" }, {COLLECT_HOMING, "homingmissile.projectile" }, {COLLECT_ANVIL, "anvil.collectable" }, @@ -122,7 +122,7 @@ //FIXME: something probably forgets to disable GL_CULL_FACE after enabling it, //this is just a quick fix. - if(collectType == COLLECT_SPARK) m_all_icons[COLLECT_SPARK]->getState()->disable ( GL_CULL_FACE ) ; + if(collectType == COLLECT_BOWLING) m_all_icons[COLLECT_BOWLING]->getState()->disable ( GL_CULL_FACE ) ; if(sModel!="") { @@ -139,7 +139,7 @@ // Load special attributes for certain collectables switch (collectType) { - case COLLECT_SPARK: + case COLLECT_BOWLING: Spark::init (lisp, m_all_models[collectType]); break; case COLLECT_MISSILE: Missile::init(lisp, m_all_models[collectType]); break; Modified: trunk/supertuxkart/src/collectable_manager.hpp =================================================================== --- trunk/supertuxkart/src/collectable_manager.hpp 2008-07-17 10:43:44 UTC (rev 2172) +++ trunk/supertuxkart/src/collectable_manager.hpp 2008-07-21 01:55:41 UTC (rev 2173) @@ -31,7 +31,7 @@ // zipper just before them (see collectable::hitRedHerring). enum CollectableType {COLLECT_NOTHING, COLLECT_MISSILE, COLLECT_HOMING, - COLLECT_SPARK, COLLECT_ZIPPER, + COLLECT_BOWLING, COLLECT_ZIPPER, COLLECT_PARACHUTE, COLLECT_ANVIL, COLLECT_MAX}; Modified: trunk/supertuxkart/src/flyable.cpp =================================================================== --- trunk/supertuxkart/src/flyable.cpp 2008-07-17 10:43:44 UTC (rev 2172) +++ trunk/supertuxkart/src/flyable.cpp 2008-07-21 01:55:41 UTC (rev 2173) @@ -37,7 +37,7 @@ btVector3 Flyable::m_st_extend[COLLECT_MAX]; // ---------------------------------------------------------------------------- -Flyable::Flyable(Kart *kart, CollectableType type) : Moveable(false) +Flyable::Flyable(Kart *kart, CollectableType type, float mass) : Moveable(false) { // get the appropriate data from the static fields m_speed = m_st_speed[type]; @@ -52,7 +52,7 @@ m_last_radar_beep = -1; m_exploded = false; m_shape = NULL; - m_mass = 1.0f; + m_mass = mass; // Add the graphical model ssgTransform *m = getModelTransform(); @@ -61,29 +61,12 @@ } // Flyable // ---------------------------------------------------------------------------- void Flyable::createPhysics(float y_offset, const btVector3 velocity, - btCollisionShape *shape) + btCollisionShape *shape, const bool gravity, const bool rotates) { - // The actual transform is determined as follows: - // 1) Compute the heading of the kart - // 2) Compute the pitch of the terrain. This avoids the problem of the - // rocket hitting the floor (e.g. if the kart is braking and therefore - // pointing downwards). - btTransform trans = m_owner->getTrans(); + // Get Kart heading direction + btTransform trans = m_owner->getKartHeading(); - // get heading=trans.getBasis*(0,1,0) ... so save the multiplication: - btVector3 direction(trans.getBasis()[0][1], - trans.getBasis()[1][1], - trans.getBasis()[2][1]); - float heading=atan2(-direction.getX(), direction.getY()); - - TerrainInfo::update(m_owner->getXYZ()); - float pitch = getTerrainPitch(heading); - - btMatrix3x3 m; - m.setEulerZYX(pitch, 0.0f, heading); - trans.setBasis(m); - - // Apply rotation and offset + // Apply offset btTransform offset_transform; offset_transform.setIdentity(); btVector3 offset=btVector3(0,y_offset,m_average_height); @@ -96,8 +79,8 @@ m_user_pointer.set(this); world->getPhysics()->addBody(getBody()); - // Simplified rockets: no gravity - m_body->setGravity(btVector3(0.0f, 0.0f, 0.0f)); + if(gravity) m_body->setGravity(btVector3(0.0f, 0.0f, -9.8f)); + else m_body->setGravity(btVector3(0.0f, 0.0f, 0.0f)); // Rotate velocity to point in the right direction btVector3 v=trans.getBasis()*velocity; @@ -105,7 +88,8 @@ if(m_mass!=0.0f) // Don't set velocity for kinematic or static objects { m_body->setLinearVelocity(v); - m_body->setAngularFactor(0.0f); // prevent rotations + if(!rotates) m_body->setAngularFactor(0.0f); // prevent rotations + //else m_body->setAngularVelocity( btVector3(5,0,0) ); } m_body->setCollisionFlags(btCollisionObject::CF_NO_CONTACT_RESPONSE); Modified: trunk/supertuxkart/src/flyable.hpp =================================================================== --- trunk/supertuxkart/src/flyable.hpp 2008-07-17 10:43:44 UTC (rev 2172) +++ trunk/supertuxkart/src/flyable.hpp 2008-07-21 01:55:41 UTC (rev 2173) @@ -33,7 +33,7 @@ bool m_exploded; protected: - const Kart* m_owner; // the kart which released this flyable + Kart* m_owner; // the kart which released this flyable btCollisionShape *m_shape; float m_max_height; float m_min_height; @@ -57,10 +57,10 @@ btVector3 *minDelta) const; void createPhysics(float y_offset, const btVector3 velocity, - btCollisionShape *shape); + btCollisionShape *shape, const bool gravity=false, const bool rotates=false); public: - Flyable (Kart* kart, CollectableType type); + Flyable (Kart* kart, CollectableType type, float mass=1.0f); virtual ~Flyable (); static void init (const lisp::Lisp* lisp, ssgEntity *model, CollectableType type); Modified: trunk/supertuxkart/src/gui/help_page_two.cpp =================================================================== --- trunk/supertuxkart/src/gui/help_page_two.cpp 2008-07-17 10:43:44 UTC (rev 2172) +++ trunk/supertuxkart/src/gui/help_page_two.cpp 2008-07-21 01:55:41 UTC (rev 2173) @@ -78,7 +78,7 @@ widget_manager->breakLine(); widget_manager->addImgWgt(WTOK_IMG3, 10, 12, - collectable_manager->getIcon(COLLECT_SPARK)->getState()->getTextureHandle()); + collectable_manager->getIcon(COLLECT_BOWLING)->getState()->getTextureHandle()); widget_manager->addTextWgt(WTOK_TXT3, 90, 12, _("Fuzzy blob/Spark - very slow, but bounces from walls")); Modified: trunk/supertuxkart/src/gui/race_gui.cpp =================================================================== --- trunk/supertuxkart/src/gui/race_gui.cpp 2008-07-17 10:43:44 UTC (rev 2172) +++ trunk/supertuxkart/src/gui/race_gui.cpp 2008-07-21 01:55:41 UTC (rev 2173) @@ -171,7 +171,7 @@ if (race_manager->getNumPlayers() ==1 ) { Kart* kart = world->getPlayerKart(0); - kart->setCollectable(COLLECT_SPARK, 10000); + kart->setCollectable(COLLECT_BOWLING, 10000); } break; case GA_DEBUG_ADD_MISSILE: Modified: trunk/supertuxkart/src/kart.cpp =================================================================== --- trunk/supertuxkart/src/kart.cpp 2008-07-17 10:43:44 UTC (rev 2172) +++ trunk/supertuxkart/src/kart.cpp 2008-07-21 01:55:41 UTC (rev 2173) @@ -102,7 +102,28 @@ reset(); } // Kart -// -----------------------------------------------------------------------------v +// ----------------------------------------------------------------------------- + +btTransform Kart::getKartHeading() +{ + btTransform trans = this->getTrans(); + + // get heading=trans.getBasis*(0,1,0) ... so save the multiplication: + btVector3 direction(trans.getBasis()[0][1], + trans.getBasis()[1][1], + trans.getBasis()[2][1]); + float heading=atan2(-direction.getX(), direction.getY()); + + TerrainInfo::update(this->getXYZ()); + float pitch = getTerrainPitch(heading); + + btMatrix3x3 m; + m.setEulerZYX(pitch, 0.0f, heading); + trans.setBasis(m); + + return trans; +} + void Kart::createPhysics(ssgEntity *obj) { // First: Create the chassis of the kart Modified: trunk/supertuxkart/src/kart.hpp =================================================================== --- trunk/supertuxkart/src/kart.hpp 2008-07-17 10:43:44 UTC (rev 2172) +++ trunk/supertuxkart/src/kart.hpp 2008-07-21 01:55:41 UTC (rev 2173) @@ -153,6 +153,8 @@ void getClosestKart (float *cdist, int *closest); void updatePhysics (float dt); + btTransform getKartHeading(); + // Functions to access the current kart properties (which might get changed, // e.g. mass increase or air_friction increase depending on attachment etc.) // ------------------------------------------------------------------------- Modified: trunk/supertuxkart/src/moveable.hpp =================================================================== --- trunk/supertuxkart/src/moveable.hpp 2008-07-17 10:43:44 UTC (rev 2172) +++ trunk/supertuxkart/src/moveable.hpp 2008-07-21 01:55:41 UTC (rev 2173) @@ -23,10 +23,11 @@ #include <plib/ssg.h> #include "vec3.hpp" -#include "material.hpp" #include "btBulletDynamicsCommon.h" #include "user_pointer.hpp" +class Material; + /* Limits of Kart performance */ #define CRASH_PITCH -45.0f Modified: trunk/supertuxkart/src/projectile_manager.cpp =================================================================== --- trunk/supertuxkart/src/projectile_manager.cpp 2008-07-17 10:43:44 UTC (rev 2172) +++ trunk/supertuxkart/src/projectile_manager.cpp 2008-07-21 01:55:41 UTC (rev 2173) @@ -129,7 +129,7 @@ { Flyable *f; switch(type) { - case COLLECT_SPARK: f = new Spark(kart); break; + case COLLECT_BOWLING: f = new Spark(kart); break; case COLLECT_HOMING: f = new Homing(kart); break; case COLLECT_MISSILE: f = new Missile(kart); break; default: return NULL; Modified: trunk/supertuxkart/src/projectile_manager.hpp =================================================================== --- trunk/supertuxkart/src/projectile_manager.hpp 2008-07-17 10:43:44 UTC (rev 2172) +++ trunk/supertuxkart/src/projectile_manager.hpp 2008-07-21 01:55:41 UTC (rev 2173) @@ -23,11 +23,11 @@ #include <vector> #include <plib/ssg.h> #include "vec3.hpp" -#include "flyable.hpp" #include "collectable_manager.hpp" class Kart; class Explosion; +class Flyable; class ProjectileManager { Modified: trunk/supertuxkart/src/robots/default_robot.cpp =================================================================== --- trunk/supertuxkart/src/robots/default_robot.cpp 2008-07-17 10:43:44 UTC (rev 2172) +++ trunk/supertuxkart/src/robots/default_robot.cpp 2008-07-21 01:55:41 UTC (rev 2173) @@ -366,7 +366,7 @@ } break; - case COLLECT_SPARK: + case COLLECT_BOWLING: if ( m_time_since_last_shot > 3.0f && m_crashes.m_kart != -1 ) { m_controls.fire = true; Modified: trunk/supertuxkart/src/spark.cpp =================================================================== --- trunk/supertuxkart/src/spark.cpp 2008-07-17 10:43:44 UTC (rev 2172) +++ trunk/supertuxkart/src/spark.cpp 2008-07-21 01:55:41 UTC (rev 2173) @@ -22,7 +22,7 @@ float Spark::m_st_force_to_target; // ----------------------------------------------------------------------------- -Spark::Spark(Kart *kart) : Flyable(kart, COLLECT_SPARK) +Spark::Spark(Kart *kart) : Flyable(kart, COLLECT_BOWLING) { float y_offset = -0.5f*kart->getKartLength()-2.0f*m_extend.getY(); float speed = -m_speed; @@ -34,7 +34,7 @@ } createPhysics(y_offset, btVector3(0.0f, speed, 0.0f), - new btSphereShape(0.5f*m_extend.getY())); + new btSphereShape(0.5f*m_extend.getY()), true /*gravity*/, true /*rotates*/); // unset no_contact_response flags, so that the spark // will bounce off the track @@ -46,7 +46,7 @@ // ----------------------------------------------------------------------------- void Spark::init(const lisp::Lisp* lisp, ssgEntity *spark) { - Flyable::init(lisp, spark, COLLECT_SPARK); + Flyable::init(lisp, spark, COLLECT_BOWLING); m_st_max_distance = 20.0f; m_st_force_to_target = 10.0f; @@ -82,7 +82,7 @@ if(vlen<0.8*m_speed*m_speed) { // spark lost energy (less than 80%), i.e. it's too slow - speed it up: if(vlen==0.0f) { - v = btVector3(.5f, .5f, .5f); // avoid 0 div. + v = btVector3(.5f, .5f, 0.0f); // avoid 0 div. } else { Modified: trunk/supertuxkart/src/stk_config.cpp =================================================================== --- trunk/supertuxkart/src/stk_config.cpp 2008-07-17 10:43:44 UTC (rev 2172) +++ trunk/supertuxkart/src/stk_config.cpp 2008-07-21 01:55:41 UTC (rev 2173) @@ -19,6 +19,7 @@ #include "stk_config.hpp" #include "file_manager.hpp" +#include "music_information.hpp" STKConfig* stk_config=0; float STKConfig::UNDEFINED = -99.9f; Modified: trunk/supertuxkart/src/stk_config.hpp =================================================================== --- trunk/supertuxkart/src/stk_config.hpp 2008-07-17 10:43:44 UTC (rev 2172) +++ trunk/supertuxkart/src/stk_config.hpp 2008-07-21 01:55:41 UTC (rev 2173) @@ -21,9 +21,10 @@ #define HEADER_STKCONFIG_H #include "kart_properties.hpp" -#include "music_information.hpp" #include "lisp/lisp.hpp" +class MusicInformation; + class STKConfig : public KartProperties { public: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <au...@us...> - 2008-07-28 00:34:48
|
Revision: 2181 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2181&view=rev Author: auria Date: 2008-07-28 00:34:45 +0000 (Mon, 28 Jul 2008) Log Message: ----------- totally replaced spark with bowling ball Modified Paths: -------------- trunk/supertuxkart/data/textures/materials.dat trunk/supertuxkart/src/Makefile.am trunk/supertuxkart/src/collectable_manager.cpp trunk/supertuxkart/src/flyable.hpp trunk/supertuxkart/src/gui/help_page_two.cpp trunk/supertuxkart/src/gui/race_gui.cpp trunk/supertuxkart/src/homing.hpp trunk/supertuxkart/src/input.hpp trunk/supertuxkart/src/projectile_manager.cpp trunk/supertuxkart/src/user_config.cpp Added Paths: ----------- trunk/supertuxkart/src/bowling.cpp trunk/supertuxkart/src/bowling.hpp Removed Paths: ------------- trunk/supertuxkart/src/spark.cpp trunk/supertuxkart/src/spark.hpp Modified: trunk/supertuxkart/data/textures/materials.dat =================================================================== --- trunk/supertuxkart/data/textures/materials.dat 2008-07-25 01:06:50 UTC (rev 2180) +++ trunk/supertuxkart/data/textures/materials.dat 2008-07-28 00:34:45 UTC (rev 2181) @@ -138,6 +138,7 @@ "track2.rgb" N N N 0.0 Y N 0.0000003 N N N N "zipper_collect.rgb" N N N 0.0 N N 1.0 N Y N N "zipper.rgb" N N N 0.0 N N 1.0 N Y N N +"bowlingicon.rgb" N N N 0.0 N N 1.0 N Y N N "bananawrap.rgb" Y Y Y 0.5 N N 1.0 N Y N N "fuzzy.rgb" Y Y Y 0.2 N N 0.5 Y N N N "generickartshadow.rgb" Y Y Y 0.0 N N 1.0 Y N N N Modified: trunk/supertuxkart/src/Makefile.am =================================================================== --- trunk/supertuxkart/src/Makefile.am 2008-07-25 01:06:50 UTC (rev 2180) +++ trunk/supertuxkart/src/Makefile.am 2008-07-28 00:34:45 UTC (rev 2181) @@ -86,7 +86,7 @@ flyable.cpp flyable.hpp \ missile.cpp missile.hpp \ homing.cpp homing.hpp \ - spark.cpp spark.hpp \ + bowling.cpp bowling.hpp \ history.cpp history.hpp \ scene.hpp scene.cpp \ no_copy.hpp constants.hpp \ Copied: trunk/supertuxkart/src/bowling.cpp (from rev 2180, trunk/supertuxkart/src/spark.cpp) =================================================================== --- trunk/supertuxkart/src/bowling.cpp (rev 0) +++ trunk/supertuxkart/src/bowling.cpp 2008-07-28 00:34:45 UTC (rev 2181) @@ -0,0 +1,107 @@ +// $Id: spark.cpp 1284 2007-11-08 12:31:54Z hikerstk $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2007 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "bowling.hpp" +#include "player_kart.hpp" +#include "camera.hpp" + +float Bowling::m_st_max_distance; // maximum distance for a bowling ball to be attracted +float Bowling::m_st_force_to_target; + +// ----------------------------------------------------------------------------- +Bowling::Bowling(Kart *kart) : Flyable(kart, COLLECT_BOWLING) +{ + float y_offset = 0.5f*kart->getKartLength()+2.0f*m_extend.getY(); + + // if the kart is looking backwards, release from the back + PlayerKart* pk = dynamic_cast<PlayerKart*>(kart); + const bool reverse_mode = (pk != NULL && pk->getCamera()->getMode() == Camera::CM_REVERSE); + if( reverse_mode ) + { + y_offset = -y_offset; + m_speed = -m_speed*2; + } + else + { + /* make it go faster when throwing forward + so the player doesn't catch up with the ball + and explode by touching it */ + m_speed *= 3; + } + + createPhysics(y_offset, btVector3(0.0f, m_speed*2, 0.0f), + new btSphereShape(0.5f*m_extend.getY()), true /*gravity*/, true /*rotates*/); + + // unset no_contact_response flags, so that the ball + // will bounce off the track + int flag = getBody()->getCollisionFlags(); + flag = flag & (~ btCollisionObject::CF_NO_CONTACT_RESPONSE); + getBody()->setCollisionFlags(flag); +} // Bowling + +// ----------------------------------------------------------------------------- +void Bowling::init(const lisp::Lisp* lisp, ssgEntity *bowling) +{ + Flyable::init(lisp, bowling, COLLECT_BOWLING); + m_st_max_distance = 35.0f; + m_st_force_to_target = 10.0f; + + lisp->get("max-distance", m_st_max_distance ); + lisp->get("force-to-target", m_st_force_to_target); +} // init + +// ----------------------------------------------------------------------------- +void Bowling::update(float dt) +{ + Flyable::update(dt); + const Kart *kart=0; + btVector3 direction; + float minDistance; + getClosestKart(&kart, &minDistance, &direction); + if(minDistance<m_st_max_distance) // move bowling towards kart + { + direction*=1/direction.length()*m_st_force_to_target; + m_body->applyCentralForce(direction); + } + else + { // Bowling balls lose energy (e.g. when hitting the track), so increase + // the speed if the ball is too slow, but only if it's not too high (if + // the ball is too high, it is 'pushed down', which can reduce the + // speed, which causes the speed to increase, which in turn causes + // the ball to fly higher and higher. + btVector3 v=m_body->getLinearVelocity(); + btTransform trans=getTrans(); + float hat = trans.getOrigin().getZ(); + if (hat<= m_max_height) + { + float vlen = v.length2(); + if(vlen<0.8*m_speed*m_speed) + { // bowling lost energy (less than 80%), i.e. it's too slow - speed it up: + if(vlen==0.0f) { + v = btVector3(.5f, .5f, 0.0f); // avoid 0 div. + } + else + { + m_body->setLinearVelocity(v*m_speed/sqrt(vlen)); + } + } // vlen < 0.8*m_speed*m_speed + } // hat< m_max_height + } // spar lose energy +} // update +// ----------------------------------------------------------------------------- Copied: trunk/supertuxkart/src/bowling.hpp (from rev 2172, trunk/supertuxkart/src/spark.hpp) =================================================================== --- trunk/supertuxkart/src/bowling.hpp (rev 0) +++ trunk/supertuxkart/src/bowling.hpp 2008-07-28 00:34:45 UTC (rev 2181) @@ -0,0 +1,38 @@ +// $Id: bowling.hpp 1284 2007-11-08 12:31:54Z hikerstk $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2007 Joerg Henrichs, Marianne Gagnon +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_BOWLING_H +#define HEADER_BOWLING_H + +#include "flyable.hpp" + +class Bowling : public Flyable +{ +private: + static float m_st_max_distance; // maximum distance for a bowling ball to be attracted + static float m_st_force_to_target; + +public: + Bowling(Kart* kart); + static void init(const lisp::Lisp* lisp, ssgEntity* bowling); + virtual void update(float dt); + +}; // Bowling + +#endif Modified: trunk/supertuxkart/src/collectable_manager.cpp =================================================================== --- trunk/supertuxkart/src/collectable_manager.cpp 2008-07-25 01:06:50 UTC (rev 2180) +++ trunk/supertuxkart/src/collectable_manager.cpp 2008-07-28 00:34:45 UTC (rev 2181) @@ -24,7 +24,7 @@ #include "material_manager.hpp" #include "material.hpp" #include "translation.hpp" -#include "spark.hpp" +#include "bowling.hpp" #include "missile.hpp" #include "homing.hpp" #include "loader.hpp" @@ -120,10 +120,6 @@ m_all_icons[collectType] = material_manager->getMaterial(sIconFile); m_all_icons[collectType]->getState()->ref(); - //FIXME: something probably forgets to disable GL_CULL_FACE after enabling it, - //this is just a quick fix. - if(collectType == COLLECT_BOWLING) m_all_icons[COLLECT_BOWLING]->getState()->disable ( GL_CULL_FACE ) ; - if(sModel!="") { ssgEntity* e = loader->load(sModel, CB_COLLECTABLE); @@ -140,7 +136,7 @@ // Load special attributes for certain collectables switch (collectType) { case COLLECT_BOWLING: - Spark::init (lisp, m_all_models[collectType]); break; + Bowling::init (lisp, m_all_models[collectType]); break; case COLLECT_MISSILE: Missile::init(lisp, m_all_models[collectType]); break; case COLLECT_HOMING: Modified: trunk/supertuxkart/src/flyable.hpp =================================================================== --- trunk/supertuxkart/src/flyable.hpp 2008-07-25 01:06:50 UTC (rev 2180) +++ trunk/supertuxkart/src/flyable.hpp 2008-07-28 00:34:45 UTC (rev 2181) @@ -45,7 +45,7 @@ // The flyable class stores the values for each flyable type, e.g. // speed, min_height, max_height. These variables must be static, // so we need arrays of these variables to have different values - // for sparks, missiles, ... + // for bowling balls, missiles, ... static float m_st_speed[COLLECT_MAX]; // Speed of the projectile static ssgEntity* m_st_model[COLLECT_MAX]; // 3d model static float m_st_min_height[COLLECT_MAX]; // min height above track Modified: trunk/supertuxkart/src/gui/help_page_two.cpp =================================================================== --- trunk/supertuxkart/src/gui/help_page_two.cpp 2008-07-25 01:06:50 UTC (rev 2180) +++ trunk/supertuxkart/src/gui/help_page_two.cpp 2008-07-28 00:34:45 UTC (rev 2181) @@ -81,7 +81,7 @@ collectable_manager->getIcon(COLLECT_BOWLING)->getState()->getTextureHandle()); widget_manager->addTextWgt(WTOK_TXT3, 90, 12, - _("Fuzzy blob/Spark - very slow, but bounces from walls")); + _("Bowling Ball - bounces off walls. If you are looking back,\nit will be thrown backwards.")); widget_manager->setWgtRoundCorners( WTOK_TXT3, WGT_AREA_RGT ); widget_manager->breakLine(); Modified: trunk/supertuxkart/src/gui/race_gui.cpp =================================================================== --- trunk/supertuxkart/src/gui/race_gui.cpp 2008-07-25 01:06:50 UTC (rev 2180) +++ trunk/supertuxkart/src/gui/race_gui.cpp 2008-07-28 00:34:45 UTC (rev 2181) @@ -167,7 +167,7 @@ switch (ga) { - case GA_DEBUG_ADD_SPARK: + case GA_DEBUG_ADD_BOWLING: if (race_manager->getNumPlayers() ==1 ) { Kart* kart = world->getPlayerKart(0); Modified: trunk/supertuxkart/src/homing.hpp =================================================================== --- trunk/supertuxkart/src/homing.hpp 2008-07-25 01:06:50 UTC (rev 2180) +++ trunk/supertuxkart/src/homing.hpp 2008-07-28 00:34:45 UTC (rev 2181) @@ -25,7 +25,7 @@ class Homing : public Flyable { private: - static float m_st_max_distance; // maximum distance for a spark to be attracted + static float m_st_max_distance; // maximum distance for a missile to be attracted static float m_st_max_turn_angle; btVector3 m_initial_velocity; float steerTowards(btTransform& trans, btVector3& target); Modified: trunk/supertuxkart/src/input.hpp =================================================================== --- trunk/supertuxkart/src/input.hpp 2008-07-25 01:06:50 UTC (rev 2180) +++ trunk/supertuxkart/src/input.hpp 2008-07-28 00:34:45 UTC (rev 2181) @@ -172,7 +172,7 @@ GA_LEAVE_RACE, // Switch from race to menu. GA_DEBUG_ADD_MISSILE, - GA_DEBUG_ADD_SPARK, + GA_DEBUG_ADD_BOWLING, GA_DEBUG_ADD_HOMING, GA_DEBUG_TOGGLE_FPS, GA_DEBUG_TOGGLE_WIREFRAME, Modified: trunk/supertuxkart/src/projectile_manager.cpp =================================================================== --- trunk/supertuxkart/src/projectile_manager.cpp 2008-07-25 01:06:50 UTC (rev 2180) +++ trunk/supertuxkart/src/projectile_manager.cpp 2008-07-28 00:34:45 UTC (rev 2181) @@ -19,7 +19,7 @@ #include "loader.hpp" #include "projectile_manager.hpp" -#include "spark.hpp" +#include "bowling.hpp" #include "missile.hpp" #include "homing.hpp" #include "explosion.hpp" @@ -129,7 +129,7 @@ { Flyable *f; switch(type) { - case COLLECT_BOWLING: f = new Spark(kart); break; + case COLLECT_BOWLING: f = new Bowling(kart); break; case COLLECT_HOMING: f = new Homing(kart); break; case COLLECT_MISSILE: f = new Missile(kart); break; default: return NULL; Deleted: trunk/supertuxkart/src/spark.cpp =================================================================== --- trunk/supertuxkart/src/spark.cpp 2008-07-25 01:06:50 UTC (rev 2180) +++ trunk/supertuxkart/src/spark.cpp 2008-07-28 00:34:45 UTC (rev 2181) @@ -1,107 +0,0 @@ -// $Id: spark.cpp 1284 2007-11-08 12:31:54Z hikerstk $ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2007 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#include "spark.hpp" -#include "player_kart.hpp" -#include "camera.hpp" - -float Spark::m_st_max_distance; // maximum distance for a spark to be attracted -float Spark::m_st_force_to_target; - -// ----------------------------------------------------------------------------- -Spark::Spark(Kart *kart) : Flyable(kart, COLLECT_BOWLING) -{ - float y_offset = 0.5f*kart->getKartLength()+2.0f*m_extend.getY(); - - // if the kart is looking backwards, release from the back - PlayerKart* pk = dynamic_cast<PlayerKart*>(kart); - const bool reverse_mode = (pk != NULL && pk->getCamera()->getMode() == Camera::CM_REVERSE); - if( reverse_mode ) - { - y_offset = -y_offset; - m_speed = -m_speed*2; - } - else - { - /* make it go faster when throwing forward - so the player doesn't catch up with the ball - and explode by touching it */ - m_speed *= 3; - } - - createPhysics(y_offset, btVector3(0.0f, m_speed*2, 0.0f), - new btSphereShape(0.5f*m_extend.getY()), true /*gravity*/, true /*rotates*/); - - // unset no_contact_response flags, so that the spark - // will bounce off the track - int flag = getBody()->getCollisionFlags(); - flag = flag & (~ btCollisionObject::CF_NO_CONTACT_RESPONSE); - getBody()->setCollisionFlags(flag); -} // Spark - -// ----------------------------------------------------------------------------- -void Spark::init(const lisp::Lisp* lisp, ssgEntity *spark) -{ - Flyable::init(lisp, spark, COLLECT_BOWLING); - m_st_max_distance = 20.0f; - m_st_force_to_target = 10.0f; - - lisp->get("max-distance", m_st_max_distance ); - lisp->get("force-to-target", m_st_force_to_target); -} // init - -// ----------------------------------------------------------------------------- -void Spark::update(float dt) -{ - Flyable::update(dt); - const Kart *kart=0; - btVector3 direction; - float minDistance; - getClosestKart(&kart, &minDistance, &direction); - if(minDistance<m_st_max_distance) // move spark towards kart - { - direction*=1/direction.length()*m_st_force_to_target; - m_body->applyCentralForce(direction); - } - else - { // Sparks lose energy (e.g. when hitting the track), so increase the - // speed if the spark is too slow, but only if it's not too high (if - // the spark is too high, it is 'pushed down', which can reduce the - // speed, which causes the speed to increase, which in turn causes - // the spark to fly higher and higher. - btVector3 v=m_body->getLinearVelocity(); - btTransform trans=getTrans(); - float hat = trans.getOrigin().getZ(); - if (hat<= m_max_height) - { - float vlen = v.length2(); - if(vlen<0.8*m_speed*m_speed) - { // spark lost energy (less than 80%), i.e. it's too slow - speed it up: - if(vlen==0.0f) { - v = btVector3(.5f, .5f, 0.0f); // avoid 0 div. - } - else - { - m_body->setLinearVelocity(v*m_speed/sqrt(vlen)); - } - } // vlen < 0.8*m_speed*m_speed - } // hat< m_max_height - } // spar lose energy -} // update -// ----------------------------------------------------------------------------- Deleted: trunk/supertuxkart/src/spark.hpp =================================================================== --- trunk/supertuxkart/src/spark.hpp 2008-07-25 01:06:50 UTC (rev 2180) +++ trunk/supertuxkart/src/spark.hpp 2008-07-28 00:34:45 UTC (rev 2181) @@ -1,38 +0,0 @@ -// $Id: spark.hpp 1284 2007-11-08 12:31:54Z hikerstk $ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2007 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#ifndef HEADER_SPARK_H -#define HEADER_SPARK_H - -#include "flyable.hpp" - -class Spark : public Flyable -{ -private: - static float m_st_max_distance; // maximum distance for a spark to be attracted - static float m_st_force_to_target; - -public: - Spark(Kart* kart); - static void init(const lisp::Lisp* lisp, ssgEntity* spark); - virtual void update(float dt); - -}; // Spark - -#endif Modified: trunk/supertuxkart/src/user_config.cpp =================================================================== --- trunk/supertuxkart/src/user_config.cpp 2008-07-25 01:06:50 UTC (rev 2180) +++ trunk/supertuxkart/src/user_config.cpp 2008-07-28 00:34:45 UTC (rev 2181) @@ -188,7 +188,7 @@ set(GA_LEAVE_RACE, Input(IT_KEYBOARD, SDLK_ESCAPE)); #ifdef DEBUG - set(GA_DEBUG_ADD_SPARK, + set(GA_DEBUG_ADD_BOWLING, Input(IT_KEYBOARD, SDLK_F1)); set(GA_DEBUG_ADD_MISSILE, Input(IT_KEYBOARD, SDLK_F2)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2008-07-29 04:30:49
|
Revision: 2188 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2188&view=rev Author: hikerstk Date: 2008-07-29 04:30:44 +0000 (Tue, 29 Jul 2008) Log Message: ----------- 1) Added GrandPrix manager (so that a GP id instead of a potentially translated GP name can be used). 2) Added support for challenges to be specified in .challenge files, converted all existing challenges to be specified in this kind of data file. Modified Paths: -------------- trunk/supertuxkart/src/Makefile.am trunk/supertuxkart/src/cup_data.cpp trunk/supertuxkart/src/cup_data.hpp trunk/supertuxkart/src/ide/vc9/supertuxkart.vcproj trunk/supertuxkart/src/main.cpp trunk/supertuxkart/src/track_manager.cpp trunk/supertuxkart/src/unlock_manager.cpp trunk/supertuxkart/src/unlock_manager.hpp trunk/supertuxkart/src/widget_manager.hpp Added Paths: ----------- trunk/supertuxkart/data/grandprix/ trunk/supertuxkart/data/grandprix/Makefile.am trunk/supertuxkart/data/grandprix/alltracks.challenge trunk/supertuxkart/data/grandprix/alltracks.grandprix trunk/supertuxkart/data/grandprix/atworldsend.challenge trunk/supertuxkart/data/grandprix/atworldsend.grandprix trunk/supertuxkart/data/grandprix/penguinplayground.grandprix trunk/supertuxkart/data/grandprix/snagdrive.challenge trunk/supertuxkart/data/grandprix/snagdrive.grandprix trunk/supertuxkart/data/grandprix/tothemoonandback.challenge trunk/supertuxkart/data/grandprix/tothemoonandback.grandprix trunk/supertuxkart/data/tracks/canyon/canyon.challenge trunk/supertuxkart/data/tracks/city/city.challenge trunk/supertuxkart/data/tracks/crescentcrossing/crescentcrossing.challenge trunk/supertuxkart/data/tracks/fortmagma/fortmagma.challenge trunk/supertuxkart/data/tracks/jungle/jungle.challenge trunk/supertuxkart/data/tracks/snowtuxpeak/snowtuxpeak.challenge trunk/supertuxkart/src/grand_prix_manager.cpp trunk/supertuxkart/src/grand_prix_manager.hpp Removed Paths: ------------- trunk/supertuxkart/data/all.cup trunk/supertuxkart/data/gp1.cup trunk/supertuxkart/data/gp2.cup trunk/supertuxkart/data/gp3.cup trunk/supertuxkart/data/gp4.cup Deleted: trunk/supertuxkart/data/all.cup =================================================================== --- trunk/supertuxkart/data/all.cup 2008-07-29 04:15:17 UTC (rev 2187) +++ trunk/supertuxkart/data/all.cup 2008-07-29 04:30:44 UTC (rev 2188) @@ -1,10 +0,0 @@ -;; -*- mode: lisp -*- - -(supertuxkart-cup - (name _("All tracks")) - (description _("All tracks included in SuperTuxKart")) - (tracks "beach" "startrack" "lighthouse" "jungle" "volcano" "islandtrack" "sandtrack" "fortmagma" "snowtuxpeak" "crescentcrossing" "olivermath" "race" "city" "canyon" "subseatrack" "tuxtrack") - (laps 2 3 4 3 3 2 3 3 3 2 4 5 2 2 3 2) -) - -;; EOF ;; Deleted: trunk/supertuxkart/data/gp1.cup =================================================================== --- trunk/supertuxkart/data/gp1.cup 2008-07-29 04:15:17 UTC (rev 2187) +++ trunk/supertuxkart/data/gp1.cup 2008-07-29 04:30:44 UTC (rev 2188) @@ -1,10 +0,0 @@ -;; -*- mode: lisp -*- - -(supertuxkart-cup - (name _("Penguin Playground")) - (description _("First grand prix, easy to get started")) - (tracks "tuxtrack" "race" "olivermath") - (laps 3 5 4) -) - -;; EOF ;; Deleted: trunk/supertuxkart/data/gp2.cup =================================================================== --- trunk/supertuxkart/data/gp2.cup 2008-07-29 04:15:17 UTC (rev 2187) +++ trunk/supertuxkart/data/gp2.cup 2008-07-29 04:30:44 UTC (rev 2188) @@ -1,10 +0,0 @@ -;; -*- mode: lisp -*- - -(supertuxkart-cup - (name _("To the Moon and Back")) - (description _("Second grand prix")) - (tracks "beach" "startrack" "jungle" "lighthouse") - (laps 2 3 2 4) -) - -;; EOF ;; Deleted: trunk/supertuxkart/data/gp3.cup =================================================================== --- trunk/supertuxkart/data/gp3.cup 2008-07-29 04:15:17 UTC (rev 2187) +++ trunk/supertuxkart/data/gp3.cup 2008-07-29 04:30:44 UTC (rev 2188) @@ -1,10 +0,0 @@ -;; -*- mode: lisp -*- - -(supertuxkart-cup - (name _("Snag Drive")) - (description _("Third grand prix")) - (tracks "islandtrack" "sandtrack" "city" "crescentcrossing") - (laps 2 3 2 2) -) - -;; EOF ;; Deleted: trunk/supertuxkart/data/gp4.cup =================================================================== --- trunk/supertuxkart/data/gp4.cup 2008-07-29 04:15:17 UTC (rev 2187) +++ trunk/supertuxkart/data/gp4.cup 2008-07-29 04:30:44 UTC (rev 2188) @@ -1,10 +0,0 @@ -;; -*- mode: lisp -*- - -(supertuxkart-cup - (name _("At world's end")) - (description _("Last grand prix, longer and harder")) - (tracks "fortmagma" "canyon" "subseatrack" "volcano" "snowtuxpeak") - (laps 3 2 3 3 3) -) - -;; EOF ;; Added: trunk/supertuxkart/data/grandprix/Makefile.am =================================================================== --- trunk/supertuxkart/data/grandprix/Makefile.am (rev 0) +++ trunk/supertuxkart/data/grandprix/Makefile.am 2008-07-29 04:30:44 UTC (rev 2188) @@ -0,0 +1,8 @@ +# data/music + +pkgdatadir = $(datadir)/games/@PACKAGE@/data/grandprix + +pkgdata_DATA = $(shell find $(srcdir) -name "*.grandprix") \ + $(shell find $(srcdir) -name "*.challenge") + +EXTRA_DIST = $(pkgdata_DATA) Added: trunk/supertuxkart/data/grandprix/alltracks.challenge =================================================================== --- trunk/supertuxkart/data/grandprix/alltracks.challenge (rev 0) +++ trunk/supertuxkart/data/grandprix/alltracks.challenge 2008-07-29 04:30:44 UTC (rev 2188) @@ -0,0 +1,19 @@ +;; -*- mode: lisp -*- + +(challenge + (id "worldsend") + (name _("Win the At World's End\nGrand Prix")) + (description _("Come first in the At World's End\nGrand Prix with 3 'Racer'\nLevel AI karts.")) + (unlock-gp "alltracks") + (unlock-difficulty "skidding" _("Skidding Preview")) + (depend-on "islandfollow" "racetracktime" "tollwaytime" "junglefollow" "citytime" "tollwayhead") + (major "grandprix") + (minor "quickrace") + (gp "atworldsend") + (difficulty "hard") + (karts 4) + (position 1) +) + +;; EOF ;; + Copied: trunk/supertuxkart/data/grandprix/alltracks.grandprix (from rev 2180, trunk/supertuxkart/data/all.cup) =================================================================== --- trunk/supertuxkart/data/grandprix/alltracks.grandprix (rev 0) +++ trunk/supertuxkart/data/grandprix/alltracks.grandprix 2008-07-29 04:30:44 UTC (rev 2188) @@ -0,0 +1,10 @@ +;; -*- mode: lisp -*- + +(supertuxkart-cup + (name _("All tracks")) + (description _("All tracks included in SuperTuxKart")) + (tracks "beach" "startrack" "lighthouse" "jungle" "volcano" "islandtrack" "sandtrack" "fortmagma" "snowtuxpeak" "crescentcrossing" "olivermath" "race" "city" "canyon" "subseatrack" "tuxtrack") + (laps 2 3 4 3 3 2 3 3 3 2 4 5 2 2 3 2) +) + +;; EOF ;; Added: trunk/supertuxkart/data/grandprix/atworldsend.challenge =================================================================== --- trunk/supertuxkart/data/grandprix/atworldsend.challenge (rev 0) +++ trunk/supertuxkart/data/grandprix/atworldsend.challenge 2008-07-29 04:30:44 UTC (rev 2188) @@ -0,0 +1,19 @@ +;; -*- mode: lisp -*- + +(challenge + (id "islandfollow") + (name _("Follow the Leader on a\nDesert Island")) + (description _("Win a Follow the Leader race\nwith 3 AI karts\non a Desert Island.")) + (unlock-gp "atworldsend") + (depend-on "tothemoonandbackgp" "tollwaytime" "citytime") + (major "single") + (minor "followtheleader") + (track "islandtrack") + (difficulty "easy") + (laps 3) + (karts 4) + (position 1) +) + +;; EOF ;; + Copied: trunk/supertuxkart/data/grandprix/atworldsend.grandprix (from rev 2180, trunk/supertuxkart/data/gp4.cup) =================================================================== --- trunk/supertuxkart/data/grandprix/atworldsend.grandprix (rev 0) +++ trunk/supertuxkart/data/grandprix/atworldsend.grandprix 2008-07-29 04:30:44 UTC (rev 2188) @@ -0,0 +1,10 @@ +;; -*- mode: lisp -*- + +(supertuxkart-cup + (name _("At world's end")) + (description _("Last grand prix, longer and harder")) + (tracks "fortmagma" "canyon" "subseatrack" "volcano" "snowtuxpeak") + (laps 3 2 3 3 3) +) + +;; EOF ;; Copied: trunk/supertuxkart/data/grandprix/penguinplayground.grandprix (from rev 2180, trunk/supertuxkart/data/gp1.cup) =================================================================== --- trunk/supertuxkart/data/grandprix/penguinplayground.grandprix (rev 0) +++ trunk/supertuxkart/data/grandprix/penguinplayground.grandprix 2008-07-29 04:30:44 UTC (rev 2188) @@ -0,0 +1,10 @@ +;; -*- mode: lisp -*- + +(supertuxkart-cup + (name _("Penguin Playground")) + (description _("First grand prix, easy to get started")) + (tracks "tuxtrack" "race" "olivermath") + (laps 3 5 4) +) + +;; EOF ;; Added: trunk/supertuxkart/data/grandprix/snagdrive.challenge =================================================================== --- trunk/supertuxkart/data/grandprix/snagdrive.challenge (rev 0) +++ trunk/supertuxkart/data/grandprix/snagdrive.challenge 2008-07-29 04:30:44 UTC (rev 2188) @@ -0,0 +1,18 @@ +;; -*- mode: lisp -*- + +(challenge + (id "tothemoonandbackgp") + (name _("Win To the Moon and Back\nGrand Prix")) + (description _("Win the To the Moon and Back\nGrand Prix with 3 'Racer'\nLevel AI karts.")) + (unlock-gp "snagdrive") + (depend-on "energyshiftingsands" "junglefollow") + (major "grandprix") + (minor "quickrace") + (gp "tothemoonandback") + (difficulty "hard") + (karts 4) + (position 1) +) + +;; EOF ;; + Copied: trunk/supertuxkart/data/grandprix/snagdrive.grandprix (from rev 2180, trunk/supertuxkart/data/gp3.cup) =================================================================== --- trunk/supertuxkart/data/grandprix/snagdrive.grandprix (rev 0) +++ trunk/supertuxkart/data/grandprix/snagdrive.grandprix 2008-07-29 04:30:44 UTC (rev 2188) @@ -0,0 +1,10 @@ +;; -*- mode: lisp -*- + +(supertuxkart-cup + (name _("Snag Drive")) + (description _("Third grand prix")) + (tracks "islandtrack" "sandtrack" "city" "crescentcrossing") + (laps 2 3 2 2) +) + +;; EOF ;; Added: trunk/supertuxkart/data/grandprix/tothemoonandback.challenge =================================================================== --- trunk/supertuxkart/data/grandprix/tothemoonandback.challenge (rev 0) +++ trunk/supertuxkart/data/grandprix/tothemoonandback.challenge 2008-07-29 04:30:44 UTC (rev 2188) @@ -0,0 +1,20 @@ +;; -*- mode: lisp -*- + +(challenge + (id "energyshiftingsands") + (name _("Collect the Pharaohs Treasure")) + (description _("Collect at least 9 coins\non 3 laps of Shifting Sands\nin under 2:20 minutes.")) + (unlock-gp "tothemoonandback") + (depend-on "energymathclass" "racetracktime") + (major "single") + (minor "quickrace") + (track "sandtrack") + (difficulty "easy") + (karts 1) + (laps 3) + (energy 9) + (time 140) +) + +;; EOF ;; + Added: trunk/supertuxkart/data/grandprix/tothemoonandback.grandprix =================================================================== --- trunk/supertuxkart/data/grandprix/tothemoonandback.grandprix (rev 0) +++ trunk/supertuxkart/data/grandprix/tothemoonandback.grandprix 2008-07-29 04:30:44 UTC (rev 2188) @@ -0,0 +1,10 @@ +;; -*- mode: lisp -*- + +(supertuxkart-cup + (name _("To the Moon and Back")) + (description _("Second grand prix")) + (tracks "beach" "startrack" "jungle" "lighthouse") + (laps 2 3 2 4) +) + +;; EOF ;; Added: trunk/supertuxkart/data/tracks/canyon/canyon.challenge =================================================================== --- trunk/supertuxkart/data/tracks/canyon/canyon.challenge (rev 0) +++ trunk/supertuxkart/data/tracks/canyon/canyon.challenge 2008-07-29 04:30:44 UTC (rev 2188) @@ -0,0 +1,18 @@ +;; -*- mode: lisp -*- + +(challenge + (id "tollwaytime") + (name _("Finish Tux Tollway track in 3:00")) + (description _("Finish 3 laps on the Tux Tollway\ntrack with 3 AI karts\nin under 3:00 minutes.")) + (unlock-track "canyon") + (major "single") + (minor "quickrace") + (track "tuxtrack") + (difficulty "easy") + (laps 3) + (karts 4) + (time 180) +) + +;; EOF ;; + Added: trunk/supertuxkart/data/tracks/city/city.challenge =================================================================== --- trunk/supertuxkart/data/tracks/city/city.challenge (rev 0) +++ trunk/supertuxkart/data/tracks/city/city.challenge 2008-07-29 04:30:44 UTC (rev 2188) @@ -0,0 +1,18 @@ +;; -*- mode: lisp -*- + +(challenge + (id "junglefollow") + (name _("Follow the Leader in the Jungle")) + (description _("Win a Follow the Leader race\nwith 3 AI karts\nin the Amazonian Jungle.")) + (unlock-track "city") + (depend-on "penguinplaygroundgp" "racetracktime") + (major "single") + (minor "followtheleader") + (track "jungle") + (difficulty "easy") + (karts 4) + (position 1) +) + +;; EOF ;; + Added: trunk/supertuxkart/data/tracks/crescentcrossing/crescentcrossing.challenge =================================================================== --- trunk/supertuxkart/data/tracks/crescentcrossing/crescentcrossing.challenge (rev 0) +++ trunk/supertuxkart/data/tracks/crescentcrossing/crescentcrossing.challenge 2008-07-29 04:30:44 UTC (rev 2188) @@ -0,0 +1,19 @@ +;; -*- mode: lisp -*- + +(challenge + (id "energymathclass") + (name _("Collect Coins in Math Class")) + (description _("Collect at least 6 points\nworth of coins\non three laps of\nOliver's Math Class\nin under 1 minute.")) + (unlock-track "crescentcrossing") + (major "single") + (minor "quickrace") + (track "olivermath") + (difficulty "easy") + (laps 3) + (karts 1) + (energy 6) + (time 60) +) + +;; EOF ;; + Added: trunk/supertuxkart/data/tracks/fortmagma/fortmagma.challenge =================================================================== --- trunk/supertuxkart/data/tracks/fortmagma/fortmagma.challenge (rev 0) +++ trunk/supertuxkart/data/tracks/fortmagma/fortmagma.challenge 2008-07-29 04:30:44 UTC (rev 2188) @@ -0,0 +1,18 @@ +;; -*- mode: lisp -*- + +(challenge + (id "tollwayhead") + (name _("Win a Head to Head on\nTux Tollway")) + (description _("Win a 1 lap Head to Head\non Tux Tollway against 1 'Racer'\nlevel AI kart.")) + (unlock-track "fortmagma") + (major "single") + (minor "timetrial") + (track "tuxtrack") + (difficulty "hard") + (laps 1) + (karts 2) + (position 1) +) + +;; EOF ;; + Added: trunk/supertuxkart/data/tracks/jungle/jungle.challenge =================================================================== --- trunk/supertuxkart/data/tracks/jungle/jungle.challenge (rev 0) +++ trunk/supertuxkart/data/tracks/jungle/jungle.challenge 2008-07-29 04:30:44 UTC (rev 2188) @@ -0,0 +1,18 @@ +;; -*- mode: lisp -*- + +(challenge + (id "racetracktime") + (name _("Finish Race track in 1:15")) + (description _("Finish 3 laps in the Race track\nwith 3 AI karts\nin under 1:15 minutes.")) + (unlock-track "jungle") + (major "single") + (minor "quickrace") + (track "race") + (difficulty "easy") + (laps 3) + (karts 4) + (time 75) +) + +;; EOF ;; + Added: trunk/supertuxkart/data/tracks/snowtuxpeak/snowtuxpeak.challenge =================================================================== --- trunk/supertuxkart/data/tracks/snowtuxpeak/snowtuxpeak.challenge (rev 0) +++ trunk/supertuxkart/data/tracks/snowtuxpeak/snowtuxpeak.challenge 2008-07-29 04:30:44 UTC (rev 2188) @@ -0,0 +1,19 @@ +;; -*- mode: lisp -*- + +(challenge + (id "citytime") + (name _("Finish the City track in 5:20")) + (description _("Finish 3 laps on the City track\nwith 3 AI karts\nin under 5:20 minutes.")) + (unlock-track "snowtuxpeak") + (depend-on "junglefollow") + (major "single") + (minor "quickrace") + (track "city") + (difficulty "easy") + (laps 3) + (karts 4) + (time 320) +) + +;; EOF ;; + Modified: trunk/supertuxkart/src/Makefile.am =================================================================== --- trunk/supertuxkart/src/Makefile.am 2008-07-29 04:15:17 UTC (rev 2187) +++ trunk/supertuxkart/src/Makefile.am 2008-07-29 04:30:44 UTC (rev 2188) @@ -31,6 +31,7 @@ actionmap.cpp actionmap.hpp \ material.cpp material.hpp \ material_manager.cpp material_manager.hpp \ + grand_prix_manager.cpp grand_prix_manager.hpp \ attachment.cpp attachment.hpp \ attachment_manager.cpp attachment_manager.hpp \ collectable.cpp collectable.hpp \ @@ -93,17 +94,7 @@ translation.cpp translation.hpp \ player.hpp \ challenges/challenge.hpp challenges/challenge.cpp \ - challenges/energy_math_class.cpp challenges/energy_math_class.hpp\ - challenges/penguin_playground_gp.cpp challenges/penguin_playground_gp.hpp \ - challenges/race_track_time.cpp challenges/race_track_time.hpp\ - challenges/tollway_time.cpp challenges/tollway_time.hpp \ - challenges/jungle_follow.cpp challenges/jungle_follow.hpp \ - challenges/energy_shifting_sands.cpp challenges/energy_shifting_sands.hpp \ - challenges/moon_and_back_gp.cpp challenges/moon_and_back_gp.hpp \ - challenges/city_time.cpp challenges/city_time.hpp \ - challenges/island_follow.cpp challenges/island_follow.hpp \ - challenges/worlds_end_gp.cpp challenges/worlds_end_gp.hpp \ - challenges/tollway_head2head.cpp challenges/tollway_head2head.hpp \ + challenges/challenge_data.hpp challenges/challenge_data.cpp \ lisp/lisp.cpp lisp/lisp.hpp \ lisp/lexer.cpp lisp/lexer.hpp \ lisp/parser.cpp lisp/parser.hpp \ Modified: trunk/supertuxkart/src/cup_data.cpp =================================================================== --- trunk/supertuxkart/src/cup_data.cpp 2008-07-29 04:15:17 UTC (rev 2187) +++ trunk/supertuxkart/src/cup_data.cpp 2008-07-29 04:30:44 UTC (rev 2188) @@ -24,10 +24,13 @@ #include "lisp/parser.hpp" #include "lisp/lisp.hpp" #include "cup_data.hpp" +#include "string_utils.hpp" +#include "track_manager.hpp" -CupData::CupData(const std::string filename_) +CupData::CupData(const std::string filename) { - m_filename = filename_; + m_filename = filename; + m_id = StringUtils::without_extension(filename); const lisp::Lisp* lisp = 0; try { @@ -48,12 +51,26 @@ } catch(std::exception& err) { - fprintf(stderr, "Error while reading cup file '%s'\n", filename_.c_str()); + fprintf(stderr, "Error while reading cup file '%s'\n", filename.c_str()); fprintf(stderr, err.what()); fprintf(stderr, "\n"); } delete lisp; } - +// ---------------------------------------------------------------------------- +bool CupData::checkConsistency() +{ + bool correct=true; + for(unsigned int i=0; i<m_tracks.size(); i++) + { + if(!track_manager->getTrack(m_tracks[i])) + { + fprintf(stderr, "Grand Prix '%s': Track '%s' does not exist!", + m_name.c_str(), m_tracks[i]); + correct=false; + } + } // for i + return correct; +} /* EOF */ Modified: trunk/supertuxkart/src/cup_data.hpp =================================================================== --- trunk/supertuxkart/src/cup_data.hpp 2008-07-29 04:15:17 UTC (rev 2187) +++ trunk/supertuxkart/src/cup_data.hpp 2008-07-29 04:30:44 UTC (rev 2188) @@ -31,7 +31,8 @@ of races that has to be completed one after the other */ class CupData { - std::string m_name; // The name of the cup + std::string m_name; // The name of the cup - might be translated! + std::string m_id; // Internal name of the cup, not translated std::string m_filename; // Original filename, only for error handling needed std::string m_description; // Description for this track std::string m_herring_style; // herring style which overwrites the track default @@ -49,6 +50,7 @@ CupData (const std::string filename); CupData () {}; // empty for initialising const std::string& getName () const { return m_name; } + const std::string& getId () const { return m_id; } const std::string& getDescription () const { return m_description; } const std::string& getHerringStyle() const { return m_herring_style; } const std::string& getFilename () const { return m_filename; } @@ -59,6 +61,7 @@ size_t getTrackCount() const {return m_tracks.size(); } const int& getLaps(size_t lap_index) const {assert(lap_index < m_tracks.size()); return m_laps[lap_index]; } + bool checkConsistency(); } ; // CupData Added: trunk/supertuxkart/src/grand_prix_manager.cpp =================================================================== --- trunk/supertuxkart/src/grand_prix_manager.cpp (rev 0) +++ trunk/supertuxkart/src/grand_prix_manager.cpp 2008-07-29 04:30:44 UTC (rev 2188) @@ -0,0 +1,73 @@ +// $Id: grand_prix_manager.cpp 2173 2008-07-21 01:55:41Z auria $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include <set> + +#include "string_utils.hpp" +#include "file_manager.hpp" +#include "grand_prix_manager.hpp" +#include "unlock_manager.hpp" + +GrandPrixManager *grand_prix_manager = NULL; + +GrandPrixManager::GrandPrixManager() +{ + // Findout which grand prixs are available and load them + std::set<std::string> result; + file_manager->listFiles(result, "data/grandprix"); + for(std::set<std::string>::iterator i = result.begin(); + i != result.end() ; i++) + { + if (StringUtils::has_suffix(*i, ".grandprix")) load("grandprix/"+*i); + if (StringUtils::has_suffix(*i, ".challenge")) + unlock_manager->addChallenge(file_manager->getConfigFile("grandprix/"+*i)); + } // for i +} // GrandPrixManager + +// ---------------------------------------------------------------------------- +GrandPrixManager::~GrandPrixManager() +{ + for(unsigned int i=0; i<m_cup_data.size(); i++) + { + delete m_cup_data[i]; + } // for i + +} // ~GrandPrixManager +// ---------------------------------------------------------------------------- +const CupData* GrandPrixManager::getCup(const std::string& s) const +{ + for(unsigned int i=0; i<m_cup_data.size(); i++) + if(m_cup_data[i]->getId()==s) return m_cup_data[i]; + return NULL; +} // getCup +// ---------------------------------------------------------------------------- +void GrandPrixManager::load(const std::string& filename) +{ + m_cup_data.push_back(new CupData(filename)); +} // load + +// ---------------------------------------------------------------------------- +void GrandPrixManager::checkConsistency() +{ + for(unsigned int i=0; i<m_cup_data.size(); i++) + { + m_cup_data[i]->checkConsistency(); + } +} // checkConsistency +// ---------------------------------------------------------------------------- Added: trunk/supertuxkart/src/grand_prix_manager.hpp =================================================================== --- trunk/supertuxkart/src/grand_prix_manager.hpp (rev 0) +++ trunk/supertuxkart/src/grand_prix_manager.hpp 2008-07-29 04:30:44 UTC (rev 2188) @@ -0,0 +1,43 @@ +// $Id: grand_prix_manager.hpp 2173 2008-07-21 01:55:41Z auria $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_GRAND_PRIX_MANAGER_H +#define HEADER_GRAND_PRIX_MANAGER_H + +#include <vector> +#include <string> +#include "cup_data.hpp" + +class GrandPrixManager +{ +private: + std::vector<CupData*> m_cup_data; +public: + GrandPrixManager(); + ~GrandPrixManager(); + void load(const std::string &filename); + const CupData* getCup(int i) const { return m_cup_data[i]; } + const CupData* getCup(const std::string& s) const; + unsigned int getNumberOfGrandPrix() const { return m_cup_data.size(); } + void checkConsistency(); + +}; // GrandPrixManager + +extern GrandPrixManager *grand_prix_manager; +#endif Modified: trunk/supertuxkart/src/ide/vc9/supertuxkart.vcproj =================================================================== --- trunk/supertuxkart/src/ide/vc9/supertuxkart.vcproj 2008-07-29 04:15:17 UTC (rev 2187) +++ trunk/supertuxkart/src/ide/vc9/supertuxkart.vcproj 2008-07-29 04:30:44 UTC (rev 2188) @@ -680,6 +680,10 @@ > </File> <File + RelativePath="..\..\bowling.cpp" + > + </File> + <File RelativePath="../../../src\callback_manager.cpp" > </File> @@ -716,6 +720,10 @@ > </File> <File + RelativePath="..\..\grand_prix_manager.cpp" + > + </File> + <File RelativePath="../../../src\herring.cpp" > </File> @@ -860,10 +868,6 @@ > </File> <File - RelativePath="..\..\spark.cpp" - > - </File> - <File RelativePath="../../../src\ssg_help.cpp" > </File> @@ -1071,46 +1075,10 @@ > </File> <File - RelativePath="..\..\challenges\city_time.cpp" + RelativePath="..\..\challenges\challenge_data.cpp" > </File> <File - RelativePath="..\..\challenges\energy_math_class.cpp" - > - </File> - <File - RelativePath="..\..\challenges\energy_shifting_sands.cpp" - > - </File> - <File - RelativePath="..\..\challenges\island_follow.cpp" - > - </File> - <File - RelativePath="..\..\challenges\jungle_follow.cpp" - > - </File> - <File - RelativePath="..\..\challenges\moon_and_back_gp.cpp" - > - </File> - <File - RelativePath="..\..\challenges\penguin_playground_gp.cpp" - > - </File> - <File - RelativePath="..\..\challenges\race_track_time.cpp" - > - </File> - <File - RelativePath="..\..\challenges\tollway_head2head.cpp" - > - </File> - <File - RelativePath="..\..\challenges\tollway_time.cpp" - > - </File> - <File RelativePath="..\..\challenges\worlds_end_gp.cpp" > </File> @@ -1138,6 +1106,10 @@ > </File> <File + RelativePath="..\..\bowling.hpp" + > + </File> + <File RelativePath="../../../src\callback.hpp" > </File> @@ -1186,6 +1158,10 @@ > </File> <File + RelativePath="..\..\grand_prix_manager.hpp" + > + </File> + <File RelativePath="..\..\gui\help_page_one.hpp" > </File> @@ -1362,10 +1338,6 @@ > </File> <File - RelativePath="..\..\spark.hpp" - > - </File> - <File RelativePath="../../../src\ssg_help.hpp" > </File> @@ -1577,46 +1549,10 @@ > </File> <File - RelativePath="..\..\challenges\city_time.hpp" + RelativePath="..\..\challenges\challenge_data.hpp" > </File> <File - RelativePath="..\..\challenges\energy_math_class.hpp" - > - </File> - <File - RelativePath="..\..\challenges\energy_shifting_sands.hpp" - > - </File> - <File - RelativePath="..\..\challenges\island_follow.hpp" - > - </File> - <File - RelativePath="..\..\challenges\jungle_follow.hpp" - > - </File> - <File - RelativePath="..\..\challenges\moon_and_back_gp.hpp" - > - </File> - <File - RelativePath="..\..\challenges\penguin_playground_gp.hpp" - > - </File> - <File - RelativePath="..\..\challenges\race_track_time.hpp" - > - </File> - <File - RelativePath="..\..\challenges\tollway_head2head.hpp" - > - </File> - <File - RelativePath="..\..\challenges\tollway_time.hpp" - > - </File> - <File RelativePath="..\..\challenges\worlds_end_gp.hpp" > </File> Modified: trunk/supertuxkart/src/main.cpp =================================================================== --- trunk/supertuxkart/src/main.cpp 2008-07-29 04:15:17 UTC (rev 2187) +++ trunk/supertuxkart/src/main.cpp 2008-07-29 04:30:44 UTC (rev 2188) @@ -65,6 +65,7 @@ #include "stk_config.hpp" #include "translation.hpp" #include "highscore_manager.hpp" +#include "grand_prix_manager.hpp" #include "gui/menu_manager.hpp" #include "scene.hpp" @@ -413,6 +414,7 @@ herring_manager = new HerringManager (); attachment_manager = new AttachmentManager (); highscore_manager = new HighscoreManager (); + grand_prix_manager = new GrandPrixManager (); track_manager->loadTrackList(); sound_manager->addMusicToTracks(); @@ -424,6 +426,10 @@ race_manager->setMajorMode (RaceManager::RM_SINGLE); race_manager->setMinorMode (RaceManager::RM_QUICK_RACE); race_manager->setDifficulty(RaceManager::RD_HARD); + + // Consistency check for challenges, and enable all challenges + // that have all prerequisites fulfilled + grand_prix_manager->checkConsistency(); } //============================================================================= @@ -530,17 +536,21 @@ /* Program closing...*/ - if (user_config->m_crashed) user_config->m_crashed = false; - user_config->saveConfig(); - delete inputDriver; + if(user_config) + { + // In case that abort is triggered before user_config exists + if (user_config->m_crashed) user_config->m_crashed = false; + user_config->saveConfig(); + } + if(inputDriver) delete inputDriver; // if early crash avoid delete NULL - if (user_config->m_log_errors) //close logfiles + if (user_config && user_config->m_log_errors) //close logfiles { fclose(stderr); fclose(stdout); } - delete highscore_manager; + if(highscore_manager) delete highscore_manager; delete_fonts(); return 0 ; Modified: trunk/supertuxkart/src/track_manager.cpp =================================================================== --- trunk/supertuxkart/src/track_manager.cpp 2008-07-29 04:15:17 UTC (rev 2187) +++ trunk/supertuxkart/src/track_manager.cpp 2008-07-29 04:30:44 UTC (rev 2188) @@ -75,6 +75,7 @@ } FILE *f=fopen(config_file.c_str(),"r"); if(!f) continue; + fclose(f); Track *track = new Track(config_file); m_tracks.push_back(track); Modified: trunk/supertuxkart/src/unlock_manager.cpp =================================================================== --- trunk/supertuxkart/src/unlock_manager.cpp 2008-07-29 04:15:17 UTC (rev 2187) +++ trunk/supertuxkart/src/unlock_manager.cpp 2008-07-29 04:30:44 UTC (rev 2188) @@ -16,22 +16,16 @@ // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +#include <set> +#include <string> +#include <stdio.h> #include "unlock_manager.hpp" #include "race_manager.hpp" - -#include "challenges/energy_math_class.hpp" -#include "challenges/penguin_playground_gp.hpp" -#include "challenges/race_track_time.hpp" -#include "challenges/tollway_time.hpp" -#include "challenges/jungle_follow.hpp" -#include "challenges/energy_shifting_sands.hpp" -#include "challenges/moon_and_back_gp.hpp" -#include "challenges/city_time.hpp" -#include "challenges/island_follow.hpp" -#include "challenges/worlds_end_gp.hpp" -#include "challenges/tollway_head2head.hpp" +#include "file_manager.hpp" +#include "string_utils.hpp" #include "user_config.hpp" +#include "challenges/challenge_data.hpp" UnlockManager* unlock_manager=0; //----------------------------------------------------------------------------- @@ -43,24 +37,88 @@ // in main). unlock_manager=this; - // Add all challenges: - Challenge *c; - c=new EnergyMathClass(); m_all_challenges[c->getId()]=c; - c=new PenguinPlaygroundGP(); m_all_challenges[c->getId()]=c; - c=new RaceTrackTime(); m_all_challenges[c->getId()]=c; - c=new TollwayTime(); m_all_challenges[c->getId()]=c; - c=new JungleFollow(); m_all_challenges[c->getId()]=c; - c=new EnergyShiftingSands(); m_all_challenges[c->getId()]=c; - c=new MoonAndBackGP(); m_all_challenges[c->getId()]=c; - c=new CityTime(); m_all_challenges[c->getId()]=c; - c=new IslandFollow(); m_all_challenges[c->getId()]=c; - c=new WorldsEndGP(); m_all_challenges[c->getId()]=c; - c=new TollwayHead2Head(); m_all_challenges[c->getId()]=c; - + // Read challenges from .../data + // ----------------------------- + std::set<std::string> result; + file_manager->listFiles(result, "data"); + for(std::set<std::string>::iterator i = result.begin(); + i != result.end() ; i++) + { + if (StringUtils::has_suffix(*i, ".challenge")) + addChallenge(file_manager->getConfigFile(*i)); + } // for i + + // Read challenges from .../data/tracks/* + // -------------------------------------- + std::set<std::string> dirs; + file_manager->listFiles(dirs, file_manager->getTrackDir(), /*is_full_path*/ true); + for(std::set<std::string>::iterator dir = dirs.begin(); dir != dirs.end(); dir++) + { + if(*dir=="." || *dir=="..") continue; + std::string config_file; + try + { + // getTrackFile appends dir, so it's opening: *dir/*dir.track + config_file = file_manager->getTrackFile((*dir)+".track"); + } + catch (std::exception& e) + { + (void)e; // remove warning about unused variable + continue; + } + // Check for a challenge file + std::string challenge_file = + StringUtils::without_extension(config_file)+".challenge"; + FILE *f=fopen(challenge_file.c_str(), "r"); + if(f) + { + fclose(f); + addChallenge(new ChallengeData(challenge_file)); + } + } // for dirs + + // Load challenges from .../data/karts + // ----------------------------------- + file_manager->listFiles(dirs, file_manager->getKartDir(), + /*is_full_path*/ true); + + // Find out which characters are available and load them + for(std::set<std::string>::iterator i = dirs.begin(); + i != dirs.end(); i++) + { + std::string challenge_file; + try + { + challenge_file = file_manager->getKartFile((*i)+".challenge"); + } + catch (std::exception& e) + { + (void)e; // remove warning about unused variable + continue; + } + FILE *f=fopen(challenge_file.c_str(),"r"); + if(!f) continue; + fclose(f); + addChallenge(new ChallengeData(challenge_file)); + } // for i + + // Hard coded challenges can be added here. + computeActive(); + } // UnlockManager //----------------------------------------------------------------------------- +void UnlockManager::addChallenge(Challenge *c) +{ + m_all_challenges[c->getId()]=c; +} // addChallenge +//----------------------------------------------------------------------------- +void UnlockManager::addChallenge(const std::string& filename) +{ + addChallenge(new ChallengeData(filename)); +} // addChallenge +//----------------------------------------------------------------------------- std::vector<const Challenge*> UnlockManager::getActiveChallenges() { computeActive(); Modified: trunk/supertuxkart/src/unlock_manager.hpp =================================================================== --- trunk/supertuxkart/src/unlock_manager.hpp 2008-07-29 04:15:17 UTC (rev 2187) +++ trunk/supertuxkart/src/unlock_manager.hpp 2008-07-29 04:30:44 UTC (rev 2188) @@ -38,6 +38,8 @@ void computeActive (); public: UnlockManager (); + void addChallenge (Challenge *c); + void addChallenge (const std::string& filename); void load (const lisp::Lisp*); void save (lisp::Writer* writer); std::vector<const Challenge*> Modified: trunk/supertuxkart/src/widget_manager.hpp =================================================================== --- trunk/supertuxkart/src/widget_manager.hpp 2008-07-29 04:15:17 UTC (rev 2187) +++ trunk/supertuxkart/src/widget_manager.hpp 2008-07-29 04:30:44 UTC (rev 2188) @@ -308,6 +308,7 @@ void setWgtTexture(const int TOKEN, const int TEXTURE); void setWgtTexture(const int TOKEN, const std::string& FILENAME, const bool is_full_path=true); + void setWgtLockTexture(const int token) {setWgtTexture(token, "gui_lock.rgb", false);} void showWgtTexture(const int TOKEN); void hideWgtTexture(const int TOKEN); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2008-07-29 04:45:32
|
Revision: 2189 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2189&view=rev Author: hikerstk Date: 2008-07-29 04:45:28 +0000 (Tue, 29 Jul 2008) Log Message: ----------- Missing updates in previous commit. Modified Paths: -------------- trunk/supertuxkart/src/challenges/challenge.cpp trunk/supertuxkart/src/challenges/challenge.hpp trunk/supertuxkart/src/gui/char_sel.cpp trunk/supertuxkart/src/gui/game_mode.cpp trunk/supertuxkart/src/gui/grand_prix_select.cpp trunk/supertuxkart/src/gui/grand_prix_select.hpp trunk/supertuxkart/src/gui/help_page_one.cpp Added Paths: ----------- trunk/supertuxkart/data/followtheleader.challenge trunk/supertuxkart/src/challenges/challenge_data.cpp trunk/supertuxkart/src/challenges/challenge_data.hpp Removed Paths: ------------- trunk/supertuxkart/src/challenges/city_time.cpp trunk/supertuxkart/src/challenges/city_time.hpp trunk/supertuxkart/src/challenges/energy_math_class.cpp trunk/supertuxkart/src/challenges/energy_math_class.hpp trunk/supertuxkart/src/challenges/energy_shifting_sands.cpp trunk/supertuxkart/src/challenges/energy_shifting_sands.hpp trunk/supertuxkart/src/challenges/island_follow.cpp trunk/supertuxkart/src/challenges/island_follow.hpp trunk/supertuxkart/src/challenges/jungle_follow.cpp trunk/supertuxkart/src/challenges/jungle_follow.hpp trunk/supertuxkart/src/challenges/moon_and_back_gp.cpp trunk/supertuxkart/src/challenges/moon_and_back_gp.hpp trunk/supertuxkart/src/challenges/race_track_time.cpp trunk/supertuxkart/src/challenges/race_track_time.hpp trunk/supertuxkart/src/challenges/tollway_head2head.cpp trunk/supertuxkart/src/challenges/tollway_head2head.hpp trunk/supertuxkart/src/challenges/tollway_time.cpp trunk/supertuxkart/src/challenges/tollway_time.hpp Added: trunk/supertuxkart/data/followtheleader.challenge =================================================================== --- trunk/supertuxkart/data/followtheleader.challenge (rev 0) +++ trunk/supertuxkart/data/followtheleader.challenge 2008-07-29 04:45:28 UTC (rev 2189) @@ -0,0 +1,17 @@ +;; -*- mode: lisp -*- + +(challenge + (id "penguinplaygroundgp") + (name _("Win Penguin Playground Grand\nPrix")) + (description _("Win Penguin Playground Grand\nPrix with 3 'Racer' Level AI karts.")) + (unlock-mode "followtheleader" _("Follow the Leader")) + (major "grandprix") + (minor "quickrace") + (gp "penguinplayground") + (difficulty "hard") + (karts 4) + (position 1) +) + +;; EOF ;; + Modified: trunk/supertuxkart/src/challenges/challenge.cpp =================================================================== --- trunk/supertuxkart/src/challenges/challenge.cpp 2008-07-29 04:30:44 UTC (rev 2188) +++ trunk/supertuxkart/src/challenges/challenge.cpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -22,6 +22,8 @@ #include "world.hpp" #include "race_manager.hpp" #include "track_manager.hpp" +#include "kart_properties_manager.hpp" + #if defined(WIN32) && !defined(__CYGWIN__) # define snprintf _snprintf #endif @@ -93,6 +95,15 @@ m_feature.push_back(feature); } //----------------------------------------------------------------------------- +void Challenge::addUnlockKartReward(std::string internal_name, std::string user_name) +{ + UnlockableFeature feature; + feature.name = internal_name; + feature.type = UNLOCK_KART; + feature.user_name = user_name; + m_feature.push_back(feature); +} +//----------------------------------------------------------------------------- const std::string Challenge::getUnlockedMessage() const { std::string unlocked_message; @@ -109,10 +120,10 @@ switch(m_feature[n].type) { case UNLOCK_TRACK: - { + { // {} avoids compiler warning Track* track = track_manager->getTrack( m_feature[n].name ); snprintf(message, 127, _("New track '%s'\nnow available"), _(track->getName()) ); - break; + break; } case UNLOCK_MODE: snprintf(message, 127, _("New game mode\n'%s'\nnow available"), m_feature[n].user_name.c_str() ); @@ -123,9 +134,13 @@ case UNLOCK_DIFFICULTY: snprintf(message, 127, _("New difficulty\n'%s'\nnow available"), m_feature[n].user_name.c_str() ); break; - } + case UNLOCK_KART: + const KartProperties *kp=kart_properties_manager->getKart(m_feature[n].name ); + snprintf(message, 127, _("New kart\n'%s'\nnow available"), kp->getName()); + break; + } // switch unlocked_message += message; - } + } // for n return unlocked_message; } Modified: trunk/supertuxkart/src/challenges/challenge.hpp =================================================================== --- trunk/supertuxkart/src/challenges/challenge.hpp 2008-07-29 04:30:44 UTC (rev 2188) +++ trunk/supertuxkart/src/challenges/challenge.hpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -31,6 +31,7 @@ {UNLOCK_TRACK, UNLOCK_GP, UNLOCK_MODE, + UNLOCK_KART, UNLOCK_DIFFICULTY}; struct UnlockableFeature @@ -53,18 +54,21 @@ std::vector<std::string> m_prerequisites; // what needs to be done before accessing this challenge public: Challenge(std::string id, std::string name); + Challenge() {m_Id=""; m_Name="";} virtual ~Challenge() {}; - const std::string& getId() const {return m_Id; } - const std::string& getName() const {return m_Name; } - + const std::string& getId() const { return m_Id; } + const std::string& getName() const { return m_Name; } + void setName(const std::string& s) { m_Name = s; } + void setId(const std::string& s) { m_Id = s; } void addUnlockTrackReward(std::string track_name); void addUnlockModeReward(std::string internal_mode_name, std::string user_mode_name); void addUnlockGPReward(std::string gp_name); void addUnlockDifficultyReward(std::string internal_name, std::string user_name); + void addUnlockKartReward(std::string internal_name, std::string user_name); const std::string getUnlockedMessage() const; const std::vector<UnlockableFeature>& - getFeatures() const {return m_feature; } + getFeatures() const { return m_feature; } void setChallengeDescription(const std::string& d) {m_challenge_description=d; } const std::string& Added: trunk/supertuxkart/src/challenges/challenge_data.cpp =================================================================== --- trunk/supertuxkart/src/challenges/challenge_data.cpp (rev 0) +++ trunk/supertuxkart/src/challenges/challenge_data.cpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -0,0 +1,252 @@ +// $Id: challenge_data.cpp 2173 2008-07-21 01:55:41Z auria $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +#include <stdexcept> + +#include "challenges/challenge_data.hpp" +#include "lisp/lisp.hpp" +#include "lisp/parser.hpp" +#include "translation.hpp" +#include "world.hpp" +#include "cup_data.hpp" +#include "grand_prix_manager.hpp" + +#if defined(WIN32) && !defined(__CYGWIN__) +# define snprintf _snprintf +#endif + + +ChallengeData::ChallengeData(const std::string& filename) +{ + m_filename = filename; + m_major = RaceManager::RM_SINGLE; + m_minor = RaceManager::RM_SINGLE; + m_difficulty = RaceManager::RD_EASY; + m_num_laps = -1; + m_num_karts = -1; + + m_time = -1.0f; + m_track_name = ""; + m_gp_id = ""; + m_energy = -1; + + lisp::Parser parser; + const lisp::Lisp* const ROOT = parser.parse(filename); + + const lisp::Lisp* const lisp = ROOT->getLisp("challenge"); + if(!lisp) + { + delete ROOT; + char msg[MAX_ERROR_MESSAGE_LENGTH]; + snprintf(msg, sizeof(msg), + "Couldn't load challenge '%s': no challenge node.", + filename.c_str()); + throw std::runtime_error(msg); + } + + std::string mode; + lisp->get("major", mode); + + if(mode=="grandprix") + m_major = RaceManager::RM_GRAND_PRIX; + else if(mode=="single") + m_major = RaceManager::RM_SINGLE; + else + error("major"); + + lisp->get ("minor", mode); + if(mode=="timetrial") + m_minor = RaceManager::RM_TIME_TRIAL; + else if(mode=="quickrace") + m_minor = RaceManager::RM_QUICK_RACE; + else if(mode=="followtheleader") + m_minor = RaceManager::RM_FOLLOW_LEADER; + else + error("minor"); + std::string s; + if(!lisp->get("name", s) ) error("name"); + setName(s); + if(!lisp->get("id", s) ) error("id"); + setId(s); + if(!lisp->get("description", s) ) error("description"); + setChallengeDescription(s); + if(!lisp->get("karts", m_num_karts) ) error("karts"); + // Position is optional except in GP and FTL + if(!lisp->get("position", m_position) && + (m_minor==RaceManager::RM_FOLLOW_LEADER || + m_major==RaceManager::RM_GRAND_PRIX)) + error("position"); + lisp->get("difficulty", s); + if(s=="easy") + m_difficulty = RaceManager::RD_EASY; + else if(s=="medium") + m_difficulty = RaceManager::RD_MEDIUM; + else if(s=="hard") + m_difficulty = RaceManager::RD_HARD; + else + error("difficulty"); + + lisp->get("time", m_time ); // one of time/position + lisp->get("position", m_position ); // must be set + if(m_time<0 && m_position<0) error("position/time"); + lisp->get("energy", m_energy ); // This is optional + if(m_major==RaceManager::RM_SINGLE) + { + if(!lisp->get("track", m_track_name )) error("track"); + if(!lisp->get("laps", m_num_laps ) && + m_minor!=RaceManager::RM_FOLLOW_LEADER) + error("laps"); + } + else // GP + { + if(!lisp->get("gp", m_gp_id )) error("gp"); + } + + getUnlocks(lisp, "unlock-track", UNLOCK_TRACK); + getUnlocks(lisp, "unlock-gp", UNLOCK_GP ); + getUnlocks(lisp, "unlock-mode", UNLOCK_MODE ); + getUnlocks(lisp, "unlock-difficulty", UNLOCK_DIFFICULTY); + getUnlocks(lisp, "unlock-kart", UNLOCK_KART); + + std::vector<std::string> vec; + lisp->getVector("depend-on", vec); + for(unsigned int i=0; i<vec.size(); i++) addDependency(vec[i]); + delete ROOT; + +} // ChallengeData + +// ---------------------------------------------------------------------------- +void ChallengeData::error(const char *id) +{ + char msg[MAX_ERROR_MESSAGE_LENGTH]; + snprintf(msg, sizeof(msg), "Undefined or incorrect value for '%s' in challenge file '%s'.", + id, m_filename.c_str()); + throw std::runtime_error(msg); +} // error +// ---------------------------------------------------------------------------- + + +void ChallengeData::getUnlocks(const lisp::Lisp *lisp, const char* type, + REWARD_TYPE reward) +{ + std::vector<std::string> v; + v.clear(); + + lisp->getVector(type, v); + for(unsigned int i=0; i<v.size(); i++) + { + switch(reward) + { + case UNLOCK_TRACK: addUnlockTrackReward (v[i] ); break; + case UNLOCK_GP: addUnlockGPReward (v[i] ); break; + case UNLOCK_MODE: if(i+1<v.size()) + { + addUnlockModeReward (v[i], v[i+1]); + i++; break; + } + else + fprintf(stderr, "Unlock mode name missing.\n"); + break; + case UNLOCK_DIFFICULTY: if(i+1<v.size()) + { + addUnlockDifficultyReward(v[i], v[i+1]); + i++; + } + else + fprintf(stderr, "Difficult name missing.\n"); + break; + case UNLOCK_KART: if(i+1<v.size()) + { + addUnlockKartReward(v[i], v[i+1]); + i++; + } + else + fprintf(stderr, "Kart name missing.\n"); + break; + } // switch + } +} // getUnlocks + +// ---------------------------------------------------------------------------- +void ChallengeData::setRace() const +{ + race_manager->setMajorMode(m_major); + if(m_major==RaceManager::RM_SINGLE) + { + race_manager->setMinorMode(m_minor); + race_manager->setTrack(m_track_name); + race_manager->setDifficulty(m_difficulty); + race_manager->setNumLaps(m_num_laps); + race_manager->setNumKarts(m_num_karts); + race_manager->setNumPlayers(1); + } + else // GP + { + race_manager->setMinorMode(m_minor); + const CupData *cup = grand_prix_manager->getCup(m_gp_id); + race_manager->setGrandPrix(*cup); + race_manager->setDifficulty(m_difficulty); + race_manager->setNumKarts(m_num_karts); + race_manager->setNumPlayers(1); + //race_manager->setGrandPrix(); + } +} // setRace + +// ---------------------------------------------------------------------------- +bool ChallengeData::raceFinished() +{ + // GP's use the grandPrixFinished() function, so they can't be fulfilled here. + if(m_major==RaceManager::RM_GRAND_PRIX) return false; + + // Single races + // ------------ + std::string track_name = world->getTrack()->getIdent(); + if(track_name!=m_track_name ) return false; // wrong track + if((int)race_manager->getNumKarts()<m_num_karts) return false; // not enough AI karts + + Kart* kart=world->getPlayerKart(0); + if(m_energy>0 && kart->getNumHerring()<m_energy) return false; // not enough energy + if(m_position>0 && kart->getPosition()>m_position) return false; // too far behind + + // Follow the leader + // ----------------- + if(m_minor==RaceManager::RM_FOLLOW_LEADER) + { + // All possible conditions were already checked, so: must have been successful + return true; + } + // Quickrace / Timetrial + // --------------------- + if(kart->getLap()!=m_num_laps) return false; // wrong number of laps + if(m_time>0.0f && kart->getFinishTime()>m_time) return false; // too slow + return true; +} // raceFinished +// ---------------------------------------------------------------------------- +bool ChallengeData::grandPrixFinished() +{ + if (race_manager->getMajorMode() != RaceManager::RM_GRAND_PRIX || + race_manager->getMinorMode() != m_minor || + race_manager->getGrandPrix()->getId() != m_gp_id || + race_manager->getDifficulty()!= m_difficulty || + race_manager->getNumKarts() < (unsigned int)m_num_karts || + race_manager->getNumPlayers() > 1) return false; + + Kart* kart=world->getPlayerKart(0); + if(kart->getPosition()>m_position) return false; + return true; +} // grandPrixFinished \ No newline at end of file Property changes on: trunk/supertuxkart/src/challenges/challenge_data.cpp ___________________________________________________________________ Added: svn:executable + * Added: trunk/supertuxkart/src/challenges/challenge_data.hpp =================================================================== --- trunk/supertuxkart/src/challenges/challenge_data.hpp (rev 0) +++ trunk/supertuxkart/src/challenges/challenge_data.hpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -0,0 +1,57 @@ +// $Id: challenge_data.hpp 2173 2008-07-21 01:55:41Z auria $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CHALLENGE_DATA_H +#define HEADER_CHALLENGE_DATA_H + +#include <string> +#include <vector> +#include <stdio.h> + +#include "challenges/challenge.hpp" +#include "race_manager.hpp" + +class ChallengeData : public Challenge +{ +private: + RaceManager::RaceModeType m_major; + RaceManager::RaceModeType m_minor; + RaceManager::Difficulty m_difficulty; + int m_num_laps; + int m_position; + int m_num_karts; + float m_time; + std::string m_gp_id; + std::string m_track_name; + int m_energy; + std::vector<std::string> m_depends_on; + std::vector<UnlockableFeature> m_unlock; + + std::string m_filename; + void getUnlocks(const lisp::Lisp *lisp, const char* type, REWARD_TYPE reward); + void error(const char *id); + +public: + ChallengeData(const std::string& filename); + void setRace() const; + virtual bool raceFinished(); + virtual bool grandPrixFinished(); +}; // ChallengeData + +#endif Property changes on: trunk/supertuxkart/src/challenges/challenge_data.hpp ___________________________________________________________________ Added: svn:executable + * Deleted: trunk/supertuxkart/src/challenges/city_time.cpp =================================================================== --- trunk/supertuxkart/src/challenges/city_time.cpp 2008-07-29 04:30:44 UTC (rev 2188) +++ trunk/supertuxkart/src/challenges/city_time.cpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -1,53 +0,0 @@ -// $Id$ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be ruseful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#include "translation.hpp" -#include "challenges/city_time.hpp" -#include "world.hpp" -#include "race_manager.hpp" - -CityTime::CityTime() : Challenge("citytime", _("Finish the City track in 5:20")) -{ - setChallengeDescription(_("Finish 3 laps on the City track\nwith 3 AI karts\nin under 5:20 minutes.")); - addUnlockTrackReward("snowtuxpeak"); - addDependency("junglefollow"); -} // CityTime -//----------------------------------------------------------------------------- -void CityTime::setRace() const { - race_manager->setMajorMode(RaceManager::RM_SINGLE); - race_manager->setMinorMode(RaceManager::RM_QUICK_RACE); - race_manager->setTrack("city"); - race_manager->setDifficulty(RaceManager::RD_EASY); - race_manager->setNumLaps(3); - race_manager->setNumKarts(4); - race_manager->setNumPlayers(1); -} // setRace - -//----------------------------------------------------------------------------- -bool CityTime::raceFinished() -{ - std::string track_name = world->getTrack()->getIdent(); - if(track_name!="city" ) return false; // wrong track - Kart* kart=world->getPlayerKart(0); - if(kart->getFinishTime()>320) return false; // too slow - if(kart->getLap()!=3 ) return false; // wrong number of laps - if(race_manager->getNumKarts()<4) return false; //not enough AI karts - return true; -} // raceFinished -//----------------------------------------------------------------------------- Deleted: trunk/supertuxkart/src/challenges/city_time.hpp =================================================================== --- trunk/supertuxkart/src/challenges/city_time.hpp 2008-07-29 04:30:44 UTC (rev 2188) +++ trunk/supertuxkart/src/challenges/city_time.hpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -1,37 +0,0 @@ -// $Id$ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#ifndef CITY_TIME_H -#define CITY_TIME_H - - -#include "challenges/challenge.hpp" - -class CityTime : public Challenge -{ -public: - CityTime(); - virtual bool raceFinished(); - virtual void setRace() const; -}; // CityTime - - - - -#endif /*CITY_TIME_H*/ Deleted: trunk/supertuxkart/src/challenges/energy_math_class.cpp =================================================================== --- trunk/supertuxkart/src/challenges/energy_math_class.cpp 2008-07-29 04:30:44 UTC (rev 2188) +++ trunk/supertuxkart/src/challenges/energy_math_class.cpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -1,55 +0,0 @@ -// $Id: energy_math_class.cpp 1259 2007-09-24 12:28:19Z hiker $ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be ruseful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#include <algorithm> -#include "translation.hpp" -#include "challenges/energy_math_class.hpp" -#include "race_manager.hpp" -#include "world.hpp" - -EnergyMathClass::EnergyMathClass() : Challenge("energymathclass", _("Collect Coins in Math Class")) -{ - setChallengeDescription(_("Collect at least 6 points\nworth of coins\non three laps of\nOliver's Math Class\nin under 1 minute.")); - addUnlockTrackReward("crescentcrossing"); -} // EnergyMathClass - -//----------------------------------------------------------------------------- -void EnergyMathClass::setRace() const { - race_manager->setMajorMode(RaceManager::RM_SINGLE); - race_manager->setMajorMode(RaceManager::RM_QUICK_RACE); - race_manager->setTrack("olivermath"); - race_manager->setDifficulty(RaceManager::RD_EASY); - race_manager->setNumLaps(3); - race_manager->setNumKarts(1); - race_manager->setNumPlayers(1); - race_manager->setCoinTarget(6); -} // setRace -\ -//----------------------------------------------------------------------------- -bool EnergyMathClass::raceFinished() -{ - std::string track_name = world->getTrack()->getIdent(); - if(track_name!="olivermath") return false; // wrong track - Kart* kart=world->getPlayerKart(0); - if(kart->getFinishTime()>60) return false; // too slow - if(kart->getLap()!=3 ) return false; // wrong number of laps - if(kart->getNumHerring()<6 ) return false; // not enough herrings - return true; -} // raceFinished -//----------------------------------------------------------------------------- Deleted: trunk/supertuxkart/src/challenges/energy_math_class.hpp =================================================================== --- trunk/supertuxkart/src/challenges/energy_math_class.hpp 2008-07-29 04:30:44 UTC (rev 2188) +++ trunk/supertuxkart/src/challenges/energy_math_class.hpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -1,36 +0,0 @@ -// $Id: energy_math_class.hpp 1259 2007-09-24 12:28:19Z hiker $ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#ifndef HEADER_ENERGY_MATH_CLASS_H -#define HEADER_ENERGY_MATH_CLASS_H - -#include <string> -#include <vector> - -#include "challenges/challenge.hpp" - -class EnergyMathClass : public Challenge -{ -public: - EnergyMathClass(); - virtual bool raceFinished(); - virtual void setRace() const; -}; // EnergyMathClass - -#endif Deleted: trunk/supertuxkart/src/challenges/energy_shifting_sands.cpp =================================================================== --- trunk/supertuxkart/src/challenges/energy_shifting_sands.cpp 2008-07-29 04:30:44 UTC (rev 2188) +++ trunk/supertuxkart/src/challenges/energy_shifting_sands.cpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -1,58 +0,0 @@ -// $Id$ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be ruseful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#include "translation.hpp" -#include "challenges/energy_shifting_sands.hpp" -#include "race_manager.hpp" -#include "world.hpp" - -EnergyShiftingSands::EnergyShiftingSands() : Challenge("energyshiftingsands", _("Collect the Pharaohs Treasure")) -{ - setChallengeDescription(_("Collect at least 9 coins\non 3 laps of Shifting Sands\nin under 2:20 minutes.")); - addUnlockGPReward("To the Moon and Back"); - // The energymathclass challenge must be done, otherwise GP can't be selected - addDependency("energymathclass"); - addDependency("racetracktime"); -} - -//----------------------------------------------------------------------------- -void EnergyShiftingSands::setRace() const { - race_manager->setMajorMode(RaceManager::RM_SINGLE); - race_manager->setMinorMode(RaceManager::RM_QUICK_RACE); - race_manager->setTrack("sandtrack"); - race_manager->setDifficulty(RaceManager::RD_EASY); - race_manager->setNumLaps(3); - race_manager->setNumKarts(1); - race_manager->setNumPlayers(1); - race_manager->setCoinTarget(9); -} // setRace - -//----------------------------------------------------------------------------- -bool EnergyShiftingSands::raceFinished() -{ - std::string track_name = world->getTrack()->getIdent(); - if(track_name!="sandtrack") return false; // wrong track - Kart* kart=world->getPlayerKart(0); - if(kart->getFinishTime()>140) return false; // too slow - if(kart->getLap()!=3 ) return false; // wrong number of laps - if(kart->getNumHerring()<9 ) return false; // not enough herrings - return true; - -} // raceFinished -//----------------------------------------------------------------------------- Deleted: trunk/supertuxkart/src/challenges/energy_shifting_sands.hpp =================================================================== --- trunk/supertuxkart/src/challenges/energy_shifting_sands.hpp 2008-07-29 04:30:44 UTC (rev 2188) +++ trunk/supertuxkart/src/challenges/energy_shifting_sands.hpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -1,36 +0,0 @@ -// $Id$ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#ifndef ENERGY_SHIFTING_SANDS_H -#define ENERGY_SHIFTING_SANDS_H - - -#include "challenges/challenge.hpp" - -class EnergyShiftingSands : public Challenge -{ -public: - EnergyShiftingSands(); - virtual bool raceFinished(); - virtual void setRace() const; - -}; - - -#endif /*ENERGY_SHIFTING_SANDS_H*/ Deleted: trunk/supertuxkart/src/challenges/island_follow.cpp =================================================================== --- trunk/supertuxkart/src/challenges/island_follow.cpp 2008-07-29 04:30:44 UTC (rev 2188) +++ trunk/supertuxkart/src/challenges/island_follow.cpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -1,60 +0,0 @@ -// $Id$ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be ruseful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#include "translation.hpp" -#include "challenges/island_follow.hpp" -#include "world.hpp" -#include "race_manager.hpp" - -IslandFollow::IslandFollow() : Challenge("islandfollow", _("Follow the Leader on a\nDesert Island")) -{ - setChallengeDescription(_("Win a Follow the Leader race\nwith 3 AI karts\non a Desert Island.")); - addUnlockGPReward("At world's end"); - addDependency("moonandbackgp"); - addDependency("tollwaytime"); - addDependency("citytime"); -} // IslandFollow - -//----------------------------------------------------------------------------- -void IslandFollow::setRace() const { - race_manager->setMajorMode(RaceManager::RM_SINGLE); - race_manager->setMinorMode(RaceManager::RM_FOLLOW_LEADER); - race_manager->setTrack("islandtrack"); - race_manager->setDifficulty(RaceManager::RD_EASY); - race_manager->setNumLaps(3); - race_manager->setNumKarts(4); - race_manager->setNumPlayers(1); -} // setRace - -//----------------------------------------------------------------------------- -bool IslandFollow::raceFinished() -{ - std::string track_name = world->getTrack()->getIdent(); - if(track_name!="islandtrack" ) return false; // wrong track - if(race_manager->getNumKarts()<4) return false; //not enough AI karts - //Check if player came first - for(int i=0; i<(int)race_manager->getNumKarts(); i++) - { - const Kart* k=world->getKart(i); - if(k->isPlayerKart()) return k->getPosition()==2; - } - return false; - -} // raceFinished -//----------------------------------------------------------------------------- Deleted: trunk/supertuxkart/src/challenges/island_follow.hpp =================================================================== --- trunk/supertuxkart/src/challenges/island_follow.hpp 2008-07-29 04:30:44 UTC (rev 2188) +++ trunk/supertuxkart/src/challenges/island_follow.hpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -1,34 +0,0 @@ -// $Id$ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#ifndef ISLAND_FOLLOW_H -#define ISLAND_FOLLOW_H - -#include "challenges/challenge.hpp" - -class IslandFollow : public Challenge -{ -public: - IslandFollow(); - virtual bool raceFinished(); - virtual void setRace() const; -}; // IslandFollow - - -#endif /*ISLAND_FOLLOW_H*/ Deleted: trunk/supertuxkart/src/challenges/jungle_follow.cpp =================================================================== --- trunk/supertuxkart/src/challenges/jungle_follow.cpp 2008-07-29 04:30:44 UTC (rev 2188) +++ trunk/supertuxkart/src/challenges/jungle_follow.cpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -1,59 +0,0 @@ -// $Id$ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be ruseful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#include "translation.hpp" -#include "challenges/jungle_follow.hpp" -#include "world.hpp" -#include "race_manager.hpp" - -JungleFollow::JungleFollow() : Challenge("junglefollow", _("Follow the Leader in the Jungle")) -{ - setChallengeDescription(_("Win a Follow the Leader race\nwith 3 AI karts\nin the Amazonian Jungle.")); - addUnlockTrackReward("city"); - addDependency("penguinplaygroundgp"); - addDependency("racetracktime"); -} // JungleFollow - -//----------------------------------------------------------------------------- -void JungleFollow::setRace() const { - race_manager->setMajorMode(RaceManager::RM_SINGLE); - race_manager->setMinorMode(RaceManager::RM_FOLLOW_LEADER); - race_manager->setTrack("jungle"); - race_manager->setDifficulty(RaceManager::RD_EASY); - race_manager->setNumLaps(3); - race_manager->setNumKarts(4); - race_manager->setNumPlayers(1); -} // setRace - -//----------------------------------------------------------------------------- -bool JungleFollow::raceFinished() -{ - std::string track_name = world->getTrack()->getIdent(); - if(track_name!="jungle" ) return false; // wrong track - if(race_manager->getNumKarts()<4) return false; //not enough AI karts - //Check if player came first - for(int i=0; i<(int)race_manager->getNumKarts(); i++) - { - const Kart* k=world->getKart(i); - if(k->isPlayerKart()) return k->getPosition()==2; - } - return false; - -} // raceFinished -//----------------------------------------------------------------------------- Deleted: trunk/supertuxkart/src/challenges/jungle_follow.hpp =================================================================== --- trunk/supertuxkart/src/challenges/jungle_follow.hpp 2008-07-29 04:30:44 UTC (rev 2188) +++ trunk/supertuxkart/src/challenges/jungle_follow.hpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -1,33 +0,0 @@ -// $Id$ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#ifndef JUNGLE_FOLLOW_H -#define JUNGLE_FOLLOW_H - -#include "challenges/challenge.hpp" - -class JungleFollow : public Challenge -{ -public: - JungleFollow(); - virtual bool raceFinished(); - virtual void setRace() const; -}; // JungleFollow - -#endif /*JUNGLE_FOLLOW_H*/ Deleted: trunk/supertuxkart/src/challenges/moon_and_back_gp.cpp =================================================================== --- trunk/supertuxkart/src/challenges/moon_and_back_gp.cpp 2008-07-29 04:30:44 UTC (rev 2188) +++ trunk/supertuxkart/src/challenges/moon_and_back_gp.cpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -1,64 +0,0 @@ -// $Id$ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be ruseful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#include "translation.hpp" -#include "challenges/moon_and_back_gp.hpp" -#include "race_manager.hpp" -#include "world.hpp" - -MoonAndBackGP::MoonAndBackGP() : Challenge("moonandbackgp",_("Win To the Moon and Back\nGrand Prix")) -{ - setChallengeDescription(_("Win the To the Moon and Back\nGrand Prix with 3 'Racer'\nLevel AI karts.")); - addUnlockGPReward("Snag Drive"); - // The energyshiftingsands challenge must be done, otherwise gp2 can't be selected - // Thejunglefollow challenge must be done, to get city for gp3 - addDependency("energyshiftingsands"); - addDependency("junglefollow"); -} - -//----------------------------------------------------------------------------- -void MoonAndBackGP::setRace() const { - race_manager->setMajorMode(RaceManager::RM_GRAND_PRIX); - race_manager->setMinorMode(RaceManager::RM_QUICK_RACE); - CupData cup("gp2.cup"); - race_manager->setGrandPrix(cup); - race_manager->setDifficulty(RaceManager::RD_HARD); - race_manager->setNumKarts(4); - race_manager->setNumPlayers(1); -} // setRace - -//----------------------------------------------------------------------------- -bool MoonAndBackGP::grandPrixFinished() -{ - if (race_manager->getMajorMode() != RaceManager::RM_GRAND_PRIX || - race_manager->getMinorMode() != RaceManager::RM_QUICK_RACE || - race_manager->getGrandPrix()->getName() != _("To the Moon and Back") || - race_manager->getDifficulty()!= RaceManager::RD_HARD || - race_manager->getNumKarts() < 4 || - race_manager->getNumPlayers() > 1) return false; - // Check if the player was in top 3: - for(int i=0; i<(int)race_manager->getNumKarts(); i++) - { - const Kart* k=world->getKart(i); - if(k->isPlayerKart() && !k->isEliminated()) return k->getPosition()==1; - } - return false; - -} // grandPrixFinished -//----------------------------------------------------------------------------- Deleted: trunk/supertuxkart/src/challenges/moon_and_back_gp.hpp =================================================================== --- trunk/supertuxkart/src/challenges/moon_and_back_gp.hpp 2008-07-29 04:30:44 UTC (rev 2188) +++ trunk/supertuxkart/src/challenges/moon_and_back_gp.hpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -1,36 +0,0 @@ -// $Id$ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#ifndef MOON_AND_BACK_GP_H -#define MOON_AND_BACK_GP_H - - -#include "challenges/challenge.hpp" - -class MoonAndBackGP : public Challenge -{ -public: - MoonAndBackGP(); - virtual bool grandPrixFinished(); - virtual void setRace() const; - -}; - - -#endif /*MOON_AND_BACK_GP_H*/ Deleted: trunk/supertuxkart/src/challenges/race_track_time.cpp =================================================================== --- trunk/supertuxkart/src/challenges/race_track_time.cpp 2008-07-29 04:30:44 UTC (rev 2188) +++ trunk/supertuxkart/src/challenges/race_track_time.cpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -1,54 +0,0 @@ -// $Id: race_track_time.cpp 1259 2007-09-24 12:28:19Z hiker $ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be ruseful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#include <algorithm> -#include "translation.hpp" -#include "challenges/race_track_time.hpp" -#include "world.hpp" -#include "race_manager.hpp" - -RaceTrackTime::RaceTrackTime() : Challenge("racetracktime", _("Finish Race track in 1:15")) -{ - setChallengeDescription(_("Finish 3 laps in the Race track\nwith 3 AI karts\nin under 1:15 minutes.")); - addUnlockTrackReward("jungle"); -} // RaceTrackTime - -//----------------------------------------------------------------------------- -void RaceTrackTime::setRace() const { - race_manager->setMajorMode(RaceManager::RM_SINGLE); - race_manager->setMinorMode(RaceManager::RM_QUICK_RACE); - race_manager->setTrack("race"); - race_manager->setDifficulty(RaceManager::RD_EASY); - race_manager->setNumLaps(3); - race_manager->setNumKarts(4); - race_manager->setNumPlayers(1); -} // setRace - -//----------------------------------------------------------------------------- -bool RaceTrackTime::raceFinished() -{ - std::string track_name = world->getTrack()->getIdent(); - if(track_name!="race" ) return false; // wrong track - Kart* kart=world->getPlayerKart(0); - if(kart->getFinishTime()>75) return false; // too slow - if(kart->getLap()!=3 ) return false; // wrong number of laps - if(race_manager->getNumKarts()<4) return false; //not enough AI karts - return true; -} // raceFinished -//----------------------------------------------------------------------------- Deleted: trunk/supertuxkart/src/challenges/race_track_time.hpp =================================================================== --- trunk/supertuxkart/src/challenges/race_track_time.hpp 2008-07-29 04:30:44 UTC (rev 2188) +++ trunk/supertuxkart/src/challenges/race_track_time.hpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -1,36 +0,0 @@ -// $Id: race_track_time.hpp 1259 2007-09-24 12:28:19Z hiker $ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#ifndef HEADER_RACE_TRACK_TIME_H -#define HEADER_RACE_TRACK_TIME_H - -#include <string> -#include <vector> - -#include "challenges/challenge.hpp" - -class RaceTrackTime : public Challenge -{ -public: - RaceTrackTime(); - virtual bool raceFinished(); - virtual void setRace() const; -}; // RaceTrackTime - -#endif Deleted: trunk/supertuxkart/src/challenges/tollway_head2head.cpp =================================================================== --- trunk/supertuxkart/src/challenges/tollway_head2head.cpp 2008-07-29 04:30:44 UTC (rev 2188) +++ trunk/supertuxkart/src/challenges/tollway_head2head.cpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -1,57 +0,0 @@ -// $Id$ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be ruseful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#include "translation.hpp" -#include "tollway_head2head.hpp" -#include "world.hpp" -#include "race_manager.hpp" - -TollwayHead2Head::TollwayHead2Head() : Challenge("tollwayhead", _("Win a Head to Head on\nTux Tollway")) -{ - setChallengeDescription(_("Win a 1 lap Head to Head\non Tux Tollway against 1 'Racer'\nlevel AI kart.")); - addUnlockTrackReward("fortmagma"); -} - -//----------------------------------------------------------------------------- -void TollwayHead2Head::setRace() const { - race_manager->setMajorMode(RaceManager::RM_SINGLE); - race_manager->setMinorMode(RaceManager::RM_TIME_TRIAL); - race_manager->setTrack("tuxtrack"); - race_manager->setDifficulty(RaceManager::RD_HARD); - race_manager->setNumLaps(1); - race_manager->setNumKarts(2); - race_manager->setNumPlayers(1); -} // setRace - -//----------------------------------------------------------------------------- -bool TollwayHead2Head::raceFinished() -{ - std::string track_name = world->getTrack()->getIdent(); - if(track_name!="tuxtrack" ) return false; // wrong track - Kart* kart=world->getPlayerKart(0); - if(kart->getLap()!=1 ) return false; // wrong number of laps - if(race_manager->getNumKarts()!=2 ) return false; //wrong number of AI karts - // Check if the player was first: - for(int i=0; i<(int)race_manager->getNumKarts(); i++) - { - const Kart* k=world->getKart(i); - if(k->isPlayerKart() && !k->isEliminated()) return k->getPosition()==1; - } - return false; -} // raceFinished Deleted: trunk/supertuxkart/src/challenges/tollway_head2head.hpp =================================================================== --- trunk/supertuxkart/src/challenges/tollway_head2head.hpp 2008-07-29 04:30:44 UTC (rev 2188) +++ trunk/supertuxkart/src/challenges/tollway_head2head.hpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -1,35 +0,0 @@ -// $Id$ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#ifndef TOLLWAY_HEAD2HEAD_H -#define TOLLWAY_HEAD2HEAD_H - - -#include "challenge.hpp" - -class TollwayHead2Head : public Challenge -{ -public: - TollwayHead2Head(); - virtual bool raceFinished(); - virtual void setRace() const; -}; // TollwayHead2Head - - -#endif /*TOLLWAY_HEAD2HHEAD*/ Deleted: trunk/supertuxkart/src/challenges/tollway_time.cpp =================================================================== --- trunk/supertuxkart/src/challenges/tollway_time.cpp 2008-07-29 04:30:44 UTC (rev 2188) +++ trunk/supertuxkart/src/challenges/tollway_time.cpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -1,53 +0,0 @@ -// $Id$ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be ruseful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#include "translation.hpp" -#include "challenges/tollway_time.hpp" -#include "world.hpp" -#include "race_manager.hpp" - -TollwayTime::TollwayTime() : Challenge("tollwaytime", _("Finish Tux Tollway track in 3:00")) -{ - setChallengeDescription(_("Finish 3 laps on the Tux Tollway\ntrack with 3 AI karts\nin under 3:00 minutes.")); - addUnlockTrackReward("canyon"); -} // TollwayTime - -//----------------------------------------------------------------------------- -void TollwayTime::setRace() const { - race_manager->setMajorMode(RaceManager::RM_SINGLE); - race_manager->setMinorMode(RaceManager::RM_QUICK_RACE); - race_manager->setTrack("tuxtrack"); - race_manager->setDifficulty(RaceManager::RD_EASY); - race_manager->setNumLaps(3); - race_manager->setNumKarts(4); - race_manager->setNumPlayers(1); -} // setRace - -//----------------------------------------------------------------------------- -bool TollwayTime::raceFinished() -{ - std::string track_name = world->getTrack()->getIdent(); - if(track_name!="tuxtrack" ) return false; // wrong track - Kart* kart=world->getPlayerKart(0); - if(kart->getFinishTime()>180) return false; // too slow - if(kart->getLap()!=3 ) return false; // wrong number of laps - if(race_manager->getNumKarts()<4) return false; //not enough AI karts - return true; -} // raceFinished -//----------------------------------------------------------------------------- Deleted: trunk/supertuxkart/src/challenges/tollway_time.hpp =================================================================== --- trunk/supertuxkart/src/challenges/tollway_time.hpp 2008-07-29 04:30:44 UTC (rev 2188) +++ trunk/supertuxkart/src/challenges/tollway_time.hpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -1,36 +0,0 @@ -// $Id$ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#ifndef TOLLWAY_TIME_H -#define TOLLWAY_TIME_H -#include <string> -#include <vector> - -#include "challenges/challenge.hpp" - -class TollwayTime : public Challenge -{ -public: - TollwayTime(); - virtual bool raceFinished(); - virtual void setRace() const; -}; // TollwayTime - - -#endif /*TOLLWAY_TIME_H*/ Modified: trunk/supertuxkart/src/gui/char_sel.cpp =================================================================== --- trunk/supertuxkart/src/gui/char_sel.cpp 2008-07-29 04:30:44 UTC (rev 2188) +++ trunk/supertuxkart/src/gui/char_sel.cpp 2008-07-29 04:45:28 UTC (rev 2189) @@ -149,31 +149,31 @@ //----------------------------------------------------------------------------- void CharSel::updateScrollPosition() { - // Handle the special case of less karts (plus groups) than widgets. - // Some of the widgets then need to be disabled. - unsigned int start = 0, end=m_max_entries; - if(m_index_avail_karts.size()<m_max_entries) + // Handle the special case of less karts (plus groups) than widgets. + // Some of the widgets then need to be disabled. + unsigned int start = 0, end=m_max_entries; + if(m_index_avail_karts.size()<m_max_entries) + { + start = (unsigned int)(m_max_entries-m_index_avail_karts.size()+1)/2; + end = start+m_index_avail_karts.size()-1; + } + + for(unsigned int i=0; i<m_max_entries; i++) + { + if(i<start || i>end) { - start = (unsigned int)(m_max_entries-m_index_avail_karts.size()+1)/2; - end = start+m_index_avail_karts.size()-1; + widget_manager->hideWgtRect (WTOK_NAME0 +i); + widget_manager->hideWgtRect (WTOK_RACER0+i); + widget_manager->hideWgtText (WTOK_NAME0 +i); + widget_manager->hideWgtTexture(WTOK_RACER0+i); + continue; } - for(unsigned int i=0; i<m_max_entries; i++) - { - if(i<start || i>end) - { - widget_manager->hideWgtRect (WTOK_NAME0 +i); - widget_manager->hideWgtRect (WTOK_RACER0+i); - widget_manager->hideWgtText (WTOK_NAME0 +i); - widget_manager->hideWgtTexture(WTOK_RACER0+i); - continue; - } + // Otherwise enable the widgets again (just in case that they + // had been disabled before) + widget_manager->showWgtRect (WTOK_NAME0 +i); + ... [truncated message content] |
From: <hik...@us...> - 2008-07-29 05:38:35
|
Revision: 2190 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2190&view=rev Author: hikerstk Date: 2008-07-29 05:38:30 +0000 (Tue, 29 Jul 2008) Log Message: ----------- 1) Bugfix: GP were not locked. 2) Renamed all 'cups' into grand_prix. 3) Removed obsolete source files. Modified Paths: -------------- trunk/supertuxkart/data/grandprix/alltracks.grandprix trunk/supertuxkart/data/grandprix/atworldsend.grandprix trunk/supertuxkart/data/grandprix/penguinplayground.grandprix trunk/supertuxkart/data/grandprix/snagdrive.grandprix trunk/supertuxkart/data/grandprix/tothemoonandback.grandprix trunk/supertuxkart/src/challenges/challenge_data.cpp trunk/supertuxkart/src/grand_prix_manager.cpp trunk/supertuxkart/src/grand_prix_manager.hpp trunk/supertuxkart/src/gui/grand_prix_select.cpp trunk/supertuxkart/src/gui/grand_prix_select.hpp trunk/supertuxkart/src/herring_manager.hpp trunk/supertuxkart/src/ide/vc9/supertuxkart.vcproj trunk/supertuxkart/src/race_manager.cpp trunk/supertuxkart/src/race_manager.hpp trunk/supertuxkart/src/world.cpp Added Paths: ----------- trunk/supertuxkart/src/grand_prix_data.cpp trunk/supertuxkart/src/grand_prix_data.hpp Removed Paths: ------------- trunk/supertuxkart/src/challenges/penguin_playground_gp.cpp trunk/supertuxkart/src/challenges/penguin_playground_gp.hpp trunk/supertuxkart/src/challenges/worlds_end_gp.cpp trunk/supertuxkart/src/challenges/worlds_end_gp.hpp trunk/supertuxkart/src/cup_data.cpp trunk/supertuxkart/src/cup_data.hpp Modified: trunk/supertuxkart/data/grandprix/alltracks.grandprix =================================================================== --- trunk/supertuxkart/data/grandprix/alltracks.grandprix 2008-07-29 04:45:28 UTC (rev 2189) +++ trunk/supertuxkart/data/grandprix/alltracks.grandprix 2008-07-29 05:38:30 UTC (rev 2190) @@ -1,6 +1,6 @@ ;; -*- mode: lisp -*- -(supertuxkart-cup +(supertuxkart-grand-prix (name _("All tracks")) (description _("All tracks included in SuperTuxKart")) (tracks "beach" "startrack" "lighthouse" "jungle" "volcano" "islandtrack" "sandtrack" "fortmagma" "snowtuxpeak" "crescentcrossing" "olivermath" "race" "city" "canyon" "subseatrack" "tuxtrack") Modified: trunk/supertuxkart/data/grandprix/atworldsend.grandprix =================================================================== --- trunk/supertuxkart/data/grandprix/atworldsend.grandprix 2008-07-29 04:45:28 UTC (rev 2189) +++ trunk/supertuxkart/data/grandprix/atworldsend.grandprix 2008-07-29 05:38:30 UTC (rev 2190) @@ -1,6 +1,6 @@ ;; -*- mode: lisp -*- -(supertuxkart-cup +(supertuxkart-grand-prix (name _("At world's end")) (description _("Last grand prix, longer and harder")) (tracks "fortmagma" "canyon" "subseatrack" "volcano" "snowtuxpeak") Modified: trunk/supertuxkart/data/grandprix/penguinplayground.grandprix =================================================================== --- trunk/supertuxkart/data/grandprix/penguinplayground.grandprix 2008-07-29 04:45:28 UTC (rev 2189) +++ trunk/supertuxkart/data/grandprix/penguinplayground.grandprix 2008-07-29 05:38:30 UTC (rev 2190) @@ -1,6 +1,6 @@ ;; -*- mode: lisp -*- -(supertuxkart-cup +(supertuxkart-grand-prix (name _("Penguin Playground")) (description _("First grand prix, easy to get started")) (tracks "tuxtrack" "race" "olivermath") Modified: trunk/supertuxkart/data/grandprix/snagdrive.grandprix =================================================================== --- trunk/supertuxkart/data/grandprix/snagdrive.grandprix 2008-07-29 04:45:28 UTC (rev 2189) +++ trunk/supertuxkart/data/grandprix/snagdrive.grandprix 2008-07-29 05:38:30 UTC (rev 2190) @@ -1,6 +1,6 @@ ;; -*- mode: lisp -*- -(supertuxkart-cup +(supertuxkart-grand-prix (name _("Snag Drive")) (description _("Third grand prix")) (tracks "islandtrack" "sandtrack" "city" "crescentcrossing") Modified: trunk/supertuxkart/data/grandprix/tothemoonandback.grandprix =================================================================== --- trunk/supertuxkart/data/grandprix/tothemoonandback.grandprix 2008-07-29 04:45:28 UTC (rev 2189) +++ trunk/supertuxkart/data/grandprix/tothemoonandback.grandprix 2008-07-29 05:38:30 UTC (rev 2190) @@ -1,6 +1,6 @@ ;; -*- mode: lisp -*- -(supertuxkart-cup +(supertuxkart-grand-prix (name _("To the Moon and Back")) (description _("Second grand prix")) (tracks "beach" "startrack" "jungle" "lighthouse") Modified: trunk/supertuxkart/src/challenges/challenge_data.cpp =================================================================== --- trunk/supertuxkart/src/challenges/challenge_data.cpp 2008-07-29 04:45:28 UTC (rev 2189) +++ trunk/supertuxkart/src/challenges/challenge_data.cpp 2008-07-29 05:38:30 UTC (rev 2190) @@ -23,7 +23,7 @@ #include "lisp/parser.hpp" #include "translation.hpp" #include "world.hpp" -#include "cup_data.hpp" +#include "grand_prix_data.hpp" #include "grand_prix_manager.hpp" #if defined(WIN32) && !defined(__CYGWIN__) @@ -198,8 +198,8 @@ else // GP { race_manager->setMinorMode(m_minor); - const CupData *cup = grand_prix_manager->getCup(m_gp_id); - race_manager->setGrandPrix(*cup); + const GrandPrixData *gp = grand_prix_manager->getGrandPrix(m_gp_id); + race_manager->setGrandPrix(*gp); race_manager->setDifficulty(m_difficulty); race_manager->setNumKarts(m_num_karts); race_manager->setNumPlayers(1); Deleted: trunk/supertuxkart/src/challenges/penguin_playground_gp.cpp =================================================================== --- trunk/supertuxkart/src/challenges/penguin_playground_gp.cpp 2008-07-29 04:45:28 UTC (rev 2189) +++ trunk/supertuxkart/src/challenges/penguin_playground_gp.cpp 2008-07-29 05:38:30 UTC (rev 2190) @@ -1,61 +0,0 @@ -// $Id$ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be ruseful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#include "translation.hpp" -#include "challenges/penguin_playground_gp.hpp" -#include "race_manager.hpp" -#include "world.hpp" - -PenguinPlaygroundGP::PenguinPlaygroundGP() : Challenge("penguinplaygroundgp", _("Win Penguin Playground Grand\nPrix")) -{ - setChallengeDescription(_("Win Penguin Playground Grand\nPrix with 3 'Racer' Level AI karts.")); - addUnlockModeReward("followleader", _("Follow the Leader")); - // The energymathclass challenge must be done, otherwise GP can't be selected -} - -//----------------------------------------------------------------------------- -void PenguinPlaygroundGP::setRace() const { - race_manager->setMajorMode(RaceManager::RM_GRAND_PRIX); - race_manager->setMinorMode(RaceManager::RM_QUICK_RACE); - CupData cup("gp1.cup"); - race_manager->setGrandPrix(cup); - race_manager->setDifficulty(RaceManager::RD_HARD); - race_manager->setNumKarts(4); - race_manager->setNumPlayers(1); -} // setRace - -//----------------------------------------------------------------------------- -bool PenguinPlaygroundGP::grandPrixFinished() -{ - if (race_manager->getMajorMode() != RaceManager::RM_GRAND_PRIX || - race_manager->getMinorMode() != RaceManager::RM_QUICK_RACE || - race_manager->getGrandPrix()->getName() != _("Penguin Playground") || - race_manager->getDifficulty()!= RaceManager::RD_HARD || - race_manager->getNumKarts() < 4 || - race_manager->getNumPlayers() > 1) return false; - // Check if the player was in top 3: - for(int i=0; i<(int)race_manager->getNumKarts(); i++) - { - const Kart* k=world->getKart(i); - if(k->isPlayerKart() && !k->isEliminated()) return k->getPosition()==1; - } - return false; - -} // grandPrixFinished -//----------------------------------------------------------------------------- Deleted: trunk/supertuxkart/src/challenges/penguin_playground_gp.hpp =================================================================== --- trunk/supertuxkart/src/challenges/penguin_playground_gp.hpp 2008-07-29 04:45:28 UTC (rev 2189) +++ trunk/supertuxkart/src/challenges/penguin_playground_gp.hpp 2008-07-29 05:38:30 UTC (rev 2190) @@ -1,34 +0,0 @@ -// $Id$ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#ifndef PENGUIN_PLAYGROUND_GP_H -#define PENGUIN_PLAYGROUND_GP_H - -#include "challenges/challenge.hpp" - -class PenguinPlaygroundGP : public Challenge -{ -public: - PenguinPlaygroundGP(); - virtual bool grandPrixFinished(); - virtual void setRace() const; - -}; - -#endif /*PENGUIN_PLAYGROUND_GP_H*/ Deleted: trunk/supertuxkart/src/challenges/worlds_end_gp.cpp =================================================================== --- trunk/supertuxkart/src/challenges/worlds_end_gp.cpp 2008-07-29 04:45:28 UTC (rev 2189) +++ trunk/supertuxkart/src/challenges/worlds_end_gp.cpp 2008-07-29 05:38:30 UTC (rev 2190) @@ -1,69 +0,0 @@ -// $Id$ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be ruseful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#include "translation.hpp" -#include "worlds_end_gp.hpp" -#include "race_manager.hpp" -#include "world.hpp" - -WorldsEndGP::WorldsEndGP() : Challenge("worldsendgp",_("Win the At World's End\nGrand Prix")) -{ - setChallengeDescription(_("Come first in the At World's End\nGrand Prix with 3 'Racer'\nLevel AI karts.")); - - addUnlockDifficultyReward("skidding","Skidding Preview"); - addUnlockGPReward("All tracks"); - - addDependency("islandfollow"); - addDependency("racetracktime"); - addDependency("tollwaytime"); - addDependency("junglefollow"); - addDependency("citytime"); - addDependency("tollwayhead"); -} - -//----------------------------------------------------------------------------- -void WorldsEndGP::setRace() const { - race_manager->setMajorMode(RaceManager::RM_GRAND_PRIX); - race_manager->setMinorMode(RaceManager::RM_QUICK_RACE); - CupData cup("gp4.cup"); - race_manager->setGrandPrix(cup); - race_manager->setDifficulty(RaceManager::RD_HARD); - race_manager->setNumKarts(4); - race_manager->setNumPlayers(1); -} // setRace - -//----------------------------------------------------------------------------- -bool WorldsEndGP::grandPrixFinished() -{ - if (race_manager->getMajorMode() != RaceManager::RM_GRAND_PRIX || - race_manager->getMinorMode() != RaceManager::RM_QUICK_RACE || - race_manager->getGrandPrix()->getName() != _("At world's end") || - race_manager->getDifficulty()!= RaceManager::RD_HARD || - race_manager->getNumKarts() < 4 || - race_manager->getNumPlayers() > 1) return false; - // Check if the player was first: - for(int i=0; i<(int)race_manager->getNumKarts(); i++) - { - const Kart* k=world->getKart(i); - if(k->isPlayerKart() && !k->isEliminated()) return k->getPosition()==1; - } - return false; - -} // grandPrixFinished -//----------------------------------------------------------------------------- Deleted: trunk/supertuxkart/src/challenges/worlds_end_gp.hpp =================================================================== --- trunk/supertuxkart/src/challenges/worlds_end_gp.hpp 2008-07-29 04:45:28 UTC (rev 2189) +++ trunk/supertuxkart/src/challenges/worlds_end_gp.hpp 2008-07-29 05:38:30 UTC (rev 2190) @@ -1,36 +0,0 @@ -// $Id$ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2008 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#ifndef WORLDS_END_GP_H -#define WORLDS_END_GP_H - - -#include "challenge.hpp" - -class WorldsEndGP : public Challenge -{ -public: - WorldsEndGP(); - virtual bool grandPrixFinished(); - virtual void setRace() const; - -}; - - -#endif /*WORLDS_END_GP_H*/ Deleted: trunk/supertuxkart/src/cup_data.cpp =================================================================== --- trunk/supertuxkart/src/cup_data.cpp 2008-07-29 04:45:28 UTC (rev 2189) +++ trunk/supertuxkart/src/cup_data.cpp 2008-07-29 05:38:30 UTC (rev 2190) @@ -1,76 +0,0 @@ -// $Id$ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2004-2005 Ingo Ruhnke <gr...@gm...> -// Copyright (C) 2006 Joerg Henrichs, Ingo Ruhnke <gr...@gm...> -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#include <iostream> -#include <stdexcept> -#include "file_manager.hpp" -#include "lisp/parser.hpp" -#include "lisp/lisp.hpp" -#include "cup_data.hpp" -#include "string_utils.hpp" -#include "track_manager.hpp" - -CupData::CupData(const std::string filename) -{ - m_filename = filename; - m_id = StringUtils::without_extension(filename); - const lisp::Lisp* lisp = 0; - try - { - lisp::Parser parser; - lisp = parser.parse(file_manager->getConfigFile(m_filename)); - - lisp = lisp->getLisp("supertuxkart-cup"); - if(!lisp) - { - throw std::runtime_error("No supertuxkart-cup node"); - } - - lisp->get ("name", m_name ); - lisp->get ("description", m_description ); - lisp->get ("herring", m_herring_style); - lisp->getVector("tracks", m_tracks ); - lisp->getVector("laps", m_laps ); - } - catch(std::exception& err) - { - fprintf(stderr, "Error while reading cup file '%s'\n", filename.c_str()); - fprintf(stderr, err.what()); - fprintf(stderr, "\n"); - } - - delete lisp; -} -// ---------------------------------------------------------------------------- -bool CupData::checkConsistency() -{ - bool correct=true; - for(unsigned int i=0; i<m_tracks.size(); i++) - { - if(!track_manager->getTrack(m_tracks[i])) - { - fprintf(stderr, "Grand Prix '%s': Track '%s' does not exist!", - m_name.c_str(), m_tracks[i]); - correct=false; - } - } // for i - return correct; -} -/* EOF */ Deleted: trunk/supertuxkart/src/cup_data.hpp =================================================================== --- trunk/supertuxkart/src/cup_data.hpp 2008-07-29 04:45:28 UTC (rev 2189) +++ trunk/supertuxkart/src/cup_data.hpp 2008-07-29 05:38:30 UTC (rev 2190) @@ -1,70 +0,0 @@ -// $Id$ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2004-2006 Ingo Ruhnke <gr...@gm...> -// Copyright (C) 2006 Joerg Henirchs, Ingo Ruhnke <gr...@gm...> -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#ifndef HEADER_CUPDATA_H -#define HEADER_CUPDATA_H - -#include <string> -#include <vector> -#include <cassert> - -#include "herring_manager.hpp" - -/** Simple class that hold the data relevant to a 'cup', aka. a number - of races that has to be completed one after the other */ -class CupData -{ - std::string m_name; // The name of the cup - might be translated! - std::string m_id; // Internal name of the cup, not translated - std::string m_filename; // Original filename, only for error handling needed - std::string m_description; // Description for this track - std::string m_herring_style; // herring style which overwrites the track default - /** The ident of the tracks in this cup in their right order, ident - means the filename of the .track file without .track extension - (ie. 'volcano') */ - std::vector<std::string> m_tracks; - /** The number of laps that each track should be raced, in the right - * order*/ - std::vector<int> m_laps; - -public: - - /** Load the CupData from the given filename */ - CupData (const std::string filename); - CupData () {}; // empty for initialising - const std::string& getName () const { return m_name; } - const std::string& getId () const { return m_id; } - const std::string& getDescription () const { return m_description; } - const std::string& getHerringStyle() const { return m_herring_style; } - const std::string& getFilename () const { return m_filename; } - const std::string& getTrack(size_t track_index) const { assert(track_index < m_tracks.size()); - return m_tracks[track_index]; } - const std::vector<std::string>& getTracks() const {return m_tracks; } - const std::vector<int>& getLaps() const {return m_laps; } - size_t getTrackCount() const {return m_tracks.size(); } - const int& getLaps(size_t lap_index) const {assert(lap_index < m_tracks.size()); - return m_laps[lap_index]; } - bool checkConsistency(); -} -; // CupData - -#endif - -/* EOF */ Copied: trunk/supertuxkart/src/grand_prix_data.cpp (from rev 2188, trunk/supertuxkart/src/cup_data.cpp) =================================================================== --- trunk/supertuxkart/src/grand_prix_data.cpp (rev 0) +++ trunk/supertuxkart/src/grand_prix_data.cpp 2008-07-29 05:38:30 UTC (rev 2190) @@ -0,0 +1,76 @@ +// $Id$ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2004-2005 Ingo Ruhnke <gr...@gm...> +// Copyright (C) 2006 Joerg Henrichs, Ingo Ruhnke <gr...@gm...> +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include <iostream> +#include <stdexcept> +#include "file_manager.hpp" +#include "lisp/parser.hpp" +#include "lisp/lisp.hpp" +#include "grand_prix_data.hpp" +#include "string_utils.hpp" +#include "track_manager.hpp" + +GrandPrixData::GrandPrixData(const std::string filename) +{ + m_filename = filename; + m_id = StringUtils::basename(StringUtils::without_extension(filename)); + const lisp::Lisp* lisp = 0; + try + { + lisp::Parser parser; + lisp = parser.parse(file_manager->getConfigFile(m_filename)); + + lisp = lisp->getLisp("supertuxkart-grand-prix"); + if(!lisp) + { + throw std::runtime_error("No supertuxkart-grand-prix node"); + } + + lisp->get ("name", m_name ); + lisp->get ("description", m_description ); + lisp->get ("herring", m_herring_style); + lisp->getVector("tracks", m_tracks ); + lisp->getVector("laps", m_laps ); + } + catch(std::exception& err) + { + fprintf(stderr, "Error while reading grandprix file '%s'\n", filename.c_str()); + fprintf(stderr, err.what()); + fprintf(stderr, "\n"); + } + + delete lisp; +} +// ---------------------------------------------------------------------------- +bool GrandPrixData::checkConsistency() +{ + bool correct=true; + for(unsigned int i=0; i<m_tracks.size(); i++) + { + if(!track_manager->getTrack(m_tracks[i])) + { + fprintf(stderr, "Grand Prix '%s': Track '%s' does not exist!", + m_name.c_str(), m_tracks[i]); + correct=false; + } + } // for i + return correct; +} +/* EOF */ Copied: trunk/supertuxkart/src/grand_prix_data.hpp (from rev 2188, trunk/supertuxkart/src/cup_data.hpp) =================================================================== --- trunk/supertuxkart/src/grand_prix_data.hpp (rev 0) +++ trunk/supertuxkart/src/grand_prix_data.hpp 2008-07-29 05:38:30 UTC (rev 2190) @@ -0,0 +1,70 @@ +// $Id$ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2004-2006 Ingo Ruhnke <gr...@gm...> +// Copyright (C) 2006 Joerg Henirchs, Ingo Ruhnke <gr...@gm...> +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_GRAND_PRIX_DATA_H +#define HEADER_GRAND_PRIX_DATA_H + +#include <string> +#include <vector> +#include <cassert> + +#include "herring_manager.hpp" + +/** Simple class that hold the data relevant to a 'grand_prix', aka. a number + of races that has to be completed one after the other */ +class GrandPrixData +{ + std::string m_name; // The name of the grand prix - might be translated! + std::string m_id; // Internal name of the grand prix, not translated + std::string m_filename; // Original filename, only for error handling needed + std::string m_description; // Description for this track + std::string m_herring_style; // herring style which overwrites the track default + /** The ident of the tracks in this grand prix in their right order, ident + means the filename of the .track file without .track extension + (ie. 'volcano') */ + std::vector<std::string> m_tracks; + /** The number of laps that each track should be raced, in the right + * order*/ + std::vector<int> m_laps; + +public: + + /** Load the GrandPrixData from the given filename */ + GrandPrixData (const std::string filename); + GrandPrixData () {}; // empty for initialising + const std::string& getName () const { return m_name; } + const std::string& getId () const { return m_id; } + const std::string& getDescription () const { return m_description; } + const std::string& getHerringStyle() const { return m_herring_style; } + const std::string& getFilename () const { return m_filename; } + const std::string& getTrack(size_t track_index) const { assert(track_index < m_tracks.size()); + return m_tracks[track_index]; } + const std::vector<std::string>& getTracks() const {return m_tracks; } + const std::vector<int>& getLaps() const {return m_laps; } + size_t getTrackCount() const {return m_tracks.size(); } + const int& getLaps(size_t lap_index) const {assert(lap_index < m_tracks.size()); + return m_laps[lap_index];} + bool checkConsistency(); +} +; // GrandPrixData + +#endif + +/* EOF */ Modified: trunk/supertuxkart/src/grand_prix_manager.cpp =================================================================== --- trunk/supertuxkart/src/grand_prix_manager.cpp 2008-07-29 04:45:28 UTC (rev 2189) +++ trunk/supertuxkart/src/grand_prix_manager.cpp 2008-07-29 05:38:30 UTC (rev 2190) @@ -43,31 +43,31 @@ // ---------------------------------------------------------------------------- GrandPrixManager::~GrandPrixManager() { - for(unsigned int i=0; i<m_cup_data.size(); i++) + for(unsigned int i=0; i<m_gp_data.size(); i++) { - delete m_cup_data[i]; + delete m_gp_data[i]; } // for i } // ~GrandPrixManager // ---------------------------------------------------------------------------- -const CupData* GrandPrixManager::getCup(const std::string& s) const +const GrandPrixData* GrandPrixManager::getGrandPrix(const std::string& s) const { - for(unsigned int i=0; i<m_cup_data.size(); i++) - if(m_cup_data[i]->getId()==s) return m_cup_data[i]; + for(unsigned int i=0; i<m_gp_data.size(); i++) + if(m_gp_data[i]->getId()==s) return m_gp_data[i]; return NULL; -} // getCup +} // getGrandPrix // ---------------------------------------------------------------------------- void GrandPrixManager::load(const std::string& filename) { - m_cup_data.push_back(new CupData(filename)); + m_gp_data.push_back(new GrandPrixData(filename)); } // load // ---------------------------------------------------------------------------- void GrandPrixManager::checkConsistency() { - for(unsigned int i=0; i<m_cup_data.size(); i++) + for(unsigned int i=0; i<m_gp_data.size(); i++) { - m_cup_data[i]->checkConsistency(); + m_gp_data[i]->checkConsistency(); } } // checkConsistency // ---------------------------------------------------------------------------- Modified: trunk/supertuxkart/src/grand_prix_manager.hpp =================================================================== --- trunk/supertuxkart/src/grand_prix_manager.hpp 2008-07-29 04:45:28 UTC (rev 2189) +++ trunk/supertuxkart/src/grand_prix_manager.hpp 2008-07-29 05:38:30 UTC (rev 2190) @@ -22,20 +22,20 @@ #include <vector> #include <string> -#include "cup_data.hpp" +#include "grand_prix_data.hpp" class GrandPrixManager { private: - std::vector<CupData*> m_cup_data; + std::vector<GrandPrixData*> m_gp_data; public: - GrandPrixManager(); - ~GrandPrixManager(); - void load(const std::string &filename); - const CupData* getCup(int i) const { return m_cup_data[i]; } - const CupData* getCup(const std::string& s) const; - unsigned int getNumberOfGrandPrix() const { return m_cup_data.size(); } - void checkConsistency(); + GrandPrixManager(); + ~GrandPrixManager(); + void load(const std::string &filename); + const GrandPrixData* getGrandPrix(int i) const { return m_gp_data[i]; } + const GrandPrixData* getGrandPrix(const std::string& s) const; + unsigned int getNumberOfGrandPrix() const { return m_gp_data.size(); } + void checkConsistency(); }; // GrandPrixManager Modified: trunk/supertuxkart/src/gui/grand_prix_select.cpp =================================================================== --- trunk/supertuxkart/src/gui/grand_prix_select.cpp 2008-07-29 04:45:28 UTC (rev 2189) +++ trunk/supertuxkart/src/gui/grand_prix_select.cpp 2008-07-29 05:38:30 UTC (rev 2190) @@ -51,9 +51,9 @@ m_gp_index.clear(); for(unsigned int i=0; i<grand_prix_manager->getNumberOfGrandPrix(); i++) { - const CupData *cup = grand_prix_manager->getCup(i); - if(unlock_manager->isLocked(cup->getName())) continue; - widget_manager->addTextButtonWgt(WTOK_FIRSTPRIX + nId, 60, 7, cup->getName() ); + const GrandPrixData *gp = grand_prix_manager->getGrandPrix(i); + if(unlock_manager->isLocked(gp->getId())) continue; + widget_manager->addTextButtonWgt(WTOK_FIRSTPRIX + nId, 60, 7, gp->getName() ); m_gp_index.push_back(i); nId++; } // for i @@ -97,19 +97,19 @@ if( widget_manager->selectionChanged() && !( SELECTED_TOKEN < WTOK_FIRSTPRIX )) { - const int CUP_NUM = m_gp_index[SELECTED_TOKEN - WTOK_FIRSTPRIX]; - const CupData *cup = grand_prix_manager->getCup(CUP_NUM); - const int NUM_TRACKS = cup->getTrackCount(); + const int NUM = m_gp_index[SELECTED_TOKEN - WTOK_FIRSTPRIX]; + const GrandPrixData *gp = grand_prix_manager->getGrandPrix(NUM); + const int NUM_TRACKS = gp->getTrackCount(); - widget_manager->setWgtText(WTOK_DESCRIPTION, cup->getDescription()); + widget_manager->setWgtText(WTOK_DESCRIPTION, gp->getDescription()); std::string track_list; - m_cup_tracks = cup->getTracks(); + m_gp_tracks = gp->getTracks(); for( int i = 0; i < NUM_TRACKS; ++i ) { - track_list.append( track_manager->getTrack( m_cup_tracks[i] )->getName() ); + track_list.append( track_manager->getTrack( m_gp_tracks[i] )->getName() ); track_list.push_back('\n'); } widget_manager->setWgtText( WTOK_TRACKS, track_list ); @@ -122,10 +122,10 @@ for( int i = 0; i < NUM_TRACKS; ++i ) { - img_filename = track_manager->getTrack( m_cup_tracks[i] )->getTopviewFile(); + img_filename = track_manager->getTrack( m_gp_tracks[i] )->getTopviewFile(); if( img_filename.empty() ) { - img_filename = track_manager->getTrack( m_cup_tracks[i] )->getScreenshotFile(); + img_filename = track_manager->getTrack( m_gp_tracks[i] )->getScreenshotFile(); if( img_filename.empty() ) continue; } @@ -182,8 +182,8 @@ menu_manager->popMenu(); return; } - const CupData *cup=grand_prix_manager->getCup(m_gp_index[CLICKED_TOKEN-WTOK_FIRSTPRIX]); - race_manager->setGrandPrix(*cup); + const GrandPrixData *gp=grand_prix_manager->getGrandPrix(m_gp_index[CLICKED_TOKEN-WTOK_FIRSTPRIX]); + race_manager->setGrandPrix(*gp); menu_manager->pushMenu(MENUID_RACE_OPTIONS); } // select Modified: trunk/supertuxkart/src/gui/grand_prix_select.hpp =================================================================== --- trunk/supertuxkart/src/gui/grand_prix_select.hpp 2008-07-29 04:45:28 UTC (rev 2189) +++ trunk/supertuxkart/src/gui/grand_prix_select.hpp 2008-07-29 05:38:30 UTC (rev 2190) @@ -22,12 +22,12 @@ #include <vector> #include "base_gui.hpp" -#include "cup_data.hpp" +#include "grand_prix_data.hpp" class GrandPrixSelect: public BaseGUI { -private: - std::vector<std::string> m_cup_tracks; +private: + std::vector<std::string> m_gp_tracks; std::vector<int> m_track_imgs; std::vector<unsigned int> m_gp_index; unsigned int m_curr_track_img; Modified: trunk/supertuxkart/src/herring_manager.hpp =================================================================== --- trunk/supertuxkart/src/herring_manager.hpp 2008-07-29 04:45:28 UTC (rev 2189) +++ trunk/supertuxkart/src/herring_manager.hpp 2008-07-29 05:38:30 UTC (rev 2190) @@ -42,7 +42,7 @@ ssgEntity *m_herring_model[HE_SILVER+1]; // This is the active model. It gets determined by first loading the - // default, then track models, user models, cup models. This means, that + // default, then track models, user models, grand prix models. This means that // a herring style specified in a track overwrites a command line option. std::map<std::string,ssgEntity*> m_all_models; Modified: trunk/supertuxkart/src/ide/vc9/supertuxkart.vcproj =================================================================== --- trunk/supertuxkart/src/ide/vc9/supertuxkart.vcproj 2008-07-29 04:45:28 UTC (rev 2189) +++ trunk/supertuxkart/src/ide/vc9/supertuxkart.vcproj 2008-07-29 05:38:30 UTC (rev 2190) @@ -700,10 +700,6 @@ > </File> <File - RelativePath="../../../src\cup_data.cpp" - > - </File> - <File RelativePath="../../../src\explosion.cpp" > </File> @@ -720,6 +716,10 @@ > </File> <File + RelativePath="..\..\grand_prix_data.cpp" + > + </File> + <File RelativePath="..\..\grand_prix_manager.cpp" > </File> @@ -1078,10 +1078,6 @@ RelativePath="..\..\challenges\challenge_data.cpp" > </File> - <File - RelativePath="..\..\challenges\worlds_end_gp.cpp" - > - </File> </Filter> </Filter> <Filter @@ -1138,10 +1134,6 @@ > </File> <File - RelativePath="../../../src\cup_data.hpp" - > - </File> - <File RelativePath="../../../src\explosion.hpp" > </File> @@ -1158,6 +1150,10 @@ > </File> <File + RelativePath="..\..\grand_prix_data.hpp" + > + </File> + <File RelativePath="..\..\grand_prix_manager.hpp" > </File> @@ -1552,10 +1548,6 @@ RelativePath="..\..\challenges\challenge_data.hpp" > </File> - <File - RelativePath="..\..\challenges\worlds_end_gp.hpp" - > - </File> </Filter> </Filter> <Filter Modified: trunk/supertuxkart/src/race_manager.cpp =================================================================== --- trunk/supertuxkart/src/race_manager.cpp 2008-07-29 04:45:28 UTC (rev 2189) +++ trunk/supertuxkart/src/race_manager.cpp 2008-07-29 05:38:30 UTC (rev 2190) @@ -112,10 +112,10 @@ //----------------------------------------------------------------------------- void RaceManager::startNew() { - if(m_major_mode==RM_GRAND_PRIX) // GP: get tracks and laps from cup object + if(m_major_mode==RM_GRAND_PRIX) // GP: get tracks and laps from grand prix { - m_tracks = m_cup.getTracks(); - m_num_laps = m_cup.getLaps(); + m_tracks = m_grand_prix.getTracks(); + m_num_laps = m_grand_prix.getLaps(); } assert(m_player_karts.size() > 0); Modified: trunk/supertuxkart/src/race_manager.hpp =================================================================== --- trunk/supertuxkart/src/race_manager.hpp 2008-07-29 04:45:28 UTC (rev 2189) +++ trunk/supertuxkart/src/race_manager.hpp 2008-07-29 05:38:30 UTC (rev 2190) @@ -24,7 +24,7 @@ #include <algorithm> #include <string> -#include "cup_data.hpp" +#include "grand_prix_data.hpp" /** The race manager has two functions: 1) it stores information about the race the user selected (e.g. number @@ -79,7 +79,7 @@ std::vector<int> m_num_laps; std::vector<int> m_score_for_position; int m_track_number; - CupData m_cup; + GrandPrixData m_grand_prix; int m_num_karts; unsigned int m_num_finished_karts; unsigned int m_num_finished_players; @@ -105,7 +105,7 @@ void reset(); void RaceFinished(const Kart* kart, float time); void setTrack(const std::string& track); - void setGrandPrix(const CupData &cup){ m_cup = cup; } + void setGrandPrix(const GrandPrixData &gp){ m_grand_prix = gp; } void setDifficulty(Difficulty diff); void setNumLaps(int num) { m_num_laps.clear(); m_num_laps.push_back(num); } @@ -121,14 +121,14 @@ Difficulty getDifficulty() const { return m_difficulty; } const std::string& getTrackName() const { return m_tracks[m_track_number]; } - const CupData - *getGrandPrix() const { return &m_cup; } + const GrandPrixData + *getGrandPrix() const { return &m_grand_prix; } unsigned int getFinishedKarts() const { return m_num_finished_karts; } unsigned int getFinishedPlayers() const { return m_num_finished_players; } const std::string& getKartName(int kart) const { return m_kart_status[kart].m_ident;} const std::string& - getHerringStyle() const { return m_cup.getHerringStyle(); } + getHerringStyle() const { return m_grand_prix.getHerringStyle();} int getKartScore(int krt) const { return m_kart_status[krt].m_score;} int getKartPrevScore(int krt)const { return m_kart_status[krt].m_last_score;} int getkartPlayerId(int krt) const { return m_kart_status[krt].m_player_id;} Modified: trunk/supertuxkart/src/world.cpp =================================================================== --- trunk/supertuxkart/src/world.cpp 2008-07-29 04:45:28 UTC (rev 2189) +++ trunk/supertuxkart/src/world.cpp 2008-07-29 05:38:30 UTC (rev 2190) @@ -724,7 +724,7 @@ } catch(std::runtime_error) { - fprintf(stderr, "The cup '%s' contains an invalid herring style '%s'.\n", + fprintf(stderr, "The grand prix '%s' contains an invalid herring style '%s'.\n", race_manager->getGrandPrix()->getName().c_str(), race_manager->getHerringStyle().c_str()); fprintf(stderr, "Please fix the file '%s'.\n", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2008-07-29 13:40:29
|
Revision: 2194 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2194&view=rev Author: hikerstk Date: 2008-07-29 13:40:25 +0000 (Tue, 29 Jul 2008) Log Message: ----------- 1) Changed the challenges dependencies to have not more than 3 challenges at the same time. 2) Moved reading of grand prix challenges into unlock manager (previous location would not read the status of the challenges correctly from the user config file). 3) Fixed position requirement of 'follow the leader' challenges (winner has position 2, not 1). 4) GP which have missing tracks are now ignored (solves crash when STK is installed on top of an old installation) 5) Made the images in the race result screen non-active. 6) Made the description of challenges non-active. Modified Paths: -------------- trunk/supertuxkart/data/grandprix/alltracks.challenge trunk/supertuxkart/data/grandprix/atworldsend.challenge trunk/supertuxkart/data/tracks/city/city.challenge trunk/supertuxkart/data/tracks/crescentcrossing/crescentcrossing.challenge trunk/supertuxkart/data/tracks/fortmagma/fortmagma.challenge trunk/supertuxkart/src/grand_prix_data.cpp trunk/supertuxkart/src/grand_prix_manager.cpp trunk/supertuxkart/src/gui/challenges_menu.cpp trunk/supertuxkart/src/gui/race_options.cpp trunk/supertuxkart/src/gui/race_results_gui.cpp trunk/supertuxkart/src/track_manager.cpp trunk/supertuxkart/src/unlock_manager.cpp Modified: trunk/supertuxkart/data/grandprix/alltracks.challenge =================================================================== --- trunk/supertuxkart/data/grandprix/alltracks.challenge 2008-07-29 06:28:10 UTC (rev 2193) +++ trunk/supertuxkart/data/grandprix/alltracks.challenge 2008-07-29 13:40:25 UTC (rev 2194) @@ -6,7 +6,7 @@ (description _("Come first in the At World's End\nGrand Prix with 3 'Racer'\nLevel AI karts.")) (unlock-gp "alltracks") (unlock-difficulty "skidding" _("Skidding Preview")) - (depend-on "islandfollow" "racetracktime" "tollwaytime" "junglefollow" "citytime" "tollwayhead") + (depend-on "islandfollow") (major "grandprix") (minor "quickrace") (gp "atworldsend") Modified: trunk/supertuxkart/data/grandprix/atworldsend.challenge =================================================================== --- trunk/supertuxkart/data/grandprix/atworldsend.challenge 2008-07-29 06:28:10 UTC (rev 2193) +++ trunk/supertuxkart/data/grandprix/atworldsend.challenge 2008-07-29 13:40:25 UTC (rev 2194) @@ -5,14 +5,14 @@ (name _("Follow the Leader on a\nDesert Island")) (description _("Win a Follow the Leader race\nwith 3 AI karts\non a Desert Island.")) (unlock-gp "atworldsend") - (depend-on "tothemoonandbackgp" "tollwaytime" "citytime") + (depend-on "tothemoonandbackgp" "tollwayhead2head" "tollwaytime" "citytime") (major "single") (minor "followtheleader") (track "islandtrack") (difficulty "easy") (laps 3) (karts 4) - (position 1) + (position 2) ) ;; EOF ;; Modified: trunk/supertuxkart/data/tracks/city/city.challenge =================================================================== --- trunk/supertuxkart/data/tracks/city/city.challenge 2008-07-29 06:28:10 UTC (rev 2193) +++ trunk/supertuxkart/data/tracks/city/city.challenge 2008-07-29 13:40:25 UTC (rev 2194) @@ -11,7 +11,7 @@ (track "jungle") (difficulty "easy") (karts 4) - (position 1) + (position 2) ) ;; EOF ;; Modified: trunk/supertuxkart/data/tracks/crescentcrossing/crescentcrossing.challenge =================================================================== --- trunk/supertuxkart/data/tracks/crescentcrossing/crescentcrossing.challenge 2008-07-29 06:28:10 UTC (rev 2193) +++ trunk/supertuxkart/data/tracks/crescentcrossing/crescentcrossing.challenge 2008-07-29 13:40:25 UTC (rev 2194) @@ -5,6 +5,7 @@ (name _("Collect Coins in Math Class")) (description _("Collect at least 6 points\nworth of coins\non three laps of\nOliver's Math Class\nin under 1 minute.")) (unlock-track "crescentcrossing") + (depend-on "penguinplaygroundgp") (major "single") (minor "quickrace") (track "olivermath") Modified: trunk/supertuxkart/data/tracks/fortmagma/fortmagma.challenge =================================================================== --- trunk/supertuxkart/data/tracks/fortmagma/fortmagma.challenge 2008-07-29 06:28:10 UTC (rev 2193) +++ trunk/supertuxkart/data/tracks/fortmagma/fortmagma.challenge 2008-07-29 13:40:25 UTC (rev 2194) @@ -4,6 +4,7 @@ (id "tollwayhead") (name _("Win a Head to Head on\nTux Tollway")) (description _("Win a 1 lap Head to Head\non Tux Tollway against 1 'Racer'\nlevel AI kart.")) + (depend-on "tollwaytime") (unlock-track "fortmagma") (major "single") (minor "timetrial") Modified: trunk/supertuxkart/src/grand_prix_data.cpp =================================================================== --- trunk/supertuxkart/src/grand_prix_data.cpp 2008-07-29 06:28:10 UTC (rev 2193) +++ trunk/supertuxkart/src/grand_prix_data.cpp 2008-07-29 13:40:25 UTC (rev 2194) @@ -61,16 +61,22 @@ // ---------------------------------------------------------------------------- bool GrandPrixData::checkConsistency() { - bool correct=true; for(unsigned int i=0; i<m_tracks.size(); i++) { - if(!track_manager->getTrack(m_tracks[i])) + try { - fprintf(stderr, "Grand Prix '%s': Track '%s' does not exist!", - m_name.c_str(), m_tracks[i].c_str()); - correct=false; + Track *track=track_manager->getTrack(m_tracks[i]); } + catch(std::exception& e) + { + (void)e; + fprintf(stderr, "Grand Prix '%s': Track '%s' does not exist!\n", + m_name.c_str(), m_tracks[i].c_str()); + fprintf(stderr, "This Grand Prix will not be available.\n"); + return false; + } + } // for i - return correct; + return true; } /* EOF */ Modified: trunk/supertuxkart/src/grand_prix_manager.cpp =================================================================== --- trunk/supertuxkart/src/grand_prix_manager.cpp 2008-07-29 06:28:10 UTC (rev 2193) +++ trunk/supertuxkart/src/grand_prix_manager.cpp 2008-07-29 13:40:25 UTC (rev 2194) @@ -22,7 +22,6 @@ #include "string_utils.hpp" #include "file_manager.hpp" #include "grand_prix_manager.hpp" -#include "unlock_manager.hpp" GrandPrixManager *grand_prix_manager = NULL; @@ -35,8 +34,6 @@ i != result.end() ; i++) { if (StringUtils::has_suffix(*i, ".grandprix")) load("grandprix/"+*i); - if (StringUtils::has_suffix(*i, ".challenge")) - unlock_manager->addChallenge(file_manager->getConfigFile("grandprix/"+*i)); } // for i } // GrandPrixManager @@ -67,7 +64,12 @@ { for(unsigned int i=0; i<m_gp_data.size(); i++) { - m_gp_data[i]->checkConsistency(); + if(!m_gp_data[i]->checkConsistency()) + { + // delete this GP, since a track is missing + m_gp_data.erase(m_gp_data.begin()+i); + i--; + } } } // checkConsistency // ---------------------------------------------------------------------------- Modified: trunk/supertuxkart/src/gui/challenges_menu.cpp =================================================================== --- trunk/supertuxkart/src/gui/challenges_menu.cpp 2008-07-29 06:28:10 UTC (rev 2193) +++ trunk/supertuxkart/src/gui/challenges_menu.cpp 2008-07-29 13:40:25 UTC (rev 2194) @@ -45,6 +45,7 @@ } widget_manager->addTextButtonWgt( WTOK_DESCRIPTION, 60, 30, ""); + widget_manager->deactivateWgt(WTOK_DESCRIPTION); widget_manager->breakLine(); widget_manager->addTextButtonWgt(WTOK_BACK, 50, 7, Modified: trunk/supertuxkart/src/gui/race_options.cpp =================================================================== --- trunk/supertuxkart/src/gui/race_options.cpp 2008-07-29 06:28:10 UTC (rev 2193) +++ trunk/supertuxkart/src/gui/race_options.cpp 2008-07-29 13:40:25 UTC (rev 2194) @@ -236,7 +236,8 @@ case WTOK_LAPS_DOWN: { m_num_laps--; - if(m_num_laps<1) m_num_laps=10; + printf("fixme: numlaps=0\n"); + if(m_num_laps<0) m_num_laps=10; char label[ MAX_MESSAGE_LENGTH ]; snprintf( label, MAX_MESSAGE_LENGTH, "%d", m_num_laps ); Modified: trunk/supertuxkart/src/gui/race_results_gui.cpp =================================================================== --- trunk/supertuxkart/src/gui/race_results_gui.cpp 2008-07-29 06:28:10 UTC (rev 2193) +++ trunk/supertuxkart/src/gui/race_results_gui.cpp 2008-07-29 13:40:25 UTC (rev 2194) @@ -227,6 +227,8 @@ Widget *image=widget_manager->addImgButtonWgt(WTOK_FIRST_IMAGE + i, 7, 7, KART->getKartProperties()->getIconFile() ); + widget_manager->deactivateWgt(WTOK_FIRST_IMAGE+i); + image->setPosition(WGT_DIR_FROM_LEFT, horizontal, NULL, WGT_DIR_UNDER_WIDGET, 0.0f, w_prev); Widget *w=widget_manager->addTextWgt(WTOK_FIRST_RESULT + i, 5, 7, Modified: trunk/supertuxkart/src/track_manager.cpp =================================================================== --- trunk/supertuxkart/src/track_manager.cpp 2008-07-29 06:28:10 UTC (rev 2193) +++ trunk/supertuxkart/src/track_manager.cpp 2008-07-29 13:40:25 UTC (rev 2194) @@ -49,7 +49,7 @@ } char msg[MAX_ERROR_MESSAGE_LENGTH]; - fprintf(stderr, "TrackManager: Couldn't find track: '%s'", ident.c_str() ); + sprintf(msg, "TrackManager: Couldn't find track: '%s'", ident.c_str() ); throw std::runtime_error(msg); } // getTrack Modified: trunk/supertuxkart/src/unlock_manager.cpp =================================================================== --- trunk/supertuxkart/src/unlock_manager.cpp 2008-07-29 06:28:10 UTC (rev 2193) +++ trunk/supertuxkart/src/unlock_manager.cpp 2008-07-29 13:40:25 UTC (rev 2194) @@ -102,6 +102,16 @@ addChallenge(new ChallengeData(challenge_file)); } // for i + // Challenges from .../data/grandprix + // ---------------------------------- + file_manager->listFiles(result, "data/grandprix"); + for(std::set<std::string>::iterator i = result.begin(); + i != result.end() ; i++) + { + if (StringUtils::has_suffix(*i, ".challenge")) + addChallenge(file_manager->getConfigFile("grandprix/"+*i)); + } // for i + // Hard coded challenges can be added here. computeActive(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <au...@us...> - 2008-08-06 00:53:42
|
Revision: 2200 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2200&view=rev Author: auria Date: 2008-08-06 00:53:40 +0000 (Wed, 06 Aug 2008) Log Message: ----------- Some fine-tuning to bowling balls. Optimized code by removing repetitive calls to sqrt(). Modified Paths: -------------- trunk/supertuxkart/data/bowling.projectile trunk/supertuxkart/src/bowling.cpp trunk/supertuxkart/src/bowling.hpp trunk/supertuxkart/src/flyable.cpp trunk/supertuxkart/src/homing.cpp trunk/supertuxkart/src/homing.hpp Modified: trunk/supertuxkart/data/bowling.projectile =================================================================== --- trunk/supertuxkart/data/bowling.projectile 2008-08-05 00:55:51 UTC (rev 2199) +++ trunk/supertuxkart/data/bowling.projectile 2008-08-06 00:53:40 UTC (rev 2200) @@ -11,9 +11,9 @@ ; started to be pulled back to ground (force-updown 1.0) ; force pushing the spark down ; when it's too high above ground - (force-to-target 20) ; force with which a spark flies towards + (force-to-target 15) ; force with which a spark flies towards ; the nearest kart - (max-distance 10) ; maximum distance the spark can be away + (max-distance 25) ; maximum distance the spark can be away ; from a kart when accelerating towards it ) Modified: trunk/supertuxkart/src/bowling.cpp =================================================================== --- trunk/supertuxkart/src/bowling.cpp 2008-08-05 00:55:51 UTC (rev 2199) +++ trunk/supertuxkart/src/bowling.cpp 2008-08-06 00:53:40 UTC (rev 2200) @@ -22,6 +22,7 @@ #include "camera.hpp" float Bowling::m_st_max_distance; // maximum distance for a bowling ball to be attracted +float Bowling::m_st_max_distance_squared; float Bowling::m_st_force_to_target; // ----------------------------------------------------------------------------- @@ -59,10 +60,13 @@ void Bowling::init(const lisp::Lisp* lisp, ssgEntity *bowling) { Flyable::init(lisp, bowling, COLLECT_BOWLING); - m_st_max_distance = 35.0f; + m_st_max_distance = 20.0f; + m_st_max_distance_squared = 20.0f * 20.0f; m_st_force_to_target = 10.0f; lisp->get("max-distance", m_st_max_distance ); + m_st_max_distance_squared = m_st_max_distance*m_st_max_distance; + lisp->get("force-to-target", m_st_force_to_target); } // init @@ -74,10 +78,15 @@ btVector3 direction; float minDistance; getClosestKart(&kart, &minDistance, &direction); - if(minDistance<m_st_max_distance) // move bowling towards kart + if(minDistance<m_st_max_distance_squared) // move bowling towards kart { - direction*=1/direction.length()*m_st_force_to_target; - m_body->applyCentralForce(direction); + // limit angle, so that the bowling ball does not turn + // around to hit a kart behind + if(abs(m_body->getLinearVelocity().angle(direction)) < 1.3) + { + direction*=1/direction.length()*m_st_force_to_target; + m_body->applyCentralForce(direction); + } } else { // Bowling balls lose energy (e.g. when hitting the track), so increase Modified: trunk/supertuxkart/src/bowling.hpp =================================================================== --- trunk/supertuxkart/src/bowling.hpp 2008-08-05 00:55:51 UTC (rev 2199) +++ trunk/supertuxkart/src/bowling.hpp 2008-08-06 00:53:40 UTC (rev 2200) @@ -26,8 +26,9 @@ { private: static float m_st_max_distance; // maximum distance for a bowling ball to be attracted + static float m_st_max_distance_squared; static float m_st_force_to_target; - + public: Bowling(Kart* kart); static void init(const lisp::Lisp* lisp, ssgEntity* bowling); Modified: trunk/supertuxkart/src/flyable.cpp =================================================================== --- trunk/supertuxkart/src/flyable.cpp 2008-08-05 00:55:51 UTC (rev 2199) +++ trunk/supertuxkart/src/flyable.cpp 2008-08-06 00:53:40 UTC (rev 2200) @@ -123,10 +123,12 @@ } // ~Flyable //----------------------------------------------------------------------------- -void Flyable::getClosestKart(const Kart **minKart, float *minDist, btVector3 *minDelta) const +void Flyable::getClosestKart(const Kart **minKart, float *minDistSquared, btVector3 *minDelta) const { btTransform tProjectile=getTrans(); - *minDist = 99999.9f; + + *minDistSquared = -1.0f; + for(unsigned int i=0 ; i<race_manager->getNumKarts(); i++ ) { Kart *kart = world -> getKart(i); @@ -136,13 +138,14 @@ btVector3 delta = t.getOrigin()-tProjectile.getOrigin(); float distance2 = delta.length2(); - if(distance2 < *minDist) + if(distance2 < *minDistSquared || *minDistSquared < 0 /* not yet set */) { - *minDist = sqrt(distance2); + *minDistSquared = distance2; *minKart = kart; *minDelta = delta; } } // for i<getNumKarts + } // getClosestKart //----------------------------------------------------------------------------- Modified: trunk/supertuxkart/src/homing.cpp =================================================================== --- trunk/supertuxkart/src/homing.cpp 2008-08-05 00:55:51 UTC (rev 2199) +++ trunk/supertuxkart/src/homing.cpp 2008-08-06 00:53:40 UTC (rev 2200) @@ -21,6 +21,7 @@ #include "constants.hpp" float Homing::m_st_max_distance; +float Homing::m_st_max_distance_squared; float Homing::m_st_max_turn_angle; // ----------------------------------------------------------------------------- @@ -31,13 +32,13 @@ * own setting/getting of velocity, to be able to use flyables functions. */ Homing::Homing (Kart *kart) : Flyable(kart, COLLECT_HOMING) -{ - // A bit of a hack: the mass of this kinematic object is still 1.0 - // (see flyable), which enables collisions. I tried setting - // collisionFilterGroup/mask, but still couldn't get this object to - // collide with the track. By setting the mass to 1, collisions happen. - // (if bullet is compiled with _DEBUG, a warning will be printed the first - // time a homing-track collision happens). +{ + // A bit of a hack: the mass of this kinematic object is still 1.0 + // (see flyable), which enables collisions. I tried setting + // collisionFilterGroup/mask, but still couldn't get this object to + // collide with the track. By setting the mass to 1, collisions happen. + // (if bullet is compiled with _DEBUG, a warning will be printed the first + // time a homing-track collision happens). float y_offset=kart->getKartLength()+2.0f*m_extend.getY(); m_initial_velocity = btVector3(0.0f, m_speed, 0.0f); @@ -54,7 +55,11 @@ Flyable::init(lisp, homing, COLLECT_HOMING); m_st_max_turn_angle = 15.0f; m_st_max_distance = 20.0f; + m_st_max_distance_squared = 20.0f * 20.0f; + lisp->get("max-distance", m_st_max_distance ); + m_st_max_distance_squared = m_st_max_distance*m_st_max_distance; + lisp->get("max-turn-angle", m_st_max_turn_angle); } // init @@ -69,7 +74,7 @@ getClosestKart(&kart, &minDistance, &direction); btTransform my_trans=getTrans(); - if(minDistance<m_st_max_distance) // move homing towards kart + if(minDistance<m_st_max_distance_squared) // move homing towards kart { btTransform target=kart->getTrans(); @@ -77,11 +82,11 @@ if(fabsf(steer)>90.0f) steer=0.0f; if(steer<-m_st_max_turn_angle) steer = -m_st_max_turn_angle; if(steer> m_st_max_turn_angle) steer = m_st_max_turn_angle; - // The steering must be interpreted as grad/s (otherwise this would - // depend on the frame rate). But this would usually miss the karts, - // since the angle isn't adjusted quickly enough when coming closer - // So we allow for (much) larger steering angles the closer the - // kart is by multiplying the rotation/sec with max_distance/minDistance + // The steering must be interpreted as grad/s (otherwise this would + // depend on the frame rate). But this would usually miss the karts, + // since the angle isn't adjusted quickly enough when coming closer + // So we allow for (much) larger steering angles the closer the + // kart is by multiplying the rotation/sec with max_distance/minDistance steer *=(dt*m_st_max_distance/minDistance); btMatrix3x3 steerMatrix(btQuaternion(0.0f,0.0f,DEGREE_TO_RAD(steer))); my_trans.setBasis(my_trans.getBasis()*steerMatrix); Modified: trunk/supertuxkart/src/homing.hpp =================================================================== --- trunk/supertuxkart/src/homing.hpp 2008-08-05 00:55:51 UTC (rev 2199) +++ trunk/supertuxkart/src/homing.hpp 2008-08-06 00:53:40 UTC (rev 2200) @@ -26,7 +26,9 @@ { private: static float m_st_max_distance; // maximum distance for a missile to be attracted + static float m_st_max_distance_squared; static float m_st_max_turn_angle; + btVector3 m_initial_velocity; float steerTowards(btTransform& trans, btVector3& target); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <au...@us...> - 2008-09-02 00:35:32
|
Revision: 2214 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2214&view=rev Author: auria Date: 2008-09-02 00:35:28 +0000 (Tue, 02 Sep 2008) Log Message: ----------- i18n updates. updated script to new lcoation of files. added comments to translator, for unobvious strings Modified Paths: -------------- trunk/supertuxkart/data/po/fr/LC_MESSAGES/supertuxkart.mo trunk/supertuxkart/data/po/fr.po trunk/supertuxkart/data/po/supertuxkart.pot trunk/supertuxkart/data/po/update_pot.sh trunk/supertuxkart/src/gui/config_display.cpp trunk/supertuxkart/src/gui/player_controls.cpp trunk/supertuxkart/src/gui/race_gui.cpp trunk/supertuxkart/src/homing.cpp trunk/supertuxkart/src/player_kart.cpp Modified: trunk/supertuxkart/data/po/fr.po =================================================================== --- trunk/supertuxkart/data/po/fr.po 2008-09-02 00:08:18 UTC (rev 2213) +++ trunk/supertuxkart/data/po/fr.po 2008-09-02 00:35:28 UTC (rev 2214) @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: supertuxkart\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-27 20:38-0400\n" -"PO-Revision-Date: 2008-07-27 20:39-0500\n" +"POT-Creation-Date: 2008-09-01 20:31-0400\n" +"PO-Revision-Date: 2008-09-01 20:33-0500\n" "Last-Translator: Marianne Gagnon <aur...@gm...>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -11,7 +11,7 @@ "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: French\n" -#: src/gui/config_display.cpp:385 +#: src/gui/config_display.cpp:386 #, c-format msgid "%dx%d Blacklisted" msgstr "%dx%d mis sur la liste noire" @@ -25,7 +25,8 @@ "'%s' a\n" "été éliminé." -#: src/gui/player_controls.cpp:64 +#. I18N: name of controls +#: src/gui/player_controls.cpp:72 msgid "Accelerate" msgstr "Accélérer" @@ -33,11 +34,11 @@ msgid "Active Challenges" msgstr "Défis en vigueur" -#: data/all.cup:4 +#: data/grandprix/alltracks.grandprix:4 msgid "All tracks" msgstr "Toutes les pistes" -#: data/all.cup:5 +#: data/grandprix/alltracks.grandprix:5 msgid "All tracks included in SuperTuxKart" msgstr "Toutes les pistes de SuperTuxKart" @@ -49,11 +50,11 @@ msgid "Anvil - slows down greatly the kart in the first position" msgstr "Enclume - ralentit grandement le premier kart" -#: src/gui/config_display.cpp:92 +#: src/gui/config_display.cpp:93 msgid "Apply " msgstr "Appliquer" -#: src/gui/config_display.cpp:351 +#: src/gui/config_display.cpp:352 #, c-format msgid "Apply %dx%d" msgstr "Appliquer %dx%d" @@ -70,8 +71,7 @@ "À grande vitesse, un \"roue arrière\" te fais aller plus vite, mais tu ne\n" "peux pas tourner. En cas de pépin, utilise la touche de sauvetage!" -#: src/challenges/worlds_end_gp.cpp:56 -#: data/gp4.cup:4 +#: data/grandprix/atworldsend.grandprix:4 msgid "At world's end" msgstr "Au bout du monde" @@ -96,7 +96,8 @@ "Boule de Quilles - rebondit sur les murs. Tu peux aussi la\n" "lancer derrière toi en utilisant la touche 'regarder derrière'" -#: src/gui/player_controls.cpp:65 +#. I18N: name of controls +#: src/gui/player_controls.cpp:74 msgid "Brake" msgstr "Freiner" @@ -108,7 +109,7 @@ msgid "Challenges" msgstr "Défis" -#: src/gui/player_controls.cpp:74 +#: src/gui/player_controls.cpp:90 #, c-format msgid "Choose your controls, %s" msgstr "Choisis tes contrôles, %s" @@ -117,15 +118,15 @@ msgid "City" msgstr "Ville" -#: src/gui/config_display.cpp:97 +#: src/gui/config_display.cpp:98 msgid "Clear from Blacklist" msgstr "Retirer de la liste noire" -#: src/challenges/energy_math_class.cpp:26 +#: data/tracks/crescentcrossing/crescentcrossing.challenge:5 msgid "Collect Coins in Math Class" msgstr "Collecte des sous dans la classe de maths" -#: src/challenges/energy_math_class.cpp:28 +#: data/tracks/crescentcrossing/crescentcrossing.challenge:6 msgid "" "Collect at least 6 points\n" "worth of coins\n" @@ -138,7 +139,7 @@ "'La classe de Maths\n" "d'Oliver' en 1 minute." -#: src/challenges/energy_shifting_sands.cpp:27 +#: data/grandprix/tothemoonandback.challenge:6 msgid "" "Collect at least 9 coins\n" "on 3 laps of Shifting Sands\n" @@ -149,7 +150,7 @@ "sur la piste 'Sables\n" "mouvants' en 2:20" -#: src/challenges/energy_shifting_sands.cpp:25 +#: data/grandprix/tothemoonandback.challenge:5 msgid "Collect the Pharaohs Treasure" msgstr "Le trésor du pharaon" @@ -165,7 +166,7 @@ "après 10 sous, 3 bonus; et ainsi de suite. Un sou d'or vaut 3 sous\n" "argentés : garde l'oeil ouvert, ils sont souvent dissimulés!" -#: src/challenges/worlds_end_gp.cpp:27 +#: data/grandprix/alltracks.challenge:6 msgid "" "Come first in the At World's End\n" "Grand Prix with 3 'Racer'\n" @@ -222,12 +223,13 @@ msgid "Crescent Crossing" msgstr "Sous la pleine lune" -#: src/gui/config_display.cpp:83 +#. I18N: displays current resolution +#: src/gui/config_display.cpp:84 #, c-format msgid "Current: %dx%d" msgstr "Présentement: %dx%d" -#: src/gui/config_display.cpp:89 +#: src/gui/config_display.cpp:90 msgid "Decrease Resolution" msgstr "Diminuer la résolution" @@ -243,7 +245,7 @@ msgid "Display Settings" msgstr "Options d'affichage" -#: src/gui/race_options.cpp:282 +#: src/gui/race_options.cpp:286 msgid "Driver" msgstr "Intermédiaire" @@ -255,7 +257,7 @@ msgid "Exit Race" msgstr "Abandonner" -#: src/challenges/race_track_time.cpp:28 +#: data/tracks/jungle/jungle.challenge:6 msgid "" "Finish 3 laps in the Race track\n" "with 3 AI karts\n" @@ -265,7 +267,7 @@ "course' avec trois opposants\n" "virtuels en 1:15." -#: src/challenges/city_time.cpp:27 +#: data/tracks/snowtuxpeak/snowtuxpeak.challenge:6 msgid "" "Finish 3 laps on the City track\n" "with 3 AI karts\n" @@ -275,7 +277,7 @@ "'Ville' contre 3 opposants\n" "virtuels en 5:20." -#: src/challenges/tollway_time.cpp:27 +#: data/tracks/canyon/canyon.challenge:6 msgid "" "Finish 3 laps on the Tux Tollway\n" "track with 3 AI karts\n" @@ -285,15 +287,15 @@ "de Tux' contre 3 opposants\n" "virtuels en 3:00." -#: src/challenges/race_track_time.cpp:26 +#: data/tracks/jungle/jungle.challenge:5 msgid "Finish Race track in 1:15" msgstr "Piste de course en 1:15" -#: src/challenges/tollway_time.cpp:25 +#: data/tracks/canyon/canyon.challenge:5 msgid "Finish Tux Tollway track in 3:00" msgstr "L'autoroute de Tux en 3:00" -#: src/challenges/city_time.cpp:25 +#: data/tracks/snowtuxpeak/snowtuxpeak.challenge:5 msgid "Finish the City track in 5:20" msgstr "Course dans la ville en 5:20" @@ -302,25 +304,26 @@ msgid "Finished" msgstr "Fini" -#: src/gui/player_controls.cpp:66 +#. I18N: name of controls, like in "fire missile" +#: src/gui/player_controls.cpp:80 msgid "Fire" msgstr "Feu" -#: data/gp1.cup:5 +#: data/grandprix/penguinplayground.grandprix:5 msgid "First grand prix, easy to get started" msgstr "Premier grand prix, facile pour commencer" -#: src/challenges/penguin_playground_gp.cpp:28 #: src/gui/game_mode.cpp:69 #: src/gui/game_mode.cpp:93 +#: data/followtheleader.challenge:7 msgid "Follow the Leader" msgstr "Suis le meneur" -#: src/challenges/jungle_follow.cpp:25 +#: data/tracks/city/city.challenge:5 msgid "Follow the Leader in the Jungle" msgstr "Suis le meneur dans la jungle" -#: src/challenges/island_follow.cpp:25 +#: data/grandprix/atworldsend.challenge:5 msgid "" "Follow the Leader on a\n" "Desert Island" @@ -350,17 +353,13 @@ msgid "Four Players" msgstr "Quatre joueurs" -#: src/gui/game_mode.cpp:119 -msgid "Fulfil challenge to unlock" -msgstr "Réussis un défi pour y accéder" - #: src/gui/config_display.cpp:76 -#: src/gui/config_display.cpp:128 -#: src/gui/config_display.cpp:183 +#: src/gui/config_display.cpp:129 +#: src/gui/config_display.cpp:184 msgid "Fullscreen mode" msgstr "Mode plein-écran" -#: src/gui/game_mode.cpp:122 +#: src/gui/game_mode.cpp:128 msgid "Game mode help" msgstr "Aide sur les jeux" @@ -368,7 +367,7 @@ msgid "Game modes" msgstr "Modes de jeu" -#: src/gui/challenges_menu.cpp:51 +#: src/gui/challenges_menu.cpp:52 #: src/gui/credits_menu.cpp:75 msgid "Go back to the main menu" msgstr "Retour au menu principal" @@ -378,7 +377,8 @@ msgid "Go back to the menu" msgstr "Retour au menu" -#: src/gui/race_gui.cpp:946 +#. I18N: as in "ready, set, go", shown at the beginning of the race +#: src/gui/race_gui.cpp:949 msgid "Go!" msgstr "Partez!" @@ -423,7 +423,7 @@ "Certains boutons ont un cadenas (comme celui à droite).\n" "Tu dois réussir un défi pour en gagner l'accès." -#: src/gui/config_display.cpp:87 +#: src/gui/config_display.cpp:88 msgid "Increase Resolution" msgstr "Augmenter la résolution" @@ -432,11 +432,12 @@ msgid "Invalid" msgstr "Invalide" -#: src/kart.cpp:662 +#: src/kart.cpp:661 msgid "Invalid short-cut!!" msgstr "Raccourci invalide!" -#: src/gui/player_controls.cpp:65 +#. I18N: name of controls +#: src/gui/player_controls.cpp:76 msgid "Jump" msgstr "Sauter" @@ -444,7 +445,7 @@ msgid "Lap" msgstr "Tour" -#: data/gp4.cup:5 +#: data/grandprix/atworldsend.grandprix:5 msgid "Last grand prix, longer and harder" msgstr "Dernier grand prix, plus long et difficile" @@ -452,7 +453,8 @@ msgid "Leader" msgstr "Meneur" -#: src/gui/player_controls.cpp:64 +#. I18N: name of controls +#: src/gui/player_controls.cpp:68 msgid "Left" msgstr "Gauche" @@ -460,7 +462,7 @@ msgid "Loading race..." msgstr "Chargement en cours..." -#: src/gui/player_controls.cpp:66 +#: src/gui/player_controls.cpp:81 msgid "Look back" msgstr "Regarder en arrière" @@ -476,7 +478,7 @@ msgid "New Feature Unlocked" msgstr "Une nouvelle fonctionnalité a été déverrouillée" -#: src/challenges/challenge.cpp:121 +#: src/challenges/challenge.cpp:132 #, c-format msgid "" "New Grand Prix '%s'\n" @@ -485,7 +487,7 @@ "Nouveau grand prix\n" "'%s' déverrouillé" -#: src/challenges/challenge.cpp:124 +#: src/challenges/challenge.cpp:135 #, c-format msgid "" "New difficulty\n" @@ -495,11 +497,11 @@ "Nouvelle difficulté\n" "'%s' déverrouillée" -#: src/kart.cpp:425 +#: src/kart.cpp:424 msgid "New fastest lap" msgstr "Meilleur temps" -#: src/challenges/challenge.cpp:118 +#: src/challenges/challenge.cpp:129 #, c-format msgid "" "New game mode\n" @@ -510,9 +512,20 @@ "jeu déverrouillé :\n" "'%s'" -#: src/challenges/challenge.cpp:114 +#: src/challenges/challenge.cpp:139 #, c-format msgid "" +"New kart\n" +"'%s'\n" +"now available" +msgstr "" +"Nouveau kart\n" +"'%s'\n" +"déverrouillé" + +#: src/challenges/challenge.cpp:125 +#, c-format +msgid "" "New track '%s'\n" "now available" msgstr "" @@ -524,13 +537,13 @@ msgid "Next help screen" msgstr "Prochain écran" -#: src/gui/grand_prix_select.cpp:71 -#: src/gui/grand_prix_select.cpp:77 +#: src/gui/grand_prix_select.cpp:63 +#: src/gui/grand_prix_select.cpp:69 msgid "No Grand Prix selected" msgstr "Aucun Grand Prix n'est sélectionné" -#: src/gui/race_options.cpp:281 #: src/gui/race_options.cpp:285 +#: src/gui/race_options.cpp:289 msgid "Novice" msgstr "Débutant" @@ -568,16 +581,16 @@ msgid "Paused" msgstr "Pause" -#: src/gui/race_gui.cpp:975 +#: src/gui/race_gui.cpp:978 msgid "Penalty time!!" msgstr "Temps de pénalité!!" -#: src/challenges/penguin_playground_gp.cpp:48 -#: data/gp1.cup:4 +#: data/grandprix/penguinplayground.grandprix:4 msgid "Penguin Playground" msgstr "Pour jeunes pingouins" -#: src/gui/player_controls.cpp:251 +#. I18N: as in 'Player 2' +#: src/gui/player_controls.cpp:268 msgid "Player " msgstr "Joueur" @@ -606,7 +619,7 @@ msgid "Player Config" msgstr "Joueurs/Touches" -#: src/gui/player_controls.cpp:80 +#: src/gui/player_controls.cpp:96 msgid "Player name" msgstr "Nom du joueur" @@ -615,18 +628,18 @@ msgstr "Appuie sur <ESC> pour annuler" #: src/gui/config_controls.cpp:52 -#: src/gui/config_display.cpp:101 +#: src/gui/config_display.cpp:102 #: src/gui/config_sound.cpp:63 -#: src/gui/game_mode.cpp:127 -#: src/gui/grand_prix_select.cpp:88 +#: src/gui/game_mode.cpp:133 +#: src/gui/grand_prix_select.cpp:80 #: src/gui/num_players.cpp:45 #: src/gui/options.cpp:57 -#: src/gui/player_controls.cpp:112 +#: src/gui/player_controls.cpp:128 #: src/gui/race_options.cpp:140 msgid "Press <ESC> to go back" msgstr "Appuie sur <ESC> pour revenir" -#: src/gui/player_controls.cpp:156 +#: src/gui/player_controls.cpp:172 msgid "Press key" msgstr "Appuie sur une touche" @@ -668,15 +681,17 @@ msgid "Race results" msgstr "Résultats de la course" -#: src/gui/race_options.cpp:283 +#: src/gui/race_options.cpp:287 msgid "Racer" msgstr "Expert" -#: src/gui/race_gui.cpp:928 +#. I18N: as in "ready, set, go", shown at the beginning of the race +#: src/gui/race_gui.cpp:929 msgid "Ready!" msgstr "À vos marques..." -#: src/gui/player_controls.cpp:66 +#. I18N: name of controls +#: src/gui/player_controls.cpp:78 msgid "Rescue" msgstr "Sauvetage" @@ -688,15 +703,17 @@ msgid "Return To Race" msgstr "Continuer" -#: src/gui/player_controls.cpp:64 +#. I18N: name of controls (here, 'right' is the opposite of 'left' not the opposite of 'wrong') +#: src/gui/player_controls.cpp:70 msgid "Right" msgstr "Droite" -#: data/gp2.cup:5 +#: data/grandprix/tothemoonandback.grandprix:5 msgid "Second grand prix" msgstr "Second grand prix" -#: src/gui/race_gui.cpp:937 +#. I18N: as in "ready, set, go", shown at the beginning of the race +#: src/gui/race_gui.cpp:939 msgid "Set!" msgstr "Prêts" @@ -718,11 +735,12 @@ msgid "Single Race" msgstr "Une course" -#: src/gui/race_options.cpp:284 +#: src/gui/race_options.cpp:288 +#: data/grandprix/alltracks.challenge:8 msgid "Skidding Preview" msgstr "Dérapage (aperçu)" -#: data/gp3.cup:4 +#: data/grandprix/snagdrive.grandprix:4 msgid "Snag Drive" msgstr "Chemin des Embûches" @@ -767,7 +785,7 @@ msgid "The winner is %s!" msgstr "Le gagnant est %s!" -#: data/gp3.cup:5 +#: data/grandprix/snagdrive.grandprix:5 msgid "Third grand prix" msgstr "Troisième grand prix" @@ -788,8 +806,7 @@ msgid "To help you win, there are certain collectables you can grab:" msgstr "Pour t'aider à gagner, voici certains bonus que tu peux ramasser:" -#: src/challenges/moon_and_back_gp.cpp:51 -#: data/gp2.cup:4 +#: data/grandprix/tothemoonandback.grandprix:4 msgid "To the Moon and Back" msgstr "Jusqu'à la lune" @@ -825,15 +842,15 @@ msgid "Volcano" msgstr "Volcan" -#: src/player_kart.cpp:284 +#: src/player_kart.cpp:283 msgid "WRONG WAY!" msgstr "MAUVAISE DIRECTION!" -#: src/gui/player_controls.cpp:65 +#: src/gui/player_controls.cpp:74 msgid "Wheelie" msgstr "\"Roue Arrière\"" -#: src/challenges/penguin_playground_gp.cpp:25 +#: data/followtheleader.challenge:5 msgid "" "Win Penguin Playground Grand\n" "Prix" @@ -841,7 +858,7 @@ "Remporte le grand prix 'Pour\n" "jeunes pingouins'" -#: src/challenges/penguin_playground_gp.cpp:27 +#: data/followtheleader.challenge:6 msgid "" "Win Penguin Playground Grand\n" "Prix with 3 'Racer' Level AI karts." @@ -850,7 +867,7 @@ "jeunes pingouins' contre 3\n" "opposants virtuels" -#: src/challenges/moon_and_back_gp.cpp:25 +#: data/grandprix/snagdrive.challenge:5 msgid "" "Win To the Moon and Back\n" "Grand Prix" @@ -858,7 +875,7 @@ "Remporte le grand prix 'Jusqu'à\n" "la lune'" -#: src/challenges/tollway_head2head.cpp:27 +#: data/tracks/fortmagma/fortmagma.challenge:6 msgid "" "Win a 1 lap Head to Head\n" "on Tux Tollway against 1 'Racer'\n" @@ -868,7 +885,7 @@ "sur l'Autoroute de Tux contre\n" "un opposant virtuel expérimenté" -#: src/challenges/jungle_follow.cpp:27 +#: data/tracks/city/city.challenge:6 msgid "" "Win a Follow the Leader race\n" "with 3 AI karts\n" @@ -878,7 +895,7 @@ "'Suis le meneur' contre 3\n" "opposants dans la jungle." -#: src/challenges/island_follow.cpp:27 +#: data/grandprix/atworldsend.challenge:6 msgid "" "Win a Follow the Leader race\n" "with 3 AI karts\n" @@ -888,7 +905,7 @@ "'Suis le meneur' contre 3\n" "opposants sur un île déserte." -#: src/challenges/tollway_head2head.cpp:25 +#: data/tracks/fortmagma/fortmagma.challenge:5 msgid "" "Win a Head to Head on\n" "Tux Tollway" @@ -896,7 +913,7 @@ "Remporte un duel sur\n" "l'Autoroute de Tux" -#: src/challenges/worlds_end_gp.cpp:25 +#: data/grandprix/alltracks.challenge:5 msgid "" "Win the At World's End\n" "Grand Prix" @@ -904,7 +921,7 @@ "Remporte le grand prix\n" "'Au bout du monde'" -#: src/challenges/moon_and_back_gp.cpp:27 +#: data/grandprix/snagdrive.challenge:6 msgid "" "Win the To the Moon and Back\n" "Grand Prix with 3 'Racer'\n" @@ -919,8 +936,8 @@ msgstr "Mode fenêtré" #: src/player_kart.cpp:239 -msgid "You finished" -msgstr "Tu as fini!" +msgid "You finished the race!" +msgstr "Tu as fini la course!" #: src/world.cpp:645 msgid "" @@ -931,8 +948,8 @@ "éliminé!" #: src/player_kart.cpp:239 -msgid "You won" -msgstr "Tu as gagné" +msgid "You won the race!" +msgstr "Tu as gagné la course!" #: src/gui/help_page_two.cpp:92 msgid "Zipper - speed boost" @@ -969,10 +986,10 @@ msgid "not set" msgstr "(non défini)" -#: src/player_kart.cpp:241 -msgid "the race!" -msgstr "la course!" - +#~ msgid "Fulfil challenge to unlock" +#~ msgstr "Réussis un défi pour y accéder" +#~ msgid "You won" +#~ msgstr "Tu as gagné" #~ msgid "Fuzzy blob/Spark - very slow, but bounces from walls" #~ msgstr "Étincelle - lent, mais rebondit sur les murs" #~ msgid "Result" Modified: trunk/supertuxkart/data/po/supertuxkart.pot =================================================================== --- trunk/supertuxkart/data/po/supertuxkart.pot 2008-09-02 00:08:18 UTC (rev 2213) +++ trunk/supertuxkart/data/po/supertuxkart.pot 2008-09-02 00:35:28 UTC (rev 2214) @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-07-27 20:38-0400\n" +"POT-Creation-Date: 2008-09-01 20:31-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL...@li...>\n" @@ -16,7 +16,7 @@ "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: src/gui/config_display.cpp:385 +#: src/gui/config_display.cpp:386 #, c-format msgid "%dx%d Blacklisted" msgstr "" @@ -28,7 +28,8 @@ "been eliminated." msgstr "" -#: src/gui/player_controls.cpp:64 +#. I18N: name of controls +#: src/gui/player_controls.cpp:72 msgid "Accelerate" msgstr "" @@ -36,11 +37,11 @@ msgid "Active Challenges" msgstr "" -#: data/all.cup:4 +#: data/grandprix/alltracks.grandprix:4 msgid "All tracks" msgstr "" -#: data/all.cup:5 +#: data/grandprix/alltracks.grandprix:5 msgid "All tracks included in SuperTuxKart" msgstr "" @@ -52,11 +53,11 @@ msgid "Anvil - slows down greatly the kart in the first position" msgstr "" -#: src/gui/config_display.cpp:92 +#: src/gui/config_display.cpp:93 msgid "Apply " msgstr "" -#: src/gui/config_display.cpp:351 +#: src/gui/config_display.cpp:352 #, c-format msgid "Apply %dx%d" msgstr "" @@ -71,7 +72,7 @@ "get stuck or fall too far, use the rescue button to get back on track." msgstr "" -#: src/challenges/worlds_end_gp.cpp:56 data/gp4.cup:4 +#: data/grandprix/atworldsend.grandprix:4 msgid "At world's end" msgstr "" @@ -93,7 +94,8 @@ "it will be thrown backwards." msgstr "" -#: src/gui/player_controls.cpp:65 +#. I18N: name of controls +#: src/gui/player_controls.cpp:74 msgid "Brake" msgstr "" @@ -105,7 +107,7 @@ msgid "Challenges" msgstr "" -#: src/gui/player_controls.cpp:74 +#: src/gui/player_controls.cpp:90 #, c-format msgid "Choose your controls, %s" msgstr "" @@ -114,15 +116,15 @@ msgid "City" msgstr "" -#: src/gui/config_display.cpp:97 +#: src/gui/config_display.cpp:98 msgid "Clear from Blacklist" msgstr "" -#: src/challenges/energy_math_class.cpp:26 +#: data/tracks/crescentcrossing/crescentcrossing.challenge:5 msgid "Collect Coins in Math Class" msgstr "" -#: src/challenges/energy_math_class.cpp:28 +#: data/tracks/crescentcrossing/crescentcrossing.challenge:6 msgid "" "Collect at least 6 points\n" "worth of coins\n" @@ -131,14 +133,14 @@ "in under 1 minute." msgstr "" -#: src/challenges/energy_shifting_sands.cpp:27 +#: data/grandprix/tothemoonandback.challenge:6 msgid "" "Collect at least 9 coins\n" "on 3 laps of Shifting Sands\n" "in under 2:20 minutes." msgstr "" -#: src/challenges/energy_shifting_sands.cpp:25 +#: data/grandprix/tothemoonandback.challenge:5 msgid "Collect the Pharaohs Treasure" msgstr "" @@ -150,7 +152,7 @@ "Each gold coin is worth 3 silver coins, so look out for them!" msgstr "" -#: src/challenges/worlds_end_gp.cpp:27 +#: data/grandprix/alltracks.challenge:6 msgid "" "Come first in the At World's End\n" "Grand Prix with 3 'Racer'\n" @@ -201,12 +203,13 @@ msgid "Crescent Crossing" msgstr "" -#: src/gui/config_display.cpp:83 +#. I18N: displays current resolution +#: src/gui/config_display.cpp:84 #, c-format msgid "Current: %dx%d" msgstr "" -#: src/gui/config_display.cpp:89 +#: src/gui/config_display.cpp:90 msgid "Decrease Resolution" msgstr "" @@ -222,7 +225,7 @@ msgid "Display Settings" msgstr "" -#: src/gui/race_options.cpp:282 +#: src/gui/race_options.cpp:286 msgid "Driver" msgstr "" @@ -234,36 +237,36 @@ msgid "Exit Race" msgstr "" -#: src/challenges/race_track_time.cpp:28 +#: data/tracks/jungle/jungle.challenge:6 msgid "" "Finish 3 laps in the Race track\n" "with 3 AI karts\n" "in under 1:15 minutes." msgstr "" -#: src/challenges/city_time.cpp:27 +#: data/tracks/snowtuxpeak/snowtuxpeak.challenge:6 msgid "" "Finish 3 laps on the City track\n" "with 3 AI karts\n" "in under 5:20 minutes." msgstr "" -#: src/challenges/tollway_time.cpp:27 +#: data/tracks/canyon/canyon.challenge:6 msgid "" "Finish 3 laps on the Tux Tollway\n" "track with 3 AI karts\n" "in under 3:00 minutes." msgstr "" -#: src/challenges/race_track_time.cpp:26 +#: data/tracks/jungle/jungle.challenge:5 msgid "Finish Race track in 1:15" msgstr "" -#: src/challenges/tollway_time.cpp:25 +#: data/tracks/canyon/canyon.challenge:5 msgid "Finish Tux Tollway track in 3:00" msgstr "" -#: src/challenges/city_time.cpp:25 +#: data/tracks/snowtuxpeak/snowtuxpeak.challenge:5 msgid "Finish the City track in 5:20" msgstr "" @@ -272,24 +275,25 @@ msgid "Finished" msgstr "" -#: src/gui/player_controls.cpp:66 +#. I18N: name of controls, like in "fire missile" +#: src/gui/player_controls.cpp:80 msgid "Fire" msgstr "" -#: data/gp1.cup:5 +#: data/grandprix/penguinplayground.grandprix:5 msgid "First grand prix, easy to get started" msgstr "" -#: src/challenges/penguin_playground_gp.cpp:28 src/gui/game_mode.cpp:69 -#: src/gui/game_mode.cpp:93 +#: src/gui/game_mode.cpp:69 src/gui/game_mode.cpp:93 +#: data/followtheleader.challenge:7 msgid "Follow the Leader" msgstr "" -#: src/challenges/jungle_follow.cpp:25 +#: data/tracks/city/city.challenge:5 msgid "Follow the Leader in the Jungle" msgstr "" -#: src/challenges/island_follow.cpp:25 +#: data/grandprix/atworldsend.challenge:5 msgid "" "Follow the Leader on a\n" "Desert Island" @@ -314,16 +318,12 @@ msgid "Four Players" msgstr "" -#: src/gui/game_mode.cpp:119 -msgid "Fulfil challenge to unlock" -msgstr "" - -#: src/gui/config_display.cpp:76 src/gui/config_display.cpp:128 -#: src/gui/config_display.cpp:183 +#: src/gui/config_display.cpp:76 src/gui/config_display.cpp:129 +#: src/gui/config_display.cpp:184 msgid "Fullscreen mode" msgstr "" -#: src/gui/game_mode.cpp:122 +#: src/gui/game_mode.cpp:128 msgid "Game mode help" msgstr "" @@ -331,7 +331,7 @@ msgid "Game modes" msgstr "" -#: src/gui/challenges_menu.cpp:51 src/gui/credits_menu.cpp:75 +#: src/gui/challenges_menu.cpp:52 src/gui/credits_menu.cpp:75 msgid "Go back to the main menu" msgstr "" @@ -339,7 +339,8 @@ msgid "Go back to the menu" msgstr "" -#: src/gui/race_gui.cpp:946 +#. I18N: as in "ready, set, go", shown at the beginning of the race +#: src/gui/race_gui.cpp:949 msgid "Go!" msgstr "" @@ -376,7 +377,7 @@ "you need to complete a challenge to unlock it." msgstr "" -#: src/gui/config_display.cpp:87 +#: src/gui/config_display.cpp:88 msgid "Increase Resolution" msgstr "" @@ -385,11 +386,12 @@ msgid "Invalid" msgstr "" -#: src/kart.cpp:662 +#: src/kart.cpp:661 msgid "Invalid short-cut!!" msgstr "" -#: src/gui/player_controls.cpp:65 +#. I18N: name of controls +#: src/gui/player_controls.cpp:76 msgid "Jump" msgstr "" @@ -397,7 +399,7 @@ msgid "Lap" msgstr "" -#: data/gp4.cup:5 +#: data/grandprix/atworldsend.grandprix:5 msgid "Last grand prix, longer and harder" msgstr "" @@ -405,7 +407,8 @@ msgid "Leader" msgstr "" -#: src/gui/player_controls.cpp:64 +#. I18N: name of controls +#: src/gui/player_controls.cpp:68 msgid "Left" msgstr "" @@ -413,7 +416,7 @@ msgid "Loading race..." msgstr "" -#: src/gui/player_controls.cpp:66 +#: src/gui/player_controls.cpp:81 msgid "Look back" msgstr "" @@ -429,14 +432,14 @@ msgid "New Feature Unlocked" msgstr "" -#: src/challenges/challenge.cpp:121 +#: src/challenges/challenge.cpp:132 #, c-format msgid "" "New Grand Prix '%s'\n" "now available" msgstr "" -#: src/challenges/challenge.cpp:124 +#: src/challenges/challenge.cpp:135 #, c-format msgid "" "New difficulty\n" @@ -444,11 +447,11 @@ "now available" msgstr "" -#: src/kart.cpp:425 +#: src/kart.cpp:424 msgid "New fastest lap" msgstr "" -#: src/challenges/challenge.cpp:118 +#: src/challenges/challenge.cpp:129 #, c-format msgid "" "New game mode\n" @@ -456,9 +459,17 @@ "now available" msgstr "" -#: src/challenges/challenge.cpp:114 +#: src/challenges/challenge.cpp:139 #, c-format msgid "" +"New kart\n" +"'%s'\n" +"now available" +msgstr "" + +#: src/challenges/challenge.cpp:125 +#, c-format +msgid "" "New track '%s'\n" "now available" msgstr "" @@ -467,11 +478,11 @@ msgid "Next help screen" msgstr "" -#: src/gui/grand_prix_select.cpp:71 src/gui/grand_prix_select.cpp:77 +#: src/gui/grand_prix_select.cpp:63 src/gui/grand_prix_select.cpp:69 msgid "No Grand Prix selected" msgstr "" -#: src/gui/race_options.cpp:281 src/gui/race_options.cpp:285 +#: src/gui/race_options.cpp:285 src/gui/race_options.cpp:289 msgid "Novice" msgstr "" @@ -507,15 +518,16 @@ msgid "Paused" msgstr "" -#: src/gui/race_gui.cpp:975 +#: src/gui/race_gui.cpp:978 msgid "Penalty time!!" msgstr "" -#: src/challenges/penguin_playground_gp.cpp:48 data/gp1.cup:4 +#: data/grandprix/penguinplayground.grandprix:4 msgid "Penguin Playground" msgstr "" -#: src/gui/player_controls.cpp:251 +#. I18N: as in 'Player 2' +#: src/gui/player_controls.cpp:268 msgid "Player " msgstr "" @@ -544,7 +556,7 @@ msgid "Player Config" msgstr "" -#: src/gui/player_controls.cpp:80 +#: src/gui/player_controls.cpp:96 msgid "Player name" msgstr "" @@ -552,15 +564,15 @@ msgid "Press <ESC> to Cancel" msgstr "" -#: src/gui/config_controls.cpp:52 src/gui/config_display.cpp:101 -#: src/gui/config_sound.cpp:63 src/gui/game_mode.cpp:127 -#: src/gui/grand_prix_select.cpp:88 src/gui/num_players.cpp:45 -#: src/gui/options.cpp:57 src/gui/player_controls.cpp:112 +#: src/gui/config_controls.cpp:52 src/gui/config_display.cpp:102 +#: src/gui/config_sound.cpp:63 src/gui/game_mode.cpp:133 +#: src/gui/grand_prix_select.cpp:80 src/gui/num_players.cpp:45 +#: src/gui/options.cpp:57 src/gui/player_controls.cpp:128 #: src/gui/race_options.cpp:140 msgid "Press <ESC> to go back" msgstr "" -#: src/gui/player_controls.cpp:156 +#: src/gui/player_controls.cpp:172 msgid "Press key" msgstr "" @@ -600,15 +612,17 @@ msgid "Race results" msgstr "" -#: src/gui/race_options.cpp:283 +#: src/gui/race_options.cpp:287 msgid "Racer" msgstr "" -#: src/gui/race_gui.cpp:928 +#. I18N: as in "ready, set, go", shown at the beginning of the race +#: src/gui/race_gui.cpp:929 msgid "Ready!" msgstr "" -#: src/gui/player_controls.cpp:66 +#. I18N: name of controls +#: src/gui/player_controls.cpp:78 msgid "Rescue" msgstr "" @@ -620,15 +634,17 @@ msgid "Return To Race" msgstr "" -#: src/gui/player_controls.cpp:64 +#. I18N: name of controls (here, 'right' is the opposite of 'left' not the opposite of 'wrong') +#: src/gui/player_controls.cpp:70 msgid "Right" msgstr "" -#: data/gp2.cup:5 +#: data/grandprix/tothemoonandback.grandprix:5 msgid "Second grand prix" msgstr "" -#: src/gui/race_gui.cpp:937 +#. I18N: as in "ready, set, go", shown at the beginning of the race +#: src/gui/race_gui.cpp:939 msgid "Set!" msgstr "" @@ -648,11 +664,11 @@ msgid "Single Race" msgstr "" -#: src/gui/race_options.cpp:284 +#: src/gui/race_options.cpp:288 data/grandprix/alltracks.challenge:8 msgid "Skidding Preview" msgstr "" -#: data/gp3.cup:4 +#: data/grandprix/snagdrive.grandprix:4 msgid "Snag Drive" msgstr "" @@ -695,7 +711,7 @@ msgid "The winner is %s!" msgstr "" -#: data/gp3.cup:5 +#: data/grandprix/snagdrive.grandprix:5 msgid "Third grand prix" msgstr "" @@ -715,7 +731,7 @@ msgid "To help you win, there are certain collectables you can grab:" msgstr "" -#: src/challenges/moon_and_back_gp.cpp:51 data/gp2.cup:4 +#: data/grandprix/tothemoonandback.grandprix:4 msgid "To the Moon and Back" msgstr "" @@ -747,66 +763,66 @@ msgid "Volcano" msgstr "" -#: src/player_kart.cpp:284 +#: src/player_kart.cpp:283 msgid "WRONG WAY!" msgstr "" -#: src/gui/player_controls.cpp:65 +#: src/gui/player_controls.cpp:74 msgid "Wheelie" msgstr "" -#: src/challenges/penguin_playground_gp.cpp:25 +#: data/followtheleader.challenge:5 msgid "" "Win Penguin Playground Grand\n" "Prix" msgstr "" -#: src/challenges/penguin_playground_gp.cpp:27 +#: data/followtheleader.challenge:6 msgid "" "Win Penguin Playground Grand\n" "Prix with 3 'Racer' Level AI karts." msgstr "" -#: src/challenges/moon_and_back_gp.cpp:25 +#: data/grandprix/snagdrive.challenge:5 msgid "" "Win To the Moon and Back\n" "Grand Prix" msgstr "" -#: src/challenges/tollway_head2head.cpp:27 +#: data/tracks/fortmagma/fortmagma.challenge:6 msgid "" "Win a 1 lap Head to Head\n" "on Tux Tollway against 1 'Racer'\n" "level AI kart." msgstr "" -#: src/challenges/jungle_follow.cpp:27 +#: data/tracks/city/city.challenge:6 msgid "" "Win a Follow the Leader race\n" "with 3 AI karts\n" "in the Amazonian Jungle." msgstr "" -#: src/challenges/island_follow.cpp:27 +#: data/grandprix/atworldsend.challenge:6 msgid "" "Win a Follow the Leader race\n" "with 3 AI karts\n" "on a Desert Island." msgstr "" -#: src/challenges/tollway_head2head.cpp:25 +#: data/tracks/fortmagma/fortmagma.challenge:5 msgid "" "Win a Head to Head on\n" "Tux Tollway" msgstr "" -#: src/challenges/worlds_end_gp.cpp:25 +#: data/grandprix/alltracks.challenge:5 msgid "" "Win the At World's End\n" "Grand Prix" msgstr "" -#: src/challenges/moon_and_back_gp.cpp:27 +#: data/grandprix/snagdrive.challenge:6 msgid "" "Win the To the Moon and Back\n" "Grand Prix with 3 'Racer'\n" @@ -818,7 +834,7 @@ msgstr "" #: src/player_kart.cpp:239 -msgid "You finished" +msgid "You finished the race!" msgstr "" #: src/world.cpp:645 @@ -828,7 +844,7 @@ msgstr "" #: src/player_kart.cpp:239 -msgid "You won" +msgid "You won the race!" msgstr "" #: src/gui/help_page_two.cpp:92 @@ -864,7 +880,3 @@ #, c-format msgid "not set" msgstr "" - -#: src/player_kart.cpp:241 -msgid "the race!" -msgstr "" Modified: trunk/supertuxkart/data/po/update_pot.sh =================================================================== --- trunk/supertuxkart/data/po/update_pot.sh 2008-09-02 00:08:18 UTC (rev 2213) +++ trunk/supertuxkart/data/po/update_pot.sh 2008-09-02 00:35:28 UTC (rev 2214) @@ -3,7 +3,7 @@ # ./data/po/update_pot.sh CPP_FILE_LIST=`find ./src -name '*.cpp' -print` -PERL_FILE_LIST="./data/tracks/*/*.track ./data/*.cup" +PERL_FILE_LIST="`find ./data -name '*.track' -print` `find ./data -name '*.challenge' -print` `find ./data -name '*.grandprix' -print`" echo "--------------------" echo " Source Files :" @@ -16,7 +16,7 @@ echo "---------------------------" echo " Generating .pot file..." -xgettext -d supertuxkart -s --keyword=_ -p ./data/po -o supertuxkart.pot $CPP_FILE_LIST -xgettext -j -L perl -d supertuxkart -s --keyword=_ -p ./data/po -o supertuxkart.pot $PERL_FILE_LIST +xgettext -d supertuxkart -s --keyword=_ --add-comments="I18N:" -p ./data/po -o supertuxkart.pot $CPP_FILE_LIST +xgettext -j -L perl -d supertuxkart -s --keyword=_ --add-comments="I18N:" -p ./data/po -o supertuxkart.pot $PERL_FILE_LIST echo " Done" echo "---------------------------" \ No newline at end of file Modified: trunk/supertuxkart/src/gui/config_display.cpp =================================================================== --- trunk/supertuxkart/src/gui/config_display.cpp 2008-09-02 00:08:18 UTC (rev 2213) +++ trunk/supertuxkart/src/gui/config_display.cpp 2008-09-02 00:35:28 UTC (rev 2214) @@ -80,6 +80,7 @@ widget_manager->addEmptyWgt( WidgetManager::WGT_NONE, 60, 2 ); char msg [MAX_MESSAGE_LENGTH]; + //I18N: displays current resolution snprintf( msg, MAX_MESSAGE_LENGTH, _("Current: %dx%d"), m_curr_width, m_curr_height ); widget_manager->addTextWgt( WTOK_CURRENT_RES, 60, 7, msg); Modified: trunk/supertuxkart/src/gui/player_controls.cpp =================================================================== --- trunk/supertuxkart/src/gui/player_controls.cpp 2008-09-02 00:08:18 UTC (rev 2213) +++ trunk/supertuxkart/src/gui/player_controls.cpp 2008-09-02 00:35:28 UTC (rev 2214) @@ -61,11 +61,27 @@ /** Limits the maximum length of the player name. */ const size_t PlayerControls::PLAYER_NAME_MAX = 10; -const char *sKartAction2String[KA_LAST+1] = {_("Left"), _("Right"), _("Accelerate"), - _("Brake"), _("Wheelie"), _("Jump"), - _("Rescue"), _("Fire"), _("Look back") }; +const char *sKartAction2String[KA_LAST+1] = +{ + //I18N: name of controls + _("Left"), + //I18N: name of controls (here, 'right' is the opposite of 'left' not the opposite of 'wrong') + _("Right"), + //I18N: name of controls + _("Accelerate"), + //I18N: name of controls + _("Brake"), _("Wheelie"), + //I18N: name of controls + _("Jump"), + //I18N: name of controls + _("Rescue"), + //I18N: name of controls, like in "fire missile" + _("Fire"), + _("Look back") +}; + PlayerControls::PlayerControls(int whichPlayer): m_player_index(whichPlayer), m_grab_input(false) @@ -248,6 +264,7 @@ { // Prevents zero-length names. if (m_name.length() == 0) + //I18N: as in 'Player 2' m_name = _("Player ") + m_player_index; user_config->m_player[m_player_index].setName(m_name); widget_manager->setWgtText(WTOK_PLYR_NAME1, m_name.c_str()); Modified: trunk/supertuxkart/src/gui/race_gui.cpp =================================================================== --- trunk/supertuxkart/src/gui/race_gui.cpp 2008-09-02 00:08:18 UTC (rev 2213) +++ trunk/supertuxkart/src/gui/race_gui.cpp 2008-09-02 00:35:28 UTC (rev 2214) @@ -925,6 +925,7 @@ case World::READY_PHASE: { GLfloat const COLORS[] = { 0.9f, 0.66f, 0.62f, 1.0f }; + //I18N: as in "ready, set, go", shown at the beginning of the race font_race->PrintShadow( _("Ready!"), 90, Font::CENTER_OF_SCREEN, Font::CENTER_OF_SCREEN, @@ -934,6 +935,7 @@ case World::SET_PHASE: { GLfloat const COLORS[] = { 0.9f, 0.9f, 0.62f, 1.0f }; + //I18N: as in "ready, set, go", shown at the beginning of the race font_race->PrintShadow( _("Set!"), 90, Font::CENTER_OF_SCREEN, Font::CENTER_OF_SCREEN, @@ -943,6 +945,7 @@ case World::GO_PHASE: { GLfloat const COLORS[] = { 0.39f, 0.82f, 0.39f, 1.0f }; + //I18N: as in "ready, set, go", shown at the beginning of the race font_race->PrintShadow( _("Go!"), 90, Font::CENTER_OF_SCREEN, Font::CENTER_OF_SCREEN, Modified: trunk/supertuxkart/src/homing.cpp =================================================================== --- trunk/supertuxkart/src/homing.cpp 2008-09-02 00:08:18 UTC (rev 2213) +++ trunk/supertuxkart/src/homing.cpp 2008-09-02 00:35:28 UTC (rev 2214) @@ -68,7 +68,7 @@ { Flyable::update(dt); - const Kart *kart=0; + Kart *kart=0; btVector3 direction; float minDistance; Modified: trunk/supertuxkart/src/player_kart.cpp =================================================================== --- trunk/supertuxkart/src/player_kart.cpp 2008-09-02 00:08:18 UTC (rev 2213) +++ trunk/supertuxkart/src/player_kart.cpp 2008-09-02 00:35:28 UTC (rev 2214) @@ -236,9 +236,8 @@ RaceGUI* m=(RaceGUI*)menu_manager->getRaceMenu(); if(m) { - m->addMessage(getPosition()==1 ? _("You won") : _("You finished") , + m->addMessage(getPosition()==1 ? _("You won the race!") : _("You finished the race!") , this, 2.0f, 60); - m->addMessage( _("the race!"), this, 2.0f, 60); } } // raceFinished This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2008-09-07 13:14:16
|
Revision: 2221 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2221&view=rev Author: hikerstk Date: 2008-09-07 13:14:14 +0000 (Sun, 07 Sep 2008) Log Message: ----------- 1) Added network manager with a dummy enet interface. 2) Added command line options to start a server and client. 3) Added enet support to configure. Modified Paths: -------------- trunk/supertuxkart/configure.ac trunk/supertuxkart/src/Makefile.am trunk/supertuxkart/src/main.cpp Modified: trunk/supertuxkart/configure.ac =================================================================== --- trunk/supertuxkart/configure.ac 2008-09-07 13:12:12 UTC (rev 2220) +++ trunk/supertuxkart/configure.ac 2008-09-07 13:14:14 UTC (rev 2221) @@ -318,6 +318,13 @@ AC_DEFINE_UNQUOTED([SVNVERSION],"$SVNVERSION",["SVN revision number"]) fi +dnl ================ +dnl Try to find enet +dnl ================ +AC_SEARCH_LIBS(enet_initialize, [ enet ], have_enet_lib=yes) +if test x$have_enet_lib = xyes; then + AC_DEFINE([HAVE_ENET], 1, [Defined when enet is available]) +fi # ========================= # subst bars in Makefile.am Modified: trunk/supertuxkart/src/Makefile.am =================================================================== --- trunk/supertuxkart/src/Makefile.am 2008-09-07 13:12:12 UTC (rev 2220) +++ trunk/supertuxkart/src/Makefile.am 2008-09-07 13:14:14 UTC (rev 2221) @@ -30,6 +30,7 @@ coord.hpp \ actionmap.cpp actionmap.hpp \ material.cpp material.hpp \ + network_manager.cpp network_manager.hpp \ material_manager.cpp material_manager.hpp \ grand_prix_manager.cpp grand_prix_manager.hpp \ attachment.cpp attachment.hpp \ Modified: trunk/supertuxkart/src/main.cpp =================================================================== --- trunk/supertuxkart/src/main.cpp 2008-09-07 13:12:12 UTC (rev 2220) +++ trunk/supertuxkart/src/main.cpp 2008-09-07 13:14:14 UTC (rev 2221) @@ -66,6 +66,7 @@ #include "translation.hpp" #include "highscore_manager.hpp" #include "grand_prix_manager.hpp" +#include "network_manager.hpp" #include "gui/menu_manager.hpp" #include "scene.hpp" @@ -105,6 +106,12 @@ // " --profile=n Enable automatic driven profile mode for n seconds\n" // " if n<0 --> (-n) = number of laps to drive // " --history Replay history file 'history.dat'\n" +#ifdef HAVE_ENET + " --server[=port] This is the server (running on the specified port)\n" + " --client=ip This is a client, connect to the specified ip address\n" + " --port=n Port number to use\n" + " --numclients=n Number of clients to wait for (server only)\n" +#endif " --log=terminal Write messages to screen\n" " --log=file Write messages/warning to log files stdout.log/stderr.log\n" " -h, --help Show this help\n" @@ -118,6 +125,7 @@ int handleCmdLine(int argc, char **argv) { int n; + char s[80]; for(int i=1; i<argc; i++) { if(argv[i][0] != '-') continue; @@ -150,6 +158,30 @@ { user_config->m_print_kart_sizes=true; } +#ifdef HAVE_ENET + else if(sscanf(argv[i], "--server=%d",&n)==1) + { + network_manager->setMode(NetworkManager::NW_SERVER); + network_manager->setPort(n); + } + else if( !strcmp(argv[i], "--server") ) + { + network_manager->setMode(NetworkManager::NW_SERVER); + } + else if( sscanf(argv[i], "--port=%d", &n) ) + { + network_manager->setPort(n); + } + else if( sscanf(argv[i], "--client=%s", s) ) + { + network_manager->setMode(NetworkManager::NW_CLIENT); + network_manager->setServerIP(s); + } + else if( sscanf(argv[i], "--numclients=%d", &n) ) + { + network_manager->setNumClients(n); + } +#endif else if( (!strcmp(argv[i], "--kart") && i+1<argc )) { std::string filename=file_manager->getKartFile(std::string(argv[i+1])+".tkkf"); @@ -415,6 +447,7 @@ attachment_manager = new AttachmentManager (); highscore_manager = new HighscoreManager (); grand_prix_manager = new GrandPrixManager (); + network_manager = new NetworkManager (); track_manager->loadTrackList(); sound_manager->addMusicToTracks(); @@ -500,6 +533,13 @@ // So the next line is just to make this obvious here! exit(-3); } + + if(!network_manager->initialiseConnections()) + { + fprintf(stderr, "Problems initialising network connections, aborting.\n"); + exit(-4); + } + exit(0); // Not replaying // ============= This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2008-09-07 15:04:50
|
Revision: 2246 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2246&view=rev Author: hikerstk Date: 2008-09-07 15:04:43 +0000 (Sun, 07 Sep 2008) Log Message: ----------- 1) Added enet sources. 2) Updated STK sources to unconditionally compile for enet. 3) Updated VS project file for enet. 4) enet support for automake. Modified Paths: -------------- trunk/supertuxkart/Makefile.am trunk/supertuxkart/configure.ac trunk/supertuxkart/src/Makefile.am trunk/supertuxkart/src/gui/main_menu.cpp trunk/supertuxkart/src/main.cpp trunk/supertuxkart/src/network/herring_info.hpp trunk/supertuxkart/src/network/message.hpp trunk/supertuxkart/src/network/network_manager.cpp trunk/supertuxkart/src/network/network_manager.hpp Added Paths: ----------- trunk/supertuxkart/src/enet/ trunk/supertuxkart/src/enet/ChangeLog trunk/supertuxkart/src/enet/Doxyfile trunk/supertuxkart/src/enet/LICENSE trunk/supertuxkart/src/enet/Makefile.am trunk/supertuxkart/src/enet/Makefile.in trunk/supertuxkart/src/enet/Makefile.in.rej trunk/supertuxkart/src/enet/README trunk/supertuxkart/src/enet/aclocal.m4 trunk/supertuxkart/src/enet/callbacks.c trunk/supertuxkart/src/enet/configure trunk/supertuxkart/src/enet/configure.in trunk/supertuxkart/src/enet/depcomp trunk/supertuxkart/src/enet/design.txt trunk/supertuxkart/src/enet/docs/ trunk/supertuxkart/src/enet/docs/FAQ.dox trunk/supertuxkart/src/enet/docs/design.dox trunk/supertuxkart/src/enet/docs/install.dox trunk/supertuxkart/src/enet/docs/license.dox trunk/supertuxkart/src/enet/docs/mainpage.dox trunk/supertuxkart/src/enet/docs/tutorial.dox trunk/supertuxkart/src/enet/enet.dsp trunk/supertuxkart/src/enet/host.c trunk/supertuxkart/src/enet/include/ trunk/supertuxkart/src/enet/include/Makefile.am trunk/supertuxkart/src/enet/include/Makefile.in trunk/supertuxkart/src/enet/include/enet/ trunk/supertuxkart/src/enet/include/enet/Makefile.am trunk/supertuxkart/src/enet/include/enet/Makefile.in trunk/supertuxkart/src/enet/include/enet/callbacks.h trunk/supertuxkart/src/enet/include/enet/enet.h trunk/supertuxkart/src/enet/include/enet/list.h trunk/supertuxkart/src/enet/include/enet/protocol.h trunk/supertuxkart/src/enet/include/enet/time.h trunk/supertuxkart/src/enet/include/enet/types.h trunk/supertuxkart/src/enet/include/enet/unix.h trunk/supertuxkart/src/enet/include/enet/utility.h trunk/supertuxkart/src/enet/include/enet/win32.h trunk/supertuxkart/src/enet/install-sh trunk/supertuxkart/src/enet/list.c trunk/supertuxkart/src/enet/missing trunk/supertuxkart/src/enet/packet.c trunk/supertuxkart/src/enet/peer.c trunk/supertuxkart/src/enet/protocol.c trunk/supertuxkart/src/enet/tutorial.txt trunk/supertuxkart/src/enet/unix.c trunk/supertuxkart/src/enet/win32.c trunk/supertuxkart/src/ide/vc9/enet.vcproj Modified: trunk/supertuxkart/Makefile.am =================================================================== --- trunk/supertuxkart/Makefile.am 2008-09-07 14:56:17 UTC (rev 2245) +++ trunk/supertuxkart/Makefile.am 2008-09-07 15:04:43 UTC (rev 2246) @@ -1,6 +1,6 @@ ACLOCAL_AMFLAGS = -I m4 -SUBDIRS = @BULLETTREE@ src doc data +SUBDIRS = @BULLETTREE@ @ENETTREE@ src doc data EXTRA_DIST = README README.cygwin README.macosx README.windows ChangeLog COPYING missing Modified: trunk/supertuxkart/configure.ac =================================================================== --- trunk/supertuxkart/configure.ac 2008-09-07 14:56:17 UTC (rev 2245) +++ trunk/supertuxkart/configure.ac 2008-09-07 15:04:43 UTC (rev 2246) @@ -318,22 +318,6 @@ AC_DEFINE_UNQUOTED([SVNVERSION],"$SVNVERSION",["SVN revision number"]) fi -dnl ================ -dnl Try to find enet -dnl ================ -AC_SEARCH_LIBS(enet_initialize, [ enet ], have_enet_lib=yes) -if test x$have_enet_lib = xyes; then - AC_DEFINE([HAVE_ENET], 1, [Defined when enet is available]) -fi - -# ========================= -# subst bars in Makefile.am -# ========================= -AC_SUBST(bullet_LIBS) -AC_SUBST(opengl_LIBS) -AC_SUBST(openal_LIBS) -AC_SUBST(sdl_LIBS) - AC_MSG_CHECKING([for gcc -fno-regmove option ]) dnl ========================= @@ -366,7 +350,42 @@ ;; esac +dnl ==== +dnl enet +dnl ==== +AC_CHECK_FUNC(gethostbyaddr_r, [AC_DEFINE(HAS_GETHOSTBYADDR_R)]) +AC_CHECK_FUNC(gethostbyname_r, [AC_DEFINE(HAS_GETHOSTBYNAME_R)]) +AC_CHECK_FUNC(poll, [AC_DEFINE(HAS_POLL)]) +AC_CHECK_FUNC(fcntl, [AC_DEFINE(HAS_FCNTL)]) +AC_CHECK_FUNC(inet_pton, [AC_DEFINE(HAS_INET_PTON)]) +AC_CHECK_FUNC(inet_ntop, [AC_DEFINE(HAS_INET_NTOP)]) + +AC_CHECK_MEMBER(struct msghdr.msg_flags, [AC_DEFINE(HAS_MSGHDR_FLAGS)], , [#include <sys/socket.h>]) + +AC_CHECK_TYPE(socklen_t, [AC_DEFINE(HAS_SOCKLEN_T)], , + #include <sys/types.h> + #include <sys/socket.h> +) + +AC_EGREP_HEADER(MSG_MAXIOVLEN, /usr/include/sys/socket.h, AC_DEFINE(ENET_BUFFER_MAXIMUM, [MSG_MAXIOVLEN])) +AC_EGREP_HEADER(MSG_MAXIOVLEN, socket.h, AC_DEFINE(ENET_BUFFER_MAXIMUM, [MSG_MAXIOVLEN])) + +CXXFLAGS="$CXXFLAGS -Ienet/include" +enet_LIBS="-Lenet -lenet" +SUMMARY="$SUMMARY\nUsing enet network support ." +ENETTREE="src/enet" + + +# ========================= +# subst bars in Makefile.am +# ========================= +AC_SUBST(bullet_LIBS) +AC_SUBST(enet_LIBS) +AC_SUBST(opengl_LIBS) +AC_SUBST(openal_LIBS) +AC_SUBST(sdl_LIBS) AC_SUBST(BULLETTREE) +AC_SUBST(ENETTREE) dnl ================ dnl Create makefiles @@ -390,6 +409,9 @@ src/bullet/Makefile \ src/bullet/src/Makefile \ src/bullet/Demos/OpenGL/Makefile \ + src/enet/Makefile \ + src/enet/include/Makefile \ + src/enet/include/enet/Makefile ]) AC_OUTPUT echo -e $SUMMARY Modified: trunk/supertuxkart/src/Makefile.am =================================================================== --- trunk/supertuxkart/src/Makefile.am 2008-09-07 14:56:17 UTC (rev 2245) +++ trunk/supertuxkart/src/Makefile.am 2008-09-07 15:04:43 UTC (rev 2246) @@ -153,7 +153,7 @@ # Link in the specific gcc 4.1 bug work around supertuxkart_LDADD = -L. -lstatic_ssg \ -lplibjs -lplibsl -lplibssg -lplibpu -lplibfnt -lplibsg \ - -lplibul -lplibssgaux $(bullet_LIBS) $(opengl_LIBS) $(sdl_LIBS) $(openal_LIBS) + -lplibul -lplibssgaux $(bullet_LIBS) $(enet_LIBS) $(opengl_LIBS) $(sdl_LIBS) $(openal_LIBS) .PHONY: pot pot: Added: trunk/supertuxkart/src/enet/ChangeLog =================================================================== --- trunk/supertuxkart/src/enet/ChangeLog (rev 0) +++ trunk/supertuxkart/src/enet/ChangeLog 2008-09-07 15:04:43 UTC (rev 2246) @@ -0,0 +1,36 @@ +ENet 1.2 (February 12, 2008): + +* fixed bug in VERIFY_CONNECT acknowledgement that could cause connect +attempts to occasionally timeout +* fixed acknowledgements to check both the outgoing and sent queues +when removing acknowledged packets +* fixed accidental bit rot in the MSVC project file +* revised sequence number overflow handling to address some possible +disconnect bugs +* added enet_host_check_events() for getting only local queued events +* factored out socket option setting into enet_socket_set_option() so +that socket options are now set separately from enet_socket_create() + +Caveats: While this release is superficially protocol compatible with 1.1, +differences in the sequence number overflow handling can potentially cause +random disconnects. + +ENet 1.1 (June 6, 2007): + +* optional CRC32 just in case someone needs a stronger checksum than UDP +provides (--enable-crc32 configure option) +* the size of packet headers are half the size they used to be (so less +overhead when sending small packets) +* enet_peer_disconnect_later() that waits till all queued outgoing +packets get sent before issuing an actual disconnect +* freeCallback field in individual packets for notification of when a +packet is about to be freed +* ENET_PACKET_FLAG_NO_ALLOCATE for supplying pre-allocated data to a +packet (can be used in concert with freeCallback to support some custom +allocation schemes that the normal memory allocation callbacks would +normally not allow) +* enet_address_get_host_ip() for printing address numbers +* promoted the enet_socket_*() functions to be part of the API now +* a few stability/crash fixes + + Added: trunk/supertuxkart/src/enet/Doxyfile =================================================================== --- trunk/supertuxkart/src/enet/Doxyfile (rev 0) +++ trunk/supertuxkart/src/enet/Doxyfile 2008-09-07 15:04:43 UTC (rev 2246) @@ -0,0 +1,993 @@ +# Doxyfile 1.2.18 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# General configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = enet + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = docs + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, +# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en +# (Japanese with english messages), Korean, Norwegian, Polish, Portuguese, +# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish and Ukrainian. + +OUTPUT_LANGUAGE = English + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these class will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = NO + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited +# members of a class in the documentation of that class as if those members were +# ordinary class members. Constructors, destructors and assignment operators of +# the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. It is allowed to use relative paths in the argument list. + +STRIP_FROM_PATH = + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower case letters. If set to YES upper case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# users are adviced to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explict @brief command for a brief description. + +JAVADOC_AUTOBRIEF = YES + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = YES + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# reimplements. + +INHERIT_DOCS = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consist of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. +# For instance some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources +# only. Doxygen will then generate output that is more tailored for Java. +# For instance namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = . include/enet docs + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp +# *.h++ *.idl *.odl + +FILE_PATTERNS = *.c *.h *.dox + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = Tests + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories +# that are symbolic links (a Unix filesystem feature) are excluded from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. + +EXCLUDE_PATTERNS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command <filter> <input-file>, where <filter> +# is the value of the INPUT_FILTER tag, and <input-file> is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. + +INPUT_FILTER = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output dir. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non empty doxygen will try to run +# the html help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the Html help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript and frames is required (for instance Mozilla, Netscape 4.0+, +# or Internet explorer 4.0+). Note that for large projects the tree generation +# can take a very long time. In such cases it is better to disable this feature. +# Windows users are probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimised for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assigments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_XML = NO + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_PREDEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. + +PREDEFINED = FORCE_DOXYGEN + +# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse the +# parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::addtions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES tag can be used to specify one or more tagfiles. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in Html, RTF and LaTeX) for classes with base or +# super classes. Setting the tag to NO turns the diagrams off. Note that this +# option is superceded by the HAVE_DOT option below. This is only a fallback. It is +# recommended to install and use dot, since it yield more powerful graphs. + +CLASS_DIAGRAMS = YES + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found on the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermedate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::addtions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO + +# The CGI_NAME tag should be the name of the CGI script that +# starts the search engine (doxysearch) with the correct parameters. +# A script with this name will be generated by doxygen. + +CGI_NAME = search.cgi + +# The CGI_URL tag should be the absolute URL to the directory where the +# cgi binaries are located. See the documentation of your http daemon for +# details. + +CGI_URL = + +# The DOC_URL tag should be the absolute URL to the directory where the +# documentation is located. If left blank the absolute path to the +# documentation, with file:// prepended to it, will be used. + +DOC_URL = + +# The DOC_ABSPATH tag should be the absolute path to the directory where the +# documentation is located. If left blank the directory on the local machine +# will be used. + +DOC_ABSPATH = + +# The BIN_ABSPATH tag must point to the directory where the doxysearch binary +# is installed. + +BIN_ABSPATH = /usr/local/bin/ + +# The EXT_DOC_PATHS tag can be used to specify one or more paths to +# documentation generated for other projects. This allows doxysearch to search +# the documentation for these projects as well. + +EXT_DOC_PATHS = Added: trunk/supertuxkart/src/enet/LICENSE =================================================================== --- trunk/supertuxkart/src/enet/LICENSE (rev 0) +++ trunk/supertuxkart/src/enet/LICENSE 2008-09-07 15:04:43 UTC (rev 2246) @@ -0,0 +1,7 @@ +Copyright (c) 2002-2007 Lee Salzman + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Added: trunk/supertuxkart/src/enet/Makefile.am =================================================================== --- trunk/supertuxkart/src/enet/Makefile.am (rev 0) +++ trunk/supertuxkart/src/enet/Makefile.am 2008-09-07 15:04:43 UTC (rev 2246) @@ -0,0 +1,5 @@ +lib_LIBRARIES = libenet.a +libenet_a_SOURCES = host.c list.c callbacks.c packet.c peer.c protocol.c unix.c win32.c +INCLUDES = -Iinclude/ + +SUBDIRS = include Added: trunk/supertuxkart/src/enet/Makefile.in.rej =================================================================== --- trunk/supertuxkart/src/enet/Makefile.in.rej (rev 0) +++ trunk/supertuxkart/src/enet/Makefile.in.rej 2008-09-07 15:04:43 UTC (rev 2246) @@ -0,0 +1,659 @@ +*************** +*** 1,656 **** +- # Makefile.in generated by automake 1.9.6 from Makefile.am. +- # @configure_input@ +- +- # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +- # 2003, 2004, 2005 Free Software Foundation, Inc. +- # This Makefile.in is free software; the Free Software Foundation +- # gives unlimited permission to copy and/or distribute it, +- # with or without modifications, as long as this notice is preserved. +- +- # This program is distributed in the hope that it will be useful, +- # but WITHOUT ANY WARRANTY, to the extent permitted by law; without +- # even the implied warranty of MERCHANTABILITY or FITNESS FOR A +- # PARTICULAR PURPOSE. +- +- @SET_MAKE@ +- +- srcdir = @srcdir@ +- top_srcdir = @top_srcdir@ +- VPATH = @srcdir@ +- pkgdatadir = $(datadir)/@PACKAGE@ +- pkglibdir = $(libdir)/@PACKAGE@ +- pkgincludedir = $(includedir)/@PACKAGE@ +- top_builddir = . +- am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +- INSTALL = @INSTALL@ +- install_sh_DATA = $(install_sh) -c -m 644 +- install_sh_PROGRAM = $(install_sh) -c +- install_sh_SCRIPT = $(install_sh) -c +- INSTALL_HEADER = $(INSTALL_DATA) +- transform = $(program_transform_name) +- NORMAL_INSTALL = : +- PRE_INSTALL = : +- POST_INSTALL = : +- NORMAL_UNINSTALL = : +- PRE_UNINSTALL = : +- POST_UNINSTALL = : +- subdir = . +- DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ +- $(srcdir)/Makefile.in $(top_srcdir)/configure ChangeLog \ +- depcomp install-sh missing +- ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +- am__aclocal_m4_deps = $(top_srcdir)/configure.in +- am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ +- $(ACLOCAL_M4) +- am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ +- configure.lineno configure.status.lineno +- mkinstalldirs = $(install_sh) -d +- CONFIG_CLEAN_FILES = +- am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +- am__vpath_adj = case $$p in \ +- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ +- *) f=$$p;; \ +- esac; +- am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +- am__installdirs = "$(DESTDIR)$(libdir)" +- libLIBRARIES_INSTALL = $(INSTALL_DATA) +- LIBRARIES = $(lib_LIBRARIES) +- AR = ar +- ARFLAGS = cru +- libenet_a_AR = $(AR) $(ARFLAGS) +- libenet_a_LIBADD = +- am_libenet_a_OBJECTS = host.$(OBJEXT) list.$(OBJEXT) \ +- callbacks.$(OBJEXT) packet.$(OBJEXT) peer.$(OBJEXT) \ +- protocol.$(OBJEXT) unix.$(OBJEXT) win32.$(OBJEXT) +- libenet_a_OBJECTS = $(am_libenet_a_OBJECTS) +- DEFAULT_INCLUDES = -I. -I$(srcdir) +- depcomp = $(SHELL) $(top_srcdir)/depcomp +- am__depfiles_maybe = depfiles +- COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +- CCLD = $(CC) +- LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +- SOURCES = $(libenet_a_SOURCES) +- DIST_SOURCES = $(libenet_a_SOURCES) +- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +- html-recursive info-recursive install-data-recursive \ +- install-exec-recursive install-info-recursive \ +- install-recursive installcheck-recursive installdirs-recursive \ +- pdf-recursive ps-recursive uninstall-info-recursive \ +- uninstall-recursive +- ETAGS = etags +- CTAGS = ctags +- DIST_SUBDIRS = $(SUBDIRS) +- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- distdir = $(PACKAGE)-$(VERSION) +- top_distdir = $(distdir) +- am__remove_distdir = \ +- { test ! -d $(distdir) \ +- || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ +- && rm -fr $(distdir); }; } +- DIST_ARCHIVES = $(distdir).tar.gz +- GZIP_ENV = --best +- distuninstallcheck_listfiles = find . -type f -print +- distcleancheck_listfiles = find . -type f -print +- ACLOCAL = @ACLOCAL@ +- AMDEP_FALSE = @AMDEP_FALSE@ +- AMDEP_TRUE = @AMDEP_TRUE@ +- AMTAR = @AMTAR@ +- AUTOCONF = @AUTOCONF@ +- AUTOHEADER = @AUTOHEADER@ +- AUTOMAKE = @AUTOMAKE@ +- AWK = @AWK@ +- CC = @CC@ +- CCDEPMODE = @CCDEPMODE@ +- CFLAGS = @CFLAGS@ +- CPP = @CPP@ +- CPPFLAGS = @CPPFLAGS@ +- CYGPATH_W = @CYGPATH_W@ +- DEFS = @DEFS@ +- DEPDIR = @DEPDIR@ +- ECHO_C = @ECHO_C@ +- ECHO_N = @ECHO_N@ +- ECHO_T = @ECHO_T@ +- EGREP = @EGREP@ +- EXEEXT = @EXEEXT@ +- GREP = @GREP@ +- INSTALL_DATA = @INSTALL_DATA@ +- INSTALL_PROGRAM = @INSTALL_PROGRAM@ +- INSTALL_SCRIPT = @INSTALL_SCRIPT@ +- INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +- LDFLAGS = @LDFLAGS@ +- LIBOBJS = @LIBOBJS@ +- LIBS = @LIBS@ +- LTLIBOBJS = @LTLIBOBJS@ +- MAKEINFO = @MAKEINFO@ +- OBJEXT = @OBJEXT@ +- PACKAGE = @PACKAGE@ +- PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +- PACKAGE_NAME = @PACKAGE_NAME@ +- PACKAGE_STRING = @PACKAGE_STRING@ +- PACKAGE_TARNAME = @PACKAGE_TARNAME@ +- PACKAGE_VERSION = @PACKAGE_VERSION@ +- PATH_SEPARATOR = @PATH_SEPARATOR@ +- RANLIB = @RANLIB@ +- SET_MAKE = @SET_MAKE@ +- SHELL = @SHELL@ +- STRIP = @STRIP@ +- VERSION = @VERSION@ +- ac_ct_CC = @ac_ct_CC@ +- am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +- am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +- am__include = @am__include@ +- am__leading_dot = @am__leading_dot@ +- am__quote = @am__quote@ +- am__tar = @am__tar@ +- am__untar = @am__untar@ +- bindir = @bindir@ +- build_alias = @build_alias@ +- datadir = @datadir@ +- datarootdir = @datarootdir@ +- docdir = @docdir@ +- dvidir = @dvidir@ +- exec_prefix = @exec_prefix@ +- host_alias = @host_alias@ +- htmldir = @htmldir@ +- includedir = @includedir@ +- infodir = @infodir@ +- install_sh = @install_sh@ +- libdir = @libdir@ +- libexecdir = @libexecdir@ +- localedir = @localedir@ +- localstatedir = @localstatedir@ +- mandir = @mandir@ +- mkdir_p = @mkdir_p@ +- oldincludedir = @oldincludedir@ +- pdfdir = @pdfdir@ +- prefix = @prefix@ +- program_transform_name = @program_transform_name@ +- psdir = @psdir@ +- sbindir = @sbindir@ +- sharedstatedir = @sharedstatedir@ +- sysconfdir = @sysconfdir@ +- target_alias = @target_alias@ +- lib_LIBRARIES = libenet.a +- libenet_a_SOURCES = host.c list.c callbacks.c packet.c peer.c protocol.c unix.c win32.c +- INCLUDES = -Iinclude/ +- SUBDIRS = include +- all: all-recursive +- +- .SUFFIXES: +- .SUFFIXES: .c .o .obj +- am--refresh: +- @: +- $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +- @for dep in $?; do \ +- case '$(am__configure_deps)' in \ +- *$$dep*) \ +- echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ +- cd $(srcdir) && $(AUTOMAKE) --foreign \ +- && exit 0; \ +- exit 1;; \ +- esac; \ +- done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --foreign Makefile +- .PRECIOUS: Makefile +- Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- @case '$?' in \ +- *config.status*) \ +- echo ' $(SHELL) ./config.status'; \ +- $(SHELL) ./config.status;; \ +- *) \ +- echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ +- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ +- esac; +- +- $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +- $(SHELL) ./config.status --recheck +- +- $(top_srcdir)/configure: $(am__configure_deps) +- cd $(srcdir) && $(AUTOCONF) +- $(ACLOCAL_M4): $(am__aclocal_m4_deps) +- cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +- install-libLIBRARIES: $(lib_LIBRARIES) +- @$(NORMAL_INSTALL) +- test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" +- @list='$(lib_LIBRARIES)'; for p in $$list; do \ +- if test -f $$p; then \ +- f=$(am__strip_dir) \ +- echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ +- $(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ +- else :; fi; \ +- done +- @$(POST_INSTALL) +- @list='$(lib_LIBRARIES)'; for p in $$list; do \ +- if test -f $$p; then \ +- p=$(am__strip_dir) \ +- echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \ +- $(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \ +- else :; fi; \ +- done +- +- uninstall-libLIBRARIES: +- @$(NORMAL_UNINSTALL) +- @list='$(lib_LIBRARIES)'; for p in $$list; do \ +- p=$(am__strip_dir) \ +- echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \ +- rm -f "$(DESTDIR)$(libdir)/$$p"; \ +- done +- +- clean-libLIBRARIES: +- -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) +- libenet.a: $(libenet_a_OBJECTS) $(libenet_a_DEPENDENCIES) +- -rm -f libenet.a +- $(libenet_a_AR) libenet.a $(libenet_a_OBJECTS) $(libenet_a_LIBADD) +- $(RANLIB) libenet.a +- +- mostlyclean-compile: +- -rm -f *.$(OBJEXT) +- +- distclean-compile: +- -rm -f *.tab.c +- +- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callbacks.Po@am__quote@ +- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/host.Po@am__quote@ +- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Po@am__quote@ +- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/packet.Po@am__quote@ +- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peer.Po@am__quote@ +- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protocol.Po@am__quote@ +- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unix.Po@am__quote@ +- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win32.Po@am__quote@ +- +- .c.o: +- @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +- @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +- @AMDEP_TRUE@@am__fas... [truncated message content] |
From: <hik...@us...> - 2008-09-10 00:26:07
|
Revision: 2260 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2260&view=rev Author: hikerstk Date: 2008-09-10 00:26:04 +0000 (Wed, 10 Sep 2008) Log Message: ----------- 1) Fixed 'install' and 'dist-*' make targets. 2) Removed unused files. Modified Paths: -------------- trunk/supertuxkart/configure.ac trunk/supertuxkart/data/Makefile.am trunk/supertuxkart/data/tracks/Makefile.am trunk/supertuxkart/doc/Makefile.am trunk/supertuxkart/src/Makefile.am trunk/supertuxkart/src/enet/Makefile.am trunk/supertuxkart/src/enet/Makefile.in Removed Paths: ------------- trunk/supertuxkart/src/enet/Makefile.in.rej trunk/supertuxkart/src/enet/include/Makefile.am trunk/supertuxkart/src/enet/include/Makefile.in trunk/supertuxkart/src/enet/include/enet/Makefile.am trunk/supertuxkart/src/enet/include/enet/Makefile.in trunk/supertuxkart/src/gui/network_info.cpp trunk/supertuxkart/src/gui/network_info.hpp trunk/supertuxkart/src/network/kart_packet.cpp trunk/supertuxkart/src/network/kart_packet.hpp Property Changed: ---------------- trunk/supertuxkart/data/grandprix/ trunk/supertuxkart/src/enet/ Modified: trunk/supertuxkart/configure.ac =================================================================== --- trunk/supertuxkart/configure.ac 2008-09-09 13:44:17 UTC (rev 2259) +++ trunk/supertuxkart/configure.ac 2008-09-10 00:26:04 UTC (rev 2260) @@ -394,6 +394,7 @@ Makefile \ data/Makefile \ data/fonts/Makefile \ + data/grandprix/Makefile \ data/herrings/Makefile \ data/karts/Makefile \ data/models/Makefile \ @@ -410,8 +411,6 @@ src/bullet/src/Makefile \ src/bullet/Demos/OpenGL/Makefile \ src/enet/Makefile \ - src/enet/include/Makefile \ - src/enet/include/enet/Makefile ]) AC_OUTPUT echo -e $SUMMARY Modified: trunk/supertuxkart/data/Makefile.am =================================================================== --- trunk/supertuxkart/data/Makefile.am 2008-09-09 13:44:17 UTC (rev 2259) +++ trunk/supertuxkart/data/Makefile.am 2008-09-10 00:26:04 UTC (rev 2260) @@ -1,12 +1,13 @@ # data/ -SUBDIRS = fonts herrings karts models music po sfx textures tracks +SUBDIRS = fonts herrings karts models music po sfx textures tracks grandprix pkgdatadir = $(datadir)/games/@PACKAGE@/data pkgdata_DATA = $(shell find $(srcdir) -name "*.data") \ $(shell find $(srcdir) -name "*.herring") \ $(shell find $(srcdir) -name "*.projectile") \ $(shell find $(srcdir) -name "*.cup") \ + $(shell find $(srcdir) -maxdepth 1 -name "*.challenge") \ $(shell find $(srcdir) -name "*.collectable") \ $(shell find $(srcdir) -name "*.projectile") \ CREDITS licenses \ Property changes on: trunk/supertuxkart/data/grandprix ___________________________________________________________________ Added: svn:ignore + Makefile Makefile.in Modified: trunk/supertuxkart/data/tracks/Makefile.am =================================================================== --- trunk/supertuxkart/data/tracks/Makefile.am 2008-09-09 13:44:17 UTC (rev 2259) +++ trunk/supertuxkart/data/tracks/Makefile.am 2008-09-10 00:26:04 UTC (rev 2260) @@ -1,15 +1,16 @@ # data/tracks pkgdatadir= $(datadir)/games/@PACKAGE@/data/tracks -nobase_pkgdata_DATA = $(shell find $(srcdir) -name "readme.txt") \ - $(shell find $(srcdir) -name "*.track") \ - $(shell find $(srcdir) -name "*.drv?") \ - $(shell find $(srcdir) -name "*.loc") \ - $(shell find $(srcdir) -name "*.ac") \ - $(shell find $(srcdir) -name "*.rgb") \ +nobase_pkgdata_DATA = $(shell find $(srcdir) -name "readme.txt") \ + $(shell find $(srcdir) -name "*.track") \ + $(shell find $(srcdir) -name "*.drv?") \ + $(shell find $(srcdir) -name "*.loc") \ + $(shell find $(srcdir) -name "*.ac") \ + $(shell find $(srcdir) -name "*.rgb") \ + $(shell find $(srcdir) -name "*.challenge") \ $(shell find $(srcdir) -name "materials.dat") \ - $(shell find $(srcdir) -name "license.txt") \ - $(shell find $(srcdir) -name "*.music") \ + $(shell find $(srcdir) -name "license.txt") \ + $(shell find $(srcdir) -name "*.music") \ $(shell find $(srcdir) -name "*.ogg") EXTRA_DIST = $(nobase_pkgdata_DATA) Modified: trunk/supertuxkart/doc/Makefile.am =================================================================== --- trunk/supertuxkart/doc/Makefile.am 2008-09-09 13:44:17 UTC (rev 2259) +++ trunk/supertuxkart/doc/Makefile.am 2008-09-10 00:26:04 UTC (rev 2260) @@ -4,4 +4,4 @@ pkgdatadir = $(datadir)/doc/@PACKAGE@/ -EXTRA_DIST = conventions.txt implementation.txt robots.txt +EXTRA_DIST = conventions.txt implementation.txt robots.txt challenges_dependencies.odg Modified: trunk/supertuxkart/src/Makefile.am =================================================================== --- trunk/supertuxkart/src/Makefile.am 2008-09-09 13:44:17 UTC (rev 2259) +++ trunk/supertuxkart/src/Makefile.am 2008-09-10 00:26:04 UTC (rev 2260) @@ -37,13 +37,13 @@ network/remote_kart_info.hpp network/character_selected_message.hpp \ network/race_start_message.hpp \ network/connect_message.hpp network/connect_message.cpp \ - network.num_players_message.hpp network/world_loaded_message.hpp \ + network/num_players_message.hpp network/world_loaded_message.hpp \ network/connect_message.hpp network/character_info_message.hpp \ network/kart_update_message.hpp network/kart_update_message.cpp \ network/kart_control_message.hpp network/kart_control_message.cpp \ network/flyable_info.hpp network/herring_info.hpp \ network/race_state.hpp network/race_state.cpp \ - utils/random_genertaor.hpp utils/random_generator.cpp \ + utils/random_generator.hpp utils/random_generator.cpp \ material_manager.cpp material_manager.hpp \ grand_prix_manager.cpp grand_prix_manager.hpp \ attachment.cpp attachment.hpp \ @@ -149,6 +149,10 @@ replay_recorder.hpp replay_recorder.cpp \ ide/vc8/supertuxkart.sln ide/vc8/supertuxkart.vcproj \ ide/vc8/bullet_lib.vcproj ide/vc8/README + ide/vc9/supertuxkart.sln ide/vc9/supertuxkart.vcproj \ + ide/vc9/bullet_lib.vcproj ide/vc9/enet.vcproj \ + ide/vc9/README \ + Xcode/STK_XCode.xcodeproj/project/pbxproj # Link in the specific gcc 4.1 bug work around Property changes on: trunk/supertuxkart/src/enet ___________________________________________________________________ Added: svn:ignore + libenet.a .deps Makefile Makefile.in Modified: trunk/supertuxkart/src/enet/Makefile.am =================================================================== --- trunk/supertuxkart/src/enet/Makefile.am 2008-09-09 13:44:17 UTC (rev 2259) +++ trunk/supertuxkart/src/enet/Makefile.am 2008-09-10 00:26:04 UTC (rev 2260) @@ -1,5 +1,15 @@ -lib_LIBRARIES = libenet.a -libenet_a_SOURCES = host.c list.c callbacks.c packet.c peer.c protocol.c unix.c win32.c +noinst_LIBRARIES = libenet.a +EXTRA_DIST = ChangeLog configure design.txt Doxyfile LICENSE tutorial.txt +libenet_a_SOURCES = host.c list.c callbacks.c packet.c peer.c protocol.c unix.c win32.c \ + include/enet/types.h \ + include/enet/list.h \ + include/enet/utility.h \ + include/enet/time.h \ + include/enet/callbacks.h \ + include/enet/unix.h \ + include/enet/win32.h \ + include/enet/protocol.h \ + include/enet/enet.h + INCLUDES = -Iinclude/ -SUBDIRS = include Modified: trunk/supertuxkart/src/enet/Makefile.in =================================================================== --- trunk/supertuxkart/src/enet/Makefile.in 2008-09-09 13:44:17 UTC (rev 2259) +++ trunk/supertuxkart/src/enet/Makefile.in 2008-09-10 00:26:04 UTC (rev 2260) @@ -0,0 +1,423 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = src/enet +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + ChangeLog depcomp install-sh missing +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +LIBRARIES = $(noinst_LIBRARIES) +AR = ar +ARFLAGS = cru +libenet_a_AR = $(AR) $(ARFLAGS) +libenet_a_LIBADD = +am_libenet_a_OBJECTS = host.$(OBJEXT) list.$(OBJEXT) \ + callbacks.$(OBJEXT) packet.$(OBJEXT) peer.$(OBJEXT) \ + protocol.$(OBJEXT) unix.$(OBJEXT) win32.$(OBJEXT) +libenet_a_OBJECTS = $(am_libenet_a_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(libenet_a_SOURCES) +DIST_SOURCES = $(libenet_a_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BULLETTREE = @BULLETTREE@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENETTREE = @ENETTREE@ +EXEEXT = @EXEEXT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +NOREGMOVE = @NOREGMOVE@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +bullet_LIBS = @bullet_LIBS@ +datadir = @datadir@ +enet_LIBS = @enet_LIBS@ +exec_prefix = @exec_prefix@ +have_sdl_config = @have_sdl_config@ +have_svnversion = @have_svnversion@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +openal_LIBS = @openal_LIBS@ +opengl_LIBS = @opengl_LIBS@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sdl_LIBS = @sdl_LIBS@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +noinst_LIBRARIES = libenet.a +EXTRA_DIST = ChangeLog configure design.txt Doxyfile LICENSE tutorial.txt +libenet_a_SOURCES = host.c list.c callbacks.c packet.c peer.c protocol.c unix.c win32.c \ + include/enet/types.h \ + include/enet/list.h \ + include/enet/utility.h \ + include/enet/time.h \ + include/enet/callbacks.h \ + include/enet/unix.h \ + include/enet/win32.h \ + include/enet/protocol.h \ + include/enet/enet.h + +INCLUDES = -Iinclude/ +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/enet/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/enet/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libenet.a: $(libenet_a_OBJECTS) $(libenet_a_DEPENDENCIES) + -rm -f libenet.a + $(libenet_a_AR) libenet.a $(libenet_a_OBJECTS) $(libenet_a_LIBADD) + $(RANLIB) libenet.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callbacks.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/host.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/packet.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protocol.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unix.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win32.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-noinstLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: Deleted: trunk/supertuxkart/src/enet/Makefile.in.rej =================================================================== --- trunk/supertuxkart/src/enet/Makefile.in.rej 2008-09-09 13:44:17 UTC (rev 2259) +++ trunk/supertuxkart/src/enet/Makefile.in.rej 2008-09-10 00:26:04 UTC (rev 2260) @@ -1,659 +0,0 @@ -*************** -*** 1,656 **** -- # Makefile.in generated by automake 1.9.6 from Makefile.am. -- # @configure_input@ -- -- # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -- # 2003, 2004, 2005 Free Software Foundation, Inc. -- # This Makefile.in is free software; the Free Software Foundation -- # gives unlimited permission to copy and/or distribute it, -- # with or without modifications, as long as this notice is preserved. -- -- # This program is distributed in the hope that it will be useful, -- # but WITHOUT ANY WARRANTY, to the extent permitted by law; without -- # even the implied warranty of MERCHANTABILITY or FITNESS FOR A -- # PARTICULAR PURPOSE. -- -- @SET_MAKE@ -- -- srcdir = @srcdir@ -- top_srcdir = @top_srcdir@ -- VPATH = @srcdir@ -- pkgdatadir = $(datadir)/@PACKAGE@ -- pkglibdir = $(libdir)/@PACKAGE@ -- pkgincludedir = $(includedir)/@PACKAGE@ -- top_builddir = . -- am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -- INSTALL = @INSTALL@ -- install_sh_DATA = $(install_sh) -c -m 644 -- install_sh_PROGRAM = $(install_sh) -c -- install_sh_SCRIPT = $(install_sh) -c -- INSTALL_HEADER = $(INSTALL_DATA) -- transform = $(program_transform_name) -- NORMAL_INSTALL = : -- PRE_INSTALL = : -- POST_INSTALL = : -- NORMAL_UNINSTALL = : -- PRE_UNINSTALL = : -- POST_UNINSTALL = : -- subdir = . -- DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ -- $(srcdir)/Makefile.in $(top_srcdir)/configure ChangeLog \ -- depcomp install-sh missing -- ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -- am__aclocal_m4_deps = $(top_srcdir)/configure.in -- am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ -- $(ACLOCAL_M4) -- am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ -- configure.lineno configure.status.lineno -- mkinstalldirs = $(install_sh) -d -- CONFIG_CLEAN_FILES = -- am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -- am__vpath_adj = case $$p in \ -- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ -- *) f=$$p;; \ -- esac; -- am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -- am__installdirs = "$(DESTDIR)$(libdir)" -- libLIBRARIES_INSTALL = $(INSTALL_DATA) -- LIBRARIES = $(lib_LIBRARIES) -- AR = ar -- ARFLAGS = cru -- libenet_a_AR = $(AR) $(ARFLAGS) -- libenet_a_LIBADD = -- am_libenet_a_OBJECTS = host.$(OBJEXT) list.$(OBJEXT) \ -- callbacks.$(OBJEXT) packet.$(OBJEXT) peer.$(OBJEXT) \ -- protocol.$(OBJEXT) unix.$(OBJEXT) win32.$(OBJEXT) -- libenet_a_OBJECTS = $(am_libenet_a_OBJECTS) -- DEFAULT_INCLUDES = -I. -I$(srcdir) -- depcomp = $(SHELL) $(top_srcdir)/depcomp -- am__depfiles_maybe = depfiles -- COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ -- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -- CCLD = $(CC) -- LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -- SOURCES = $(libenet_a_SOURCES) -- DIST_SOURCES = $(libenet_a_SOURCES) -- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ -- html-recursive info-recursive install-data-recursive \ -- install-exec-recursive install-info-recursive \ -- install-recursive installcheck-recursive installdirs-recursive \ -- pdf-recursive ps-recursive uninstall-info-recursive \ -- uninstall-recursive -- ETAGS = etags -- CTAGS = ctags -- DIST_SUBDIRS = $(SUBDIRS) -- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -- distdir = $(PACKAGE)-$(VERSION) -- top_distdir = $(distdir) -- am__remove_distdir = \ -- { test ! -d $(distdir) \ -- || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ -- && rm -fr $(distdir); }; } -- DIST_ARCHIVES = $(distdir).tar.gz -- GZIP_ENV = --best -- distuninstallcheck_listfiles = find . -type f -print -- distcleancheck_listfiles = find . -type f -print -- ACLOCAL = @ACLOCAL@ -- AMDEP_FALSE = @AMDEP_FALSE@ -- AMDEP_TRUE = @AMDEP_TRUE@ -- AMTAR = @AMTAR@ -- AUTOCONF = @AUTOCONF@ -- AUTOHEADER = @AUTOHEADER@ -- AUTOMAKE = @AUTOMAKE@ -- AWK = @AWK@ -- CC = @CC@ -- CCDEPMODE = @CCDEPMODE@ -- CFLAGS = @CFLAGS@ -- CPP = @CPP@ -- CPPFLAGS = @CPPFLAGS@ -- CYGPATH_W = @CYGPATH_W@ -- DEFS = @DEFS@ -- DEPDIR = @DEPDIR@ -- ECHO_C = @ECHO_C@ -- ECHO_N = @ECHO_N@ -- ECHO_T = @ECHO_T@ -- EGREP = @EGREP@ -- EXEEXT = @EXEEXT@ -- GREP = @GREP@ -- INSTALL_DATA = @INSTALL_DATA@ -- INSTALL_PROGRAM = @INSTALL_PROGRAM@ -- INSTALL_SCRIPT = @INSTALL_SCRIPT@ -- INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -- LDFLAGS = @LDFLAGS@ -- LIBOBJS = @LIBOBJS@ -- LIBS = @LIBS@ -- LTLIBOBJS = @LTLIBOBJS@ -- MAKEINFO = @MAKEINFO@ -- OBJEXT = @OBJEXT@ -- PACKAGE = @PACKAGE@ -- PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -- PACKAGE_NAME = @PACKAGE_NAME@ -- PACKAGE_STRING = @PACKAGE_STRING@ -- PACKAGE_TARNAME = @PACKAGE_TARNAME@ -- PACKAGE_VERSION = @PACKAGE_VERSION@ -- PATH_SEPARATOR = @PATH_SEPARATOR@ -- RANLIB = @RANLIB@ -- SET_MAKE = @SET_MAKE@ -- SHELL = @SHELL@ -- STRIP = @STRIP@ -- VERSION = @VERSION@ -- ac_ct_CC = @ac_ct_CC@ -- am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -- am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -- am__include = @am__include@ -- am__leading_dot = @am__leading_dot@ -- am__quote = @am__quote@ -- am__tar = @am__tar@ -- am__untar = @am__untar@ -- bindir = @bindir@ -- build_alias = @build_alias@ -- datadir = @datadir@ -- datarootdir = @datarootdir@ -- docdir = @docdir@ -- dvidir = @dvidir@ -- exec_prefix = @exec_prefix@ -- host_alias = @host_alias@ -- htmldir = @htmldir@ -- includedir = @includedir@ -- infodir = @infodir@ -- install_sh = @install_sh@ -- libdir = @libdir@ -- libexecdir = @libexecdir@ -- localedir = @localedir@ -- localstatedir = @localstatedir@ -- mandir = @mandir@ -- mkdir_p = @mkdir_p@ -- oldincludedir = @oldincludedir@ -- pdfdir = @pdfdir@ -- prefix = @prefix@ -- program_transform_name = @program_transform_name@ -- psdir = @psdir@ -- sbindir = @sbindir@ -- sharedstatedir = @sharedstatedir@ -- sysconfdir = @sysconfdir@ -- target_alias = @target_alias@ -- lib_LIBRARIES = libenet.a -- libenet_a_SOURCES = host.c list.c callbacks.c packet.c peer.c protocol.c unix.c win32.c -- INCLUDES = -Iinclude/ -- SUBDIRS = include -- all: all-recursive -- -- .SUFFIXES: -- .SUFFIXES: .c .o .obj -- am--refresh: -- @: -- $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) -- @for dep in $?; do \ -- case '$(am__configure_deps)' in \ -- *$$dep*) \ -- echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ -- cd $(srcdir) && $(AUTOMAKE) --foreign \ -- && exit 0; \ -- exit 1;; \ -- esac; \ -- done; \ -- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ -- cd $(top_srcdir) && \ -- $(AUTOMAKE) --foreign Makefile -- .PRECIOUS: Makefile -- Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -- @case '$?' in \ -- *config.status*) \ -- echo ' $(SHELL) ./config.status'; \ -- $(SHELL) ./config.status;; \ -- *) \ -- echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ -- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ -- esac; -- -- $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) -- $(SHELL) ./config.status --recheck -- -- $(top_srcdir)/configure: $(am__configure_deps) -- cd $(srcdir) && $(AUTOCONF) -- $(ACLOCAL_M4): $(am__aclocal_m4_deps) -- cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -- install-libLIBRARIES: $(lib_LIBRARIES) -- @$(NORMAL_INSTALL) -- test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" -- @list='$(lib_LIBRARIES)'; for p in $$list; do \ -- if test -f $$p; then \ -- f=$(am__strip_dir) \ -- echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ -- $(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ -- else :; fi; \ -- done -- @$(POST_INSTALL) -- @list='$(lib_LIBRARIES)'; for p in $$list; do \ -- if test -f $$p; then \ -- p=$(am__strip_dir) \ -- echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \ -- $(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \ -- else :; fi; \ -- done -- -- uninstall-libLIBRARIES: -- @$(NORMAL_UNINSTALL) -- @list='$(lib_LIBRARIES)'; for p in $$list; do \ -- p=$(am__strip_dir) \ -- echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \ -- rm -f "$(DESTDIR)$(libdir)/$$p"; \ -- done -- -- clean-libLIBRARIES: -- -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) -- libenet.a: $(libenet_a_OBJECTS) $(libenet_a_DEPENDENCIES) -- -rm -f libenet.a -- $(libenet_a_AR) libenet.a $(libenet_a_OBJECTS) $(libenet_a_LIBADD) -- $(RANLIB) libenet.a -- -- mostlyclean-compile: -- -rm -f *.$(OBJEXT) -- -- distclean-compile: -- -rm -f *.tab.c -- -- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callbacks.Po@am__quote@ -- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/host.Po@am__quote@ -- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Po@am__quote@ -- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/packet.Po@am__quote@ -- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peer.Po@am__quote@ -- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protocol.Po@am__quote@ -- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unix.Po@am__quote@ -- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win32.Po@am__quote@ -- -- .c.o: -- @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -- @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -- @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -- @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -- @am__fastdepCC_FALSE@ $(COMPILE) -c $< -- -- .c.obj: -- @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -- @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -- @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -- @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -- @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` -- uninstall-info-am: -- -- # This directory's subdirectories are mostly independent; you can cd -- # into them and run `make' without going through this Makefile. -- # To change the values of `make' variables: instead of editing Makefiles, -- # (1) if the variable is set in `config.status', edit `config.status' -- # (which will cause the Makefiles to be regenerated when you run `make'); -- # (2) otherwise, pass the desired values on the `make' command line. -- $(RECURSIVE_TARGETS): -- @failcom='exit 1'; \ -- for f in x $$MAKEFLAGS; do \ -- case $$f in \ -- *=* | --[!k]*);; \ -- *k*) failcom='fail=yes';; \ -- esac; \ -- done; \ -- dot_seen=no; \ -- target=`echo $@ | sed s/-recursive//`; \ -- list='$(SUBDIRS)'; for subdir in $$list; do \ -- echo "Making $$target in $$subdir"; \ -- if test "$$subdir" = "."; then \ -- dot_seen=yes; \ -- local_target="$$target-am"; \ -- else \ -- local_target="$$target"; \ -- fi; \ -- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ -- || eval $$failcom; \ -- done; \ -- if test "$$dot_seen" = "no"; then \ -- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ -- fi; test -z "$$fail" -- -- mostlyclean-recursive clean-recursive distclean-recursive \ -- maintainer-clean-recursive: -- @failcom='exit 1'; \ -- for f in x $$MAKEFLAGS; do \ -- case $$f in \ -- *=* | --[!k]*);; \ -- *k*) failcom='fail=yes';; \ -- esac; \ -- done; \ -- dot_seen=no; \ -- case "$@" in \ -- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ -- *) list='$(SUBDIRS)' ;; \ -- esac; \ -- rev=''; for subdir in $$list; do \ -- if test "$$subdir" = "."; then :; else \ -- rev="$$subdir $$rev"; \ -- fi; \ -- done; \ -- rev="$$rev ."; \ -- target=`echo $@ | sed s/-recursive//`; \ -- for subdir in $$rev; do \ -- echo "Making $$target in $$subdir"; \ -- if test "$$subdir" = "."; then \ -- local_target="$$target-am"; \ -- else \ -- local_target="$$target"; \ -- fi; \ -- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ -- || eval $$failcom; \ -- done && test -z "$$fail" -- tags-recursive: -- list='$(SUBDIRS)'; for subdir in $$list; do \ -- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ -- done -- ctags-recursive: -- list='$(SUBDIRS)'; for subdir in $$list; do \ -- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ -- done -- -- ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -- unique=`for i in $$list; do \ -- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -- done | \ -- $(AWK) ' { files[$$0] = 1; } \ -- END { for (i in files) print i; }'`; \ -- mkid -fID $$unique -- tags: TAGS -- -- TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -- $(TAGS_FILES) $(LISP) -- tags=; \ -- here=`pwd`; \ -- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ -- include_option=--etags-include; \ -- empty_fix=.; \ -- else \ -- include_option=--include; \ -- empty_fix=; \ -- fi; \ -- list='$(SUBDIRS)'; for subdir in $$list; do \ -- if test "$$subdir" = .; then :; else \ -- test ! -f $$subdir/TAGS || \ -- tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ -- fi; \ -- done; \ -- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -- unique=`for i in $$list; do \ -- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -- done | \ -- $(AWK) ' { files[$$0] = 1; } \ -- END { for (i in files) print i; }'`; \ -- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ -- test -n "$$unique" || unique=$$empty_fix; \ -- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -- $$tags $$unique; \ -- fi -- ctags: CTAGS -- CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -- $(TAGS_FILES) $(LISP) -- tags=; \ -- here=`pwd`; \ -- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -- unique=`for i in $$list; do \ -- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -- done | \ -- $(AWK) ' { files[$$0] = 1; } \ -- END { for (i in files) print i; }'`; \ -- test -z "$(CTAGS_ARGS)$$tags$$unique" \ -- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ -- $$tags $$unique -- -- GTAGS: -- here=`$(am__cd) $(top_builddir) && pwd` \ -- && cd $(top_srcdir) \ -- && gtags -i $(GTAGS_ARGS) $$here -- -- distclean-tags: -- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- -- distdir: $(DISTFILES) -- $(am__remove_distdir) -- mkdir $(distdir) -- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ -- list='$(DISTFILES)'; for file in $$list; do \ -- case $$file in \ -- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ -- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ -- esac; \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ -- dir="/$$dir"; \ -- $(mkdir_p) "$(distdir)$$dir"; \ -- else \ -- dir=''; \ -- fi; \ -- if test -d $$d/$$file; then \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ -- fi; \ -- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ -- else \ -- test -f $(distdir)/$$file \ -- || cp -p $$d/$$file $(distdir)/$$file \ -- || exit 1; \ -- fi; \ -- done -- list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -- if test "$$subdir" = .; then :; else \ -- test -d "$(distdir)/$$subdir" \ -- || $(mkdir_p) "$(distdir)/$$subdir" \ -- || exit 1; \ -- distdir=`$(am__cd) $(distdir) && pwd`; \ -- top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ -- (cd $$subdir && \ -- $(MAKE) $(AM_MAKEFLAGS) \ -- top_distdir="$$top_distdir" \ -- distdir="$$distdir/$$subdir" \ -- distdir) \ -- || exit 1; \ -- fi; \ -- done -- -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ -- ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ -- ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ -- ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ -- || chmod -R a+r $(distdir) -- dist-gzip: distdir -- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -- $(am__remove_distdir) -- -- dist-bzip2: distdir -- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 -- $(am__remove_distdir) -- -- dist-tarZ: distdir -- tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z -- $(am__remove_distdir) -- -- dist-shar: distdir -- shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz -- $(am__remove_distdir) -- -- dist-zip: distdir -- -rm -f $(distdir).zip -- zip -rq $(distdir).zip $(distdir) -- $(am__remove_distdir) -- -- dist dist-all: distdir -- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -- $(am__remove_distdir) -- -- # This target untars the dist file and tries a VPATH configuration. Then -- # it guarantees that the distribution is self-contained by making another -- # tarfile. -- distcheck: dist -- case '$(DIST_ARCHIVES)' in \ -- *.tar.gz*) \ -- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ -- *.tar.bz2*) \ -- bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ -- *.tar.Z*) \ -- uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ -- *.shar.gz*) \ -- GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ -- *.zip*) \ -- unzip $(distdir).zip ;;\ -- esac -- chmod -R a-w $(distdir); chmod a+w $(distdir) -- mkdir $(distdir)/_build -- mkdir $(distdir)/_inst -- chmod a-w $(distdir) -- dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ -- && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ -- && cd $(distdir)/_build \ -- && ../configure --srcdir=.. --prefix="$$dc_install_base" \ -- $(DISTCHECK_CONFIGURE_FLAGS) \ -- && $(MAKE) $(AM_MAKEFLAGS) \ -- && $(MAKE) $(AM_MAKEFLAGS) dvi \ -- && $(MAKE) $(AM_MAKEFLAGS) check \ -- && $(MAKE) $(AM_MAKEFLAGS) install \ -- && $(MAKE) $(AM_MAKEFLAGS) installcheck \ -- && $(MAKE) $(AM_MAKEFLAGS) uninstall \ -- && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ -- distuninstallcheck \ -- && chmod -R a-w "$$dc_install_base" \ -- && ({ \ -- (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ -- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ -- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ -- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ -- distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ -- } || { rm -rf "$$dc_destdir"; exit 1; }) \ -- && rm -rf "$$dc_destdir" \ -- && $(MAKE) $(AM_MAKEFLAGS) dist \ -- && rm -rf $(DIST_ARCHIVES) \ -- && $(MAKE) $(AM_MAKEFLAGS) distcleancheck -- $(am__remove_distdir) -- @(echo "$(distdir) archives ready for distribution: "; \ -- list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ -- sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' -- distuninstallcheck: -- @cd $(distuninstallcheck_dir) \ -- && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ -- || { echo "ERROR: files left after uninstall:" ; \ -- if test -n "$(DESTDIR)"; then \ -- echo " (check DESTDIR support)"; \ -- fi ; \ -- $(distuninstallcheck_listfiles) ; \ -- exit 1; } >&2 -- distcleancheck: distclean -- @if test '$(srcdir)' = . ; then \ -- echo "ERROR: distcleancheck can only run from a VPATH build" ; \ -- exit 1 ; \ -- fi -- @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ -- || { echo "ERROR: files left in build directory after distclean:" ; \ -- $(distcleancheck_listfiles) ; \ -- exit 1; } >&2 -- check-am: all-am -- check: check-recursive -- all-am: Makefile $(LIBRARIES) -- installdirs: installdirs-recursive -- installdirs-am: -- for dir in "$(DESTDIR)$(libdir)"; do \ -- test -z "$$dir" || $(mkdir_p) "$$dir"; \ -- done -- install: install-recursive -- install-exec: install-exec-recursive -- install-data: install-data-recursive -- uninstall: uninstall-recursive -- -- install-am: all-am -- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -- -- installcheck: installcheck-recursive -- install-strip: -- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -- `test -z '$(STRIP)' || \ -- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -- mostlyclean-generic: -- -- clean-generic: -- -- distclean-generic: -- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -- -- maintainer-clean-generic: -- @echo "This command is intended for maintainers to use" -- @echo "it deletes files that may require special tools to rebuild." -- clean: clean-recursive -- -- clean-am: clean-generic clean-libLIBRARIES mostlyclean-am -- -- distclean: distclean-recursive -- -rm -f $(am__CONFIG_DISTCLEAN_FILES) -- -rm -rf ./$(DEPDIR) -- -rm -f Makefile -- distclean-am: clean-am distclean-compile distclean-generic \ -- distclean-tags -- -- dvi: dvi-recursive -- -- dvi-am: -- -- html: html-recursive -- -- info: info-recursive -- -- info-am: -- -- install-data-am: -- -- install-exec-am: install-libLIBRARIES -- -- install-info: install-info-recursive -- -- install-man: -- -- installcheck-am: -- -- maintainer-clean: maintainer-clean-recursive -- -rm -f $(am__CONFIG_DISTCLEAN_FILES) -- -rm -rf $(top_srcdir)/autom4te.cache -- -rm -rf ./$(DEPDIR) -- -rm -f Makefile -- maintainer-clean-am: distclean-am maintainer-clean-generic -- -- mostlyclean: mostlyclean-recursive -- -- mostlyclean-am: mostlyclean-compile mostlyclean-generic -- -- pdf: pdf-recursive -- -- pdf-am: -- -- ps: ps-recursive -- -- ps-am: -- -- uninstall-am: uninstall-info-am uninstall-libLIBRARIES -- -- uninstall-info: uninstall-info-recursive -- -- .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ -- check-am clean clean-generic clean-libLIBRARIES \ -- clean-recursive ctags ctags-recursive dist dist-all dist-bzip2 \ -- dist-gzip dist-shar dist-tarZ dist-zip distcheck distclean \ -- distclean-compile distclean-generic distclean-recursive \ -- distclean-tags distcleancheck distdir distuninstallcheck dvi \ -- dvi-am html html-am info info-am install install-am \ -- install-data install-data-am install-exec install-exec-am \ -- install-info install-info-am install-libLIBRARIES install-man \ -- install-strip installcheck installcheck-am installdirs \ -- installdirs-am maintainer-clean maintainer-clean-generic \ -- maintainer-clean-recursive mostlyclean mostlyclean-compile \ -- mostlyclean-generic mostlyclean-recursive pdf pdf-am ps ps-am \ -- tags tags-recursive uninstall uninstall-am uninstall-info-am \ -- uninstall-libLIBRARIES -- -- # Tell versions [3.59,3.63) of GNU make to not export all variables. -- # Otherwise a system limit (for SysV at least) may be exceeded. -- .NOEXPORT: ---- 0 ---- Deleted: trunk/supertuxkart/src/enet/include/Makefile.am =================================================================== --- trunk/supertuxkart/src/enet/include/Makefile.am 2008-09-09 13:44:17 UTC (rev 2259) +++ trunk/supertuxkart/src/enet/include/Makefile.am 2008-09-10 00:26:04 UTC (rev 2260) @@ -1 +0,0 @@ -SUBDIRS = enet Deleted: trunk/supertuxkart/src/enet/include/Makefile.in =================================================================== --- trunk/supertuxkart/src/enet/include/Makefile.in 2008-09-09 13:44:17 UTC (rev 2259) +++ trunk/supertuxkart/src/enet/include/Makefile.in 2008-09-10 00:26:04 UTC (rev 2260) @@ -1,462 +0,0 @@ -# Makefile.in generated by automake 1.9.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -subdir = src/enet/include -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BULLETTREE = @BULLETTREE@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -ENETTREE = @ENETTREE@ -EXEEXT = @EXEEXT@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -NOREGMOVE = @NOREGMOVE@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -bullet_LIBS = @bullet_LIBS@ -datadir = @datadir@ -enet_LIBS = @enet_LIBS@ -exec_prefix = @exec_prefix@ -have_sdl_config = @have_sdl_config@ -have_svnversion = @have_svnversion@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -openal_LIBS = @openal_LIBS@ -opengl_LIBS = @opengl_LIBS@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -sbindir = @sbindir@ -sdl_LIBS = @sdl_LIBS@ -sharedstatedir = @sharedstatedir@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -SUBDIRS = enet -all: all-recursive - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/enet/include/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/enet/include/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -uninstall-info-am: - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ - || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-recursive -all-am: Makefile -installdirs: installdirs-recursive -installdirs-am: -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-recursive - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -info: info-recursive - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-recursive - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-info-am - -uninstall-info: uninstall-info-recursive - -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-recursive ctags ctags-recursive \ - distclean distclean-generic distclean-recursive distclean-tags \ - distdir dvi dvi-am html html-am info info-am install \ - install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-strip installcheck installcheck-am installdirs \ - installdirs-am maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-generic \ - mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-info-am - -# Tell versions [3.59,3.63) of G... [truncated message content] |
From: <au...@us...> - 2008-09-10 00:49:35
|
Revision: 2262 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2262&view=rev Author: auria Date: 2008-09-10 00:49:31 +0000 (Wed, 10 Sep 2008) Log Message: ----------- added cakes Modified Paths: -------------- trunk/supertuxkart/data/homingmissile.projectile trunk/supertuxkart/data/models/homingmissile.ac trunk/supertuxkart/data/textures/homingmissile.rgb trunk/supertuxkart/src/homing.cpp trunk/supertuxkart/src/homing.hpp Added Paths: ----------- trunk/supertuxkart/data/textures/cake.rgb Modified: trunk/supertuxkart/data/homingmissile.projectile =================================================================== --- trunk/supertuxkart/data/homingmissile.projectile 2008-09-10 00:31:41 UTC (rev 2261) +++ trunk/supertuxkart/data/homingmissile.projectile 2008-09-10 00:49:31 UTC (rev 2262) @@ -4,11 +4,11 @@ (name "homing") (model "homingmissile.ac") (icon "homingmissile.rgb") - (speed 35.0) + (speed 50.0) (min-height 0.2) (max-height 1.0) (force-updown 25.0) ;; force raising/lowering the homing missile if it's too low/high - (max-distance 20.0) ;; maximum distance at which a kart is still followed + (max-distance 90.0) ;; maximum distance at which a kart is still followed (max-turn-angle 65.0) ;; maximum turn angle when following a kart ) Modified: trunk/supertuxkart/data/models/homingmissile.ac =================================================================== --- trunk/supertuxkart/data/models/homingmissile.ac 2008-09-10 00:31:41 UTC (rev 2261) +++ trunk/supertuxkart/data/models/homingmissile.ac 2008-09-10 00:49:31 UTC (rev 2262) @@ -1,6249 +1,2642 @@ AC3Db -MATERIAL "ac3dmat0" rgb 0 0 0 amb 0.2 0.2 0.2 emis 0 0 0 spec 0.5 0.5 0.5 shi 10 trans 0 -MATERIAL "ac3dmat1" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 1 1 1 shi 3 trans 0 -MATERIAL "ac3dmat3" rgb 1 1 1 amb 1 1 1 emis 1 1 1 spec 0 0 0 shi 0 trans 0 +MATERIAL "DefaultWhite" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0 +MATERIAL "Material" rgb 0.789778 0 0 amb 0.5 0.5 0.5 emis 0 0 0 spec 0.757778 0 0 shi 32 trans 0 OBJECT world -kids 317 +kids 2 OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 -numsurf 1 +name "Cube" +data 8 +Cube.002 +texture "cake.rgb" +texrep 1 1 +crease 30.000000 +numvert 290 +0.346465 0.095056 0.009069 +0.326119 0.095056 -0.113008 +0.356596 0.128387 0.009069 +0.326119 0.095056 0.131147 +0.336335 0.061726 0.009069 +0.316664 0.061726 -0.108956 +0.335574 0.128387 -0.11706 +0.335574 0.128387 0.135199 +0.316664 0.061726 0.127095 +0.041272 0.095056 0.314263 +0.163349 0.095056 0.293917 +0.041272 0.128387 0.324393 +-0.080806 0.095056 0.293917 +0.041272 0.061726 0.304133 +0.159297 0.061726 0.284462 +0.167401 0.128387 0.303372 +-0.084858 0.128387 0.303372 +-0.076754 0.061726 0.284462 +-0.263922 0.095056 0.009069 +-0.243576 0.095056 0.131147 +-0.274052 0.128387 0.009069 +-0.243576 0.095056 -0.113008 +-0.253792 0.061726 0.009069 +-0.234121 0.061726 0.127095 +-0.253031 0.128387 0.135199 +-0.253031 0.128387 -0.11706 +-0.234121 0.061725 -0.108956 +0.041272 0.095056 -0.296125 +0.163349 0.095056 -0.275778 +0.041272 0.061726 -0.285994 +-0.080806 0.095056 -0.275778 +0.041272 0.128387 -0.306255 +0.167401 0.128387 -0.285233 +0.159297 0.061725 -0.266323 +-0.076754 0.061726 -0.266323 +-0.084858 0.128387 -0.285233 +0.041272 0.173225 -0.343315 +0.041272 0.165082 -0.330501 +-0.099682 0.173225 -0.319823 +0.041272 0.190925 -0.353527 +0.182226 0.173225 -0.319823 +0.1771 0.165082 -0.307863 +-0.094556 0.165082 -0.307863 +-0.103767 0.190925 -0.329354 +0.18631 0.190925 -0.329354 +-0.311113 0.173225 0.009069 +-0.298298 0.165082 0.009069 +-0.28762 0.173225 0.150023 +-0.321324 0.190925 0.009069 +-0.28762 0.173225 -0.131885 +-0.27566 0.165082 -0.126759 +-0.27566 0.165082 0.144897 +-0.297151 0.190925 0.154108 +-0.297151 0.190925 -0.135969 +0.041272 0.173225 0.361454 +0.041272 0.165082 0.348639 +0.182225 0.173225 0.337961 +0.041272 0.190925 0.371665 +-0.099682 0.173225 0.337961 +-0.094556 0.165082 0.326001 +0.1771 0.165082 0.326001 +0.18631 0.190925 0.347492 +-0.103767 0.190925 0.347492 +0.393656 0.173225 0.009069 +0.380842 0.165082 0.009069 +0.370164 0.173225 -0.131884 +0.403868 0.190925 0.00907 +0.370164 0.173225 0.150023 +0.358204 0.165082 0.144897 +0.358204 0.165082 -0.126758 +0.379695 0.190925 -0.135969 +0.379695 0.190925 0.154108 +0.397782 0.33363 0.00907 +0.411278 0.274106 0.00907 +0.373996 0.33266 -0.133507 +0.360294 0.390793 0.009069 +0.373996 0.33266 0.151646 +0.386611 0.274106 0.157072 +0.386611 0.274106 -0.138933 +0.338953 0.386913 -0.118431 +0.338953 0.386913 0.13657 +0.041272 0.33363 0.365579 +0.041272 0.274106 0.379076 +0.183848 0.33266 0.341794 +0.041272 0.390793 0.328091 +-0.101305 0.33266 0.341794 +-0.106731 0.274106 0.354409 +0.189274 0.274106 0.354409 +0.168772 0.386913 0.306751 +-0.086228 0.386913 0.306751 +-0.315238 0.33363 0.009069 +-0.328735 0.274106 0.009069 +-0.291453 0.33266 0.151646 +-0.27775 0.390793 0.009069 +-0.291453 0.33266 -0.133508 +-0.304067 0.274106 -0.138933 +-0.304068 0.274106 0.157072 +-0.25641 0.386913 0.136569 +-0.25641 0.386913 -0.118431 +0.041272 0.33363 -0.347441 +0.041272 0.274106 -0.360937 +-0.101305 0.33266 -0.323655 +0.041272 0.390793 -0.309953 +0.183849 0.33266 -0.323655 +0.189274 0.274106 -0.33627 +-0.106731 0.274106 -0.33627 +-0.086228 0.386913 -0.288612 +0.168772 0.386913 -0.288612 +0.041272 0.475045 0.009069 +0.041272 0.465622 -0.1257 +-0.093497 0.465622 0.009069 +0.041272 0.465622 0.143838 +0.176041 0.465622 0.009069 +0.166984 0.456753 -0.116643 +-0.08444 0.456753 -0.116643 +-0.08444 0.456753 0.134781 +0.166984 0.456753 0.134781 +-0.228878 -0.00081 0.009069 +-0.240435 0.013226 0.009069 +-0.210834 -0.000626 -0.09894 +-0.200659 -0.012581 0.009069 +-0.210834 -0.000626 0.117078 +-0.221655 0.013226 0.121752 +-0.221655 0.013226 -0.103614 +-0.184395 -0.011844 -0.087501 +-0.184395 -0.011844 0.105639 +0.041272 -0.00081 -0.261081 +0.041272 0.013226 -0.272638 +0.149281 -0.000626 -0.243037 +0.041272 -0.012581 -0.232862 +-0.066737 -0.000626 -0.243037 +-0.071411 0.013226 -0.253857 +0.153955 0.013226 -0.253857 +0.137842 -0.011844 -0.216598 +-0.055298 -0.011844 -0.216598 +0.311421 -0.00081 0.009069 +0.322979 0.013226 0.009069 +0.293378 -0.000626 0.117079 +0.283203 -0.012581 0.009069 +0.293378 -0.000626 -0.09894 +0.304198 0.013226 -0.103614 +0.304198 0.013226 0.121752 +0.266939 -0.011844 0.105639 +0.266939 -0.011844 -0.087501 +0.041272 -0.00081 0.279219 +0.041272 0.013226 0.290776 +-0.066737 -0.000626 0.261175 +0.041272 -0.012581 0.251 +0.149281 -0.000626 0.261175 +0.153955 0.013226 0.271996 +-0.071411 0.013226 0.271996 +-0.055298 -0.011844 0.234736 +0.137842 -0.011844 0.234736 +0.041272 -0.028593 0.009069 +0.143962 -0.026802 0.009069 +0.041272 -0.026802 0.11176 +-0.061419 -0.026802 0.009069 +0.041272 -0.026802 -0.093621 +0.136981 -0.025117 -0.086641 +0.136981 -0.025117 0.104779 +-0.054438 -0.025117 0.104779 +-0.054438 -0.025117 -0.086641 +0.155245 0.028395 0.275007 +0.041272 0.028395 0.294003 +-0.072702 0.028395 0.275007 +0.30721 0.028395 -0.104904 +0.326205 0.028395 0.009069 +0.30721 0.028395 0.123043 +0.155245 0.028395 -0.256869 +0.041272 0.028395 -0.275864 +-0.072701 0.028395 -0.256869 +-0.224666 0.028395 0.123042 +-0.243662 0.028395 0.009069 +-0.224666 0.028395 -0.104904 +0.345029 0.161718 -0.121112 +0.366726 0.161718 0.009069 +0.345029 0.161718 0.139251 +0.171453 0.161718 0.312827 +0.041272 0.161718 0.334523 +-0.08891 0.161718 0.312826 +-0.262486 0.161718 0.139251 +-0.284183 0.161718 0.009069 +-0.262485 0.161718 -0.121112 +0.171454 0.161718 -0.294688 +0.041272 0.161718 -0.316385 +-0.08891 0.161718 -0.294688 +0.257652 0.061726 0.225449 +0.26508 0.095056 0.232878 +0.272509 0.128387 0.240307 +0.257652 0.061726 -0.207311 +0.265081 0.095056 -0.214739 +0.272509 0.128387 -0.222168 +-0.175108 0.061726 0.225449 +-0.182537 0.095056 0.232878 +-0.189966 0.128387 0.240307 +-0.175108 0.061726 -0.207311 +-0.182537 0.095056 -0.21474 +-0.189966 0.128387 -0.222168 +-0.207746 0.165082 -0.239949 +-0.217143 0.173225 -0.249346 +-0.224632 0.190925 -0.256835 +-0.10629 0.222959 -0.335241 +0.041272 0.222959 -0.359835 +0.188833 0.222959 -0.335241 +0.29029 0.165082 -0.239949 +0.299687 0.173225 -0.249346 +0.307176 0.190925 -0.256834 +-0.207746 0.165082 0.258087 +-0.217144 0.173225 0.267484 +-0.224632 0.190925 0.274973 +-0.303039 0.222959 -0.138492 +-0.327632 0.222959 0.009069 +-0.303039 0.222959 0.156631 +0.29029 0.165082 0.258087 +0.299687 0.173225 0.267485 +0.307175 0.190925 0.274973 +-0.10629 0.222959 0.353379 +0.041272 0.222959 0.377973 +0.188833 0.222959 0.35338 +0.385582 0.222959 0.156631 +0.410176 0.222959 0.00907 +0.385582 0.222959 -0.138492 +0.31261 0.274106 -0.262268 +0.302674 0.33169 -0.252333 +0.275067 0.383033 -0.224726 +0.272832 0.430425 -0.108032 +0.289489 0.437492 0.009069 +0.272832 0.430425 0.126171 +0.31261 0.274106 0.280407 +0.302674 0.33169 0.270472 +0.275067 0.383033 0.242865 +0.158373 0.430425 0.24063 +0.041272 0.437492 0.257286 +-0.07583 0.430425 0.24063 +-0.230066 0.274106 0.280407 +-0.220131 0.33169 0.270471 +-0.192524 0.383033 0.242865 +-0.190289 0.430425 0.126171 +-0.206945 0.437492 0.009069 +-0.190289 0.430425 -0.108033 +-0.230066 0.274106 -0.262269 +-0.22013 0.33169 -0.252333 +-0.192524 0.383033 -0.224726 +0.158374 0.430425 -0.222491 +0.041272 0.437492 -0.239147 +-0.07583 0.430425 -0.222491 +-0.165313 0.013226 -0.197516 +-0.156766 -0.000441 -0.188969 +-0.135858 -0.011107 -0.16806 +-0.134782 -0.020113 0.098013 +-0.147574 -0.021456 0.009069 +-0.134782 -0.020113 -0.079875 +-0.165313 0.013226 0.215654 +-0.156766 -0.000441 0.207107 +-0.135858 -0.011107 0.186199 +0.247857 0.013226 -0.197516 +0.23931 -0.000441 -0.188969 +0.218401 -0.011107 -0.16806 +-0.047672 -0.020113 -0.166985 +0.041272 -0.021456 -0.179777 +0.130216 -0.020113 -0.166985 +0.247857 0.013226 0.215654 +0.23931 -0.000441 0.207107 +0.218401 -0.011107 0.186199 +0.217326 -0.020113 -0.079875 +0.230118 -0.021456 0.009069 +0.217326 -0.020113 0.098013 +-0.047672 -0.020113 0.185123 +0.041272 -0.021456 0.197915 +0.130216 -0.020113 0.185123 +0.250223 0.028395 -0.199882 +0.250223 0.028395 0.21802 +-0.167679 0.028395 0.21802 +-0.167679 0.028395 -0.199882 +0.279938 0.161718 -0.229597 +0.279938 0.161718 0.247736 +-0.197395 0.161718 0.247736 +-0.197395 0.161718 -0.229597 +-0.229258 0.222959 -0.26146 +-0.229258 0.222959 0.279599 +0.311801 0.222959 0.279599 +0.311801 0.222959 -0.26146 +0.238931 0.416106 -0.18859 +0.238931 0.416106 0.206729 +-0.156388 0.416106 0.206729 +-0.156388 0.416106 -0.18859 +-0.108791 -0.017392 0.159132 +-0.108791 -0.017392 -0.140993 +0.191334 -0.017392 -0.140993 +0.191334 -0.017392 0.159132 +numsurf 288 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 -numsurf 1 +0 0.0256746411324 0.888611733913 +4 0.0329300165176 0.862778246403 +5 0.122247427702 0.883452773094 +1 0.118311107159 0.90976536274 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -numsurf 1 +1 0.118311107159 0.90976536274 +5 0.122247427702 0.883452773094 +189 0.208778828382 0.892311990261 +190 0.208298176527 0.918834090233 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -numsurf 1 +4 0.0329300165176 0.862778246403 +166 0.040241330862 0.837068080902 +165 0.126257002354 0.857339024544 +5 0.122247427702 0.883452773094 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -numsurf 1 +5 0.122247427702 0.883452773094 +165 0.126257002354 0.857339024544 +270 0.209263145924 0.865960240364 +189 0.208778828382 0.892311990261 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -numsurf 1 +0 0.0256746411324 0.888611733913 +1 0.118311107159 0.90976536274 +6 0.114410251379 0.936191916466 +2 0.0184795558453 0.914465665817 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -numsurf 1 +2 0.0184795558453 0.914465665817 +6 0.114410251379 0.936191916466 +174 0.11052519083 0.962721586227 +175 0.011316716671 0.940332889557 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -numsurf 1 +1 0.118311107159 0.90976536274 +190 0.208298176527 0.918834090233 +191 0.207821041346 0.945502400398 +6 0.114410251379 0.936191916466 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 -numsurf 1 +6 0.114410251379 0.936191916466 +191 0.207821041346 0.945502400398 +274 0.207345634699 0.972299814224 +174 0.11052519083 0.962721586227 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 -numsurf 1 +0 0.89933359623 0.0379531383514 +2 0.925380468369 0.0314531326294 +7 0.944528639317 0.127966970205 +3 0.917997181416 0.131157636642 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 -numsurf 1 +3 0.917997181416 0.131157636642 +7 0.944528639317 0.127966970205 +188 0.951327800751 0.221628665924 +187 0.924646556377 0.221388489008 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 -numsurf 1 +2 0.925380468369 0.0314531326294 +175 0.951440036297 0.0249852538109 +176 0.971162497997 0.124795347452 +7 0.944528639317 0.127966970205 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 -numsurf 1 +7 0.944528639317 0.127966970205 +176 0.971162497997 0.124795347452 +275 0.978138446808 0.221873790026 +188 0.951327800751 0.221628665924 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 -numsurf 1 +0 0.89933359623 0.0379531383514 +3 0.917997181416 0.131157636642 +8 0.891579031944 0.134386599064 +4 0.873305439949 0.0445140004158 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -numsurf 1 +4 0.873305439949 0.0445140004158 +8 0.891579031944 0.134386599064 +167 0.865357637405 0.137693792582 +166 0.847399353981 0.0511340498924 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -numsurf 1 +3 0.917997181416 0.131157636642 +187 0.924646556377 0.221388489008 +186 0.898111283779 0.221155673265 +8 0.891579031944 0.134386599064 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -numsurf 1 +8 0.891579031944 0.134386599064 +186 0.898111283779 0.221155673265 +271 0.871746659279 0.220930963755 +167 0.865357637405 0.137693792582 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -numsurf 1 +9 0.896085500717 0.403661221266 +13 0.870495200157 0.396522641182 +14 0.89013171196 0.3077249825 +10 0.916426062584 0.311407148838 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -numsurf 1 +10 0.916426062584 0.311407148838 +14 0.89013171196 0.3077249825 +186 0.898111283779 0.221155673265 +187 0.924646556377 0.221388489008 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -numsurf 1 +13 0.870495200157 0.396522641182 +163 0.845105528831 0.389440268278 +162 0.864029824734 0.304019629955 +14 0.89013171196 0.3077249825 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 -numsurf 1 +14 0.89013171196 0.3077249825 +162 0.864029824734 0.304019629955 +271 0.871746659279 0.220930963755 +186 0.898111283779 0.221155673265 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 -numsurf 1 +9 0.896085500717 0.403661221266 +10 0.916426062584 0.311407148838 +15 0.942844629288 0.315089285374 +11 0.921783745289 0.410830289125 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 -numsurf 1 +11 0.921783745289 0.410830289125 +15 0.942844629288 0.315089285374 +177 0.969383776188 0.318775504827 +178 0.947593808174 0.418031007051 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 -numsurf 1 +10 0.916426062584 0.311407148838 +187 0.924646556377 0.221388489008 +188 0.951327800751 0.221628665924 +15 0.942844629288 0.315089285374 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 -numsurf 1 +15 0.942844629288 0.315089285374 +188 0.951327800751 0.221628665924 +275 0.978138446808 0.221873790026 +177 0.969383776188 0.318775504827 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 -numsurf 1 +9 0.896085500717 0.403661221266 +11 0.921783745289 0.410830289125 +16 0.890242159367 0.503643393517 +12 0.86573600769 0.493117749691 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 -numsurf 1 +12 0.86573600769 0.493117749691 +16 0.890242159367 0.503643393517 +194 0.849117696285 0.587978065014 +193 0.826180815697 0.574371159077 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -numsurf 1 +11 0.921783745289 0.410830289125 +178 0.947593808174 0.418031007051 +179 0.914853811264 0.514229476452 +16 0.890242159367 0.503643393517 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -numsurf 1 +16 0.890242159367 0.503643393517 +179 0.914853811264 0.514229476452 +276 0.872168242931 0.601652801037 +194 0.849117696285 0.587978065014 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -numsurf 1 +9 0.896085500717 0.403661221266 +12 0.86573600769 0.493117749691 +17 0.841335296631 0.482658028603 +13 0.870495200157 0.396522641182 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -numsurf 1 +13 0.870495200157 0.396522641182 +17 0.841335296631 0.482658028603 +164 0.817086100578 0.472319304943 +163 0.845105528831 0.389440268278 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -numsurf 1 +12 0.86573600769 0.493117749691 +193 0.826180815697 0.574371159077 +192 0.803369641304 0.560839235783 +17 0.841335296631 0.482658028603 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -numsurf 1 +17 0.841335296631 0.482658028603 +192 0.803369641304 0.560839235783 +272 0.780701458454 0.547392845154 +164 0.817086100578 0.472319304943 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 -numsurf 1 +18 0.709888219833 0.717539072037 +22 0.691360890865 0.698507010937 +23 0.752963066101 0.631634891033 +19 0.773837566376 0.648032903671 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 -numsurf 1 +19 0.773837566376 0.648032903671 +23 0.752963066101 0.631634891033 +192 0.803369641304 0.560839235783 +193 0.826180815697 0.574371159077 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 -numsurf 1 +22 0.691360890865 0.698507010937 +172 0.672978341579 0.679624795914 +171 0.732266783714 0.615312635899 +23 0.752963066101 0.631634891033 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 -numsurf 1 +23 0.752963066101 0.631634891033 +171 0.732266783714 0.615312635899 +272 0.780701458454 0.547392845154 +192 0.803369641304 0.560839235783 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 -numsurf 1 +18 0.709888219833 0.717539072037 +19 0.773837566376 0.648032903671 +24 0.794820189476 0.664492845535 +20 0.728493690491 0.736652374268 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 -numsurf 1 +20 0.728493690491 0.736652374268 +24 0.794820189476 0.664492845535 +180 0.815906047821 0.681016921997 +181 0.747179925442 0.755849480629 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 -numsurf 1 +19 0.773837566376 0.648032903671 +193 0.826180815697 0.574371159077 +194 0.849117696285 0.587978065014 +24 0.794820189476 0.664492845535 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 -numsurf 1 +24 0.794820189476 0.664492845535 +194 0.849117696285 0.587978065014 +276 0.872168242931 0.601652801037 +180 0.815906047821 0.681016921997 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 -numsurf 1 +18 0.709888219833 0.717539072037 +20 0.728493690491 0.736652374268 +25 0.654582738876 0.801005125046 +21 0.638695776463 0.779590845108 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 -numsurf 1 +21 0.638695776463 0.779590845108 +25 0.654582738876 0.801005125046 +197 0.576653301716 0.853212654591 +196 0.563671588898 0.82992464304 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 -numsurf 1 +20 0.728493690491 0.736652374268 +181 0.747179925442 0.755849480629 +182 0.670530259609 0.822524666786 +25 0.654582738876 0.801005125046 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 -numsurf 1 +25 0.654582738876 0.801005125046 +182 0.670530259609 0.822524666786 +277 0.589699268341 0.876616179943 +197 0.576653301716 0.853212654591 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 -numsurf 1 +18 0.709888219833 0.717539072037 +21 0.638695776463 0.779590845108 +26 0.622866868973 0.758286952972 +22 0.691360890865 0.698507010937 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 -numsurf 1 +22 0.691360890865 0.698507010937 +26 0.622866868973 0.758286952972 +173 0.607108175755 0.737163901329 +172 0.672978341579 0.679624795914 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 -numsurf 1 +21 0.638695776463 0.779590845108 +196 0.563671588898 0.82992464304 +195 0.550760805607 0.806764781475 +26 0.622866868973 0.758286952972 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 -numsurf 1 +26 0.622866868973 0.758286952972 +195 0.550760805607 0.806764781475 +273 0.537931025028 0.783750414848 +173 0.607108175755 0.737163901329 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -numsurf 1 +27 0.391203641891 0.895193874836 +31 0.397676765919 0.92106628418 +32 0.301440089941 0.939537405968 +28 0.298471152782 0.913039326668 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -numsurf 1 +28 0.298471152782 0.913039326668 +32 0.301440089941 0.939537405968 +191 0.207821041346 0.945502400398 +190 0.208298176527 0.918834090233 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 -numsurf 1 +31 0.397676765919 0.92106628418 +184 0.40417817235 0.947050750256 +183 0.304410040379 0.966156005859 +32 0.301440089941 0.939537405968 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -numsurf 1 +32 0.301440089941 0.939537405968 +183 0.304410040379 0.966156005859 +274 0.207345634699 0.972299814224 +191 0.207821041346 0.945502400398 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 -numsurf 1 +27 0.391203641891 0.895193874836 +28 0.298471152782 0.913039326668 +33 0.295498669147 0.886665523052 +29 0.384758174419 0.869430541992 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -numsurf 1 +29 0.384758174419 0.869430541992 +33 0.295498669147 0.886665523052 +168 0.292497932911 0.860483586788 +169 0.378363311291 0.843869328499 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -numsurf 1 +28 0.298471152782 0.913039326668 +190 0.208298176527 0.918834090233 +189 0.208778828382 0.892311990261 +33 0.295498669147 0.886665523052 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -numsurf 1 +33 0.295498669147 0.886665523052 +189 0.208778828382 0.892311990261 +270 0.209263145924 0.865960240364 +168 0.292497932911 0.860483586788 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -numsurf 1 +27 0.391203641891 0.895193874836 +29 0.384758174419 0.869430541992 +34 0.471613943577 0.84260559082 +30 0.481410861015 0.867269873619 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -numsurf 1 +30 0.481410861015 0.867269873619 +34 0.471613943577 0.84260559082 +195 0.550760805607 0.806764781475 +196 0.563671588898 0.82992464304 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -numsurf 1 +29 0.384758174419 0.869430541992 +169 0.378363311291 0.843869328499 +170 0.461933493614 0.818096101284 +34 0.471613943577 0.84260559082 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -numsurf 1 +34 0.471613943577 0.84260559082 +170 0.461933493614 0.818096101284 +273 0.537931025028 0.783750414848 +195 0.550760805607 0.806764781475 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -numsurf 1 +27 0.391203641891 0.895193874836 +30 0.481410861015 0.867269873619 +35 0.491270720959 0.892041563988 +31 0.397676765919 0.92106628418 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -numsurf 1 +31 0.397676765919 0.92106628418 +35 0.491270720959 0.892041563988 +185 0.501187682152 0.916920542717 +184 0.40417817235 0.947050750256 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -numsurf 1 +30 0.481410861015 0.867269873619 +196 0.563671588898 0.82992464304 +197 0.576653301716 0.853212654591 +35 0.491270720959 0.892041563988 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -numsurf 1 +35 0.491270720959 0.892041563988 +197 0.576653301716 0.853212654591 +277 0.589699268341 0.876616179943 +185 0.501187682152 0.916920542717 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -numsurf 1 +36 0.487665742636 0.562129735947 +40 0.564249575138 0.484887897968 +41 0.593171238899 0.504764556885 +37 0.50720757246 0.59116590023 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -numsurf 1 +37 0.50720757246 0.59116590023 +41 0.593171238899 0.504764556885 +183 0.618642866611 0.522712767124 +184 0.524460732937 0.616801440716 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -numsurf 1 +40 0.564249575138 0.484887897968 +205 0.603333592415 0.386896818876 +204 0.63784635067 0.393644750118 +41 0.593171238899 0.504764556885 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -numsurf 1 +41 0.593171238899 0.504764556885 +204 0.63784635067 0.393644750118 +274 0.668648004532 0.399667590857 +183 0.618642866611 0.522712767124 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -numsurf 1 +36 0.487665742636 0.562129735947 +37 0.50720757246 0.59116590023 +42 0.394798576832 0.638273179531 +38 0.387273788452 0.603996038437 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -numsurf 1 +38 0.387273788452 0.603996038437 +42 0.394798576832 0.638273179531 +198 0.275036275387 0.637822747231 +199 0.281779080629 0.603309392929 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -numsurf 1 +37 0.50720757246 0.59116590023 +184 0.524460732937 0.616801440716 +185 0.401835620403 0.668628156185 +42 0.394798576832 0.638273179531 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -numsurf 1 +42 0.394798576832 0.638273179531 +185 0.401835620403 0.668628156185 +277 0.269018918276 0.668625175953 +198 0.275036275387 0.637822747231 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -numsurf 1 +36 0.487665742636 0.562129735947 +38 0.387273788452 0.603996038437 +43 0.381286561489 0.575391888618 +39 0.471478104591 0.538077354431 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -numsurf 1 +39 0.471478104591 0.538077354431 +43 0.381286561489 0.575391888618 +201 0.376846551895 0.554468989372 +202 0.459602415562 0.520431995392 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -numsurf 1 +38 0.387273788452 0.603996038437 +199 0.281779080629 0.603309392929 +200 0.2873904109 0.574587523937 +43 0.381286561489 0.575391888618 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -numsurf 1 +43 0.381286561489 0.575391888618 +200 0.2873904109 0.574587523937 +278 0.291445016861 0.553831398487 +201 0.376846551895 0.554468989372 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -numsurf 1 +36 0.487665742636 0.562129735947 +39 0.471478104591 0.538077354431 +44 0.540004551411 0.468571543694 +40 0.564249575138 0.484887897968 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -numsurf 1 +40 0.564249575138 0.484887897968 +44 0.540004551411 0.468571543694 +206 0.574612379074 0.38128131628 +205 0.603333592415 0.386896818876 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -numsurf 1 +39 0.471478104591 0.538077354431 +202 0.459602415562 0.520431995392 +203 0.522292792797 0.456580668688 +44 0.540004551411 0.468571543694 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -numsurf 1 +44 0.540004551411 0.468571543694 +203 0.522292792797 0.456580668688 +281 0.553856730461 0.377222746611 +206 0.574612379074 0.38128131628 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -numsurf 1 +45 0.106504485011 0.487656772137 +49 0.183772265911 0.564245522022 +50 0.163896963 0.593172252178 +46 0.0774642825127 0.50720179081 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -numsurf 1 +46 0.0774642825127 0.50720179081 +50 0.163896963 0.593172252178 +182 0.145950064063 0.618649482727 +181 0.0518244318664 0.524458348751 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -numsurf 1 +49 0.183772265911 0.564245522022 +199 0.281779080629 0.603309392929 +198 0.275036275387 0.637822747231 +50 0.163896963 0.593172252178 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -numsurf 1 +50 0.163896963 0.593172252178 +198 0.275036275387 0.637822747231 +277 0.269018918276 0.668625175953 +182 0.145950064063 0.618649482727 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 -numsurf 1 +45 0.106504485011 0.487656772137 +46 0.0774642825127 0.50720179081 +51 0.0303594172001 0.394762009382 +47 0.0646407902241 0.387239575386 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 -numsurf 1 +47 0.0646407902241 0.387239575386 +51 0.0303594172001 0.394762009382 +207 0.0308376252651 0.274989724159 +208 0.0653502047062 0.281736910343 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -numsurf 1 +46 0.0774642825127 0.50720179081 +181 0.0518244318664 0.524458348751 +180 0.0 0.401796460152 +51 0.0303594172001 0.394762009382 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 -numsurf 1 +51 0.0303594172001 0.394762009382 +180 0.0 0.401796460152 +276 3.62076279998e-05 0.268967568874 +207 0.0308376252651 0.274989724159 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -0.108837 -0.173152 -1.83094 -numsurf 1 +45 0.106504485011 0.487656772137 +47 0.0646407902241 0.387239575386 +52 0.0932483673096 0.381254315376 +48 0.130559816957 0.471466720104 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 -numsurf 1 +48 0.130559816957 0.471466720104 +52 0.0932483673096 0.381254315376 +212 0.114174202085 0.376816511154 +211 0.148207306862 0.45958930254 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 -numsurf 1 +47 0.0646407902241 0.387239575386 +208 0.0653502047062 0.281736910343 +209 0.0940712690353 0.287351757288 +52 0.0932483673096 0.381254315376 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 -numsurf 1 +52 0.0932483673096 0.381254315376 +209 0.0940712690353 0.287351757288 +279 0.11482667923 0.291409909725 +212 0.114174202085 0.376816511154 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 -numsurf 1 +45 0.106504485011 0.487656772137 +48 0.130559816957 0.471466720104 +53 0.200087457895 0.53999632597 +49 0.183772265911 0.564245522022 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 -numsurf 1 +49 0.183772265911 0.564245522022 +53 0.200087457895 0.53999632597 +200 0.2873904109 0.574587523937 +199 0.281779080629 0.603309392929 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 -0.00884444 -0.199945 -1.83094 -numsurf 1 +48 0.130559816957 0.471466720104 +211 0.148207306862 0.45958930254 +210 0.212076947093 0.522281110287 +53 0.200087457895 0.53999632597 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 -numsurf 1 +53 0.200087457895 0.53999632597 +210 0.212076947093 0.522281110287 +278 0.291445016861 0.553831398487 +200 0.2873904109 0.574587523937 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 -numsurf 1 +54 0.181012958288 0.106502145529 +58 0.104431033134 0.18374595046 +59 0.0755089223385 0.163870021701 +55 0.161470293999 0.0774663686752 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 -numsurf 1 +55 0.161470293999 0.0774663686752 +59 0.0755089223385 0.163870021701 +179 0.0500368103385 0.145922571421 +178 0.144216328859 0.05183121562 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 -numsurf 1 +58 0.104431033134 0.18374595046 +208 0.0653502047062 0.281736910343 +207 0.0308376252651 0.274989724159 +59 0.0755089223385 0.163870021701 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 -numsurf 1 +59 0.0755089223385 0.163870021701 +207 0.0308376252651 0.274989724159 +276 3.62076279998e-05 0.268967568874 +179 0.0500368103385 0.145922571421 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 --0.0911484 -0.173152 -1.83094 -numsurf 1 +54 0.181012958288 0.106502145529 +55 0.161470293999 0.0774663686752 +60 0.273879230022 0.0303551256657 +56 0.281404912472 0.0646324753761 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 -numsurf 1 +56 0.281404912472 0.0646324753761 +60 0.273879230022 0.0303551256657 +213 0.393644571304 0.0308031737804 +214 0.386902093887 0.0653172433376 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 -numsurf 1 +55 0.161470293999 0.0774663686752 +178 0.144216328859 0.05183121562 +177 0.266841262579 0.0 +60 0.273879230022 0.0303551256657 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 -numsurf 1 +60 0.273879230022 0.0303551256657 +177 0.266841262579 0.0 +275 0.399661511183 6.08531536272e-08 +213 0.393644571304 0.0308031737804 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 -numsurf 1 +54 0.181012958288 0.106502145529 +56 0.281404912472 0.0646324753761 +61 0.287392795086 0.0932368785143 +57 0.197201251984 0.130554124713 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 -numsurf 1 +57 0.197201251984 0.130554124713 +61 0.287392795086 0.0932368785143 +218 0.291833281517 0.114160016179 +217 0.20907741785 0.148199290037 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 --0.164348 -0.0999516 -1.83094 -numsurf 1 +56 0.281404912472 0.0646324753761 +214 0.386902093887 0.0653172433376 +215 0.38129106164 0.094039529562 +61 0.287392795086 0.0932368785143 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.191141 4.13656e-05 -1.83094 --0.191141 4.13656e-05 -1.83094 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 -numsurf 1 +61 0.287392795086 0.0932368785143 +215 0.38129106164 0.094039529562 +280 0.377236545086 0.114796191454 +218 0.291833281517 0.114160016179 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.164348 0.100033 -1.83094 --0.164348 0.100033 -1.83094 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 -numsurf 1 +54 0.181012958288 0.106502145529 +57 0.197201251984 0.130554124713 +62 0.128676563501 0.200061783195 +58 0.104431033134 0.18374595046 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 --0.0911484 0.173232 -1.83094 --0.0911484 0.173232 -1.83094 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -numsurf 1 +58 0.104431033134 0.18374595046 +62 0.128676563501 0.200061783195 +209 0.0940712690353 0.287351757288 +208 0.0653502047062 0.281736910343 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.00884444 0.200025 -1.83094 -0.00884444 0.200025 -1.83094 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -numsurf 1 +57 0.197201251984 0.130554124713 +217 0.20907741785 0.148199290037 +216 0.146388426423 0.21205213666 +62 0.128676563501 0.200061783195 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.108837 0.173234 -1.83094 -0.108837 0.173234 -1.83094 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -numsurf 1 +62 0.128676563501 0.200061783195 +216 0.146388426423 0.21205213666 +279 0.11482667923 0.291409909725 +209 0.0940712690353 0.287351757288 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.182037 0.10003 -1.83094 -0.182037 0.10003 -1.83094 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -numsurf 1 +63 0.562180817127 0.180972740054 +67 0.484912276268 0.104381099343 +68 0.504787921906 0.0754537880421 +64 0.591221451759 0.161427691579 SURF 0x10 -mat 1 +mat 0 refs 4 -0 0 0 -1 0 0 -2 0 0 -3 0 0 -kids 0 -OBJECT poly -name "disk" -loc -0.0110999 0.221101 0.90475 -texture "../images/flames.rgb" -numvert 4 -0.20883 4.1306e-05 -1.83094 -0.20883 4.1306e-05 -1.83094 -0.182037 -0.0999516 -1.83094 -0.182037 -0.0999516 -1.83094 -numsurf 1 +64 0.591221451759 0.161427691579 +68 0.504787921906 0.0754537880421 +176 0.522735059261 0.049... [truncated message content] |
From: <au...@us...> - 2008-10-04 01:44:19
|
Revision: 2322 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2322&view=rev Author: auria Date: 2008-10-04 01:44:08 +0000 (Sat, 04 Oct 2008) Log Message: ----------- somehwat nicer shortcut detection based on distance rather than sectors. can still be wrongly triggered if you drive just next to the road for a while (but that can probably wait for checkpoints) Modified Paths: -------------- trunk/supertuxkart/data/stk_config.data trunk/supertuxkart/src/modes/linear_world.cpp trunk/supertuxkart/src/stk_config.cpp trunk/supertuxkart/src/stk_config.hpp trunk/supertuxkart/src/track.cpp Modified: trunk/supertuxkart/data/stk_config.data =================================================================== --- trunk/supertuxkart/data/stk_config.data 2008-10-02 01:11:00 UTC (rev 2321) +++ trunk/supertuxkart/data/stk_config.data 2008-10-04 01:44:08 UTC (rev 2322) @@ -27,8 +27,8 @@ (zipper-force 250.0 ) ;; additional zipper force (zipper-speed-gain 4.5 ) ;; one time additional speed - (shortcut-skipped-segments 5 ) ;; skipping more than this number of segments - ;; is considered to be a shortcut + (shortcut-length 120 ) ;; leaving the road and coming back on it more than + ;; 120 'meters" later is considered to be a shortcut (explosion-impulse 10000.0 ) ;; explosion impulse on not directly hit karts (explosion-impulse-objects 500.0 ) ;; explosion impulse for physics objects (smaller ;; else a cone e.g. will be pushed way too far) Modified: trunk/supertuxkart/src/modes/linear_world.cpp =================================================================== --- trunk/supertuxkart/src/modes/linear_world.cpp 2008-10-02 01:11:00 UTC (rev 2321) +++ trunk/supertuxkart/src/modes/linear_world.cpp 2008-10-04 01:44:08 UTC (rev 2322) @@ -477,6 +477,9 @@ KartInfo& info = m_kart_info[kart->getWorldKartId()]; if ( info.m_track_sector > 0 ) info.m_track_sector-- ; + info.m_last_valid_sector = info.m_track_sector; + if ( info.m_last_valid_sector > 0 ) info.m_last_valid_sector --; + kart->setXYZ( RaceManager::getTrack()->trackToSpatial(info.m_track_sector) ); btQuaternion heading(btVector3(0.0f, 0.0f, 1.0f), @@ -493,6 +496,7 @@ DEGREE_TO_RAD(RaceManager::getTrack()->m_angle[info.m_track_sector]))); body->setCenterOfMassTransform(pos); + } //----------------------------------------------------------------------------- /** Find the position (rank) of 'kart' and update it accordingly Modified: trunk/supertuxkart/src/stk_config.cpp =================================================================== --- trunk/supertuxkart/src/stk_config.cpp 2008-10-02 01:11:00 UTC (rev 2321) +++ trunk/supertuxkart/src/stk_config.cpp 2008-10-04 01:44:08 UTC (rev 2322) @@ -116,7 +116,7 @@ CHECK_NEG(m_zipper_time, "zipper-time" ); CHECK_NEG(m_zipper_force, "zipper-force" ); CHECK_NEG(m_zipper_speed_gain, "zipper-speed-gain" ); - CHECK_NEG(m_shortcut_segments, "shortcut-skipped-segments" ); + CHECK_NEG(m_shortcut_length, "shortcut-length" ); CHECK_NEG(m_suspension_rest, "suspension-rest" ); CHECK_NEG(m_suspension_travel_cm, "suspension-travel-cm" ); CHECK_NEG(m_jump_velocity, "jump-velocity" ); @@ -147,7 +147,7 @@ m_wheelie_restore_rate = m_wheelie_speed_boost = m_bomb_time = m_bomb_time_increase= m_anvil_time = m_zipper_time = m_zipper_force = m_zipper_speed_gain = - m_shortcut_segments = + m_shortcut_length = //bullet physics data m_suspension_stiffness = m_wheel_damping_relaxation = m_wheel_damping_compression = m_friction_slip = m_roll_influence = @@ -176,7 +176,7 @@ // Get the values which are not part of the default KartProperties // --------------------------------------------------------------- lisp->get("anvil-weight", m_anvil_weight ); - lisp->get("shortcut-skipped-segments", m_shortcut_segments ); + lisp->get("shortcut-length", m_shortcut_length ); lisp->get("anvil-speed-factor", m_anvil_speed_factor ); lisp->get("parachute-friction", m_parachute_friction ); lisp->get("parachute-time", m_parachute_time ); Modified: trunk/supertuxkart/src/stk_config.hpp =================================================================== --- trunk/supertuxkart/src/stk_config.hpp 2008-10-02 01:11:00 UTC (rev 2321) +++ trunk/supertuxkart/src/stk_config.hpp 2008-10-04 01:44:08 UTC (rev 2322) @@ -41,7 +41,7 @@ float m_zipper_time; // duration a zipper is active float m_zipper_force; // additional force added to the acceleration float m_zipper_speed_gain; // initial one time speed gain - float m_shortcut_segments; // skipping more than this number of segments is + float m_shortcut_length; // skipping more than this number of segments is // considered to be a shortcut float m_explosion_impulse; // impulse affecting each non-hit kart float m_explosion_impulse_objects;// impulse of explosion on moving objects, e.g. road cones, ... Modified: trunk/supertuxkart/src/track.cpp =================================================================== --- trunk/supertuxkart/src/track.cpp 2008-10-02 01:11:00 UTC (rev 2321) +++ trunk/supertuxkart/src/track.cpp 2008-10-04 01:44:08 UTC (rev 2322) @@ -450,12 +450,14 @@ { // If the kart was off the road, don't do any shortcuts if(OLDSEC==UNKNOWN_SECTOR || NEWSEC==UNKNOWN_SECTOR) return false; - unsigned int distance_sectors = abs(OLDSEC-NEWSEC); - // Handle 'wrap around': if the distance is more than half the - // number of driveline points, assume it's a 'wrap around' - if(2*distance_sectors > (unsigned int)m_driveline.size()) - distance_sectors = (unsigned int)m_driveline.size() - distance_sectors; - return (distance_sectors>stk_config->m_shortcut_segments); + int distance_sectors = m_distance_from_start[std::max(NEWSEC, OLDSEC)] - m_distance_from_start[std::min(NEWSEC, OLDSEC)]; + + // Handle 'warp around' + const int track_length = m_distance_from_start[m_driveline.size()-1]; + if( distance_sectors < 0 ) distance_sectors += track_length; + else if( distance_sectors > track_length/2) distance_sectors -= track_length; + + return (distance_sectors > stk_config->m_shortcut_length); } // isShortcut //----------------------------------------------------------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2008-10-06 13:41:17
|
Revision: 2328 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2328&view=rev Author: hikerstk Date: 2008-10-06 13:40:11 +0000 (Mon, 06 Oct 2008) Log Message: ----------- 1) Cleaned up implementation of history function. 2) Improved history file format to collect control information (like steering etc) to allow replaying based on the physics (and not only replaying recorded kart positions). 3) Added some constants (time till finish, time for music credits) to the stk_config.dat file. 4) Made name of the menu background picture configureable in stk_config.dat file. Modified Paths: -------------- trunk/supertuxkart/data/stk_config.data trunk/supertuxkart/src/constants.hpp trunk/supertuxkart/src/flyable.cpp trunk/supertuxkart/src/history.cpp trunk/supertuxkart/src/history.hpp trunk/supertuxkart/src/kart.cpp trunk/supertuxkart/src/kart.hpp trunk/supertuxkart/src/kart_control.hpp trunk/supertuxkart/src/main.cpp trunk/supertuxkart/src/main_loop.cpp trunk/supertuxkart/src/modes/clock.cpp trunk/supertuxkart/src/modes/world.cpp trunk/supertuxkart/src/moveable.cpp trunk/supertuxkart/src/moveable.hpp trunk/supertuxkart/src/player_kart.cpp trunk/supertuxkart/src/stk_config.cpp trunk/supertuxkart/src/stk_config.hpp trunk/supertuxkart/src/track.cpp trunk/supertuxkart/src/user_config.cpp trunk/supertuxkart/src/user_config.hpp Modified: trunk/supertuxkart/data/stk_config.data =================================================================== --- trunk/supertuxkart/data/stk_config.data 2008-10-06 00:39:10 UTC (rev 2327) +++ trunk/supertuxkart/data/stk_config.data 2008-10-06 13:40:11 UTC (rev 2328) @@ -10,6 +10,10 @@ ;; points 1st, 0 is least points ;; 1st (title-music "main_theme.music") + (menu-background "st_title_screen.rgb") + (max-history 10000) ;; maximum number of history frames. + (delay-finish-time 10) ;; delay till race results are displayed. + (music-credit-time 10) ;; time for which the music credits are displayed. ;; Attachment related parameters ;; ----------------------------- Modified: trunk/supertuxkart/src/constants.hpp =================================================================== --- trunk/supertuxkart/src/constants.hpp 2008-10-06 00:39:10 UTC (rev 2327) +++ trunk/supertuxkart/src/constants.hpp 2008-10-06 13:40:11 UTC (rev 2328) @@ -17,13 +17,9 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -#ifndef HEADER_CONSTANTS_H -#define HEADER_CONSTANTS_H +#ifndef HEADER_CONSTANTS_HPP +#define HEADER_CONSTANTS_HPP - -#define MAX_HISTORY 50000 /* number of history events */ -#define TIME_DELAY_TILL_FINISH 10.0f /* time after all player karts finish */ -#define TIME_MUSIC_DESCRIPTION 10.0f /* duration music description is displayed */ /* All final units are in meters (or meters/sec or meters/sec^2) and degrees (or degrees/sec). Modified: trunk/supertuxkart/src/flyable.cpp =================================================================== --- trunk/supertuxkart/src/flyable.cpp 2008-10-06 00:39:10 UTC (rev 2327) +++ trunk/supertuxkart/src/flyable.cpp 2008-10-06 13:40:11 UTC (rev 2328) @@ -39,7 +39,7 @@ btVector3 Flyable::m_st_extend[COLLECT_MAX]; // ---------------------------------------------------------------------------- -Flyable::Flyable(Kart *kart, CollectableType type, float mass) : Moveable(false) +Flyable::Flyable(Kart *kart, CollectableType type, float mass) : Moveable() { // get the appropriate data from the static fields m_speed = m_st_speed[type]; Modified: trunk/supertuxkart/src/history.cpp =================================================================== --- trunk/supertuxkart/src/history.cpp 2008-10-06 00:39:10 UTC (rev 2327) +++ trunk/supertuxkart/src/history.cpp 2008-10-06 13:40:11 UTC (rev 2328) @@ -18,45 +18,136 @@ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "history.hpp" + +#include <stdio.h> + #include "kart.hpp" #include "track.hpp" #include "race_manager.hpp" +#include "modes/world.hpp" +#include "network/network_manager.hpp" History* history = 0; -void History::SetSize(int n) +//----------------------------------------------------------------------------- +/** Initialises the history object and sets the mode to none. + */ +History::History() { - m_size = n; - m_all_deltas = new float[m_size]; - m_current = -1; - m_wrapped = false; + m_replay_mode = HISTORY_NONE; } // History //----------------------------------------------------------------------------- -void History::StoreDelta(float delta) +/** Starts replay from the history file in the current directory. + */ +void History::startReplay() { - this->m_current++; - if(m_current>=m_size) + Load(); +} // initReplay + +//----------------------------------------------------------------------------- +/** Initialise the history for a new recording. It especially allocates memory + * to store the history. + */ +void History::initRecording() +{ + allocateMemory(stk_config->m_max_history); + m_current = -1; + m_wrapped = false; + m_size = 0; +} // initRecording + +//----------------------------------------------------------------------------- +/** Allocates memory for the history. This is used when recording as well + * as when replaying (since in replay the data is read into memory first). + * \param number_of_frames Maximum number of frames to store. + */ +void History::allocateMemory(int number_of_frames) +{ + m_all_deltas.resize (number_of_frames); + m_all_controls.resize (number_of_frames*race_manager->getNumKarts()); + m_all_xyz.resize (number_of_frames*race_manager->getNumKarts()); + m_all_rotations.resize(number_of_frames*race_manager->getNumKarts()); +} // allocateMemory + +//----------------------------------------------------------------------------- +/** Depending on mode either saves the data for the current time step, or + * replays the data. + * /param dt Time step. + */ +void History::update(float dt) +{ + if(m_replay_mode==HISTORY_NONE) + updateSaving(dt); + else + updateReplay(dt); +} // update + +//----------------------------------------------------------------------------- +/** Saves the current history. + * \param dt Time step size. + */ +void History::updateSaving(float dt) +{ + m_current++; + if(m_current>=(int)m_all_deltas.size()) { m_wrapped = true; m_current = 0; } - m_all_deltas[m_current] = delta; -} // StoreDT + else + { + m_size ++; + } + m_all_deltas[m_current] = dt; + unsigned int max_num_karts = race_manager->getNumKarts(); + // n<=max_num_karts, e.g. if karts are eliminated + unsigned int n = race_manager->getNumKarts(); + + for(unsigned int i=0; i<n; i++) + { + unsigned int index=m_current*max_num_karts+i; + const Kart *kart = RaceManager::getKart(i); + m_all_controls[index] = kart->getControls(); + m_all_xyz[index] = kart->getXYZ(); + m_all_rotations[index] = kart->getRotation(); + } // for i +} // updateSaving + //----------------------------------------------------------------------------- -float History::GetNextDelta() +/** Sets the kart position and controls to the recorded history value. + * \param dt Time step size. + */ +void History::updateReplay(float dt) { m_current++; - if(m_current>=m_size) + if(m_current>=(int)m_all_deltas.size()) { - fprintf(stderr,"History: finished.\n"); - exit(-3); + printf("Replay finished.\n"); + exit(2); } - return m_all_deltas[m_current]; -} // GetNextDT + unsigned int num_karts = race_manager->getNumKarts(); + for(unsigned k=0; k<num_karts; k++) + { + Kart *kart = RaceManager::getKart(k); + unsigned int index=m_current*num_karts+k; + if(m_replay_mode==HISTORY_POSITION) + { + kart->setXYZ(m_all_xyz[index]); + kart->setRotation(m_all_rotations[index]); + } + else + { + kart->setControls(m_all_controls[index]); + } + } +} // updateReplay //----------------------------------------------------------------------------- +/** Saves the history stored in the internal data structures into a file called + * history.dat. + */ void History::Save() { FILE *fd = fopen("history.dat","w"); @@ -72,12 +163,12 @@ int k; for(k=0; k<nKarts; k++) { - fprintf(fd, "model %d: %s\n",k, RaceManager::getKart(k)->getName().c_str()); + fprintf(fd, "model %d: %s\n",k, RaceManager::getKart(k)->getIdent().c_str()); } - fprintf(fd, "size: %d\n", GetCount()); + fprintf(fd, "size: %d\n", m_size); int j = m_wrapped ? m_current : 0; - for(int i=0; i<GetCount(); i++) + for(int i=0; i<m_size; i++) { fprintf(fd, "delta: %f\n",m_all_deltas[i]); j=(j+1)%m_size; @@ -86,12 +177,19 @@ for(int k=0; k<nKarts; k++) { Kart* kart= RaceManager::getKart(k); - char s[1024]; j = m_wrapped ? m_current : 0; - for(int i=0; i<GetCount(); i++) + for(int i=0; i<m_size; i++) { - kart->WriteHistory(s, k, j); - fprintf(fd, "%s\n",s); + // FIXME: kart number is not really necessary + fprintf(fd, "%d %f %f %d %f %f %f %f %f %f %f\n", + k, + m_all_controls[j].lr, + m_all_controls[j].accel, + m_all_controls[j].getButtonsCompressed(), + m_all_xyz[j].getX(), m_all_xyz[j].getY(), + m_all_xyz[j].getZ(), + m_all_rotations[j].getX(), m_all_rotations[j].getY(), + m_all_rotations[j].getZ(), m_all_rotations[j].getW() ); j=(j+1)%m_size; } // for i } // for k @@ -100,13 +198,15 @@ } // Save //----------------------------------------------------------------------------- +/** Loads a history from history.dat in the current directory. + */ void History::Load() { char s[1024], s1[1024]; - int n, numKarts; - m_fd = fopen("history.dat","r"); + int n; + FILE *fd = fopen("history.dat","r"); - fgets(s, 1023, m_fd); + fgets(s, 1023, fd); if(sscanf(s,"Version: %s",s1)!=1) { fprintf(stderr, "WARNING: no Version information found in history file.\n"); @@ -119,15 +219,16 @@ fprintf(stderr, " tuxracer version is '%s'\n",VERSION); } #endif - fgets(s, 1023, m_fd); - if(sscanf(s, "numkarts: %d",&numKarts)!=1) + fgets(s, 1023, fd); + unsigned int num_karts; + if(sscanf(s, "numkarts: %d",&num_karts)!=1) { fprintf(stderr,"WARNING: No number of karts found in history file.\n"); exit(-2); } - race_manager->setNumKarts(numKarts); + race_manager->setNumKarts(num_karts); - fgets(s, 1023, m_fd); + fgets(s, 1023, fd); if(sscanf(s, "numplayers: %d",&n)!=1) { fprintf(stderr,"WARNING: No number of players found in history file.\n"); @@ -135,7 +236,7 @@ } race_manager->setNumPlayers(n); - fgets(s, 1023, m_fd); + fgets(s, 1023, fd); if(sscanf(s, "difficulty: %d",&n)!=1) { fprintf(stderr,"WARNING: No difficulty found in history file.\n"); @@ -143,7 +244,7 @@ } race_manager->setDifficulty((RaceManager::Difficulty)n); - fgets(s, 1023, m_fd); + fgets(s, 1023, fd); if(sscanf(s, "track: %s",s1)!=1) { fprintf(stderr,"WARNING: Track not found in history file.\n"); @@ -153,40 +254,58 @@ // the racing phase can switch to 'ending' race_manager->setNumLaps(10); - for(int i=0; i<numKarts; i++) + for(unsigned int i=0; i<num_karts; i++) { - fgets(s, 1023, m_fd); + fgets(s, 1023, fd); if(sscanf(s, "model %d: %s",&n, s1)!=2) { fprintf(stderr,"WARNING: No model information for kart %d found.\n", i); exit(-2); } + if(i<race_manager->getNumPlayers()) + { + race_manager->setLocalKartInfo(i, s1); + } } // for i<nKarts - // JH: The model information is currently ignored - fgets(s, 1023, m_fd); - if(sscanf(s,"size: %d",&n)!=1) + // FIXME: The model information is currently ignored + fgets(s, 1023, fd); + if(sscanf(s,"size: %d",&m_size)!=1) { fprintf(stderr,"WARNING: Number of records not found in history file.\n"); exit(-2); } - SetSize(n); + allocateMemory(m_size); + m_current = -1; + for(int i=0; i<m_size; i++) { - fgets(s, 1023, m_fd); - sscanf(s, "delta: %f\n",m_all_deltas+i); + fgets(s, 1023, fd); + sscanf(s, "delta: %f\n",&m_all_deltas[i]); } - m_current = -1; -} // Load -//----------------------------------------------------------------------------- -void History::LoadKartData(Kart* k, int kartNumber) -{ - char s[1024]; - for(int i=0; i<m_size; i++) + for(unsigned int k=0; k<num_karts; k++) { - fgets(s, 1023, m_fd); - k->ReadHistory(s, kartNumber, i); - } // for i<m_current -} // LoadKartData + int j=0; + for(int i=0; i<m_size; i++) + { + fgets(s, 1023, fd); + int buttonsCompressed; + float x,y,z,rx,ry,rz,rw; + sscanf(s, "%d %f %f %d %f %f %f %f %f %f %f\n", + &j, + &m_all_controls[i].lr, + &m_all_controls[i].accel, + &buttonsCompressed, + &x, &y, &z, &rx, &ry, &rz, &rw); + m_all_xyz[i] = Vec3(x,y,z); + m_all_rotations[i] = btQuaternion(rx,ry,rz,rw); + m_all_controls[i].setButtonsCompressed(char(buttonsCompressed)); + } // for i + } // for k + fprintf(fd, "History file end.\n"); + fclose(fd); + network_manager->setupPlayerKartInfo(); +} // Load + Modified: trunk/supertuxkart/src/history.hpp =================================================================== --- trunk/supertuxkart/src/history.hpp 2008-10-06 00:39:10 UTC (rev 2327) +++ trunk/supertuxkart/src/history.hpp 2008-10-06 13:40:11 UTC (rev 2328) @@ -17,35 +17,62 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -#ifndef HEADER_HISTORY_H -#define HEADER_HISTORY_H +#ifndef HEADER_HISTORY_HPP +#define HEADER_HISTORY_HPP -#include <cstdio> -#include "constants.hpp" +#include <vector> +#include "LinearMath/btQuaternion.h" +#include "kart_control.hpp" +#include "vec3.hpp" + class Kart; class History { -protected: +public: + /** Determines which replay mode is selected: + * HISTORY_NONE: no history replay. + * HISTORY_POSITION: replay the positions and orientations of the karts, + * but don't simulate the physics. + * HISTORY_PHYSICS: Simulate the phyics based on the recorded actions. + * These values can be used together, e.g. HISTORY_POSITION|HISTORY_CONTROL + */ + enum HistoryReplayMode { HISTORY_NONE = 0, + HISTORY_POSITION = 1, + HISTORY_PHYSICS = 2 }; +private: // maximum number of history events to store - int m_size; - int m_current; - bool m_wrapped; - FILE* m_fd; - - float * m_all_deltas; + HistoryReplayMode m_replay_mode; + int m_current; + bool m_wrapped; + int m_size; + std::vector<float> m_all_deltas; + std::vector<KartControl> m_all_controls; + std::vector<Vec3> m_all_xyz; + std::vector<btQuaternion> m_all_rotations; + void allocateMemory(int number_of_frames); + void updateSaving(float dt); + void updateReplay(float dt); public: - History () { SetSize(MAX_HISTORY);} - int GetCount () { return m_wrapped ? m_size : m_current+1; } - int GetCurrentIndex() { return m_current;} - int GetSize () { return m_size; } - void SetSize (int n); - void StoreDelta (float delta); + History (); + void startReplay (); + void initRecording (); + void update (float dt); void Save (); void Load (); - void LoadKartData (Kart* k, int kartNumber); - float GetNextDelta (); + float getNextDelta () const { return m_all_deltas[m_current]; } + + // ------------------------------------------------------------------------ + /** Returns if a history is replayed, i.e. the history mode is not none. */ + bool replayHistory () const { return m_replay_mode != HISTORY_NONE; } + // ------------------------------------------------------------------------ + /** Enable replaying a history, enabled from the command line. */ + void doReplayHistory(HistoryReplayMode m) {m_replay_mode = m; } + // ------------------------------------------------------------------------ + /** Returns true if the physics should not be simulated in replay mode. + * I.e. either no replay mode, or physics replay mode. */ + bool dontDoPhysics () const { return m_replay_mode == HISTORY_POSITION;} }; extern History* history; Modified: trunk/supertuxkart/src/kart.cpp =================================================================== --- trunk/supertuxkart/src/kart.cpp 2008-10-06 00:39:10 UTC (rev 2327) +++ trunk/supertuxkart/src/kart.cpp 2008-10-06 13:40:11 UTC (rev 2328) @@ -53,14 +53,16 @@ #include "utils/ssg_help.hpp" -Kart::Kart (const std::string& kart_name, int position, - const btTransform& init_transform) - : TerrainInfo(1), #if defined(WIN32) && !defined(__CYGWIN__) // Disable warning for using 'this' in base member initializer list # pragma warning(disable:4355) #endif - Moveable(true), m_attachment(this), m_collectable(this) + +Kart::Kart (const std::string& kart_name, int position, + const btTransform& init_transform) + : TerrainInfo(1), + Moveable(), m_attachment(this), m_collectable(this) + #if defined(WIN32) && !defined(__CYGWIN__) # pragma warning(1:4355) #endif Modified: trunk/supertuxkart/src/kart.hpp =================================================================== --- trunk/supertuxkart/src/kart.hpp 2008-10-06 00:39:10 UTC (rev 2327) +++ trunk/supertuxkart/src/kart.hpp 2008-10-06 13:40:11 UTC (rev 2328) @@ -178,6 +178,8 @@ float getSteerPercent () const {return m_controls.lr; } const KartControl& getControls () const {return m_controls; } + /** Sets the kart controls. Used e.g. by replaying history. */ + void setControls(const KartControl &c) { m_controls = c; } float getMaxSpeed () const {return m_max_speed; } void createPhysics (ssgEntity *obj); float getKartLength () const {return m_kart_properties->getKartLength();} Modified: trunk/supertuxkart/src/kart_control.hpp =================================================================== --- trunk/supertuxkart/src/kart_control.hpp 2008-10-06 00:39:10 UTC (rev 2327) +++ trunk/supertuxkart/src/kart_control.hpp 2008-10-06 13:40:11 UTC (rev 2328) @@ -60,23 +60,37 @@ { m->addFloat(lr); m->addFloat(accel); - m->addChar( brake ? 1 : 0 - + wheelie ? 2 : 0 - + jump ? 4 : 0 - + rescue ? 8 : 0 - + fire ? 16 : 0); + m->addChar(getButtonsCompressed()); } // compress // ------------------------------------------------------------------------ void uncompress(char *c) { lr = ((float*)c)[0]; accel = ((float*)c)[1]; - brake = (c[8] & 1) != 0; - wheelie = (c[8] & 2) != 0; - jump = (c[8] & 4) != 0; - rescue = (c[8] & 8) != 0; - fire = (c[8] & 16) != 0; + setButtonsCompressed(c[8]); } // uncompress + // ------------------------------------------------------------------------ + /** Compresses all buttons into a single integer value. */ + char getButtonsCompressed() const + { + return brake ? 1 : 0 + + wheelie ? 2 : 0 + + jump ? 4 : 0 + + rescue ? 8 : 0 + + fire ? 16 : 0; + } // getButtonsCompressed + // ------------------------------------------------------------------------ + /** Sets the buttons from a compressed representation. + * /param c Character containing the compressed representation. + */ + void setButtonsCompressed(char c) + { + brake = (c & 1) != 0; + wheelie = (c & 2) != 0; + jump = (c & 4) != 0; + rescue = (c & 8) != 0; + fire = (c & 16) != 0; + } // setButtonsCompressed }; #endif Modified: trunk/supertuxkart/src/main.cpp =================================================================== --- trunk/supertuxkart/src/main.cpp 2008-10-06 00:39:10 UTC (rev 2327) +++ trunk/supertuxkart/src/main.cpp 2008-10-06 13:40:11 UTC (rev 2328) @@ -109,6 +109,9 @@ // " --profile=n Enable automatic driven profile mode for n seconds\n" // " if n<0 --> (-n) = number of laps to drive // " --history Replay history file 'history.dat'\n" + // " --history=n Replay history file 'history.dat' using mode:\n" + // " n=1: use recorded positions\n" + // " n=2: use recorded key strokes\n" " --server[=port] This is the server (running on the specified port)\n" " --client=ip This is a client, connect to the specified ip address\n" " --port=n Port number to use\n" @@ -374,7 +377,7 @@ else if( !strcmp(argv[i], "--log=file")) { user_config->m_log_errors=true; - }else if( sscanf(argv[i], "--profile=%d", &n)==1) + } else if( sscanf(argv[i], "--profile=%d", &n)==1) { user_config->m_profile=n; if(n<0) @@ -392,9 +395,13 @@ { user_config->m_profile=20; } + else if( sscanf(argv[i], "--history=%d", &n)==1) + { + history->doReplayHistory( (History::HistoryReplayMode)n); + } else if( !strcmp(argv[i], "--history") ) { - user_config->m_replay_history=true; + history->doReplayHistory(History::HISTORY_POSITION); } else if( !strcmp(argv[i], "--herring") && i+1<argc ) { @@ -519,7 +526,7 @@ // Replay a race // ============= - if(user_config->m_replay_history) + if(history->replayHistory()) { // This will setup the race manager etc. history->Load(); Modified: trunk/supertuxkart/src/main_loop.cpp =================================================================== --- trunk/supertuxkart/src/main_loop.cpp 2008-10-06 00:39:10 UTC (rev 2327) +++ trunk/supertuxkart/src/main_loop.cpp 2008-10-06 13:40:11 UTC (rev 2328) @@ -62,7 +62,7 @@ void MainLoop::run() { const GLuint TITLE_SCREEN_TEXTURE = - material_manager->getMaterial("st_title_screen.rgb")->getState()->getTextureHandle(); + material_manager->getMaterial(stk_config->m_menu_background)->getState()->getTextureHandle(); bool music_on = false; m_curr_time = SDL_GetTicks(); @@ -134,6 +134,7 @@ if ( RaceManager::getWorld()->getPhase() != LIMBO_PHASE) { + history->update(dt); RaceManager::getWorld()->update(dt); if(user_config->m_profile>0) @@ -146,7 +147,7 @@ printf("Number of frames: %d time %f, Average FPS: %f\n", m_frame_count, SDL_GetTicks() * 0.001, (float)m_frame_count/(SDL_GetTicks() * 0.001)); - if(!user_config->m_replay_history) history->Save(); + if(!history->replayHistory()) history->Save(); std::exit(-2); } // if profile finished } // if m_profile Modified: trunk/supertuxkart/src/modes/clock.cpp =================================================================== --- trunk/supertuxkart/src/modes/clock.cpp 2008-10-06 00:39:10 UTC (rev 2327) +++ trunk/supertuxkart/src/modes/clock.cpp 2008-10-06 13:40:11 UTC (rev 2328) @@ -117,7 +117,8 @@ m_auxiliary_timer += dt; break; case MUSIC_PHASE: - if(m_auxiliary_timer>TIME_MUSIC_DESCRIPTION) // how long to display the 'music' message + // how long to display the 'music' message + if(m_auxiliary_timer>stk_config->m_music_credit_time) m_phase=RACE_PHASE; m_auxiliary_timer += dt; break; @@ -126,7 +127,7 @@ m_auxiliary_timer += dt; // Nothing more to do if delay time is not over yet - if(m_auxiliary_timer < TIME_DELAY_TILL_FINISH) break; + if(m_auxiliary_timer < stk_config->m_delay_finish_time) break; m_phase = FINISH_PHASE; break; Modified: trunk/supertuxkart/src/modes/world.cpp =================================================================== --- trunk/supertuxkart/src/modes/world.cpp 2008-10-06 00:39:10 UTC (rev 2327) +++ trunk/supertuxkart/src/modes/world.cpp 2008-10-06 13:40:11 UTC (rev 2328) @@ -140,10 +140,7 @@ break; } } // if !user_config->m_profile - if(user_config->m_replay_history) - { - history->LoadKartData(newkart, i); - } + newkart -> getModelTransform() -> clrTraversalMaskBits(SSGTRAV_ISECT|SSGTRAV_HOT); scene->add ( newkart -> getModelTransform() ) ; @@ -162,6 +159,7 @@ m_track->startMusic(); + if(!history->replayHistory()) history->initRecording(); network_manager->worldLoaded(); } // World @@ -257,13 +255,17 @@ //----------------------------------------------------------------------------- void World::update(float dt) { + if(history->replayHistory()) dt=history->getNextDelta(); TimedRace::update(dt); // Clear race state so that new information can be stored race_state->clear(); - if(user_config->m_replay_history) dt=history->GetNextDelta(); - if(!user_config->m_replay_history) history->StoreDelta(dt); - if(network_manager->getMode()!=NetworkManager::NW_CLIENT) m_physics->update(dt); + if(network_manager->getMode()!=NetworkManager::NW_CLIENT && + !history->dontDoPhysics()) + { + m_physics->update(dt); + } + const int kart_amount = m_kart.size(); for (int i = 0 ; i < kart_amount; ++i) { Modified: trunk/supertuxkart/src/moveable.cpp =================================================================== --- trunk/supertuxkart/src/moveable.cpp 2008-10-06 00:39:10 UTC (rev 2327) +++ trunk/supertuxkart/src/moveable.cpp 2008-10-06 13:40:11 UTC (rev 2328) @@ -22,9 +22,8 @@ #include "material_manager.hpp" #include "material.hpp" #include "user_config.hpp" -#include "history.hpp" -Moveable::Moveable (bool bHasHistory) +Moveable::Moveable() { m_body = 0; m_motion_state = 0; @@ -33,17 +32,6 @@ m_model_transform = new ssgTransform(); m_model_transform->ref(); - - if(bHasHistory) - { - m_history_velocity = new sgCoord[history->GetSize()]; - m_history_position = new sgCoord[history->GetSize()]; - } - else - { - m_history_velocity = NULL; - m_history_position = NULL; - } } // Moveable //----------------------------------------------------------------------------- @@ -52,11 +40,6 @@ // The body is being removed from the world in kart/projectile if(m_body) delete m_body; if(m_motion_state) delete m_motion_state; - if(m_history_velocity) - { - delete [] m_history_velocity; - delete [] m_history_position; - } // FIXME what about model? } // ~Moveable @@ -106,52 +89,6 @@ m_velocityLC = getVelocity()*getTrans().getBasis(); m_hpr.setHPR(m_transform.getBasis()); - if(m_history_velocity) - { - if(user_config->m_replay_history) - { - sgCoord tmp; - sgCopyCoord(&tmp, &(m_history_velocity[history->GetCurrentIndex()])); - -#undef IGNORE_Z_IN_HISTORY -#ifdef IGNORE_Z_IN_HISTORY - const float DUMMY=m_velocity.xyz[2]; - sgCopyCoord(&m_velocity, &tmp); - m_velocity.xyz[2]=DUMMY; -#else - m_velocityLC.setValue(tmp.xyz[0],tmp.xyz[1],tmp.xyz[2]); -#endif - } - else - { - m_history_velocity[history->GetCurrentIndex()].xyz[0]=m_velocityLC.getX(); - m_history_velocity[history->GetCurrentIndex()].xyz[1]=m_velocityLC.getY(); - m_history_velocity[history->GetCurrentIndex()].xyz[2]=m_velocityLC.getZ(); - } - } // if m_history_velocity - - if(m_history_position) - { - if(user_config->m_replay_history) - { - sgCoord tmp; - sgCopyCoord(&tmp, &(m_history_position[history->GetCurrentIndex()])); - Vec3 hpr(tmp.hpr); - hpr.degreeToRad(); - btMatrix3x3 rotation; - rotation.setEulerZYX(hpr.getPitch(), hpr.getRoll(), hpr.getHeading()); - m_transform.setBasis(rotation); - m_transform.setOrigin(Vec3(tmp.xyz)); - - } - else - { - Coord c(m_transform); - sgCopyCoord(&(m_history_position[history->GetCurrentIndex()]), &c.toSgCoord()); - } - } // if m_history_position - - updateGraphics(Vec3(0,0,0), Vec3(0,0,0)); m_first_time = false ; } // update @@ -166,46 +103,3 @@ m_model_transform->setTransform(&c); } // updateGraphics -//----------------------------------------------------------------------------- -void Moveable::WriteHistory(char* s, int kartNumber, int indx) -{ - sprintf(s, "Kart %d: v=%f,%f,%f,%f,%f,%f, p=%f,%f,%f,%f,%f,%f", kartNumber, - m_history_velocity[indx].xyz[0], - m_history_velocity[indx].xyz[1], - m_history_velocity[indx].xyz[2], - m_history_velocity[indx].hpr[0], - m_history_velocity[indx].hpr[1], - m_history_velocity[indx].hpr[2], - m_history_position[indx].xyz[0], - m_history_position[indx].xyz[1], - m_history_position[indx].xyz[2], - m_history_position[indx].hpr[0], - m_history_position[indx].hpr[1], - m_history_position[indx].hpr[2]); -} // WriteHistory - -//----------------------------------------------------------------------------- -void Moveable::ReadHistory(char* s, int kartNumber, int indx) -{ - int k; - sscanf(s, "Kart %d: v=%f,%f,%f,%f,%f,%f, p=%f,%f,%f,%f,%f,%f", &k, - m_history_velocity[indx].xyz+0, - m_history_velocity[indx].xyz+1, - m_history_velocity[indx].xyz+2, - m_history_velocity[indx].hpr+0, - m_history_velocity[indx].hpr+1, - m_history_velocity[indx].hpr+2, - m_history_position[indx].xyz+0, - m_history_position[indx].xyz+1, - m_history_position[indx].xyz+2, - m_history_position[indx].hpr+0, - m_history_position[indx].hpr+1, - m_history_position[indx].hpr+2); - if(k!=kartNumber) - { - fprintf(stderr,"WARNING: tried reading data for kart %d, found:\n", - kartNumber); - fprintf(stderr,"%s\n",s); - exit(-2); - } -} // ReadHistory Modified: trunk/supertuxkart/src/moveable.hpp =================================================================== --- trunk/supertuxkart/src/moveable.hpp 2008-10-06 00:39:10 UTC (rev 2327) +++ trunk/supertuxkart/src/moveable.hpp 2008-10-06 13:40:11 UTC (rev 2328) @@ -43,18 +43,16 @@ Vec3 m_hpr; protected: UserPointer m_user_pointer; - sgVec4* m_normal_hot; /* plane on which HOT was computed */ - Material* m_material_hot; /* Material at HOT */ - ssgTransform* m_model_transform; // The transform where the model is under - ssgTransform* m_shadow; + sgVec4 *m_normal_hot; /* plane on which HOT was computed */ + Material *m_material_hot; /* Material at HOT */ + ssgTransform *m_model_transform; // The transform where the model is under + ssgTransform *m_shadow; int m_first_time ; - sgCoord* m_history_velocity; - sgCoord* m_history_position; - btRigidBody* m_body; - btDefaultMotionState* m_motion_state; + btRigidBody *m_body; + btDefaultMotionState *m_motion_state; public: - Moveable (bool bHasHistory=false); + Moveable (); virtual ~Moveable(); ssgTransform* getModelTransform() {return m_model_transform; } @@ -77,8 +75,6 @@ virtual void handleZipper () {}; virtual void reset (); virtual void update (float dt) ; - void WriteHistory (char* s, int kartNumber, int indx); - void ReadHistory (char* s, int kartNumber, int indx); btRigidBody* getBody () const {return m_body; } void createBody(float mass, btTransform& trans, btCollisionShape *shape); Modified: trunk/supertuxkart/src/player_kart.cpp =================================================================== --- trunk/supertuxkart/src/player_kart.cpp 2008-10-06 00:39:10 UTC (rev 2327) +++ trunk/supertuxkart/src/player_kart.cpp 2008-10-06 13:40:11 UTC (rev 2328) @@ -21,6 +21,7 @@ #include "constants.hpp" #include "audio/sfx_manager.hpp" #include "audio/sfx_base.hpp" +#include "history.hpp" #include "player_kart.hpp" #include "player.hpp" #include "sdldrv.hpp" @@ -169,7 +170,11 @@ //----------------------------------------------------------------------------- void PlayerKart::update(float dt) { - steer(dt, m_steer_val); + // Don't do steering if it's replay. In position only replay it doesn't + // matter, but if it's physics replay the gradual steering causes + // incorrect results, since the stored values are already adjusted. + if(!history->replayHistory()) + steer(dt, m_steer_val); if(RaceManager::getWorld()->isStartPhase()) { Modified: trunk/supertuxkart/src/stk_config.cpp =================================================================== --- trunk/supertuxkart/src/stk_config.cpp 2008-10-06 00:39:10 UTC (rev 2327) +++ trunk/supertuxkart/src/stk_config.cpp 2008-10-06 13:40:11 UTC (rev 2328) @@ -37,7 +37,7 @@ // Check that all necessary values are indeed set // ----------------------------------------------- -#define CHECK_NEG( a,strA) if(a==UNDEFINED) { \ +#define CHECK_NEG( a,strA) if(a<=UNDEFINED) { \ fprintf(stderr,"Missing default value for '%s' in '%s'.\n", \ strA,filename.c_str());exit(-1); \ } @@ -69,6 +69,11 @@ fprintf(stderr,"No follow leader interval(s) defined in stk_config"); exit(-1); } + if(m_menu_background.size()==0) + { + fprintf(stderr,"No menu background defined in stk_config"); + exit(-1); + } CHECK_NEG(m_max_karts, "max-karts" ); CHECK_NEG(m_grid_order, "grid-order" ); @@ -127,6 +132,9 @@ CHECK_NEG(m_camera_max_accel, "camera-max-accel" ); CHECK_NEG(m_camera_max_brake, "camera-max-brake" ); CHECK_NEG(m_camera_distance, "camera-distance" ); + CHECK_NEG(m_max_history, "max-history" ); + CHECK_NEG(m_delay_finish_time, "delay-finish-time" ); + CHECK_NEG(m_music_credit_time, "music-credit-time" ); } // load @@ -147,7 +155,7 @@ m_wheelie_restore_rate = m_wheelie_speed_boost = m_bomb_time = m_bomb_time_increase= m_anvil_time = m_zipper_time = m_zipper_force = m_zipper_speed_gain = - m_shortcut_length = + m_shortcut_length = m_music_credit_time = m_delay_finish_time = //bullet physics data m_suspension_stiffness = m_wheel_damping_relaxation = m_wheel_damping_compression = m_friction_slip = m_roll_influence = @@ -164,6 +172,7 @@ m_rear_wheel_connection = Vec3(UNDEFINED); m_max_karts = -100; m_grid_order = -100; + m_max_history = -100; m_title_music = NULL; m_scores.clear(); m_leader_intervals.clear(); @@ -193,7 +202,11 @@ lisp->get("explosion-impulse-objects", m_explosion_impulse_objects); lisp->get("max-karts", m_max_karts ); lisp->get("grid-order", m_grid_order ); - lisp->getVector("scores", m_scores); + lisp->getVector("scores", m_scores ); + lisp->get("max-history", m_max_history ); + lisp->get("delay-finish-time", m_delay_finish_time ); + lisp->get("music-credit-time", m_music_credit_time ); + lisp->get("menu-background", m_menu_background ); std::string title_music; lisp->get("title-music", title_music ); m_title_music = new MusicInformation(file_manager->getMusicFile(title_music)); Modified: trunk/supertuxkart/src/stk_config.hpp =================================================================== --- trunk/supertuxkart/src/stk_config.hpp 2008-10-06 00:39:10 UTC (rev 2327) +++ trunk/supertuxkart/src/stk_config.hpp 2008-10-06 13:40:11 UTC (rev 2328) @@ -21,39 +21,61 @@ #define HEADER_STKCONFIG_H #include "kart_properties.hpp" -#include "lisp/lisp.hpp" +class Lisp; class MusicInformation; +/** Global STK configuration information. Parameters here can be tuned without + * recompilation, but the user shouldn't actually modify them. It also + * includes the list of default kart physics parameters which are used for + * each kart (but which can be overwritten for each kart, too). + */ class STKConfig : public KartProperties { public: static float UNDEFINED; - float m_anvil_weight; // Additional kart weight if anvil is attached - float m_anvil_speed_factor; // To decrease speed once when attached - float m_parachute_friction; // Increased air friction when parachute - float m_parachute_done_fraction; // fraction of speed when lost will detach parachute - float m_parachute_time; // time a parachute is active - float m_parachute_time_other; // time a parachute attached to other karts is active - float m_bomb_time; // time before a bomb explodes - float m_bomb_time_increase; // time added to bomb timer when it's passed on - float m_anvil_time; // time an anvil is active - float m_zipper_time; // duration a zipper is active - float m_zipper_force; // additional force added to the acceleration - float m_zipper_speed_gain; // initial one time speed gain - float m_shortcut_length; // skipping more than this number of segments is - // considered to be a shortcut - float m_explosion_impulse; // impulse affecting each non-hit kart - float m_explosion_impulse_objects;// impulse of explosion on moving objects, e.g. road cones, ... - int m_max_karts; // maximum number of karts - int m_grid_order; // whether grand prix grid is in point or reverse point order + float m_anvil_weight; /**<Additional kart weight if anvil is + attached. */ + float m_anvil_speed_factor; /**<Speed decrease when attached first. */ + float m_parachute_friction; /**<Increased parachute air friction. */ + float m_parachute_done_fraction; /**<Fraction of speed when lost will + detach parachute. */ + float m_parachute_time; /**<Time a parachute is active. */ + float m_parachute_time_other; /**<Time a parachute attached to other + karts is active. */ + float m_bomb_time; /**<Time before a bomb explodes. */ + float m_bomb_time_increase; /**<Time added to bomb timer when it's + passed on. */ + float m_anvil_time; /**<Time an anvil is active. */ + float m_zipper_time; /**<Duration a zipper is active. */ + float m_zipper_force; /**<Additional force added to the + acceleration. */ + float m_zipper_speed_gain; /**<Initial one time speed gain. */ + float m_shortcut_length; /**<Skipping more than this distance + in segments triggers a shortcut. */ + float m_explosion_impulse; /**<Impulse affecting each non-hit kart.*/ + float m_explosion_impulse_objects;/**<Impulse of explosion on moving + objects, e.g. road cones, ... */ + float m_delay_finish_time; /**<Delay after a race finished before + the results are displayed. */ + float m_music_credit_time; /**<Time the music credits are + displayed. */ + int m_max_karts; /**<Maximum number of karts. */ + int m_grid_order; /**<Whether grand prix grid is in point + or reverse point order. */ + int m_max_history; /**<Maximum number of frames to save in + a history files. */ + std::vector<float> - m_leader_intervals; // interval in follow the leader till last kart is reomved - std::vector<int> m_scores; // scores depending on position + m_leader_intervals; /**<Interval in follow the leader till + last kart is reomved. */ + std::vector<int> m_scores; /**<Scores depending on position. */ - MusicInformation* m_title_music; // filename of the title music to play + MusicInformation* m_title_music; /**<Filename of the title music to play.*/ + std::string m_menu_background; /**<Picture used as menu background. */ - STKConfig() : KartProperties() {}; + /** Empty constructor. The actual work is done in load. */ + STKConfig() : KartProperties() {}; void init_defaults (); void getAllData (const lisp::Lisp* lisp); void load (const std::string filename); Modified: trunk/supertuxkart/src/track.cpp =================================================================== --- trunk/supertuxkart/src/track.cpp 2008-10-06 00:39:10 UTC (rev 2327) +++ trunk/supertuxkart/src/track.cpp 2008-10-06 13:40:11 UTC (rev 2328) @@ -444,16 +444,17 @@ //----------------------------------------------------------------------------- /** Determines if a kart moving from sector OLDSEC to sector NEWSEC * would be taking a shortcut, i.e. if the distance is larger - * than a certain detla + * than a certain delta */ bool Track::isShortcut(const int OLDSEC, const int NEWSEC) const { // If the kart was off the road, don't do any shortcuts if(OLDSEC==UNKNOWN_SECTOR || NEWSEC==UNKNOWN_SECTOR) return false; - int distance_sectors = m_distance_from_start[std::max(NEWSEC, OLDSEC)] - m_distance_from_start[std::min(NEWSEC, OLDSEC)]; + int distance_sectors = (int)(m_distance_from_start[std::max(NEWSEC, OLDSEC)] - + m_distance_from_start[std::min(NEWSEC, OLDSEC)] ); // Handle 'warp around' - const int track_length = m_distance_from_start[m_driveline.size()-1]; + const int track_length = (int)m_distance_from_start[m_driveline.size()-1]; if( distance_sectors < 0 ) distance_sectors += track_length; else if( distance_sectors > track_length/2) distance_sectors -= track_length; Modified: trunk/supertuxkart/src/user_config.cpp =================================================================== --- trunk/supertuxkart/src/user_config.cpp 2008-10-06 00:39:10 UTC (rev 2327) +++ trunk/supertuxkart/src/user_config.cpp 2008-10-06 13:40:11 UTC (rev 2328) @@ -109,7 +109,6 @@ m_max_fps = 120; m_sfx_volume = 1.0f; m_use_kph = false; - m_replay_history = false; m_width = 800; m_height = 600; m_prev_width = m_width; Modified: trunk/supertuxkart/src/user_config.hpp =================================================================== --- trunk/supertuxkart/src/user_config.hpp 2008-10-06 00:39:10 UTC (rev 2327) +++ trunk/supertuxkart/src/user_config.hpp 2008-10-06 13:40:11 UTC (rev 2328) @@ -180,7 +180,6 @@ std::string m_track_group; // Track group used last std::string m_server_address; int m_server_port; - bool m_replay_history; bool m_use_kph; int m_width; int m_height; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <au...@us...> - 2008-10-14 20:21:12
|
Revision: 2339 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2339&view=rev Author: auria Date: 2008-10-14 20:20:54 +0000 (Tue, 14 Oct 2008) Log Message: ----------- First iteration of battle mode! It's playable, and the rack selection works. Warning, if you select AI players it won't work. Lives are shown but don't decrease with hits yet. Modified Paths: -------------- trunk/supertuxkart/src/Makefile.am trunk/supertuxkart/src/gui/game_mode.cpp trunk/supertuxkart/src/gui/race_gui.cpp trunk/supertuxkart/src/gui/race_gui.hpp trunk/supertuxkart/src/gui/track_sel.cpp trunk/supertuxkart/src/ide/Xcode/STK_XCode.xcodeproj/project.pbxproj trunk/supertuxkart/src/modes/linear_world.hpp trunk/supertuxkart/src/modes/world.cpp trunk/supertuxkart/src/modes/world.hpp trunk/supertuxkart/src/race_manager.cpp trunk/supertuxkart/src/race_manager.hpp trunk/supertuxkart/src/track.cpp trunk/supertuxkart/src/track.hpp trunk/supertuxkart/src/track_manager.cpp trunk/supertuxkart/src/track_manager.hpp Added Paths: ----------- trunk/supertuxkart/data/textures/clouds.rgb trunk/supertuxkart/data/textures/mossy_stone.rgb trunk/supertuxkart/data/tracks/prehistoric/ trunk/supertuxkart/data/tracks/prehistoric/materials.dat trunk/supertuxkart/data/tracks/prehistoric/prehistoric.ac trunk/supertuxkart/data/tracks/prehistoric/prehistoric.drvl trunk/supertuxkart/data/tracks/prehistoric/prehistoric.drvr trunk/supertuxkart/data/tracks/prehistoric/prehistoric.loc trunk/supertuxkart/data/tracks/prehistoric/prehistoric.track trunk/supertuxkart/data/tracks/prehistoric/sshot-prehistoric.rgb trunk/supertuxkart/data/tracks/prehistoric/topview-prehistoric.rgb trunk/supertuxkart/src/modes/three_strikes_battle.cpp trunk/supertuxkart/src/modes/three_strikes_battle.hpp Added: trunk/supertuxkart/data/textures/clouds.rgb =================================================================== (Binary files differ) Property changes on: trunk/supertuxkart/data/textures/clouds.rgb ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/supertuxkart/data/textures/mossy_stone.rgb =================================================================== (Binary files differ) Property changes on: trunk/supertuxkart/data/textures/mossy_stone.rgb ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/supertuxkart/data/tracks/prehistoric/materials.dat =================================================================== --- trunk/supertuxkart/data/tracks/prehistoric/materials.dat (rev 0) +++ trunk/supertuxkart/data/tracks/prehistoric/materials.dat 2008-10-14 20:20:54 UTC (rev 2339) @@ -0,0 +1,2 @@ +# TextureName Clamp Trans Alpha Light SphMp Frict Ign Zip Rst Col +"clouds.rgb" N N N 0.5 N N 0.5 N N N N Added: trunk/supertuxkart/data/tracks/prehistoric/prehistoric.ac =================================================================== --- trunk/supertuxkart/data/tracks/prehistoric/prehistoric.ac (rev 0) +++ trunk/supertuxkart/data/tracks/prehistoric/prehistoric.ac 2008-10-14 20:20:54 UTC (rev 2339) @@ -0,0 +1,19997 @@ +AC3Db +MATERIAL "DefaultWhite" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0 +MATERIAL "Material.001" rgb 0.405333 0.405333 0.405333 amb 0.5 0.5 0.5 emis 0 0 0 spec 1 1 1 shi 32 trans 0 +OBJECT world +kids 5 +OBJECT poly +name "Cube" +data 8 +Cube.001 +texture "sand2.rgb" +texrep 1 1 +crease 30.000000 +rot 1 0 0 0 0 -1 0 1 0 +loc -4.122212 -3.310734 -15.246464 +numvert 2154 +-0.017872 -0.157096 0.495602 +1.072333 -0.157096 0.50039 +-0.035745 -1.391267 0.495524 +-1.143822 -0.157096 0.490658 +-0.035744 1.077075 0.495524 +1.000844 0.897556 0.500076 +1.000844 -1.211748 0.500076 +-1.143822 -1.516459 0.490658 +-1.143821 1.202268 0.490658 +2.144666 -0.157097 4.015264 +2.001688 0.690874 4.003016 +2.144666 -0.157097 5.673878 +2.001688 -1.005067 4.003016 +2.144666 -0.157097 2.279475 +2.001688 0.690874 2.272425 +2.001688 0.690873 5.65888 +2.001688 -1.005067 5.658879 +2.001688 -1.005067 2.272426 +-0.110375 -2.691321 3.823174 +0.857866 -2.266401 3.905036 +-0.121043 -2.694362 5.438757 +-1.299364 -3.139356 3.72456 +-0.092687 -2.664359 2.168935 +0.857866 -2.2664 2.216029 +0.857865 -2.266401 5.538894 +-1.342034 -3.15152 5.318323 +-1.228613 -3.03151 2.112246 +-0.175686 2.258373 3.823174 +0.857867 1.952208 3.905036 +-0.13103 2.281033 2.168935 +-1.560612 2.350141 3.72456 +-0.190571 2.250819 5.438757 +0.857867 1.952207 5.538895 +0.857867 1.952208 2.216029 +-1.381987 2.44078 2.112247 +-1.620153 2.319927 5.318323 +-0.181635 2.253264 9.896534 +-0.190571 2.250819 8.475786 +-1.620153 2.319927 9.906859 +-0.154827 2.260598 11.277227 +0.893612 1.961986 9.88662 +0.857867 1.952207 8.53087 +-1.620154 2.319927 8.409686 +-1.620153 2.319927 11.384629 +1.000845 1.991322 11.182484 +-0.123439 -2.682684 9.896534 +-0.130586 -2.682469 8.475786 +0.89361 -2.27618 9.88662 +-0.097228 -2.689275 11.277228 +-1.387365 -3.09503 9.90686 +-1.380207 -3.103949 8.409686 +0.857865 -2.266401 8.53087 +1.000843 -2.305516 11.182484 +-1.389751 -3.092057 11.38463 +2.216155 -0.157097 9.823173 +2.144666 -0.157097 8.605232 +2.073177 0.700652 9.841084 +2.430621 -0.157098 10.854337 +2.073176 -1.014846 9.841084 +2.001688 -1.005068 8.59697 +2.001688 0.690873 8.596971 +2.287644 0.729987 10.934247 +2.287643 -1.044182 10.934247 +-0.062383 -2.661082 15.28292 +-0.061483 -2.722565 14.003298 +1.143821 -2.43497 14.93606 +-0.065083 -2.429609 16.390978 +-1.393351 -3.007495 15.697081 +-1.389751 -3.092057 14.320766 +1.14382 -2.438675 13.733273 +1.143821 -2.235767 15.974687 +-1.404151 -2.753808 16.889885 +-0.118182 2.232404 15.28292 +-0.119082 2.293887 14.003299 +-1.616553 2.235365 15.697081 +-0.115482 2.000931 16.390976 +1.143823 2.120776 14.93606 +1.143823 2.124481 13.733273 +-1.620153 2.319927 14.320766 +-1.605753 1.981678 16.889885 +1.143823 1.921573 15.974687 +-0.090283 -0.214339 17.924391 +-0.101083 0.735063 17.754013 +-1.504952 -0.386065 18.541464 +-0.079483 -1.16374 17.754011 +1.143822 -0.157097 17.409504 +1.143822 0.733761 17.25008 +-1.548153 0.628682 18.357954 +-1.461752 -1.400812 18.357954 +1.143821 -1.047956 17.25008 +4.573268 -2.183756 14.526133 +3.431464 -2.211749 14.55735 +4.573494 -2.065959 13.598282 +5.711035 -2.214301 14.56348 +4.573374 -2.043376 15.414104 +3.431464 -2.064215 15.47471 +3.431464 -2.109457 13.560476 +5.711942 -2.111722 13.564682 +5.711461 -2.066633 15.482278 +4.575287 -0.157099 16.716154 +3.431465 -0.157098 16.791113 +4.574467 -0.965503 16.571482 +5.719109 -0.1571 16.800474 +4.576107 0.651306 16.571482 +3.431466 0.660238 16.644846 +3.431465 -0.974434 16.644846 +5.715832 -0.975471 16.654009 +5.722386 0.661272 16.654007 +4.577307 1.869558 14.526133 +3.431467 1.897552 14.557349 +4.5772 1.729178 15.414104 +5.727183 1.900101 14.56348 +4.57708 1.751761 13.598281 +3.431467 1.79526 13.560475 +3.431467 1.750019 15.47471 +5.726757 1.752434 15.482277 +5.726276 1.797523 13.564682 +4.575287 -0.157099 12.208543 +3.645932 -0.157098 12.069649 +4.575987 0.673889 12.355859 +5.504642 -0.157099 12.070158 +4.574587 -0.988086 12.35586 +3.574442 -1.019676 12.221046 +3.574444 0.705479 12.221046 +5.578928 0.706362 12.222067 +5.573334 -1.020561 12.222067 +9.267559 2.271193 15.298828 +8.048687 2.134023 14.967283 +9.260162 2.03868 16.410213 +10.584957 2.334484 15.629116 +9.269763 2.33294 14.015303 +8.048872 2.137786 13.756598 +8.044984 1.933649 16.012527 +10.57218 2.081949 16.807898 +10.589216 2.418663 14.268984 +9.190206 -0.18659 17.948183 +8.006752 -0.157101 17.456306 +9.160225 -1.140277 17.777298 +10.452922 -0.275053 18.440058 +9.220187 0.767097 17.777298 +8.023137 0.738935 17.295887 +7.990368 -1.053137 17.295887 +10.401812 -1.285197 18.258705 +10.504032 0.73509 18.258707 +9.112852 -2.644372 15.298828 +7.964818 -2.448225 14.967283 +9.110648 -2.70612 14.015303 +10.320887 -2.884591 15.629116 +9.120249 -2.41186 16.410213 +7.968521 -2.247852 16.012526 +7.964632 -2.451989 13.756598 +10.316628 -2.96877 14.268984 +10.333665 -2.632055 16.807899 +9.172907 -2.665589 9.89687 +9.146393 -2.67283 11.281134 +8.213665 -2.289866 9.887206 +9.181744 -2.663176 8.473222 +10.316628 -2.96877 9.905277 +10.316628 -2.96877 11.367369 +8.107611 -2.31883 11.189876 +8.249016 -2.280212 8.525825 +10.316628 -2.96877 8.420619 +9.332611 2.29241 9.89687 +9.305508 2.29965 11.281135 +10.589216 2.418663 9.905277 +9.341645 2.289996 8.473223 +8.300262 1.975664 9.887206 +8.19185 2.004627 11.189876 +10.589216 2.418663 11.367369 +10.589216 2.418663 8.42062 +8.336401 1.966009 8.525825 +6.93442 -0.1571 9.823175 +6.719953 -0.1571 10.854848 +7.085743 0.703286 9.841087 +7.005908 -0.1571 8.604729 +7.069052 -1.017486 9.841088 +6.855765 -1.046449 10.935267 +6.870097 0.732249 10.935266 +7.157625 0.693631 8.595962 +7.140147 -1.007832 8.595962 +7.005908 -0.1571 4.014487 +7.005909 -0.1571 5.672948 +7.157625 0.693631 4.001462 +7.005908 -0.1571 2.278997 +7.140147 -1.007832 4.001462 +7.140148 -1.007832 5.657021 +7.157625 0.693631 5.657021 +7.157625 0.693631 2.271469 +7.140147 -1.007832 2.271469 +9.335709 2.295499 3.819072 +9.341645 2.289996 5.434032 +10.565472 2.440675 3.740787 +9.3179 2.312008 2.165893 +8.336401 1.966009 3.897266 +8.336401 1.966009 5.529599 +10.589216 2.418663 5.338466 +10.494236 2.506712 2.120173 +8.336401 1.966009 2.211244 +9.177773 -2.661307 3.819072 +9.181744 -2.663176 5.434032 +8.249016 -2.280212 3.897265 +9.165857 -2.6557 2.165893 +10.300741 -2.961294 3.740787 +10.316628 -2.96877 5.338466 +8.249016 -2.280212 5.529599 +8.249016 -2.280212 2.211244 +10.253081 -2.938868 2.120173 +9.168447 -0.157102 0.493879 +8.078241 -0.157101 0.499481 +9.222364 1.088459 0.493787 +10.294395 -0.157103 0.488092 +9.150272 -1.402663 0.493787 +8.127884 -1.218657 0.499114 +8.171576 0.904454 0.499114 +10.346827 1.218829 0.488092 +10.241965 -1.533035 0.488092 +14.99407 -1.100706 0.482214 +13.216145 -0.628905 0.482214 +15.224663 0.353295 0.482214 +16.771996 -1.572506 0.482214 +14.763477 -2.554707 0.482214 +13.065893 -2.095647 0.482214 +13.366394 0.837838 0.482214 +17.082932 -0.131247 0.482214 +16.46106 -3.013766 0.482214 +14.539871 -4.097396 3.608557 +13.026851 -3.614718 3.63659 +14.536878 -4.059387 2.044403 +16.066868 -4.757452 3.576189 +14.54087 -4.110066 5.176642 +13.042736 -3.622193 5.211043 +12.979191 -3.592292 2.059949 +16.102549 -4.627841 2.026407 +16.054974 -4.800656 5.13715 +15.502868 1.706392 3.608557 +13.682858 2.150496 3.63659 +15.50967 1.691977 5.176642 +17.418102 1.060481 3.576189 +15.482462 1.749637 2.044403 +13.611624 2.216532 2.059949 +13.706603 2.128483 5.211043 +17.421566 1.024834 5.13715 +17.407715 1.167423 2.026407 +15.509669 1.691977 9.918421 +13.706602 2.128483 9.915651 +15.50967 1.691977 11.508937 +17.421566 1.024834 9.921546 +15.509669 1.691977 8.331627 +13.706602 2.128483 8.350482 +13.706603 2.128483 11.478999 +17.421566 1.024834 11.542931 +17.421566 1.024834 8.310131 +14.54087 -4.110066 9.918421 +13.042737 -3.622193 9.915651 +14.54087 -4.110066 8.331627 +16.054974 -4.800656 9.921546 +14.54087 -4.110066 11.508936 +13.042736 -3.622193 11.479 +13.042737 -3.622193 8.350482 +16.054974 -4.800656 8.310131 +16.054974 -4.800656 11.542932 +14.556007 -4.01941 16.186539 +13.05311 -3.532339 16.068663 +14.54087 -4.110066 14.693687 +16.076328 -4.709633 16.320395 +14.601421 -3.747439 17.480345 +13.084229 -3.262776 17.338144 +13.042737 -3.622193 14.603877 +16.054974 -4.800656 14.795671 +16.140387 -4.436563 17.641821 +15.02527 -1.209044 19.271769 +13.37467 -0.746855 19.09589 +14.843619 -2.296928 19.072721 +16.73827 -1.887911 19.471489 +15.206919 -0.121161 19.072721 +13.499145 0.331397 18.900585 +13.250195 -1.825107 18.900585 +16.482033 -2.980191 19.268192 +16.994505 -0.795632 19.268192 +15.494532 1.60132 16.186539 +13.69623 2.038629 16.068663 +15.44912 1.32935 17.480347 +17.400213 0.933811 16.320395 +15.509669 1.691977 14.693687 +13.706602 2.128483 14.603876 +13.665111 1.769066 17.338146 +17.336153 0.660741 17.641821 +17.421566 1.024834 14.795672 +23.338736 -2.744225 17.281363 +21.370502 -1.203654 16.887774 +23.189421 -3.026916 18.801083 +25.221582 -4.65623 17.611065 +23.388508 -2.649995 15.527838 +21.409578 -1.110445 15.227961 +21.253281 -1.483281 18.326277 +25.040674 -4.93589 19.198818 +25.281887 -4.563011 15.779039 +21.79583 -5.665364 20.905313 +20.15921 -4.093131 20.318054 +21.198574 -6.796128 20.671509 +23.352192 -7.546039 21.397247 +22.393084 -4.534601 20.671509 +20.628098 -2.974623 20.096745 +19.690325 -5.211637 20.096745 +22.628559 -8.664675 21.152977 +24.075827 -6.427403 21.152977 +20.252922 -8.586504 17.281363 +18.94792 -6.982607 16.887774 +20.203152 -8.680735 15.527838 +21.482803 -10.435847 17.611065 +20.402235 -8.303813 18.801083 +19.065142 -6.702981 18.326279 +18.908846 -7.075816 15.227961 +21.422501 -10.529068 15.779039 +21.663712 -10.156188 19.198818 +20.203152 -8.680735 9.943914 +18.908846 -7.075816 9.934753 +20.203152 -8.680735 8.15555 +21.422501 -10.529067 9.951589 +20.203152 -8.680735 11.786986 +18.908846 -7.075816 11.687027 +18.908846 -7.075816 8.218863 +21.422501 -10.529068 8.102513 +21.422501 -10.529067 11.870721 +23.388508 -2.649995 9.943914 +21.409578 -1.110445 9.934752 +23.388508 -2.649995 11.786986 +25.281887 -4.563011 9.951589 +23.388508 -2.649995 8.155549 +21.409578 -1.110445 8.218862 +21.40958 -1.110445 11.687028 +25.281887 -4.563011 11.87072 +25.281887 -4.563011 8.102513 +23.393854 -2.626653 3.337384 +21.406116 -1.074797 3.435631 +23.388508 -2.649995 4.852352 +25.306736 -4.505291 3.254694 +23.409895 -2.556628 1.876852 +21.395729 -0.967856 1.939855 +21.40958 -1.110445 4.968998 +25.281887 -4.563011 4.75464 +25.381285 -4.332133 1.822506 +20.207836 -8.665521 3.337385 +18.92074 -7.032612 3.435631 +20.221889 -8.619881 1.876852 +21.429346 -10.511417 3.254694 +20.203152 -8.680735 4.852352 +18.908846 -7.075816 4.968999 +18.956423 -6.903 1.939855 +21.449881 -10.458467 1.822506 +21.422501 -10.529067 4.75464 +21.835957 -5.511145 0.443536 +20.19294 -3.777726 0.462875 +22.633617 -3.987203 0.443536 +23.478971 -7.244563 0.424197 +21.038292 -7.035086 0.443536 +19.598469 -5.253955 0.462875 +20.787411 -2.301497 0.462875 +24.479828 -5.67291 0.424197 +22.478115 -8.816216 0.424197 +27.393793 -14.856625 0.4397 +26.257891 -11.917303 0.422279 +28.716152 -13.782949 0.4397 +28.529697 -17.795946 0.457121 +26.071434 -15.9303 0.4397 +24.994688 -13.263824 0.422279 +27.521093 -10.570783 0.422279 +29.911209 -16.995117 0.457121 +27.148182 -18.596775 0.457121 +24.682734 -17.002022 3.313101 +23.683571 -14.733891 3.240755 +24.711166 -17.002857 1.861686 +25.54921 -19.266241 3.408194 +24.673256 -17.001741 4.823377 +23.676725 -14.751541 4.737965 +23.704103 -14.680943 1.813923 +25.642406 -19.32254 1.922108 +25.518139 -19.247475 4.936477 +29.922867 -12.756535 3.313101 +28.61035 -9.628299 3.240755 +29.906347 -12.763285 4.823377 +31.004105 -15.979284 3.408194 +29.972427 -12.73628 1.861686 +28.684898 -9.45514 1.813923 +28.585501 -9.686018 4.737964 +30.962872 -15.948568 4.936477 +31.127796 -16.07143 1.922108 +29.906347 -12.763285 9.946192 +28.585499 -9.686018 9.952898 +29.906347 -12.763285 11.811817 +30.962872 -15.948568 9.937307 +29.906347 -12.763285 8.139822 +28.585499 -9.686018 8.093462 +28.585501 -9.686018 11.885011 +30.962872 -15.948568 11.714897 +30.96287 -15.948569 8.20121 +24.673256 -17.001741 9.94619 +23.676725 -14.751541 9.952899 +24.673256 -17.001741 8.139822 +25.518143 -19.247475 9.937307 +24.673256 -17.001741 11.811817 +23.676725 -14.751541 11.885011 +23.676723 -14.751541 8.093462 +25.518141 -19.247475 8.20121 +25.518139 -19.247475 11.714897 +24.755022 -16.935516 17.379131 +23.753424 -14.672392 17.667332 +24.673256 -17.001741 15.60233 +25.603216 -19.195929 16.997509 +25.000322 -16.736837 18.919029 +23.983522 -14.434945 19.266697 +23.676723 -14.751541 15.821911 +25.518141 -19.247475 15.311569 +25.858437 -19.041292 18.458658 +27.289803 -14.882513 21.051189 +26.131115 -12.218779 21.481201 +26.308596 -15.677222 20.814283 +28.240505 -17.598021 20.481785 +28.271006 -14.087802 20.814281 +27.05151 -11.268993 21.235146 +25.210718 -13.168564 21.235146 +27.219618 -18.216564 20.256994 +29.261393 -16.979477 20.256992 +29.824581 -12.82951 17.379131 +28.508801 -9.765167 17.667332 +29.579279 -13.028188 18.919027 +30.877796 -16.000114 16.997509 +29.906347 -12.763285 15.602329 +28.585499 -9.686018 15.82191 +28.278702 -10.002613 19.266697 +30.622574 -16.154751 18.458656 +30.96287 -15.948569 15.311569 +32.143517 -24.636984 16.075554 +32.064499 -21.959129 16.306393 +31.883781 -24.670181 17.346458 +31.851017 -27.199978 15.908606 +32.230095 -24.625916 14.609128 +32.151886 -21.935717 14.785004 +31.802343 -22.029373 17.624928 +31.59786 -27.197479 17.14506 +31.935402 -27.200809 14.481929 +29.459591 -24.980034 19.106173 +29.355547 -22.684963 19.450598 +28.42065 -25.112827 18.910648 +29.235064 -27.17415 18.857075 +30.498531 -24.84724 18.910648 +30.404175 -22.403996 19.247746 +28.306919 -22.965931 19.247746 +28.222435 -27.164154 18.666851 +30.247692 -27.184147 18.666849 +26.775665 -25.323086 16.075556 +26.646595 -23.410797 16.306393 +26.689087 -25.33415 14.609128 +26.619108 -27.148325 15.908607 +27.0354 -25.289886 17.346458 +26.908749 -23.340557 17.624929 +26.559208 -23.434212 14.785004 +26.534721 -27.147491 14.481929 +26.872265 -27.150824 17.14506 +26.689089 -25.334148 9.915847 +26.559208 -23.434212 9.921221 +26.689087 -25.33415 8.349516 +26.534723 -27.147491 9.911961 +26.689089 -25.33415 11.48075 +26.559208 -23.434212 11.539375 +26.559208 -23.434212 8.312384 +26.534721 -27.147491 8.376371 +26.534723 -27.147491 11.438351 +32.230091 -24.625919 9.915847 +32.151886 -21.935717 9.921221 +32.230095 -24.625919 11.48075 +31.935402 -27.200811 9.911961 +32.230095 -24.625916 8.349516 +32.151886 -21.935717 8.312384 +32.151886 -21.935719 11.539375 +31.935402 -27.200811 11.438351 +31.935402 -27.200809 8.376371 +32.253399 -24.633125 3.636376 +32.193115 -21.966433 3.579406 +32.230095 -24.625919 5.209713 +31.987394 -27.198923 3.677791 +32.323318 -24.654743 2.061884 +32.316811 -22.058577 2.027536 +32.151886 -21.935719 5.1413 +31.935402 -27.200811 5.259191 +32.143372 -27.193256 2.087574 +26.706854 -25.339561 3.636376 +26.590275 -23.452978 3.579406 +26.760149 -25.355801 2.061884 +26.574718 -27.150375 3.677791 +26.689089 -25.33415 5.209713 +26.559208 -23.434212 5.1413 +26.683472 -23.509277 2.027536 +26.694702 -27.159023 2.087574 +26.534723 -27.147491 5.259191 +29.623875 -25.030508 0.486813 +29.644737 -22.882889 0.480677 +31.02021 -24.85704 0.486813 +29.603016 -27.178129 0.492948 +28.227543 -25.203979 0.486813 +28.226238 -23.233616 0.480677 +31.06324 -22.532162 0.480677 +30.97718 -27.181917 0.492948 +28.228849 -27.174343 0.492948 +26.596817 -33.589161 0.499084 +28.089485 -31.457455 0.499084 +27.712513 -34.201057 0.499084 +25.104145 -35.720863 0.499084 +25.481117 -32.977264 0.499084 +26.855637 -31.060984 0.499084 +29.323332 -31.853926 0.499084 +26.101696 -36.548191 0.499084 +24.106598 -34.893539 0.499084 +24.294247 -32.305668 3.717842 +25.341822 -30.644329 3.722384 +24.324858 -32.330898 2.112801 +23.10433 -33.847622 3.6823 +24.283531 -32.298904 5.305527 +25.301826 -30.641445 5.312538 +25.461807 -30.652981 2.115033 +23.106791 -33.939888 2.093909 +23.101463 -33.823463 5.25782 +28.737579 -34.764557 3.717842 +30.19323 -32.263615 3.722384 +28.725182 -34.759842 5.305527 +27.100662 -37.16869 3.6823 +28.776312 -34.784859 2.112801 +30.349209 -32.25795 2.115033 +30.141237 -32.265503 5.312538 +27.103062 -37.147953 5.25782 +27.099617 -37.255569 2.093909 +28.724318 -34.756374 9.893801 +30.141239 -32.265503 9.907772 +28.723261 -34.752136 11.375556 +27.099606 -37.134079 9.853981 +28.725182 -34.759842 8.393744 +30.141239 -32.265503 8.405328 +30.141237 -32.265503 11.392635 +27.095383 -37.117119 11.347178 +27.10306 -37.147953 8.344512 +24.284395 -32.311176 9.893801 +25.301826 -30.641445 9.907772 +24.283531 -32.30632 8.393744 +23.104918 -33.87254 9.853982 +24.28545 -32.31588 11.375557 +25.301826 -30.641445 11.392635 +25.301826 -30.641447 8.405328 +23.101463 -33.853107 8.344512 +23.10914 -33.89135 11.347178 +24.356556 -32.361027 15.694424 +25.377441 -30.666822 15.7286 +24.286985 -32.322044 14.317364 +23.178478 -33.970081 15.681897 +24.564493 -32.474888 16.887196 +25.60429 -30.74295 16.92791 +25.301826 -30.641447 14.344781 +23.115282 -33.916016 14.303688 +23.364998 -34.119938 16.873623 +26.504356 -33.534008 18.538134 +27.721533 -31.453476 18.588493 +25.672985 -33.080101 18.354696 +25.102262 -35.504234 18.521347 +27.335728 -33.987915 18.354696 +28.628922 -31.757984 18.403984 +26.814142 -31.148964 18.403984 +24.357719 -34.910965 18.338266 +25.846806 -36.097504 18.338266 +28.652157 -34.706985 15.694424 +30.06562 -32.240128 15.7286 +28.44422 -34.593124 16.887196 +27.026043 -37.038391 15.681897 +28.721727 -34.745968 14.317365 +30.141239 -32.265503 14.344782 +29.838774 -32.163998 16.92791 +26.839525 -36.888531 16.873623 +27.089241 -37.092453 14.303689 +21.756737 -42.560265 15.669086 +23.539463 -40.994907 15.675092 +21.640144 -42.328876 16.873623 +19.916843 -43.870674 15.661276 +21.803532 -42.669258 14.252442 +23.59129 -41.085323 14.276466 +23.399334 -40.78532 16.873623 +19.823429 -43.62307 16.873623 +19.95822 -43.99432 14.221203 +20.579725 -40.28075 18.521347 +22.109388 -38.901131 18.521347 +20.125259 -39.402985 18.338266 +18.987381 -41.455967 18.521347 +21.034191 -41.15852 18.338266 +22.662224 -39.708641 18.338266 +21.556553 -38.093624 18.338266 +18.629074 -40.52721 18.338266 +19.345688 -42.384727 18.338266 +19.40271 -38.001236 15.669086 +20.67931 -36.807358 15.675092 +19.355913 -37.892242 14.252442 +18.057917 -39.04126 15.661276 +19.519302 -38.232628 16.873623 +20.819439 -37.016945 16.873623 +20.627481 -36.716942 14.276466 +18.016542 -38.917614 14.221203 +18.151333 -39.288868 16.873623 +19.275595 -37.55434 9.456821 +20.575661 -36.499554 9.64301 +19.248821 -37.400871 7.832047 +17.912903 -38.479019 9.214712 +19.308315 -37.701077 11.090946 +20.596773 -36.593609 11.211068 +20.558388 -36.40239 8.07229 +17.878357 -38.273239 7.519648 +17.955128 -38.670948 10.934746 +21.883852 -42.992455 9.456821 +23.643108 -41.293446 9.643011 +21.85113 -42.86042 11.090946 +20.061857 -44.413002 9.214712 +21.910625 -43.101807 7.832047 +23.660381 -41.36282 8.072291 +23.621998 -41.208656 11.211068 +20.019634 -44.24099 10.934747 +20.096401 -44.559029 7.519648 +21.884426 -43.011059 3.297951 +23.642632 -41.321892 3.478134 +21.910625 -43.111519 4.745356 +20.070774 -44.483627 3.063652 +21.853428 -42.886288 1.888923 +23.62009 -41.322437 1.985021 +23.660381 -41.36282 4.985599 +20.096403 -44.597862 4.432956 +20.055298 -44.329327 1.763964 +19.282854 -37.089783 3.297951 +20.576609 -36.24366 3.478134 +19.337358 -37.067841 1.888923 +17.934856 -37.800591 3.063652 +19.248821 -37.155876 4.745356 +20.558388 -36.254177 4.985599 +20.600565 -36.311104 1.985021 +18.042938 -37.744698 1.763964 +17.878357 -37.915749 4.432957 +20.611063 -39.908669 0.499084 +22.111271 -38.880615 0.499084 +21.215546 -41.32901 0.499084 +19.110855 -40.936714 0.499084 +20.00658 -38.488319 0.499084 +21.369329 -37.649067 0.499084 +22.85321 -40.112167 0.499084 +19.577877 -42.545856 0.499084 +18.643833 -39.327572 0.499084 +13.622431 -43.076302 0.499084 +15.616541 -42.520535 0.499084 +13.762829 -45.456055 0.499084 +11.628323 -43.632072 0.499084 +13.482034 -40.696556 0.499084 +15.381559 -40.43169 0.499084 +15.851521 -44.609379 0.499084 +11.674138 -46.302727 0.499084 +11.582507 -40.961418 0.499084 +13.22357 -39.347412 2.016505 +14.904625 -38.898266 2.426552 +13.277459 -38.836777 1.216156 +11.490629 -39.785805 1.537848 +13.190252 -39.839371 2.983409 +14.848125 -39.211887 3.58349 +15.012706 -38.613373 1.424177 +11.512125 -39.043457 0.992883 +11.475277 -40.507469 2.185145 +13.967653 -47.536659 2.014451 +16.112373 -46.725899 2.426552 +13.994396 -47.357941 2.975194 +11.767538 -48.212936 1.529633 +13.936534 -47.692062 1.216156 +16.096899 -46.71722 1.424177 +16.138004 -46.713928 3.58349 +11.787464 -47.768185 2.152282 +11.744519 -48.606064 0.992883 +14.073495 -46.816544 8.156977 +16.103458 -46.344616 8.556376 +14.003464 -46.676262 10.280642 +12.193677 -46.931721 7.735312 +14.065684 -46.985012 6.076316 +16.138004 -46.519772 6.670181 +16.061235 -46.162895 10.510014 +12.023335 -46.862476 10.093516 +12.072612 -47.091934 5.296698 +13.215781 -40.793438 8.121885 +14.882672 -40.065224 8.556376 +13.190252 -40.565483 6.070101 +11.487571 -41.52496 7.594946 +13.246305 -40.990326 10.204216 +14.924896 -40.272415 10.510014 +14.848125 -39.813644 6.670182 +11.475276 -41.358829 5.271836 +11.499887 -41.743267 9.787815 +13.289581 -41.233864 15.609255 +15.013182 -40.647736 15.640039 +13.279992 -41.159477 14.035042 +11.450463 -41.705505 15.541952 +13.317016 -41.481415 16.865456 +15.063089 -40.910362 16.873623 +14.98631 -40.519081 14.136256 +11.474957 -41.778542 13.831597 +11.451503 -41.904633 16.840956 +13.571517 -43.820358 18.511246 +15.493066 -43.217655 18.521347 +13.462446 -42.817955 18.328381 +11.548142 -44.251122 18.480942 +13.68059 -44.822762 18.328381 +15.677341 -44.206497 18.338266 +15.30879 -42.228813 18.338266 +11.506726 -43.245483 18.298721 +11.58956 -45.25676 18.298721 +13.857306 -46.416977 15.624754 +15.972949 -45.787575 15.640039 +13.826021 -46.159298 16.865456 +11.661224 -46.837254 15.603947 +13.878446 -46.521751 14.097036 +15.999821 -45.916229 14.136256 +15.923041 -45.524948 16.873623 +11.644783 -46.597607 16.840956 +11.682939 -46.885765 14.079574 +9.740364 -44.815315 7.18924 +9.700857 -44.849342 9.921999 +9.681458 -43.57872 7.110026 +9.707024 -44.823566 4.380695 +10.011572 -45.883919 7.250392 +9.858118 -45.892216 9.974788 +9.676886 -43.70652 9.669086 +9.682981 -43.536121 4.37448 +9.876689 -45.959511 4.399342 +5.006484 -44.664978 12.831478 +7.314743 -44.791607 12.764441 +4.877826 -45.62265 12.958141 +2.702074 -44.510883 12.737442 +5.138991 -43.679836 12.896147 +7.398676 -43.796581 12.614061 +7.221524 -45.791817 12.862038 +2.524675 -45.416424 12.794092 +2.90416 -43.49028 12.794091 +4.701712 -46.919861 15.515148 +7.062234 -47.118927 15.567722 +4.720086 -46.757339 16.599884 +2.345528 -46.390747 15.382736 +4.71779 -46.811058 14.364328 +7.085121 -47.026752 14.285418 +7.070657 -46.93119 16.710287 +2.369934 -46.24921 16.464682 +2.346284 -46.368534 14.176208 +5.000967 -44.559856 18.135098 +7.239206 -44.637314 18.319326 +5.124853 -43.604076 17.973927 +2.755543 -44.244682 17.824841 +4.878078 -45.510727 17.973927 +7.166971 -45.620403 18.140543 +7.311441 -43.654224 18.140545 +2.934841 -43.329609 17.711338 +2.580235 -45.140141 17.71134 +5.30267 -42.217667 15.499649 +7.431581 -42.196217 15.505728 +5.294937 -42.375023 14.302335 +3.159953 -42.129387 15.382736 +5.282844 -42.357468 16.599884 +7.407755 -42.343437 16.710285 +7.454901 -42.409943 14.037441 +3.146369 -42.224262 14.176208 +3.145141 -42.220543 16.464682 +0.418374 -44.245079 15.253046 +0.403201 -44.322102 13.94893 +0.191185 -45.038116 15.238833 +0.45667 -44.055908 16.393276 +0.700595 -43.182934 15.238833 +0.689202 -43.236843 13.917478 +0.173796 -45.135345 13.917477 +0.229356 -44.85907 16.367878 +0.719883 -43.076168 16.367878 +5.054321 -44.638756 1.701598 +7.345791 -44.745853 1.617928 +5.206828 -43.396835 1.720568 +2.762851 -44.531658 1.785267 +4.922148 -45.797928 1.644687 +7.259893 -45.937481 1.564826 +7.444904 -43.466476 1.635629 +2.968752 -43.32719 1.805507 +2.584403 -45.658371 1.724548 +4.728972 -48.447975 1.094548 +7.13435 -48.634968 1.051502 +4.759474 -47.702538 1.341162 +2.323595 -48.260979 1.137594 +4.718805 -49.110664 0.809993 +7.127742 -49.300156 0.785989 +7.154172 -47.882042 1.281612 +2.364775 -47.523033 1.400711 +2.309868 -48.921173 0.833997 +5.369503 -40.159439 1.113518 +7.550626 -40.189133 1.069202 +5.369503 -39.182384 0.809993 +3.18838 -40.129738 1.157833 +5.369503 -41.13649 1.417043 +7.550626 -41.166183 1.352416 +7.550626 -39.212082 0.785989 +3.18838 -39.152687 0.833997 +3.18838 -41.106796 1.48167 +5.044154 -43.968658 0.506468 +7.339184 -44.078255 0.502776 +4.881479 -46.850319 0.506468 +2.749124 -43.859062 0.51016 +5.206829 -41.086998 0.506468 +7.444905 -41.156639 0.502776 +7.233462 -46.999863 0.502776 +2.529496 -46.700775 0.51016 +2.968752 -41.017353 0.51016 +0.456255 -44.100658 1.19946 +0.462737 -44.264877 1.535543 +0.730676 -42.102623 1.202149 +0.454094 -43.927334 0.858 +0.186156 -46.089592 1.191394 +0.212085 -45.813297 1.503279 +0.730676 -42.680084 1.546297 +0.730676 -41.525166 0.858 +0.177513 -46.329506 0.858 +-8.360043 0.956955 17.111889 +-5.795125 1.650008 16.659416 +-8.39533 1.042985 15.41225 +-10.930756 -0.054234 17.440252 +-8.279716 0.648044 18.575998 +-5.741125 1.364336 18.0508 +-5.813126 1.745232 15.053975 +-10.996309 -0.005655 15.703035 +-10.836251 -0.403268 18.910196 +-7.489627 -2.155355 20.595512 +-5.237115 -1.301938 19.977329 +-7.834278 -0.965604 20.371124 +-9.79274 -3.341795 20.914658 +-7.140858 -3.338021 20.371122 +-5.021111 -2.444627 19.763271 +-5.453119 -0.159249 19.763271 +-10.264125 -2.129247 20.69194 +-9.30488 -4.526 20.691938 +-6.569788 -5.182638 17.111889 +-4.679105 -4.253884 16.659418 +-6.662471 -4.894983 18.575998 +-8.457027 -6.289247 17.440254 +-6.546855 -5.289925 15.412251 +-4.661105 -4.349109 15.053976 +-4.733106 -3.968213 18.0508 +-8.600956 -6.025241 18.910198 +-8.440898 -6.422853 15.703035 +-6.547274 -5.340044 9.959595 +-4.649176 -4.363975 9.929401 +-6.562778 -5.312727 11.766058 +-8.492674 -6.560894 10.026148 +-6.492799 -5.410594 8.197782 +-4.613388 -4.408572 8.255453 +-4.661105 -4.349109 11.629033 +-8.504591 -6.514061 11.915789 +-8.42508 -6.655789 8.190016 +-8.41555 1.002749 9.959595 +-5.813126 1.745232 9.929401 +-8.416614 1.000632 8.197781 +-11.077184 -0.166598 10.026148 +-8.412357 1.009102 11.766058 +-5.813126 1.745232 11.629032 +-5.813126 1.745233 8.255453 +-11.081441 -0.175068 8.190015 +-11.064415 -0.141186 11.915789 +-8.412781 1.027576 3.382789 +-5.753584 1.775446 3.49085 +-8.401278 1.108408 1.903787 +-11.125648 -0.097505 3.312041 +-8.416615 1.000632 4.908792 +-5.813126 1.745233 5.035964 +-5.57496 1.866086 1.972272 +-11.258267 0.135181 1.855312 +-11.081442 -0.175068 4.830825 +-5.948807 -6.069184 3.382789 +-4.255789 -4.788863 3.49085 +-6.196957 -5.779264 4.908791 +-7.713734 -7.53032 3.31204 +-5.648121 -6.385941 1.903787 +-4.041889 -4.859406 1.972272 +-4.422523 -4.646423 5.035964 +-8.043348 -7.131492 4.830824 +-7.297489 -8.01325 1.855312 +-6.853556 -2.749967 0.448286 +-4.5706 -1.453531 0.46696 +-6.087361 -4.733042 0.448286 +-9.136512 -4.046402 0.429612 +-7.61975 -0.766892 0.448286 +-4.953696 0.266703 0.46696 +-4.187503 -3.173765 0.46696 +-7.98722 -6.292317 0.429612 +-10.285803 -1.800487 0.429612 +-15.163912 -9.986883 0.463942 +-13.306431 -7.683144 0.437648 +-13.878689 -11.553786 0.463524 +-16.962423 -12.217487 0.4894 +-16.390167 -8.346846 0.463524 +-14.712606 -5.630602 0.437648 +-11.900256 -9.735686 0.437648 +-15.787629 -13.239899 0.487731 +-17.901348 -10.902538 0.487731 +-13.171226 -12.348265 3.50979 +-11.369886 -10.780315 3.380805 +-13.416462 -12.045639 5.116923 +-14.864702 -13.655205 3.655032 +-12.879282 -12.703132 1.969523 +-10.953642 -11.263247 1.89128 +-11.699501 -10.381487 4.942118 +-15.019781 -13.46195 5.312026 +-14.685766 -13.87819 2.055377 +-17.509575 -6.805976 3.50979 +-15.809334 -4.120994 3.380805 +-17.54273 -6.747804 1.969523 +-18.722336 -9.44132 3.655032 +-17.498524 -6.825366 5.116923 +-15.765127 -4.198556 4.942118 +-15.941954 -3.888308 1.89128 +-18.722336 -9.44132 2.055377 +-18.722336 -9.44132 5.312026 +-17.461382 -6.752287 10.575245 +-15.743843 -4.156204 10.339578 +-17.498524 -6.825367 8.668359 +-18.663157 -9.326887 10.824861 +-17.349957 -6.53305 12.47417 +-15.679995 -4.029144 12.261828 +-15.765127 -4.198556 8.435026 +-18.722336 -9.44132 8.912708 +-18.48562 -8.983584 12.731277 +-13.73284 -11.556927 10.575245 +-12.132904 -9.788088 10.339577 +-13.646523 -11.381129 12.474169 +-15.19029 -13.095539 10.82486 +-13.712305 -11.67697 8.668359 +-12.081234 -9.905785 8.435026 +-12.097051 -9.672849 12.261827 +-15.033785 -12.828786 12.731277 +-15.210648 -13.224099 8.912708 +-12.706229 -9.982055 17.051653 +-11.715235 -8.958473 17.409731 +-13.265451 -10.327147 17.675972 +-13.087559 -10.566435 15.961899 +-11.778587 -9.216806 15.896332 +-12.002867 -8.867537 18.543119 +-14.135469 -11.485384 16.286085 +-15.570316 -9.081087 18.647186 +-13.929709 -6.921852 19.958195 +-16.213545 -8.000189 18.539274 +-16.875027 -11.104582 16.966331 +-14.782935 -9.91399 18.539274 +-13.218444 -7.926504 19.800964 +-14.5586 -5.775488 19.800964 +-17.497807 -10.066384 16.890749 +-16.021599 -11.745985 16.890749 +-16.218147 -4.711248 17.051653 +-15.155701 -3.184688 17.409731 +-16.755688 -5.363778 15.961898 +-16.577797 -5.603065 17.675972 +-15.115189 -3.70076 18.543119 +-15.339468 -3.351491 15.896332 +-17.538761 -7.15264 16.286085 +-15.608406 -27.066132 0.486351 +-17.027493 -24.700298 0.501213 +-14.380095 -26.553379 0.486107 +-14.14279 -29.509537 0.471002 +-16.79019 -27.656456 0.486107 +-18.019966 -25.179771 0.500238 +-15.848911 -24.531097 0.500238 +-12.894745 -28.693188 0.471002 +-15.390836 -30.325886 0.471002 +-13.138005 -26.057541 3.638438 +-14.521643 -24.497517 3.624497 +-13.163886 -26.038677 5.266383 +-11.740275 -27.808887 3.602707 +-13.129035 -26.070057 2.051722 +-14.525864 -24.518471 2.047282 +-14.611797 -24.431778 5.258154 +-11.753643 -27.799179 5.207151 +-11.700171 -27.838009 2.029136 +-17.970272 -28.187645 3.698782 +-18.999714 -25.812136 3.865873 +-17.962408 -28.229572 2.086868 +-16.644798 -30.752798 3.602707 +-17.966467 -28.173849 5.332027 +-18.983648 -25.812586 5.520728 +-18.970795 -25.812946 2.187868 +-16.642262 -30.919699 2.029136 +-16.645643 -30.697165 5.207151 +-17.917475 -28.242653 10.552653 +-18.868587 -25.921038 10.803799 +-17.953613 -28.174208 8.777582 +-16.626381 -30.73687 10.314447 +-17.815485 -28.447807 12.274577 +-18.703342 -26.241364 12.563871 +-18.932238 -25.814024 8.995869 +-16.645643 -30.697163 8.578879 +-16.56859 -30.855986 12.017452 +-13.126503 -26.099316 10.54503 +-14.544205 -24.569609 10.773302 +-13.018761 -26.238964 12.274578 +-11.734133 -27.824114 10.314447 +-13.176739 -26.038319 8.747086 +-14.663208 -24.430342 8.87388 +-14.35906 -24.814024 12.563871 +-11.675604 -27.898916 12.017452 +-11.753642 -27.799179 8.57888 +-12.16468 -27.475388 16.187645 +-12.704634 -27.066727 16.76469 +-11.322825 -28.492756 16.403275 +-12.472783 -26.954853 15.29495 +-13.486207 -26.001987 15.656155 +-11.669197 -28.478992 17.378017 +-11.363446 -28.297867 15.128687 +-15.484976 -27.230265 17.662321 +-16.639767 -25.346703 16.34417 +-16.345993 -27.79071 17.562584 +-14.16087 -29.312813 18.61525 +-14.488252 -26.896061 17.562584 +-15.600002 -25.204956 16.267723 +-17.4624 -25.850435 16.267723 +-15.03984 -29.950367 18.477779 +-13.204353 -28.804537 18.477779 +-16.833162 -30.208166 16.187645 +-17.275824 -29.541847 15.29495 +-16.068365 -31.684235 16.403275 +-17.04397 -29.429972 16.76469 +-17.83917 -27.949284 15.656156 +-16.260382 -31.49128 15.128687 +-15.95463 -31.310156 17.378017 +-12.113087 -36.652031 15.875116 +-13.542945 -35.164402 16.20826 +-12.184578 -36.697716 14.465702 +-10.532612 -38.100487 15.510168 +-11.921577 -36.467342 17.088036 +-13.353756 -34.943447 17.43379 +-13.636829 -35.174522 14.76421 +-10.591953 -38.156548 14.161545 +-10.353971 -37.932308 16.670668 +-10.097356 -34.81826 18.760044 +-11.44154 -33.180012 19.108196 +-10.884676 -35.514091 18.574265 +-8.685938 -36.362686 18.270327 +-9.306159 -34.128899 18.574265 +-10.584467 -32.493797 18.922152 +-12.283104 -33.892082 18.92215 +-9.400809 -37.035381 18.092587 +-7.971067 -35.689991 18.092587 +-8.035059 -33.062057 15.875115 +-9.154025 -31.505896 16.208261 +-8.238239 -33.227356 17.088036 +-6.83911 -34.624893 15.510169 +-7.975084 -32.996986 14.465702 +-9.106668 -31.418203 14.764211 +-9.389742 -31.649281 17.43379 +-7.017905 -34.793064 16.67067 +-6.779305 -34.56884 14.161545 +-7.993077 -32.972366 9.89052 +-9.180805 -31.323452 9.99713 +-7.990383 -32.977051 11.426888 +-6.77714 -34.565102 9.741847 +-7.993821 -32.968262 8.343731 +-9.184708 -31.318466 8.384584 +-9.1691 -31.338413 11.605148 +-6.778068 -34.568886 11.234633 +-6.776212 -34.553688 8.231937 +-12.202336 -36.660622 9.89052 +-13.71003 -35.023643 9.99713 +-12.203068 -36.660465 8.343731 +-10.589787 -38.15905 9.741847 +-12.199678 -36.665962 11.426888 +-13.698472 -35.047462 11.605147 +-13.713882 -35.015701 8.384584 +-10.58886 -38.166367 8.231937 +-10.590715 -38.156593 11.234633 +-12.20921 -36.682198 3.648974 +-13.713037 -35.071335 3.612048 +-12.228723 -36.703682 2.071678 +-10.614277 -38.197678 3.619937 +-12.202759 -36.670185 5.221536 +-13.713882 -35.015701 5.189296 +-13.7105 -35.238235 2.041264 +-10.694862 -38.116699 2.066468 +-10.587622 -38.205246 5.168043 +-7.995173 -32.951782 3.648974 +-9.17134 -31.328175 3.612048 +-7.993512 -32.953011 5.221536 +-6.794985 -34.478062 3.619937 +-8.000309 -32.971008 2.071678 +-9.131237 -31.357296 2.041264 +-9.184708 -31.318466 5.189296 +-6.774975 -34.492668 5.168043 +-6.855633 -34.525826 2.066468 +-10.130974 -34.865173 0.492014 +-11.392443 -33.428452 0.473712 +-9.069078 -33.932812 0.492014 +-8.869505 -36.301899 0.510317 +-11.192869 -35.797535 0.492014 +-12.549781 -34.444611 0.473712 +-10.235105 -32.412289 0.473712 +-7.903052 -35.453339 0.510317 +-9.835958 -37.150459 0.510317 +-3.576972 -40.744049 0.521236 +-5.592504 -39.241337 0.524928 +-3.003175 -38.960785 0.521236 +-1.561439 -42.246758 0.517544 +-4.150767 -42.527309 0.521236 +-6.314907 -40.51535 0.524928 +-4.870101 -37.967323 0.524928 +-1.13625 -39.954247 0.517544 +-1.986627 -44.539272 0.517544 +-2.39444 -38.099976 2.581155 +-4.006392 -37.039845 3.103057 +-2.39083 -38.523407 3.719962 +-0.711371 -39.11203 1.925172 +-2.409138 -37.646309 1.529426 +-4.06673 -36.858624 1.799553 +-3.987311 -37.252876 4.464318 +-0.712299 -39.798988 2.701625 +-0.711061 -38.39452 1.20683 +-4.675833 -43.748917 2.578466 +-6.849485 -41.68705 3.103057 +-4.697676 -44.029335 1.529426 +-2.403482 -45.891319 1.914418 +-4.664078 -43.470146 3.709208 +-6.823758 -41.568382 4.464318 +-6.929761 -41.751709 1.799553 +-2.411816 -46.365799 1.20683 +-2.37848 -45.399853 2.658607 +-4.781886 -42.957123 8.581245 +-6.834586 -41.337429 9.088024 +-4.737608 -43.052444 6.734068 +-2.804235 -44.317764 8.029143 +-4.754241 -42.950642 10.416246 +-6.839226 -41.325127 10.710382 +-6.829946 -41.374001 7.470126 +-2.646612 -44.545464 5.754987 +-2.674169 -44.343506 10.183834 +-2.501414 -39.086327 8.583935 +-3.998137 -37.615074 9.088025 +-2.475835 -39.114811 10.416246 +-1.109162 -40.529472 8.039898 +-2.463069 -39.018784 6.744822 +-3.993497 -37.557991 7.470126 +-4.002778 -37.633987 10.710383 +-0.987359 -40.563953 10.183834 +-0.975272 -40.499054 5.798005 +-2.452456 -39.165962 15.036581 +-4.054444 -37.691399 15.060738 +-2.554582 -39.327263 16.134027 +-0.746943 -40.588985 15.10128 +-2.418366 -39.116821 13.700522 +-4.008965 -37.633766 13.751867 +-4.187789 -37.86441 16.153551 +-0.80569 -40.692184 16.203342 +-0.7315 -40.572937 13.751873 +-3.554222 -41.032631 17.558907 +-5.428735 -39.479282 17.630733 +-3.984724 -41.7705 17.409992 +-1.555019 -42.454514 17.501604 +-3.122723 -40.289864 17.409992 +-4.896901 -38.787193 17.466602 +-5.960569 -40.171371 17.466602 +-1.884499 -43.23777 17.394981 +-1.221551 -41.651642 17.394981 +-4.656423 -42.907024 15.036581 +-6.802253 -41.267189 15.060737 +-4.69082 -42.974434 13.700521 +-2.368083 -44.350822 15.101281 +-4.552865 -42.733093 16.134027 +-6.669682 -41.094154 16.153553 +-6.845413 -41.324905 13.751867 +-2.394497 -44.439606 13.751873 +-2.30036 -44.19722 16.203344 +0.231717 -44.283073 7.309866 +0.317587 -44.337029 4.605062 +0.322676 -43.209045 7.366999 +0.281692 -44.296272 9.952027 +-0.224805 -45.0042 7.356244 +-0.060996 -45.202999 4.614336 +0.462753 -43.224648 4.657354 +0.438293 -43.228035 9.962113 +-0.100926 -45.039429 9.962113 +-18.749943 -14.388483 3.885087 +-17.735785 -14.767853 3.859525 +-18.757696 -14.37882 5.619901 +-19.329338 -13.377954 3.859525 +-18.740995 -14.399633 2.189866 +-17.699997 -14.812449 2.174923 +-17.766802 -14.729201 5.585693 +-19.329338 -13.377954 5.585692 +-19.329338 -13.377954 2.174923 +-18.674299 -14.20173 11.209742 +-17.722485 -14.526524 11.166977 +-18.390705 -13.712081 13.150517 +-19.237762 -13.212377 11.166977 +-18.767239 -14.366928 9.287495 +-17.804974 -14.681631 9.245852 +-17.455935 -14.084988 13.103933 +-18.963032 -12.715641 13.103933 +-19.329338 -13.377954 9.245852 +-18.359592 -22.51594 11.200169 +-17.258327 -22.677418 11.128504 +-18.525129 -22.349329 9.377782 +-19.095894 -22.951557 11.159 +-18.066608 -22.967937 13.021942 +-16.967571 -23.095057 12.971045 +-17.446806 -22.479454 9.224847 +-19.229218 -22.797661 9.346835 +-18.824444 -23.409655 12.971045 +-19.206366 -22.397167 5.117103 +-18.941463 -22.279156 4.540778 +-19.566595 -22.788233 4.639769 +-19.008938 -22.277271 6.158919 +-18.302429 -22.221401 5.872408 +-19.422005 -22.792274 3.382341 +-19.486267 -22.790478 6.049191 +-17.695072 -22.329069 2.698909 +-18.032566 -22.290169 1.76063 +-18.05405 -22.268496 3.213381 +-16.945374 -22.556688 3.106143 +-17.052414 -22.574768 1.835898 +-18.681553 -22.436966 1.921689 +-17.138348 -22.488077 4.272845 +0.857866 -2.2664 0.499448 +-0.071489 -2.625437 0.495367 +-1.143822 -2.875823 0.490658 +2.001688 0.690874 0.504471 +2.144666 -0.157096 0.505099 +2.001688 -1.005067 0.504471 +0.857867 1.952208 0.499448 +-0.071488 2.311246 0.495367 +-1.143821 2.561632 0.490658 +-2.287644 -1.614489 0.485635 +-2.287643 -0.157095 0.485635 +-2.287643 1.300299 0.485635 +2.001688 0.690873 7.202652 +2.144666 -0.157097 7.21673 +2.001688 -1.005068 7.202652 +0.857865 -2.266401 7.090031 +-0.127007 -2.686929 6.996142 +-1.365892 -3.121788 6.883409 +0.857867 1.952207 7.090031 +-0.190571 2.250819 6.996142 +-1.620153 2.319927 6.883409 +1.572755 -1.744385 2.251277 +1.572754 -1.744385 3.966273 +1.572754 -1.744386 5.613885 +1.572755 1.430192 2.251277 +1.572755 1.430192 3.966274 +1.572755 1.430192 5.613885 +-2.546238 -3.664357 2.04651 +-2.688152 -3.781529 3.612637 +-2.783173 -3.761123 5.182442 +-3.121224 2.334711 2.04651 +-3.389161 2.198752 3.612637 +-3.478474 2.153432 5.182443 +-3.478474 2.153432 8.335323 +-3.478473 2.153432 9.917761 +-3.478474 2.153432 11.502595 +-1.620153 2.319927 12.852698 +-0.128018 2.273809 12.639079 +1.108078 2.044169 12.453141 +1.572756 1.430192 8.572183 +1.635309 1.44486 9.87038 +1.822967 1.488863 11.076216 +-2.878606 -3.642198 8.335323 +-2.896499 -3.619899 9.917761 +-2.902464 -3.612466 11.502595 +1.572754 -1.744386 8.572183 +1.635307 -1.759054 9.87038 +1.822965 -1.803058 11.076216 +-1.389751 -3.092057 12.852698 +-0.070419 -2.702487 12.639079 +1.108076 -2.358363 12.453141 +2.752321 -1.057613 11.76479 +2.877427 -0.157098 11.627053 +2.752321 0.743418 11.76479 +2.287645 1.921631 13.566921 +2.287645 1.981989 14.684777 +2.287645 1.814352 15.662201 +2.287644 0.687809 16.871809 +2.287643 -0.157098 17.02301 +2.287643 -1.002005 16.871809 +2.287642 -2.235826 13.566921 +2.287642 -2.296185 14.684777 +2.287642 -2.128547 15.662201 +1.143821 -1.790338 16.771809 +-0.070483 -1.954908 17.242874 +-1.425751 -2.246434 17.807428 +-2.902464 -3.612466 14.674664 +-2.911464 -3.522374 16.161572 +-2.938464 -3.252098 17.450222 +-3.082467 -1.810623 19.036259 +-3.190469 -0.729517 19.23451 +-3.29847 0.351589 19.036259 +-3.478474 2.153432 14.674664 +-3.469473 2.063339 16.161572 +-3.442473 1.793063 17.450222 +1.143822 1.476143 16.771809 +-0.110082 1.526231 17.242874 +-1.584153 1.474305 17.807428 +3.467209 -1.72341 12.707302 +4.573964 -1.673048 12.81378 +5.678077 -1.725081 12.709629 +6.843814 -2.13459 15.68112 +6.842356 -2.302689 14.700247 +6.843442 -2.241986 13.578011 +3.431464 -1.655547 16.206045 +4.573784 -1.639174 16.137466 +5.7131 -1.657447 16.214609 +6.854738 -1.004596 16.894714 +6.86293 -0.1571 17.046412 +6.871123 0.690395 16.894712 +3.431466 1.341351 16.206045 +4.57679 1.324976 16.137466 +5.725118 1.343248 16.214609 +6.882047 1.82039 15.681121 +6.883505 1.988488 14.700247 +6.882419 1.927786 13.578011 +3.467211 1.409213 12.707302 +4.57661 1.35885 12.813779 +5.688653 1.410883 12.709629 +6.40354 0.745086 11.766319 +6.273147 -0.1571 11.627819 +6.392965 -1.059286 11.76632 +8.08383 2.057226 12.468213 +9.278502 2.3128 12.646962 +10.589216 2.418663 12.818176 +8.001163 -2.371428 12.468213 +9.119781 -2.68598 12.646962 +10.316628 -2.96877 12.818176 +8.036791 1.485631 16.814629 +9.245172 1.561836 17.264641 +10.546624 1.576877 17.714653 +12.052931 2.361622 14.478291 +12.046105 2.273697 15.903833 +12.02563 2.009922 17.139301 +7.976714 -1.799834 16.814627 +9.13524 -1.935016 17.264641 +10.35922 -2.126983 17.714653 +11.916431 0.603121 18.659882 +11.834533 -0.451979 18.849953 +11.752633 -1.507079 18.659882 +11.616136 -3.26558 14.478292 +11.622961 -3.177655 15.903833 +11.643435 -2.91388 17.139301 +7.308121 -1.809219 11.079339 +7.49401 -1.765775 9.870531 +7.555973 -1.751293 8.56966 +10.316628 -2.96877 6.90211 +9.181744 -2.663176 6.991755 +8.249016 -2.280212 7.0814 +11.616136 -3.26558 11.437139 +11.616135 -3.26558 9.91176 +11.616136 -3.26558 8.376783 +12.052931 2.361622 11.437139 +12.052931 2.361622 9.911761 +12.052931 2.361622 8.376783 +10.589216 2.418663 6.90211 +9.341645 2.289996 6.991755 +8.336401 1.966009 7.0814 +7.347096 1.495018 11.079338 +7.536524 1.451573 9.870531 +7.599666 1.437092 8.56966 +7.140148 -1.007832 7.200926 +7.005909 -0.1571 7.215867 +7.157625 0.693631 7.200926 +7.599666 1.437092 5.609238 +7.599666 1.437092 3.962389 +7.599666 1.437092 2.248884 +7.157625 0.693631 0.504257 +7.005908 -0.1571 0.504992 +7.140147 -1.007832 0.504257 +7.555973 -1.751293 5.609237 +7.555973 -1.751293 3.962389 +7.555973 -1.751293 2.248884 +12.052931 2.361622 5.258827 +12.017312 2.39464 3.675572 +11.910461 2.493695 2.082165 +8.336401 1.966009 0.498379 +9.294155 2.334021 0.493603 +10.399257 2.59476 0.488092 +11.616136 -3.26558 5.258827 +11.592306 -3.254367 3.675572 +11.520817 -3.220728 2.082165 +11.368311 -1.636588 0.482214 +11.438217 -0.157104 0.482214 +11.508124 1.32238 0.482214 +8.249015 -2.280212 0.498379 +9.149971 -2.648225 0.493603 +10.189535 -2.908967 0.488092 +13.516644 2.304581 0.482214 +15.455256 1.807296 0.482214 +17.393867 1.310012 0.482214 +18.9412 -0.61579 0.482214 +18.549923 -2.044307 0.482214 +18.158646 -3.472825 0.482214 +12.915644 -3.56239 0.482214 +14.532885 -4.008708 0.482214 +16.150126 -4.455025 0.482214 +17.600849 -5.506196 1.995158 +17.547327 -5.700614 3.523782 +17.529486 -5.76542 5.074093 +13.042737 -3.622193 6.782583 +14.54087 -4.110066 6.750414 +16.054974 -4.800656 6.713671 +13.706602 2.128483 6.782583 +15.509669 1.691977 6.750414 +17.421566 1.024834 6.713671 +19.380949 0.313667 1.995158 +19.39653 0.153254 3.523782 +19.401724 0.099784 5.074093 +13.706602 2.128483 13.041437 +15.509669 1.691977 13.101312 +17.421566 1.024834 13.169302 +19.401724 0.099784 8.275905 +19.401724 0.099784 9.926498 +19.401724 0.099784 11.596968 +17.529486 -5.76542 8.275906 +17.529486 -5.765421 9.926498 +17.529486 -5.76542 11.596968 +13.042737 -3.622193 13.041438 +14.54087 -4.110066 13.101312 +16.054974 -4.800656 13.169302 +17.646502 -5.398846 17.898493 +17.558739 -5.673777 16.533161 +17.529486 -5.76542 14.957781 +13.146466 -2.72365 18.314671 +14.692245 -3.203497 18.47558 +16.268503 -3.890424 18.658302 +18.114559 -3.932544 19.578899 +18.465603 -2.832819 19.788952 +18.816648 -1.733093 19.578899 +13.602874 1.22994 18.314671 +15.358294 0.785408 18.47558 +17.208035 0.114601 18.658302 +19.284708 -0.266792 17.898493 +19.372469 0.00814 16.533161 +19.401724 0.099784 14.957781 +21.018837 -2.042534 19.432819 +22.890795 -3.592298 19.9701 +24.678856 -5.495208 20.420166 +27.033092 -6.893637 15.903188 +26.963467 -6.982326 17.77401 +26.754585 -7.248392 19.395386 +21.40958 -1.110445 13.457495 +23.388508 -2.649995 13.657413 +25.281887 -4.563011 13.824879 +19.299585 -6.143727 19.432819 +20.700863 -7.738431 19.9701 +22.02553 -9.59687 20.420166 +25.64056 -8.667408 21.390928 +24.805042 -9.73167 21.640369 +23.969522 -10.795933 21.390928 +18.908844 -7.075816 13.457495 +20.203152 -8.680735 13.657413 +21.422501 -10.529068 13.824881 +22.576992 -12.569706 15.903188 +22.646618 -12.481016 17.77401 +22.855497 -12.214951 19.395388 +18.908844 -7.075816 6.557547 +20.203152 -8.680735 6.449244 +21.422501 -10.529068 6.358521 +22.576994 -12.569706 11.912104 +22.576994 -12.569706 9.955381 +22.576992 -12.569706 8.076302 +27.033094 -6.893637 11.912103 +27.033092 -6.893638 9.955381 +27.033092 -6.893637 8.076302 +21.40958 -1.110445 6.557547 +23.388508 -2.649995 6.449244 +25.281887 -4.563011 6.358521 +27.033094 -6.893637 4.706349 +27.070366 -6.807058 3.213753 +27.18219 -6.54732 1.795352 +21.381882 -0.825267 0.462875 +23.431282 -2.463262 0.443536 +25.480682 -4.101256 0.424197 +19.003998 -6.730185 0.462875 +20.240629 -8.559027 0.443536 +21.477261 -10.387869 0.424197 +22.576994 -12.569706 4.706349 +22.587261 -12.543231 3.213753 +22.618061 -12.463807 1.795352 +23.91794 -10.597347 0.404858 +25.12199 -8.977982 0.404859 +26.326036 -7.358616 0.404858 +28.784298 -9.224263 0.422279 +30.038509 -12.709275 0.4397 +31.292723 -16.194288 0.457121 +31.106268 -20.207283 0.474542 +29.6656 -20.735268 0.474542 +28.224932 -21.263252 0.474542 +23.731483 -14.610344 0.422279 +24.749077 -17.003975 0.4397 +25.76667 -19.397606 0.457121 +26.349337 -21.528507 1.981841 +26.209539 -21.444057 3.50423 +26.162937 -21.415909 5.051155 +23.676723 -14.751541 6.343038 +24.673254 -17.001741 6.422341 +25.518141 -19.247475 6.527351 +28.585499 -9.686018 6.343038 +29.906347 -12.763285 6.422341 +30.96287 -15.948569 6.527351 +31.969694 -19.249292 1.981841 +31.784153 -19.111076 3.50423 +31.722305 -19.065002 5.051155 +28.585499 -9.686018 13.85346 +29.906347 -12.763285 13.707073 +30.96287 -15.948569 13.513233 +31.722303 -19.065002 8.263454 +31.722305 -19.065002 9.928301 +31.722305 -19.065002 11.616625 +26.162941 -21.415909 8.263454 +26.162939 -21.415909 9.928301 +26.162937 -21.415909 11.616625 +23.676723 -14.751541 13.85346 +24.673254 -17.001741 13.707073 +25.518141 -19.247475 13.513233 +26.510399 -21.268978 17.991865 +26.249804 -21.379177 16.610563 +26.162941 -21.415909 15.016753 +24.44372 -13.960052 20.496979 +25.490925 -16.339481 20.103563 +26.368879 -18.732018 19.582619 +27.900242 -20.68125 19.691929 +28.942621 -20.240454 19.904438 +29.985003 -19.79966 19.691929 +27.818504 -10.477506 20.496979 +29.088676 -13.425543 20.103561 +30.112131 -16.464024 19.582617 +31.374846 -19.211933 17.991863 +31.635439 -19.101736 16.610561 +31.722303 -19.065002 15.016752 +31.27803 -22.169857 18.639189 +31.364311 -24.736576 18.324078 +31.091549 -27.192478 18.096178 +31.246292 -29.725605 14.396212 +31.165541 -29.712799 15.796103 +30.92329 -29.674377 17.00934 +32.151886 -21.935719 13.162189 +32.230091 -24.625919 13.044939 +31.935402 -27.200811 12.96014 +27.433064 -23.200073 18.639189 +27.554871 -25.223488 18.324078 +27.378578 -27.155823 18.096178 +29.631281 -29.469475 18.502558 +28.662273 -29.315802 18.689211 +27.693266 -29.162127 18.50256 +26.559208 -23.434212 13.162189 +26.689089 -25.334148 13.044939 +26.534723 -27.147491 12.96014 +26.078255 -28.906002 14.396212 +26.159006 -28.918808 15.796103 +26.401257 -28.957226 17.00934 +26.559208 -23.434212 6.717524 +26.689089 -25.334148 6.781043 +26.534723 -27.147491 6.826982 +26.078255 -28.906002 11.409779 +26.078255 -28.906002 9.909343 +26.078255 -28.906002 8.394469 +31.24629 -29.725605 11.409779 +31.246288 -29.725605 9.909343 +31.246292 -29.725605 8.394469 +32.151886 -21.935719 6.717524 +32.230091 -24.625919 6.781043 +31.935402 -27.200811 6.826982 +31.24629 -29.725605 5.292533 +31.32428 -29.722771 3.705758 +31.558247 -29.714275 2.105119 +32.481739 -22.181435 0.480677 +32.416542 -24.683571 0.486813 +32.351345 -27.185705 0.492948 +26.807737 -23.584343 0.480677 +26.831213 -25.377449 0.486813 +26.854683 -27.170555 0.492948 +26.078255 -28.906002 5.292533 +26.138247 -28.910328 3.705758 +26.318226 -28.923302 2.105119 +28.230156 -29.144707 0.499084 +29.582153 -29.325748 0.499084 +30.934151 -29.506794 0.499084 +30.55718 -32.250397 0.499084 +28.828213 -34.812958 0.499084 +27.099245 -37.375519 0.499084 +24.490877 -38.895325 0.499084 +23.611475 -37.85257 0.499084 +22.732079 -36.809814 0.499084 +25.621788 -30.664513 0.499084 +24.365417 -32.365364 0.499084 +23.109047 -34.066216 0.499084 +21.85092 -35.319958 2.053076 +21.841856 -35.187759 3.605737 +21.833717 -35.160194 5.155737 +25.301826 -30.641445 6.876513 +24.283148 -32.301994 6.867085 +23.099928 -33.835827 6.814036 +30.141239 -32.265503 6.876513 +28.725567 -34.761383 6.867085 +27.104595 -37.154118 6.814036 +25.365437 -39.493591 2.053076 +25.372381 -39.384857 3.605737 +25.379814 -39.369167 5.155737 +30.141239 -32.265503 12.868708 +28.722301 -34.74828 12.847311 +27.091543 -37.101704 12.828836 +25.379814 -39.369167 8.24243 +25.371178 -39.33448 9.774868 +25.360622 -39.292084 11.296137 +21.833717 -35.234303 8.24243 +21.842354 -35.282883 9.774868 +21.852909 -35.32991 11.296137 +25.301826 -30.641445 12.868708 +24.286409 -32.319733 12.847311 +23.112978 -33.906769 12.828836 +22.088936 -35.644997 16.873623 +21.92535 -35.462639 15.679344 +21.868263 -35.391579 14.29348 +26.057985 -30.895205 17.850456 +24.980179 -32.701843 17.804382 +23.737268 -34.416573 17.789026 +22.956268 -36.596996 18.338266 +23.606766 -37.310997 18.521347 +24.257265 -38.025002 18.338266 +29.38508 -32.011745 17.850456 +28.028534 -34.366169 17.804382 +26.467255 -36.591896 17.789024 +25.124596 -38.977005 16.873623 +25.288179 -39.159355 15.679344 +25.345268 -39.230419 14.293481 +23.122919 -40.381569 17.789026 +21.412914 -41.889992 17.789024 +19.644276 -43.158691 17.789026 +18.031574 -45.072613 14.182543 +17.996634 -44.941368 15.651611 +17.925594 -44.683292 16.873623 +23.602806 -41.131577 12.76078 +21.821381 -42.740944 12.70072 +19.981251 -44.086823 12.622621 +21.095856 -37.4207 17.789024 +19.746536 -38.671509 17.789024 +18.330486 -39.753246 17.789024 +17.569231 -43.397358 18.338266 +17.30196 -42.432899 18.521347 +17.034689 -41.468445 18.338266 +20.615965 -36.670692 12.76078 +19.338066 -37.820557 12.70072 +17.993511 -38.825115 12.622621 +16.572348 -39.793182 14.182543 +16.607288 -39.924431 15.651611 +16.678328 -40.182503 16.873623 +20.550711 -36.315979 6.514593 +19.236921 -37.261204 6.250325 +17.863003 -38.077515 5.906686 +16.504791 -39.521851 10.741444 +16.458345 -39.305386 8.915092 +16.420345 -39.063 7.133042 +18.099131 -45.343948 10.741444 +18.145576 -45.53656 8.915092 +18.183577 -45.707386 7.133043 +23.66806 -41.393654 6.514593 +21.922522 -43.15324 6.250325 +20.111755 -44.635262 5.906686 +18.183578 -45.804466 4.046351 +18.160484 -45.726326 2.773698 +18.15877 -45.617619 1.609322 +23.595152 -41.343719 0.499084 +21.820026 -42.749359 0.499084 +20.044903 -44.154999 0.499084 +20.627388 -36.417519 0.499084 +19.4021 -37.067974 0.499084 +18.176811 -37.71843 0.499084 +16.420345 -38.584267 4.046351 +16.48974 -38.396584 2.773698 +16.630365 -38.280319 1.609322 +17.281086 -40.166824 0.499084 +17.610649 -41.964764 0.499084 +17.940212 -43.762703 0.499084 +16.086502 -46.698223 0.499084 +13.903227 -47.835804 0.499084 +11.719954 -48.973385 0.499084 +9.585445 -47.149406 0.499084 +9.634214 -44.187843 0.499084 +9.682981 -41.226284 0.499084 +15.146578 -38.342842 0.499084 +13.341635 -38.316803 0.499084 +11.536692 -38.290764 0.499084 +9.731749 -39.241776 0.761985 +9.731749 -40.218826 1.024887 +9.731749 -41.195877 1.287789 +14.832771 -39.526318 4.972273 +13.178738 -40.262207 4.280172 +11.469135 -41.07597 3.306048 +16.153358 -46.654247 4.972273 +14.024495 -47.169521 4.271457 +11.867941 -47.363846 3.271185 +9.536678 -49.489647 0.761985 +9.539726 -48.821964 1.008456 +9.54887 -48.061546 1.222063 +16.02285 -46.008728 12.410254 +13.917734 -46.574539 12.307325 +11.780212 -46.856415 12.249032 +10.546907 -46.772713 4.636111 +10.745777 -46.638172 7.397682 +10.511375 -46.631229 9.980833 +9.731749 -42.172928 4.37448 +9.728701 -42.258129 7.021783 +9.719557 -42.513725 9.316113 +14.96328 -40.426582 12.410254 +13.271238 -41.123291 12.210726 +11.49982 -41.874283 11.862636 +9.477951 -42.188984 16.791954 +9.497305 -42.035381 15.490116 +9.542746 -42.240593 13.755778 +15.155228 -41.404781 17.789026 +13.371552 -41.98262 17.779783 +11.472212 -42.407452 17.75206 +9.452702 -43.52103 18.239407 +9.433764 -44.520065 18.420338 +9.414827 -45.519104 18.239405 +15.830904 -45.030529 17.789024 +13.771484 -45.658096 17.779783 +11.624075 -46.094791 17.75206 +9.389578 -46.851151 16.791956 +9.393327 -47.065529 15.583107 +9.417197 -47.042645 14.127743 +9.560497 -45.942451 12.635855 +9.624928 -44.904499 12.616864 +9.67079 -43.876919 12.139902 +9.682981 -43.536121 1.55069 +9.637262 -44.852943 1.534259 +9.597637 -46.077038 1.484965 +7.138494 -46.601955 13.253485 +4.774451 -46.391724 13.420853 +2.397549 -46.078461 13.19627 +0.681755 -43.26432 12.499964 +0.39959 -44.343052 12.56287 +0.166798 -45.191669 12.499964 +7.452378 -42.953705 12.88152 +5.245193 -42.854195 13.327863 +3.071927 -42.634712 13.196269 +7.106775 -46.439648 17.604197 +4.777384 -46.296589 17.469244 +2.441002 -45.860233 17.286175 +0.014192 -45.513733 13.910941 +0.01824 -45.507324 15.257507 +0.067782 -45.290676 16.334013 +7.371637 -42.834984 17.604198 +5.226542 -42.813313 17.469242 +3.078062 -42.589897 17.286173 +0.296185 -44.50304 17.255148 +0.525461 -43.717537 17.373901 +0.783881 -42.788677 17.255148 +1.022215 -42.013042 13.910941 +1.024808 -41.9702 15.257507 +1.012285 -42.001034 16.334013 +7.550626 -42.143234 1.635629 +5.369502 -42.113541 1.720568 +3.18838 -42.083847 1.805507 +0.246658 -45.518814 1.804409 +0.47138 -44.424557 1.868936 +0.730675 -43.257545 1.890446 +7.193817 -46.997505 1.458621 +4.820477 -46.832981 1.530865 +2.447136 -46.668457 1.603109 +-0.029923 -47.343529 1.46026 +-0.081782 -48.073982 1.18064 +-0.099068 -48.731682 0.858 +7.127742 -49.921471 0.502776 +4.718805 -49.731979 0.506468 +2.309868 -49.542488 0.51016 +7.550626 -38.235031 0.502776 +5.369503 -38.20533 0.506468 +3.18838 -38.175636 0.51016 +1.007257 -41.077095 1.546297 +1.007257 -40.100044 1.202149 +1.007257 -39.122993 0.858 +0.730676 -40.947708 0.513852 +0.454094 -43.74947 0.513852 +0.177513 -46.551231 0.513852 +-5.813126 1.745232 13.341504 +-8.405972 1.021808 13.592 +-11.038876 -0.090362 13.820797 +-13.18874 -1.837051 18.937777 +-13.273796 -1.421977 17.565777 +-13.387281 -1.453032 15.879881 +-5.633123 0.792992 19.121094 +-8.116933 0.034455 19.697952 +-10.63873 -1.084392 20.023787 +-12.564839 -3.711951 20.557844 +-11.991188 -4.913284 20.760351 +-11.376351 -6.043763 20.557844 +-4.841108 -3.396868 19.121094 +-6.845847 -4.316823 19.69795 +-8.880851 -5.485827 20.023785 +-10.422956 -7.351815 18.937777 +-10.214338 -7.554321 17.565777 +-10.224415 -7.735834 15.879881 +-4.661105 -4.349109 13.341504 +-6.556808 -5.304176 13.592 +-8.480705 -6.479858 13.820797 +-10.383646 -7.963855 12.080339 +-10.387258 -8.039313 10.146873 +-10.318478 -8.151678 8.259861 +-4.541814 -4.497766 6.620028 +-6.381858 -5.548845 6.50579 +-8.281931 -6.834177 6.445528 +-5.813126 1.745233 6.620028 +-8.416614 1.000632 6.50579 +-11.081442 -0.175068 6.445528 +-13.557545 -1.791859 12.08034 +-13.58947 -1.855389 10.146873 +-13.600111 -1.876565 8.259861 +-5.336793 1.986938 0.46696 +-8.385944 1.216183 0.448286 +-11.435095 0.445429 0.429612 +-13.600111 -1.876565 4.831966 +-13.666422 -1.760221 3.303186 +-13.865351 -1.411192 1.845069 +-9.898573 -8.674952 4.831966 +-9.528214 -9.118589 3.303186 +-9.046995 -9.664598 1.845069 +-3.804406 -4.894 0.46696 +-5.321167 -6.716117 0.448286 +-6.837929 -8.538233 0.429612 +-12.951857 -2.834082 0.410938 +-11.419468 -5.342837 0.410938 +-9.887079 -7.851594 0.410938 +-10.494081 -11.788229 0.437648 +-12.563982 -13.084122 0.46269 +-14.4949 -14.116041 0.484392 +-17.661825 -14.86002 0.511103 +-18.731453 -14.411526 0.514442 +-19.329338 -13.377954 0.511103 +-16.118782 -3.57806 0.437648 +-17.586937 -6.670242 0.46269 +-18.722336 -9.441319 0.484392 +-11.938084 -10.084173 6.613948 +-13.601363 -11.815222 6.825066 +-15.139072 -13.313293 7.055028 +-16.312778 -14.633078 2.130093 +-16.402246 -14.521585 3.78284 +-16.479786 -14.424957 5.483068 +-19.358597 -11.730742 2.130093 +-19.358597 -11.730742 3.78284 +-19.358597 -11.730742 5.483068 +-15.765127 -4.198556 6.613948 +-17.498524 -6.825367 6.825066 +-18.722336 -9.44132 7.055028 +-19.358597 -11.730742 9.120922 +-19.278755 -11.580187 11.038683 +-19.03923 -11.128524 12.964188 +-15.552298 -3.775024 14.136004 +-17.127106 -6.094573 14.293572 +-18.130547 -8.296981 14.571754 +-11.977627 -9.501833 14.136003 +-13.436913 -11.075619 14.293572 +-14.696917 -12.32501 14.571754 +-16.575218 -14.306032 9.120922 +-16.516443 -14.165034 11.038683 +-16.292398 -13.801508 12.964188 +-18.313679 -24.324945 14.701206 +-17.531542 -23.859974 14.76323 +-16.454733 -23.886269 14.701206 +-19.541983 -23.916943 5.763151 +-19.582146 -23.915819 4.160645 +-19.5... [truncated message content] |
From: <hik...@us...> - 2008-10-16 00:21:00
|
Revision: 2342 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2342&view=rev Author: hikerstk Date: 2008-10-16 00:20:49 +0000 (Thu, 16 Oct 2008) Log Message: ----------- Improved physics: karts are now less likely to lose contact with the ground (and as a result start rotating on the spot). Modified Paths: -------------- trunk/supertuxkart/data/stk_config.data trunk/supertuxkart/src/bullet/src/BulletDynamics/Vehicle/btRaycastVehicle.h trunk/supertuxkart/src/bullet/src/Makefile.am trunk/supertuxkart/src/bullet/src/btBulletDynamicsCommon.h trunk/supertuxkart/src/ide/vc9/bullet_lib.vcproj trunk/supertuxkart/src/ide/vc9/supertuxkart.vcproj trunk/supertuxkart/src/kart.cpp trunk/supertuxkart/src/kart.hpp trunk/supertuxkart/src/kart_properties.cpp trunk/supertuxkart/src/kart_properties.hpp trunk/supertuxkart/src/modes/three_strikes_battle.hpp trunk/supertuxkart/src/physics.cpp trunk/supertuxkart/src/physics.hpp trunk/supertuxkart/src/race_manager.hpp trunk/supertuxkart/src/stk_config.cpp Added Paths: ----------- trunk/supertuxkart/src/bullet/src/BulletDynamics/Vehicle/btKart.cpp trunk/supertuxkart/src/bullet/src/BulletDynamics/Vehicle/btKart.h Modified: trunk/supertuxkart/data/stk_config.data =================================================================== --- trunk/supertuxkart/data/stk_config.data 2008-10-16 00:12:15 UTC (rev 2341) +++ trunk/supertuxkart/data/stk_config.data 2008-10-16 00:20:49 UTC (rev 2342) @@ -80,7 +80,7 @@ (front-wheel-connection 0.38 0.6 0) (rear-wheel-connection 0.38 -0.6 0) (suspension-rest 0.2 ) - (suspension-travel-cm 500 ) + (suspension-travel-cm 19 ) ;; The z-axis velocity set when a jump is initiated. This will cause the ;; kart to start rising, till it is pulled back by gravity. A higher value @@ -98,6 +98,7 @@ (gear-power-increase 2.2 1.7 1.3) (upright-tolerance 0.2) (upright-max-force 30) + (track-connection-force 2) (camera-max-accel 10) (camera-max-brake 10) (camera-distance 3.5) Added: trunk/supertuxkart/src/bullet/src/BulletDynamics/Vehicle/btKart.cpp =================================================================== --- trunk/supertuxkart/src/bullet/src/BulletDynamics/Vehicle/btKart.cpp (rev 0) +++ trunk/supertuxkart/src/bullet/src/BulletDynamics/Vehicle/btKart.cpp 2008-10-16 00:20:49 UTC (rev 2342) @@ -0,0 +1,473 @@ +/* + * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/ + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies. + * Erwin Coumans makes no representations about the suitability + * of this software for any purpose. + * It is provided "as is" without express or implied warranty. +*/ + +#include "LinearMath/btVector3.h" +#include "btKart.h" + +#include "BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h" +#include "BulletDynamics/ConstraintSolver/btJacobianEntry.h" +#include "LinearMath/btQuaternion.h" +#include "BulletDynamics/Dynamics/btDynamicsWorld.h" +#include "btVehicleRaycaster.h" +#include "btWheelInfo.h" +#include "LinearMath/btMinMax.h" + + +#include "BulletDynamics/ConstraintSolver/btContactConstraint.h" + +struct btWheelContactPoint; +btScalar calcRollingFriction(btWheelContactPoint& contactPoint); + + +static btRigidBody s_fixedObject( 0,0,0); + +btKart::btKart(const btVehicleTuning& tuning,btRigidBody* chassis, btVehicleRaycaster* raycaster ) +: btRaycastVehicle(tuning, chassis, raycaster) +{ +} + +// ---------------------------------------------------------------------------- +btKart::~btKart() +{ +} + +// ---------------------------------------------------------------------------- +btScalar btKart::rayCast(btWheelInfo& wheel) +{ + updateWheelTransformsWS( wheel,false); + + + btScalar depth = -1; + + btScalar raylen = wheel.getSuspensionRestLength()+wheel.m_wheelsRadius; + + btVector3 rayvector = wheel.m_raycastInfo.m_wheelDirectionWS * (raylen); + const btVector3& source = wheel.m_raycastInfo.m_hardPointWS; + wheel.m_raycastInfo.m_contactPointWS = source + rayvector; + const btVector3& target = wheel.m_raycastInfo.m_contactPointWS; + + btScalar param = btScalar(0.); + + btVehicleRaycaster::btVehicleRaycasterResult rayResults; + + assert(m_vehicleRaycaster); + + void* object = m_vehicleRaycaster->castRay(source,target,rayResults); + + wheel.m_raycastInfo.m_groundObject = 0; + + if (object) + { + param = rayResults.m_distFraction; + depth = raylen * rayResults.m_distFraction; + wheel.m_raycastInfo.m_contactNormalWS = rayResults.m_hitNormalInWorld; + wheel.m_raycastInfo.m_isInContact = true; + + wheel.m_raycastInfo.m_groundObject = &s_fixedObject;//todo for driving on dynamic/movable objects!; + //wheel.m_raycastInfo.m_groundObject = object; + + + btScalar hitDistance = param*raylen; + wheel.m_raycastInfo.m_suspensionLength = hitDistance - wheel.m_wheelsRadius; + //clamp on max suspension travel + + btScalar minSuspensionLength = wheel.getSuspensionRestLength() - wheel.m_maxSuspensionTravelCm*btScalar(0.01); + btScalar maxSuspensionLength = wheel.getSuspensionRestLength()+ wheel.m_maxSuspensionTravelCm*btScalar(0.01); + if (wheel.m_raycastInfo.m_suspensionLength < minSuspensionLength) + { + wheel.m_raycastInfo.m_suspensionLength = minSuspensionLength; + } + if (wheel.m_raycastInfo.m_suspensionLength > maxSuspensionLength) + { + wheel.m_raycastInfo.m_suspensionLength = maxSuspensionLength; + } + + wheel.m_raycastInfo.m_contactPointWS = rayResults.m_hitPointInWorld; + + btScalar denominator= wheel.m_raycastInfo.m_contactNormalWS.dot( wheel.m_raycastInfo.m_wheelDirectionWS ); + + btVector3 chassis_velocity_at_contactPoint; + btVector3 relpos = wheel.m_raycastInfo.m_contactPointWS-getRigidBody()->getCenterOfMassPosition(); + + chassis_velocity_at_contactPoint = getRigidBody()->getVelocityInLocalPoint(relpos); + + btScalar projVel = wheel.m_raycastInfo.m_contactNormalWS.dot( chassis_velocity_at_contactPoint ); + + if ( denominator >= btScalar(-0.1)) + { + wheel.m_suspensionRelativeVelocity = btScalar(0.0); + wheel.m_clippedInvContactDotSuspension = btScalar(1.0) / btScalar(0.1); + } + else + { + btScalar inv = btScalar(-1.) / denominator; + wheel.m_suspensionRelativeVelocity = projVel * inv; + wheel.m_clippedInvContactDotSuspension = inv; + } + + } else + { + //put wheel info as in rest position + wheel.m_raycastInfo.m_suspensionLength = wheel.getSuspensionRestLength(); + wheel.m_suspensionRelativeVelocity = btScalar(0.0); + wheel.m_raycastInfo.m_contactNormalWS = - wheel.m_raycastInfo.m_wheelDirectionWS; + wheel.m_clippedInvContactDotSuspension = btScalar(1.0); + } + + return depth; +} + +// ---------------------------------------------------------------------------- +void btKart::updateVehicle( btScalar step ) +{ + { + for (int i=0;i<getNumWheels();i++) + { + updateWheelTransform(i,false); + } + } + + + m_currentVehicleSpeedKmHour = btScalar(3.6) * getRigidBody()->getLinearVelocity().length(); + + const btTransform& chassisTrans = getChassisWorldTransform(); + + btVector3 forwardW ( + chassisTrans.getBasis()[0][m_indexForwardAxis], + chassisTrans.getBasis()[1][m_indexForwardAxis], + chassisTrans.getBasis()[2][m_indexForwardAxis]); + + if (forwardW.dot(getRigidBody()->getLinearVelocity()) < btScalar(0.)) + { + m_currentVehicleSpeedKmHour *= btScalar(-1.); + } + + // + // simulate suspension + // + + int i=0; + for (i=0;i<m_wheelInfo.size();i++) + { + btScalar depth; + depth = rayCast( m_wheelInfo[i]); + } + + updateSuspension(step); + + // A very unphysical thing to handle slopes that are a bit too steep + // or uneven (resulting in only one wheel on the ground) + // If only the front or only the rear wheels are on the ground, add + // a force pulling the axis down (towards the ground). Note that it + // is already guaranteed that either both or no wheels on one axis + // are on the ground, so we have to test only one of the wheels + for(int i=0; i<m_wheelInfo.size(); i++) + { + if(!(m_wheelInfo[i].m_raycastInfo.m_isInContact) ) + { + btScalar mass=1.0f/m_chassisBody->getInvMass(); + m_wheelInfo[i].m_wheelsSuspensionForce = -2.0f*mass; + } + } + + for (i=0;i<m_wheelInfo.size();i++) + { + //apply suspension force + btWheelInfo& wheel = m_wheelInfo[i]; + + btScalar suspensionForce = wheel.m_wheelsSuspensionForce; + + btScalar gMaxSuspensionForce = btScalar(6000.); + if (suspensionForce > gMaxSuspensionForce) + { + suspensionForce = gMaxSuspensionForce; + } + btVector3 impulse = wheel.m_raycastInfo.m_contactNormalWS * suspensionForce * step; + btVector3 relpos = wheel.m_raycastInfo.m_contactPointWS - getRigidBody()->getCenterOfMassPosition(); + + getRigidBody()->applyImpulse(impulse, relpos); + + } + + + + updateFriction( step); + + + for (i=0;i<m_wheelInfo.size();i++) + { + btWheelInfo& wheel = m_wheelInfo[i]; + btVector3 relpos = wheel.m_raycastInfo.m_hardPointWS - getRigidBody()->getCenterOfMassPosition(); + btVector3 vel = getRigidBody()->getVelocityInLocalPoint( relpos ); + + if (wheel.m_raycastInfo.m_isInContact) + { + const btTransform& chassisWorldTransform = getChassisWorldTransform(); + + btVector3 fwd ( + chassisWorldTransform.getBasis()[0][m_indexForwardAxis], + chassisWorldTransform.getBasis()[1][m_indexForwardAxis], + chassisWorldTransform.getBasis()[2][m_indexForwardAxis]); + + btScalar proj = fwd.dot(wheel.m_raycastInfo.m_contactNormalWS); + fwd -= wheel.m_raycastInfo.m_contactNormalWS * proj; + + btScalar proj2 = fwd.dot(vel); + + wheel.m_deltaRotation = (proj2 * step) / (wheel.m_wheelsRadius); + wheel.m_rotation += wheel.m_deltaRotation; + + } else + { + wheel.m_rotation += wheel.m_deltaRotation; + } + + wheel.m_deltaRotation *= btScalar(0.99);//damping of rotation when not in contact + + } + +} + +// ---------------------------------------------------------------------------- +void btKart::updateSuspension(btScalar deltaTime) +{ + (void)deltaTime; + + btScalar chassisMass = btScalar(1.) / m_chassisBody->getInvMass(); + + for (int w_it=0; w_it<getNumWheels(); w_it++) + { + btWheelInfo &wheel_info = m_wheelInfo[w_it]; + + if ( wheel_info.m_raycastInfo.m_isInContact ) + { + btScalar force; + // Spring + { + btScalar susp_length = wheel_info.getSuspensionRestLength(); + btScalar current_length = wheel_info.m_raycastInfo.m_suspensionLength; + + btScalar length_diff = (susp_length - current_length); + + force = wheel_info.m_suspensionStiffness + * length_diff * wheel_info.m_clippedInvContactDotSuspension; + } + + // Damper + { + btScalar projected_rel_vel = wheel_info.m_suspensionRelativeVelocity; + { + btScalar susp_damping; + if ( projected_rel_vel < btScalar(0.0) ) + { + susp_damping = wheel_info.m_wheelsDampingCompression; + } + else + { + susp_damping = wheel_info.m_wheelsDampingRelaxation; + } + force -= susp_damping * projected_rel_vel; + } + } + + // RESULT + wheel_info.m_wheelsSuspensionForce = force * chassisMass; + if (wheel_info.m_wheelsSuspensionForce < btScalar(0.)) + { + wheel_info.m_wheelsSuspensionForce = btScalar(0.); + } + } + else + { + wheel_info.m_wheelsSuspensionForce = btScalar(0.0); + } + } // for w_it<number of wheels + +} + +// ---------------------------------------------------------------------------- +// FIXME: This structure has to be the same as the one declared in btRaycastVehicle. +// Unfortunately bullet (atm) does not declare this struct in the header file. +struct btWheelContactPoint +{ + btRigidBody* m_body0; + btRigidBody* m_body1; + btVector3 m_frictionPositionWorld; + btVector3 m_frictionDirectionWorld; + btScalar m_jacDiagABInv; + btScalar m_maxImpulse; + + + btWheelContactPoint(btRigidBody* body0,btRigidBody* body1,const btVector3& frictionPosWorld,const btVector3& frictionDirectionWorld, btScalar maxImpulse) + :m_body0(body0), + m_body1(body1), + m_frictionPositionWorld(frictionPosWorld), + m_frictionDirectionWorld(frictionDirectionWorld), + m_maxImpulse(maxImpulse) + { + btScalar denom0 = body0->computeImpulseDenominator(frictionPosWorld,frictionDirectionWorld); + btScalar denom1 = body1->computeImpulseDenominator(frictionPosWorld,frictionDirectionWorld); + btScalar relaxation = 1.f; + m_jacDiagABInv = relaxation/(denom0+denom1); + } + + +}; + +// ---------------------------------------------------------------------------- +void btKart::updateFriction(btScalar timeStep) +{ + + //calculate the impulse, so that the wheels don't move sidewards + int numWheel = getNumWheels(); + if (!numWheel) + return; + + m_forwardWS.resize(numWheel); + m_axle.resize(numWheel); + m_forwardImpulse.resize(numWheel); + m_sideImpulse.resize(numWheel); + + int numWheelsOnGround = 0; + + + //collapse all those loops into one! + for (int i=0;i<getNumWheels();i++) + { + btWheelInfo& wheelInfo = m_wheelInfo[i]; + class btRigidBody* groundObject = (class btRigidBody*) wheelInfo.m_raycastInfo.m_groundObject; + if (groundObject) + numWheelsOnGround++; + m_sideImpulse[i] = btScalar(0.); + m_forwardImpulse[i] = btScalar(0.); + + } + + { + + for (int i=0;i<getNumWheels();i++) + { + + btWheelInfo& wheelInfo = m_wheelInfo[i]; + + class btRigidBody* groundObject = (class btRigidBody*) wheelInfo.m_raycastInfo.m_groundObject; + + if (groundObject) + { + + const btTransform& wheelTrans = getWheelTransformWS( i ); + + btMatrix3x3 wheelBasis0 = wheelTrans.getBasis(); + m_axle[i] = btVector3( + wheelBasis0[0][m_indexRightAxis], + wheelBasis0[1][m_indexRightAxis], + wheelBasis0[2][m_indexRightAxis]); + + const btVector3& surfNormalWS = wheelInfo.m_raycastInfo.m_contactNormalWS; + btScalar proj = m_axle[i].dot(surfNormalWS); + m_axle[i] -= surfNormalWS * proj; + m_axle[i] = m_axle[i].normalize(); + + m_forwardWS[i] = surfNormalWS.cross(m_axle[i]); + m_forwardWS[i].normalize(); + + + resolveSingleBilateral(*m_chassisBody, wheelInfo.m_raycastInfo.m_contactPointWS, + *groundObject, wheelInfo.m_raycastInfo.m_contactPointWS, + btScalar(0.), m_axle[i],m_sideImpulse[i],timeStep); + + //m_sideImpulse[i] *= sideFrictionStiffness2; // hiker: sideFrictionStiffness2 is a global(!) variable = 1.0 + + } + + + } + } + + btScalar sideFactor = btScalar(1.); + btScalar fwdFactor = 0.5; + + { + for (int wheel =0;wheel <getNumWheels();wheel++) + { + btWheelInfo& wheelInfo = m_wheelInfo[wheel]; + class btRigidBody* groundObject = (class btRigidBody*) wheelInfo.m_raycastInfo.m_groundObject; + + btScalar rollingFriction = 0.f; + + if (groundObject) + { + if (wheelInfo.m_engineForce != 0.f) + { + rollingFriction = wheelInfo.m_engineForce* timeStep; + } else + { + btScalar defaultRollingFrictionImpulse = 0.f; + btScalar maxImpulse = wheelInfo.m_brake ? wheelInfo.m_brake : defaultRollingFrictionImpulse; + btWheelContactPoint contactPt(m_chassisBody,groundObject,wheelInfo.m_raycastInfo.m_contactPointWS,m_forwardWS[wheel],maxImpulse); + rollingFriction = calcRollingFriction(contactPt); + } + } + + //switch between active rolling (throttle), braking and non-active rolling friction (no throttle/break) + + + + + m_forwardImpulse[wheel] = btScalar(0.); + m_wheelInfo[wheel].m_skidInfo= btScalar(1.); + + if (groundObject) + { + m_forwardImpulse[wheel] = rollingFriction;//wheelInfo.m_engineForce* timeStep; + } + + } + } + + + + + + // apply the impulses + { + for (int wheel = 0;wheel<getNumWheels() ; wheel++) + { + btWheelInfo& wheelInfo = m_wheelInfo[wheel]; + + btVector3 rel_pos = wheelInfo.m_raycastInfo.m_contactPointWS - + m_chassisBody->getCenterOfMassPosition(); + + if (m_forwardImpulse[wheel] != btScalar(0.)) + { + m_chassisBody->applyImpulse(m_forwardWS[wheel]*(m_forwardImpulse[wheel]),rel_pos); + } + if (m_sideImpulse[wheel] != btScalar(0.)) + { + class btRigidBody* groundObject = (class btRigidBody*) m_wheelInfo[wheel].m_raycastInfo.m_groundObject; + + btVector3 rel_pos2 = wheelInfo.m_raycastInfo.m_contactPointWS - + groundObject->getCenterOfMassPosition(); + + + btVector3 sideImp = m_axle[wheel] * m_sideImpulse[wheel]; + + rel_pos[2] *= wheelInfo.m_rollInfluence; + m_chassisBody->applyImpulse(sideImp,rel_pos); + + //apply friction impulse on the ground + groundObject->applyImpulse(-sideImp,rel_pos2); + } + } + } + + +} Added: trunk/supertuxkart/src/bullet/src/BulletDynamics/Vehicle/btKart.h =================================================================== --- trunk/supertuxkart/src/bullet/src/BulletDynamics/Vehicle/btKart.h (rev 0) +++ trunk/supertuxkart/src/bullet/src/BulletDynamics/Vehicle/btKart.h 2008-10-16 00:20:49 UTC (rev 2342) @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/ + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies. + * Erwin Coumans makes no representations about the suitability + * of this software for any purpose. + * It is provided "as is" without express or implied warranty. +*/ +#ifndef BT_KART_H +#define BT_KART_H + +#include "BulletDynamics/Dynamics/btRigidBody.h" +#include "btVehicleRaycaster.h" +#include "LinearMath/btAlignedObjectArray.h" +#include "btRaycastVehicle.h" + +class btDynamicsWorld; +struct btWheelInfo; +/** The btKart is a raycast vehicle, that does not skid. It therefore solves + * the problems with the plain bullet physics that karts would often rotate + * on a spot if one of the wheels loses contact with the ground. + */ +class btKart : public btRaycastVehicle +{ + void defaultInit(const btVehicleTuning& tuning); +public: + btKart(const btVehicleTuning& tuning,btRigidBody* chassis, + btVehicleRaycaster* raycaster ); + virtual ~btKart() ; + btScalar rayCast(btWheelInfo& wheel); + virtual void updateVehicle(btScalar step); + void resetSuspension(); + void setRaycastWheelInfo(int wheelIndex , bool isInContact, + const btVector3& hitPoint, + const btVector3& hitNormal,btScalar depth); + void setPitchControl(btScalar pitch) { m_pitchControl = pitch; } + void updateSuspension(btScalar deltaTime); + virtual void updateFriction(btScalar timeStep); +}; + +#endif //BT_KART_H + Modified: trunk/supertuxkart/src/bullet/src/BulletDynamics/Vehicle/btRaycastVehicle.h =================================================================== --- trunk/supertuxkart/src/bullet/src/BulletDynamics/Vehicle/btRaycastVehicle.h 2008-10-16 00:12:15 UTC (rev 2341) +++ trunk/supertuxkart/src/bullet/src/BulletDynamics/Vehicle/btRaycastVehicle.h 2008-10-16 00:20:49 UTC (rev 2342) @@ -23,7 +23,7 @@ ///rayCast vehicle, very special constraint that turn a rigidbody into a vehicle. class btRaycastVehicle : public btTypedConstraint { - +protected: btAlignedObjectArray<btVector3> m_forwardWS; btAlignedObjectArray<btVector3> m_axle; btAlignedObjectArray<btScalar> m_forwardImpulse; @@ -49,8 +49,10 @@ btScalar m_frictionSlip; }; -private: + // FIXME: can this protected become private again?? +protected: + btScalar m_tau; btScalar m_damping; btVehicleRaycaster* m_vehicleRaycaster; Modified: trunk/supertuxkart/src/bullet/src/Makefile.am =================================================================== --- trunk/supertuxkart/src/bullet/src/Makefile.am 2008-10-16 00:12:15 UTC (rev 2341) +++ trunk/supertuxkart/src/bullet/src/Makefile.am 2008-10-16 00:20:49 UTC (rev 2342) @@ -212,6 +212,8 @@ BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp \ BulletDynamics/Dynamics/btSimpleDynamicsWorld.h \ BulletDynamics/Dynamics/Bullet-C-API.cpp \ + BulletDynamics/Vehicle/btKart.cpp \ + BulletDynamics/Vehicle/btKart.h \ BulletDynamics/Vehicle/btRaycastVehicle.cpp \ BulletDynamics/Vehicle/btRaycastVehicle.h \ BulletDynamics/Vehicle/btVehicleRaycaster.h \ Modified: trunk/supertuxkart/src/bullet/src/btBulletDynamicsCommon.h =================================================================== --- trunk/supertuxkart/src/bullet/src/btBulletDynamicsCommon.h 2008-10-16 00:12:15 UTC (rev 2341) +++ trunk/supertuxkart/src/bullet/src/btBulletDynamicsCommon.h 2008-10-16 00:20:49 UTC (rev 2342) @@ -39,6 +39,7 @@ ///Vehicle simulation, with wheel contact simulated by raycasts #include "BulletDynamics/Vehicle/btRaycastVehicle.h" +#include "BulletDynamics/Vehicle/btKart.h" Modified: trunk/supertuxkart/src/ide/vc9/bullet_lib.vcproj =================================================================== --- trunk/supertuxkart/src/ide/vc9/bullet_lib.vcproj 2008-10-16 00:12:15 UTC (rev 2341) +++ trunk/supertuxkart/src/ide/vc9/bullet_lib.vcproj 2008-10-16 00:20:49 UTC (rev 2342) @@ -520,6 +520,10 @@ Name="Vehicle" > <File + RelativePath="..\..\bullet\src\BulletDynamics\Vehicle\btKart.cpp" + > + </File> + <File RelativePath="..\..\bullet\src\BulletDynamics\Vehicle\btRaycastVehicle.cpp" > </File> @@ -1118,6 +1122,10 @@ Name="Vehicle" > <File + RelativePath="..\..\bullet\src\BulletDynamics\Vehicle\btKart.h" + > + </File> + <File RelativePath="..\..\bullet\src\BulletDynamics\Vehicle\btRaycastVehicle.h" > </File> Modified: trunk/supertuxkart/src/ide/vc9/supertuxkart.vcproj =================================================================== --- trunk/supertuxkart/src/ide/vc9/supertuxkart.vcproj 2008-10-16 00:12:15 UTC (rev 2341) +++ trunk/supertuxkart/src/ide/vc9/supertuxkart.vcproj 2008-10-16 00:20:49 UTC (rev 2342) @@ -1155,6 +1155,10 @@ > </File> <File + RelativePath="..\..\modes\three_strikes_battle.cpp" + > + </File> + <File RelativePath="..\..\modes\world.cpp" > </File> @@ -1753,6 +1757,10 @@ > </File> <File + RelativePath="..\..\modes\three_strikes_battle.hpp" + > + </File> + <File RelativePath="..\..\modes\world.hpp" > </File> Modified: trunk/supertuxkart/src/kart.cpp =================================================================== --- trunk/supertuxkart/src/kart.cpp 2008-10-16 00:12:15 UTC (rev 2341) +++ trunk/supertuxkart/src/kart.cpp 2008-10-16 00:20:49 UTC (rev 2342) @@ -183,9 +183,9 @@ // ------------------------- m_vehicle_raycaster = new btDefaultVehicleRaycaster(RaceManager::getWorld()->getPhysics()->getPhysicsWorld()); - m_tuning = new btRaycastVehicle::btVehicleTuning(); + m_tuning = new btKart::btVehicleTuning(); m_tuning->m_maxSuspensionTravelCm = m_kart_properties->getSuspensionTravelCM(); - m_vehicle = new btRaycastVehicle(*m_tuning, m_body, m_vehicle_raycaster); + m_vehicle = new btKart(*m_tuning, m_body, m_vehicle_raycaster); // never deactivate the vehicle m_body->setActivationState(DISABLE_DEACTIVATION); @@ -468,7 +468,7 @@ btVector3 diff((float)(rand()%16/16), (float)(rand()%16/16), 2.0f); diff.normalize(); diff*=stk_config->m_explosion_impulse/5.0f; - this->m_uprightConstraint->setDisableTime(10.0f); + m_uprightConstraint->setDisableTime(10.0f); getVehicle()->getRigidBody()->applyCentralImpulse(diff); getVehicle()->getRigidBody()->applyTorqueImpulse(btVector3(float(rand()%32*5), float(rand()%32*5), @@ -515,6 +515,13 @@ m_controls.fire = false; } + // Only use the upright constraint if the kart is in the air! + if(isOnGround()) + m_uprightConstraint->setLimit(M_PI); + else + m_uprightConstraint->setLimit(m_kart_properties->getUprightTolerance()); + + m_zipper_time_left = m_zipper_time_left>0.0f ? m_zipper_time_left-dt : 0.0f; //m_wheel_rotation gives the rotation around the X-axis, and since velocity's @@ -609,8 +616,8 @@ herring_manager->hitHerring(this); processSkidMarks(); +} -} //----------------------------------------------------------------------------- // Set zipper time, and apply one time additional speed boost void Kart::handleZipper() Modified: trunk/supertuxkart/src/kart.hpp =================================================================== --- trunk/supertuxkart/src/kart.hpp 2008-10-16 00:12:15 UTC (rev 2341) +++ trunk/supertuxkart/src/kart.hpp 2008-10-16 00:20:49 UTC (rev 2342) @@ -61,11 +61,11 @@ // is disabled to allow the karts to bounce back // physics parameters, storing it saves time - btRaycastVehicle::btVehicleTuning *m_tuning; + btKart::btVehicleTuning *m_tuning; btCompoundShape m_kart_chassis; - btVehicleRaycaster *m_vehicle_raycaster; - btRaycastVehicle *m_vehicle; - btUprightConstraint *m_uprightConstraint; + btVehicleRaycaster *m_vehicle_raycaster; + btKart *m_vehicle; + btUprightConstraint *m_uprightConstraint; private: int m_num_herrings_gobbled; @@ -187,7 +187,7 @@ float getKartLength () const {return m_kart_properties->getKartLength();} float getKartHeight () const {return m_kart_properties->getKartHeight();} float getWheelieAngle () const {return m_wheelie_angle; } - btRaycastVehicle *getVehicle () const {return m_vehicle; } + btKart *getVehicle () const {return m_vehicle; } btUprightConstraint *getUprightConstraint() const {return m_uprightConstraint;} void draw (); bool isInRest () const; Modified: trunk/supertuxkart/src/kart_properties.cpp =================================================================== --- trunk/supertuxkart/src/kart_properties.cpp 2008-10-16 00:12:15 UTC (rev 2341) +++ trunk/supertuxkart/src/kart_properties.cpp 2008-10-16 00:20:49 UTC (rev 2342) @@ -201,6 +201,7 @@ lisp->get("jump-velocity", m_jump_velocity ); lisp->get("upright-tolerance", m_upright_tolerance ); lisp->get("upright-max-force", m_upright_max_force ); + lisp->get("track-connection-force", m_track_connection_accel ); lisp->getVector("groups", m_groups ); if(m_groups.size()==0) m_groups.push_back("standard"); @@ -268,6 +269,7 @@ m_gear_power_increase = stk_config->m_gear_power_increase; m_upright_tolerance = stk_config->getUprightTolerance(); m_upright_max_force = stk_config->getUprightMaxForce(); + m_track_connection_accel = 0.0f; //FIXME m_camera_max_accel = stk_config->getCameraMaxAccel(); m_camera_max_brake = stk_config->getCameraMaxBrake(); m_camera_distance = stk_config->getCameraDistance(); Modified: trunk/supertuxkart/src/kart_properties.hpp =================================================================== --- trunk/supertuxkart/src/kart_properties.hpp 2008-10-16 00:12:15 UTC (rev 2341) +++ trunk/supertuxkart/src/kart_properties.hpp 2008-10-16 00:20:49 UTC (rev 2342) @@ -29,46 +29,61 @@ class Material; class ssgEntity; +/** This class stores the properties of a kart. This includes size, name, + * identifier, physical properties etc. It is atm also the base class for + * STKConfig, which stores the default values for all physics constants. + */ class KartProperties : public NoCopy { private: - Material *m_icon_material; - ssgEntity *m_model; - std::vector<std::string> m_groups; // list of all groups the kart belongs to + Material *m_icon_material; /**< The icon texture to use. */ + ssgEntity *m_model; /**< The 3d model of the kart.*/ + std::vector<std::string> m_groups; /**< List of all groups the kart + belongs to. */ protected: // Display and gui // --------------- - std::string m_name; // The human readable Name of the karts driver - std::string m_ident; // The computer readable-name of the karts driver - std::string m_model_file; // Filename of 3d model that is used for kart - std::string m_icon_file; // Filename of icon that represents the kart in - // the statusbar and the character select screen - std::string m_shadow_file; // Filename of the image file that contains the - // shadow for this kart - Vec3 m_color; // Color the represents the kart in the status - // bar and on the track-view + std::string m_name; /**< The human readable Name of the kart + * driver. */ + std::string m_ident; /**< The computer readable-name of the kart + * driver. */ + std::string m_model_file; /**< Filename of 3d model that is used for + * kart.*/ + std::string m_icon_file; /**< Filename of icon that represents the kart + * in the statusbar and the character select + * screen. */ + std::string m_shadow_file; /**< Filename of the image file that contains + * the shadow for this kart. */ + Vec3 m_color; /**< Color the represents the kart in the status + * bar and on the track-view. */ // Physic properties // ----------------- - float m_kart_width; // width of kart - float m_kart_length; // length of kart - float m_kart_height; // height of kart - float m_mass; // weight of kart - float m_wheel_base; // distance between front and read wheels - float m_engine_power; // maximum force from engine - float m_brake_factor; // braking factor * engine_power = braking force - float m_time_full_steer; // time for player karts to reach full steer angle - float m_wheelie_max_speed_ratio; // percentage of maximum speed for wheelies - float m_wheelie_max_pitch; // maximum pitch for wheelies - float m_wheelie_pitch_rate; // rate/sec with which kart goes up - float m_wheelie_restore_rate; // rate/sec with which kart does down - float m_wheelie_speed_boost; // speed boost while doing a wheelie - float m_wheelie_power_boost; // increase in engine power + float m_kart_width; /**< Width of kart. */ + float m_kart_length; /**< Length of kart. */ + float m_kart_height; /**< Height of kart. */ + float m_mass; /**< Weight of kart. */ + float m_wheel_base; /**< Distance between front and rear + * wheels. */ + float m_engine_power; /**< Maximum force from engine. */ + float m_brake_factor; /**< Braking factor * engine_power = + * braking force. */ + float m_time_full_steer; /**< Time for player karts to reach full + * steer angle. */ + float m_wheelie_max_speed_ratio; /**< Percentage of maximum speed for + * wheelies. */ + float m_wheelie_max_pitch; /**< Maximum pitch for wheelies. */ + float m_wheelie_pitch_rate; /**< Rate/sec with which kart goes up. */ + float m_wheelie_restore_rate; /**< Rate/sec with which kart does down.*/ + float m_wheelie_speed_boost; /**< Speed boost while doing a wheelie. */ + float m_wheelie_power_boost; /**< Increase in engine power. */ - float m_min_speed_turn, m_angle_at_min; // speed dependent steering: max - float m_max_speed_turn, m_angle_at_max; // turn angle at lowest speed etc + float m_min_speed_turn, m_angle_at_min; /**< Speed dependent steering: + * maximum speed to use. */ + float m_max_speed_turn, m_angle_at_max; /**< Turn angle at lowest speed + * etc. */ float m_speed_angle_increase; // bullet physics data @@ -83,10 +98,13 @@ float m_chassis_angular_damping; float m_maximum_speed; float m_max_speed_reverse_ratio; - Vec3 m_gravity_center_shift; // shift of center of gravity - Vec3 m_front_wheel_connection; // connection point relative to center of - Vec3 m_rear_wheel_connection; // gravity for front and rear right wheels - // (X is mirrored for left wheels) + Vec3 m_gravity_center_shift; /**< Shift of center of gravity. */ + Vec3 m_front_wheel_connection; /**< Connection point relative to center of */ + Vec3 m_rear_wheel_connection; /**< Gravity for front and rear right wheels + * (X is mirrored for left wheels). */ + float m_track_connection_accel; /**< Artifical acceleration that pulls a + * kart down onto the track if one axis + * loses contact with the track. */ float m_suspension_rest; float m_suspension_travel_cm; float m_jump_velocity; // z velocity set when jumping @@ -98,18 +116,18 @@ float m_camera_max_accel; // maximum acceleration of camera float m_camera_max_brake; // maximum braking of camera float m_camera_distance; // distance of normal camera from kart - // - // The following two vectors define at what ratio of the maximum speed what - // gear is selected, e.g. 0.25 means: if speed <=0.25*maxSpeed --> gear 1, - // 0.5 means: if speed <=0.5 *maxSpeed --> gear 2 - // The next vector contains the increase in max power (to simulate different - // gears), e.g. 2.5 as first entry means: 2.5*maxPower in gear 1 - std::vector<float> m_gear_switch_ratio; - std::vector<float> m_gear_power_increase; + + /** The following two vectors define at what ratio of the maximum speed what + * gear is selected. E.g. 0.25 means: if speed <=0.25*maxSpeed --> gear 1, + * 0.5 means: if speed <=0.5 *maxSpeed --> gear 2 + * The next vector contains the increase in max power (to simulate different + * gears), e.g. 2.5 as first entry means: 2.5*maxPower in gear 1 */ + std::vector<float> m_gear_switch_ratio, + m_gear_power_increase; public: - KartProperties (); + KartProperties (); virtual ~KartProperties (); virtual void init_defaults (); @@ -163,6 +181,7 @@ float getJumpVelocity () const {return m_jump_velocity; } float getUprightTolerance () const {return m_upright_tolerance; } float getUprightMaxForce () const {return m_upright_max_force; } + float getTrackConnectionForce () const {return m_track_connection_accel; } const std::vector<float>& getGearSwitchRatio () const {return m_gear_switch_ratio; } const std::vector<float>& Modified: trunk/supertuxkart/src/modes/three_strikes_battle.hpp =================================================================== --- trunk/supertuxkart/src/modes/three_strikes_battle.hpp 2008-10-16 00:12:15 UTC (rev 2341) +++ trunk/supertuxkart/src/modes/three_strikes_battle.hpp 2008-10-16 00:20:49 UTC (rev 2342) @@ -23,7 +23,7 @@ #include "modes/world.hpp" #include <string> -class KartIconDisplayInfo; +struct KartIconDisplayInfo; struct BattleInfo { Modified: trunk/supertuxkart/src/physics.cpp =================================================================== --- trunk/supertuxkart/src/physics.cpp 2008-10-16 00:12:15 UTC (rev 2341) +++ trunk/supertuxkart/src/physics.cpp 2008-10-16 00:20:49 UTC (rev 2342) @@ -75,7 +75,7 @@ * \param kart The kart to add. * \param vehicle The raycast vehicle object. */ -void Physics::addKart(const Kart *kart, btRaycastVehicle *vehicle) +void Physics::addKart(const Kart *kart, btKart *vehicle) { m_dynamics_world->addRigidBody(kart->getBody()); m_dynamics_world->addVehicle(vehicle); Modified: trunk/supertuxkart/src/physics.hpp =================================================================== --- trunk/supertuxkart/src/physics.hpp 2008-10-16 00:12:15 UTC (rev 2341) +++ trunk/supertuxkart/src/physics.hpp 2008-10-16 00:20:49 UTC (rev 2342) @@ -95,7 +95,7 @@ Physics (); ~Physics (); void init (const Vec3 &min_world, const Vec3 &max_world); - void addKart (const Kart *k, btRaycastVehicle *v); + void addKart (const Kart *k, btKart *v); void addBody (btRigidBody* b) {m_dynamics_world->addRigidBody(b);} void removeKart (const Kart *k); void removeBody (btRigidBody* b) {m_dynamics_world->removeRigidBody(b);} Modified: trunk/supertuxkart/src/race_manager.hpp =================================================================== --- trunk/supertuxkart/src/race_manager.hpp 2008-10-16 00:12:15 UTC (rev 2341) +++ trunk/supertuxkart/src/race_manager.hpp 2008-10-16 00:20:49 UTC (rev 2342) @@ -248,7 +248,7 @@ if(isBattleMode(type)) return false; const int id = (int)type; const int answer = (id-1000)/100; - return (bool)answer; + return answer!=0; } }; Modified: trunk/supertuxkart/src/stk_config.cpp =================================================================== --- trunk/supertuxkart/src/stk_config.cpp 2008-10-16 00:12:15 UTC (rev 2341) +++ trunk/supertuxkart/src/stk_config.cpp 2008-10-16 00:20:49 UTC (rev 2342) @@ -121,7 +121,7 @@ CHECK_NEG(m_zipper_time, "zipper-time" ); CHECK_NEG(m_zipper_force, "zipper-force" ); CHECK_NEG(m_zipper_speed_gain, "zipper-speed-gain" ); - CHECK_NEG(m_shortcut_length, "shortcut-length" ); + CHECK_NEG(m_shortcut_length, "shortcut-length" ); CHECK_NEG(m_suspension_rest, "suspension-rest" ); CHECK_NEG(m_suspension_travel_cm, "suspension-travel-cm" ); CHECK_NEG(m_jump_velocity, "jump-velocity" ); @@ -129,6 +129,7 @@ CHECK_NEG(m_explosion_impulse_objects, "explosion-impulse-objects" ); CHECK_NEG(m_upright_tolerance, "upright-tolerance" ); CHECK_NEG(m_upright_max_force, "upright-max-force" ); + CHECK_NEG(m_track_connection_accel, "track-connection-force" ); CHECK_NEG(m_camera_max_accel, "camera-max-accel" ); CHECK_NEG(m_camera_max_brake, "camera-max-brake" ); CHECK_NEG(m_camera_distance, "camera-distance" ); @@ -164,7 +165,7 @@ m_maximum_speed = m_suspension_rest = m_max_speed_reverse_ratio = m_explosion_impulse = m_jump_velocity = m_explosion_impulse_objects = m_upright_tolerance = m_upright_max_force = - m_suspension_travel_cm = + m_suspension_travel_cm = m_track_connection_accel = // Camera m_camera_max_accel = m_camera_max_brake = m_camera_distance = UNDEFINED; m_gravity_center_shift = Vec3(UNDEFINED); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2008-10-16 23:49:41
|
Revision: 2345 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2345&view=rev Author: hikerstk Date: 2008-10-16 23:49:27 +0000 (Thu, 16 Oct 2008) Log Message: ----------- 1) Refactored KartProperties and STKConfig, so that kart defaults and checks if all values are actually defined are done in one file now (and not in two different classes as before). Added doxygen comments as well. 2) More physics improvements. Modified Paths: -------------- trunk/supertuxkart/data/stk_config.data trunk/supertuxkart/src/bullet/src/BulletDynamics/Vehicle/btKart.cpp trunk/supertuxkart/src/bullet/src/BulletDynamics/Vehicle/btKart.h trunk/supertuxkart/src/kart.cpp trunk/supertuxkart/src/kart_properties.cpp trunk/supertuxkart/src/kart_properties.hpp trunk/supertuxkart/src/stk_config.cpp trunk/supertuxkart/src/stk_config.hpp Modified: trunk/supertuxkart/data/stk_config.data =================================================================== --- trunk/supertuxkart/data/stk_config.data 2008-10-16 19:53:37 UTC (rev 2344) +++ trunk/supertuxkart/data/stk_config.data 2008-10-16 23:49:27 UTC (rev 2345) @@ -98,7 +98,7 @@ (gear-power-increase 2.2 1.7 1.3) (upright-tolerance 0.2) (upright-max-force 30) - (track-connection-force 2) + (track-connection-accel 2) (camera-max-accel 10) (camera-max-brake 10) (camera-distance 3.5) Modified: trunk/supertuxkart/src/bullet/src/BulletDynamics/Vehicle/btKart.cpp =================================================================== --- trunk/supertuxkart/src/bullet/src/BulletDynamics/Vehicle/btKart.cpp 2008-10-16 19:53:37 UTC (rev 2344) +++ trunk/supertuxkart/src/bullet/src/BulletDynamics/Vehicle/btKart.cpp 2008-10-16 23:49:27 UTC (rev 2345) @@ -29,9 +29,11 @@ static btRigidBody s_fixedObject( 0,0,0); -btKart::btKart(const btVehicleTuning& tuning,btRigidBody* chassis, btVehicleRaycaster* raycaster ) +btKart::btKart(const btVehicleTuning& tuning,btRigidBody* chassis, + btVehicleRaycaster* raycaster, float track_connect_accel ) : btRaycastVehicle(tuning, chassis, raycaster) { + m_track_connect_accel = track_connect_accel; } // ---------------------------------------------------------------------------- @@ -47,14 +49,15 @@ btScalar depth = -1; - btScalar raylen = wheel.getSuspensionRestLength()+wheel.m_wheelsRadius; + btScalar raylen = wheel.getSuspensionRestLength()+wheel.m_wheelsRadius+ + wheel.m_maxSuspensionTravelCm*0.01f; btVector3 rayvector = wheel.m_raycastInfo.m_wheelDirectionWS * (raylen); const btVector3& source = wheel.m_raycastInfo.m_hardPointWS; wheel.m_raycastInfo.m_contactPointWS = source + rayvector; const btVector3& target = wheel.m_raycastInfo.m_contactPointWS; - btScalar param = btScalar(0.); + btScalar param = btScalar(0.); btVehicleRaycaster::btVehicleRaycasterResult rayResults; @@ -120,6 +123,7 @@ wheel.m_suspensionRelativeVelocity = btScalar(0.0); wheel.m_raycastInfo.m_contactNormalWS = - wheel.m_raycastInfo.m_wheelDirectionWS; wheel.m_clippedInvContactDotSuspension = btScalar(1.0); + } return depth; @@ -161,22 +165,25 @@ depth = rayCast( m_wheelInfo[i]); } - updateSuspension(step); - - // A very unphysical thing to handle slopes that are a bit too steep - // or uneven (resulting in only one wheel on the ground) - // If only the front or only the rear wheels are on the ground, add - // a force pulling the axis down (towards the ground). Note that it - // is already guaranteed that either both or no wheels on one axis - // are on the ground, so we have to test only one of the wheels - for(int i=0; i<m_wheelInfo.size(); i++) + // Work around: make sure that either both wheels on one axis + // are on ground, or none of them. This avoids the problem of + // the kart suddenly getting additional angular velocity because + // e.g. only one rear wheel is on the ground. + for(i=0; i<4; i+=2) { - if(!(m_wheelInfo[i].m_raycastInfo.m_isInContact) ) + if(m_wheelInfo[i].m_raycastInfo.m_isInContact && + !(m_wheelInfo[i+1].m_raycastInfo.m_isInContact)) { - btScalar mass=1.0f/m_chassisBody->getInvMass(); - m_wheelInfo[i].m_wheelsSuspensionForce = -2.0f*mass; + m_wheelInfo[i+1].m_raycastInfo = m_wheelInfo[i].m_raycastInfo; } - } + if(!(m_wheelInfo[i].m_raycastInfo.m_isInContact) && + m_wheelInfo[i+1].m_raycastInfo.m_isInContact) + { + m_wheelInfo[i].m_raycastInfo = m_wheelInfo[i+1].m_raycastInfo; + } + } // for i=0; i<4; i+=2 + + updateSuspension(step); for (i=0;i<m_wheelInfo.size();i++) { @@ -287,7 +294,13 @@ } else { - wheel_info.m_wheelsSuspensionForce = btScalar(0.0); + // A very unphysical thing to handle slopes that are a bit too steep + // or uneven (resulting in only one wheel on the ground) + // If only the front or only the rear wheels are on the ground, add + // a force pulling the axis down (towards the ground). Note that it + // is already guaranteed that either both or no wheels on one axis + // are on the ground, so we have to test only one of the wheels + wheel_info.m_wheelsSuspensionForce = -m_track_connect_accel*chassisMass ; } } // for w_it<number of wheels Modified: trunk/supertuxkart/src/bullet/src/BulletDynamics/Vehicle/btKart.h =================================================================== --- trunk/supertuxkart/src/bullet/src/BulletDynamics/Vehicle/btKart.h 2008-10-16 19:53:37 UTC (rev 2344) +++ trunk/supertuxkart/src/bullet/src/BulletDynamics/Vehicle/btKart.h 2008-10-16 23:49:27 UTC (rev 2345) @@ -25,9 +25,10 @@ class btKart : public btRaycastVehicle { void defaultInit(const btVehicleTuning& tuning); + btScalar m_track_connect_accel; public: btKart(const btVehicleTuning& tuning,btRigidBody* chassis, - btVehicleRaycaster* raycaster ); + btVehicleRaycaster* raycaster, float track_connect_accel ); virtual ~btKart() ; btScalar rayCast(btWheelInfo& wheel); virtual void updateVehicle(btScalar step); Modified: trunk/supertuxkart/src/kart.cpp =================================================================== --- trunk/supertuxkart/src/kart.cpp 2008-10-16 19:53:37 UTC (rev 2344) +++ trunk/supertuxkart/src/kart.cpp 2008-10-16 23:49:27 UTC (rev 2345) @@ -185,7 +185,8 @@ new btDefaultVehicleRaycaster(RaceManager::getWorld()->getPhysics()->getPhysicsWorld()); m_tuning = new btKart::btVehicleTuning(); m_tuning->m_maxSuspensionTravelCm = m_kart_properties->getSuspensionTravelCM(); - m_vehicle = new btKart(*m_tuning, m_body, m_vehicle_raycaster); + m_vehicle = new btKart(*m_tuning, m_body, m_vehicle_raycaster, + m_kart_properties->getTrackConnectionAccel()); // never deactivate the vehicle m_body->setActivationState(DISABLE_DEACTIVATION); @@ -616,8 +617,8 @@ herring_manager->hitHerring(this); processSkidMarks(); + } - //----------------------------------------------------------------------------- // Set zipper time, and apply one time additional speed boost void Kart::handleZipper() Modified: trunk/supertuxkart/src/kart_properties.cpp =================================================================== --- trunk/supertuxkart/src/kart_properties.cpp 2008-10-16 19:53:37 UTC (rev 2344) +++ trunk/supertuxkart/src/kart_properties.cpp 2008-10-16 23:49:27 UTC (rev 2345) @@ -37,23 +37,67 @@ # define snprintf _snprintf #endif -// This constructor would be a bit more useful, nicer, if we could call -// init_defaults() and load from here. Unfortunately, this object is used -// as a base class for STKConfig, which has to overwrite -// init_defaults() and getAllData(). But during the call of this constructor, -// the STKConfig object does not (yet) exist, so the overwriting -// functions do NOT get called, only the virtual functions here would be -// called. Therefore, a two step initialisation is necessary: the constructor -// doing not much, but then in load the overwriting functions can be used. +float KartProperties::UNDEFINED = -99.9f; + +/** The constructor initialises all values with invalid values. It can later + * then be checked (for STKConfig) that all values are indeed defined. + * Otherwise the defaults are taken from STKConfig (and since they are all + * defined, it is guaranteed that each kart has well defined physics values. + */ KartProperties::KartProperties() : m_icon_material(0), m_model(0) -{} // KartProperties +{ + m_name = "Tux"; + m_ident = "tux"; + m_model_file = "tuxkart.ac"; + m_icon_file = "tuxicon.png"; + m_shadow_file = "tuxkartshadow.png"; + m_groups.clear(); + + // Set all other values to undefined, so that it can later be tested + // if everything is defined properly. + m_wheel_base = m_mass = m_min_speed_turn = m_angle_at_min = + m_max_speed_turn = m_angle_at_max = m_engine_power = m_brake_factor = + m_time_full_steer = m_wheelie_max_pitch = m_wheelie_max_speed_ratio = + m_wheelie_pitch_rate = m_wheelie_restore_rate = m_wheelie_speed_boost = + m_suspension_stiffness = m_wheel_damping_relaxation = + m_wheel_damping_compression = m_friction_slip = m_roll_influence = + m_wheel_radius = m_wheelie_power_boost = m_chassis_linear_damping = + m_chassis_angular_damping = m_maximum_speed = m_suspension_rest = + m_max_speed_reverse_ratio = m_jump_velocity = m_upright_tolerance = + m_upright_max_force = m_suspension_travel_cm = m_mass = + m_track_connection_accel = m_wheel_base = m_min_speed_turn = + m_angle_at_min = m_max_speed_turn = m_angle_at_max = m_engine_power = + m_brake_factor = m_time_full_steer = m_wheelie_max_pitch = + m_wheelie_max_speed_ratio = m_wheelie_pitch_rate = m_wheel_radius = + m_wheelie_restore_rate = m_wheelie_speed_boost = m_maximum_speed = + m_suspension_stiffness = m_wheel_damping_relaxation = m_jump_velocity = + m_wheel_damping_compression = m_friction_slip = m_roll_influence = + m_wheelie_power_boost = m_chassis_linear_damping = m_suspension_rest = + m_chassis_angular_damping = m_max_speed_reverse_ratio = + m_upright_tolerance = m_upright_max_force = m_suspension_travel_cm = + m_track_connection_accel = m_camera_max_accel = m_camera_max_brake = + m_camera_distance = UNDEFINED; + m_gravity_center_shift = Vec3(UNDEFINED); + m_front_wheel_connection = Vec3(UNDEFINED); + m_rear_wheel_connection = Vec3(UNDEFINED); + m_color.setValue(1.0f, 0.0f, 0.0f); +} // KartProperties + //----------------------------------------------------------------------------- -void KartProperties::load(const std::string filename, const std::string node, - bool dont_load_models, bool dont_load_materials) +/** Loads the kart properties from a file. + * \param filename Filename to load. + * \param node Name of the lisp node to load the data from + * (default: tuxkart-kart) + * \param dont_load_models If set does not load the actual kart models, used + * when only printing kart information to stdout. + */ +void KartProperties::load(const std::string &filename, const std::string &node, + bool dont_load_models) { - init_defaults(); + // Get the default values from STKConfig: + *this = stk_config->getDefaultKartProperties(); const lisp::Lisp* root = 0; m_ident = StringUtils::basename(StringUtils::without_extension(filename)); @@ -81,17 +125,20 @@ } delete root; - if(!dont_load_materials) - { - // Load material - std::string materials_file = file_manager->getKartFile("materials.dat",getIdent()); - file_manager->pushModelSearchPath(file_manager->getKartFile("", getIdent())); - file_manager->pushTextureSearchPath(file_manager->getKartFile("", getIdent())); + // Set a default group (that has to happen after init_default and load) + if(m_groups.size()==0) + m_groups.push_back("standard"); - // addShared makes sure that these textures/material infos stay in memory - material_manager->addSharedMaterial(materials_file); - m_icon_material = material_manager->getMaterial(m_icon_file); - } + + // Load material + std::string materials_file = file_manager->getKartFile("materials.dat",getIdent()); + file_manager->pushModelSearchPath(file_manager->getKartFile("", getIdent())); + file_manager->pushTextureSearchPath(file_manager->getKartFile("", getIdent())); + + // addShared makes sure that these textures/material infos stay in memory + material_manager->addSharedMaterial(materials_file); + m_icon_material = material_manager->getMaterial(m_icon_file); + // Load model, except when called as part of --list-karts if(m_model_file.length()>0 && !dont_load_models) { @@ -116,21 +163,90 @@ m_kart_width, m_kart_length, m_kart_height); m_model->ref(); } // if - if(!dont_load_materials) - { - file_manager->popTextureSearchPath(); - file_manager->popModelSearchPath(); - } + file_manager->popTextureSearchPath(); + file_manager->popModelSearchPath(); + } // load //----------------------------------------------------------------------------- +/** Destructor, dereferences the kart model. */ KartProperties::~KartProperties() { ssgDeRefDelete(m_model); } // ~KartProperties //----------------------------------------------------------------------------- +/** Checks if all necessary physics values are indeed defines. This helps + * finding bugs early, e.g. missing default in stk_config.dat file. + */ +void KartProperties::checkAllSet(const std::string &filename) +{ + if(m_gear_switch_ratio.size()==0) + { + fprintf(stderr,"Missing default value for 'gear-switch-ratio' in '%s'.\n", + filename.c_str()); + exit(-1); + } + if(m_gear_power_increase.size()==0) + { + fprintf(stderr,"Missing default value for 'gear-power-increase' in '%s'.\n", + filename.c_str()); + exit(-1); + } + if(m_gear_switch_ratio.size()!=m_gear_power_increase.size()) { + fprintf(stderr,"Number of entries for 'gear-switch-ratio' and 'gear-power-increase"); + fprintf(stderr,"in '%s' must be equal.\n", filename.c_str()); + exit(-1); + } +#define CHECK_NEG( a,strA) if(a<=UNDEFINED) { \ + fprintf(stderr,"Missing default value for '%s' in '%s'.\n", \ + strA,filename.c_str());exit(-1); \ + } + + CHECK_NEG(m_mass, "mass" ); + CHECK_NEG(m_wheel_base, "wheel-base" ); + CHECK_NEG(m_engine_power, "engine-power" ); + CHECK_NEG(m_min_speed_turn, "min-speed-angle" ); + CHECK_NEG(m_angle_at_min, "min-speed-angle" ); + CHECK_NEG(m_max_speed_turn, "max-speed-angle" ); + CHECK_NEG(m_angle_at_max, "max-speed-angle" ); + CHECK_NEG(m_brake_factor, "brake-factor" ); + CHECK_NEG(m_time_full_steer, "time-full-steer" ); + + CHECK_NEG(m_wheelie_max_speed_ratio, "wheelie-max-speed-ratio" ); + CHECK_NEG(m_wheelie_max_pitch, "wheelie-max-pitch" ); + CHECK_NEG(m_wheelie_pitch_rate, "wheelie-pitch-rate" ); + CHECK_NEG(m_wheelie_restore_rate, "wheelie-restore-rate" ); + CHECK_NEG(m_wheelie_speed_boost, "wheelie-speed-boost" ); + CHECK_NEG(m_wheelie_power_boost, "wheelie-power-boost" ); + //bullet physics data + CHECK_NEG(m_suspension_stiffness, "suspension-stiffness" ); + CHECK_NEG(m_wheel_damping_relaxation, "wheel-damping-relaxation" ); + CHECK_NEG(m_wheel_damping_compression, "wheel-damping-compression" ); + CHECK_NEG(m_friction_slip, "friction-slip" ); + CHECK_NEG(m_roll_influence, "roll-influence" ); + CHECK_NEG(m_wheel_radius, "wheel-radius" ); + CHECK_NEG(m_chassis_linear_damping, "chassis-linear-damping" ); + CHECK_NEG(m_chassis_angular_damping, "chassis-angular-damping" ); + CHECK_NEG(m_maximum_speed, "maximum-speed" ); + CHECK_NEG(m_max_speed_reverse_ratio, "max-speed-reverse-ratio" ); + CHECK_NEG(m_gravity_center_shift[0], "gravity-center-shift" ); + CHECK_NEG(m_gravity_center_shift[1], "gravity-center-shift" ); + CHECK_NEG(m_gravity_center_shift[2], "gravity-center-shift" ); + CHECK_NEG(m_suspension_rest, "suspension-rest" ); + CHECK_NEG(m_suspension_travel_cm, "suspension-travel-cm" ); + CHECK_NEG(m_jump_velocity, "jump-velocity" ); + CHECK_NEG(m_upright_tolerance, "upright-tolerance" ); + CHECK_NEG(m_upright_max_force, "upright-max-force" ); + CHECK_NEG(m_track_connection_accel, "track-connection-accel" ); + CHECK_NEG(m_camera_max_accel, "camera-max-accel" ); + CHECK_NEG(m_camera_max_brake, "camera-max-brake" ); + CHECK_NEG(m_camera_distance, "camera-distance" ); + +} // checkAllSet + +//----------------------------------------------------------------------------- void KartProperties::getAllData(const lisp::Lisp* lisp) { lisp->get("name", m_name); @@ -201,10 +317,8 @@ lisp->get("jump-velocity", m_jump_velocity ); lisp->get("upright-tolerance", m_upright_tolerance ); lisp->get("upright-max-force", m_upright_max_force ); - lisp->get("track-connection-force", m_track_connection_accel ); + lisp->get("track-connection-accel", m_track_connection_accel ); lisp->getVector("groups", m_groups ); - if(m_groups.size()==0) - m_groups.push_back("standard"); // getVector appends to existing vectors, so a new one must be used to load std::vector<float> temp; @@ -221,64 +335,6 @@ } // getAllData -//----------------------------------------------------------------------------- -void KartProperties::init_defaults() -{ - - m_name = "Tux"; - m_ident = "tux"; - m_model_file = "tuxkart.ac"; - m_icon_file = "tuxicon.png"; - m_shadow_file = "tuxkartshadow.png"; - m_groups.clear(); - - m_color.setValue(1.0f, 0.0f, 0.0f); - - m_kart_width = 1.0f; - m_kart_length = 1.5f; - m_wheel_base = stk_config->m_wheel_base; - m_engine_power = stk_config->m_engine_power; - m_time_full_steer = stk_config->m_time_full_steer; - m_brake_factor = stk_config->m_brake_factor; - m_mass = stk_config->m_mass; - m_wheelie_max_speed_ratio = stk_config->m_wheelie_max_speed_ratio; - m_wheelie_max_pitch = stk_config->m_wheelie_max_pitch; - m_wheelie_pitch_rate = stk_config->m_wheelie_pitch_rate; - m_wheelie_restore_rate = stk_config->m_wheelie_restore_rate; - m_wheelie_speed_boost = stk_config->m_wheelie_speed_boost; - m_wheelie_power_boost = stk_config->m_wheelie_power_boost; - - //bullet physics data - m_suspension_stiffness = stk_config->m_suspension_stiffness; - m_wheel_damping_relaxation = stk_config->m_wheel_damping_relaxation; - m_wheel_damping_compression = stk_config->m_wheel_damping_compression; - m_friction_slip = stk_config->m_friction_slip; - m_roll_influence = stk_config->m_roll_influence; - m_wheel_radius = stk_config->m_wheel_radius; - m_chassis_linear_damping = stk_config->m_chassis_linear_damping; - m_chassis_angular_damping = stk_config->m_chassis_angular_damping; - m_maximum_speed = stk_config->m_maximum_speed; - m_max_speed_reverse_ratio = stk_config->m_max_speed_reverse_ratio; - m_gravity_center_shift = stk_config->m_gravity_center_shift; - m_front_wheel_connection = stk_config->m_front_wheel_connection; - m_rear_wheel_connection = stk_config->m_rear_wheel_connection; - m_suspension_rest = stk_config->m_suspension_rest; - m_suspension_travel_cm = stk_config->m_suspension_travel_cm; - m_jump_velocity = stk_config->m_jump_velocity; - m_gear_switch_ratio = stk_config->m_gear_switch_ratio; - m_gear_power_increase = stk_config->m_gear_power_increase; - m_upright_tolerance = stk_config->getUprightTolerance(); - m_upright_max_force = stk_config->getUprightMaxForce(); - m_track_connection_accel = 0.0f; //FIXME - m_camera_max_accel = stk_config->getCameraMaxAccel(); - m_camera_max_brake = stk_config->getCameraMaxBrake(); - m_camera_distance = stk_config->getCameraDistance(); - m_min_speed_turn = stk_config->m_min_speed_turn; - m_angle_at_min = stk_config->m_angle_at_min; - m_max_speed_turn = stk_config->m_max_speed_turn; - m_angle_at_max = stk_config->m_angle_at_max; -} // init_defaults - // ---------------------------------------------------------------------------- float KartProperties::getMaxSteerAngle(float speed) const { Modified: trunk/supertuxkart/src/kart_properties.hpp =================================================================== --- trunk/supertuxkart/src/kart_properties.hpp 2008-10-16 19:53:37 UTC (rev 2344) +++ trunk/supertuxkart/src/kart_properties.hpp 2008-10-16 23:49:27 UTC (rev 2345) @@ -33,7 +33,7 @@ * identifier, physical properties etc. It is atm also the base class for * STKConfig, which stores the default values for all physics constants. */ -class KartProperties : public NoCopy +class KartProperties { private: @@ -41,6 +41,7 @@ ssgEntity *m_model; /**< The 3d model of the kart.*/ std::vector<std::string> m_groups; /**< List of all groups the kart belongs to. */ + static float UNDEFINED; protected: // Display and gui @@ -127,17 +128,15 @@ public: - KartProperties (); - virtual ~KartProperties (); + KartProperties (); + ~KartProperties (); + void getAllData (const lisp::Lisp* lisp); + void load (const std::string &filename, + const std::string &node="tuxkart-kart", + bool dont_load_models=false); + void checkAllSet(const std::string &filename); - virtual void init_defaults (); - virtual void getAllData (const lisp::Lisp* lisp); - virtual void load (const std::string filename, - const std::string node="tuxkart-kart", - bool dont_load_models=false, - bool dont_load_materials=false); float getMaxSteerAngle (float speed) const; - Material* getIconMaterial () const {return m_icon_material; } ssgEntity* getModel () const {return m_model; } const std::string& getName () const {return m_name; } @@ -181,7 +180,7 @@ float getJumpVelocity () const {return m_jump_velocity; } float getUprightTolerance () const {return m_upright_tolerance; } float getUprightMaxForce () const {return m_upright_max_force; } - float getTrackConnectionForce () const {return m_track_connection_accel; } + float getTrackConnectionAccel () const {return m_track_connection_accel; } const std::vector<float>& getGearSwitchRatio () const {return m_gear_switch_ratio; } const std::vector<float>& Modified: trunk/supertuxkart/src/stk_config.cpp =================================================================== --- trunk/supertuxkart/src/stk_config.cpp 2008-10-16 19:53:37 UTC (rev 2344) +++ trunk/supertuxkart/src/stk_config.cpp 2008-10-16 23:49:27 UTC (rev 2345) @@ -18,22 +18,51 @@ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "stk_config.hpp" +#if defined(WIN32) && !defined(__CYGWIN__) +# define snprintf _snprintf +#endif + #include "file_manager.hpp" +#include "lisp/parser.hpp" +#include "translation.hpp" #include "audio/music_information.hpp" STKConfig* stk_config=0; float STKConfig::UNDEFINED = -99.9f; //----------------------------------------------------------------------------- -void STKConfig::load(const std::string filename) +/** Loads the stk configuration file. After loading it checks if all necessary + * values are actually defined, otherwise an error message is printed and STK + * is aborted. + * /param filename Name of the configuration file to load. + */ +void STKConfig::load(const std::string &filename) { + const lisp::Lisp* root = 0; + + try + { + lisp::Parser parser; + root = parser.parse(filename); + + const lisp::Lisp* const LISP = root->getLisp("config"); + if(!LISP) + { + char msg[MAX_ERROR_MESSAGE_LENGTH]; + snprintf(msg, sizeof(msg), "No 'config' node found."); + throw std::runtime_error(msg); + } + getAllData(LISP); + } + catch(std::exception& err) + { + fprintf(stderr, "Error while parsing KartProperties '%s':\n", + filename.c_str()); + fprintf(stderr, err.what()); + fprintf(stderr, "\n"); + } + delete root; - // Use the kart properties loader to read in the default kart - // values, but don't try to load any models or materials */ - KartProperties::load(filename, "config", - /*dont_load_models */ true, - /*dont_load_materials*/ true ); - // Check that all necessary values are indeed set // ----------------------------------------------- @@ -41,23 +70,6 @@ fprintf(stderr,"Missing default value for '%s' in '%s'.\n", \ strA,filename.c_str());exit(-1); \ } - if(m_gear_switch_ratio.size()==0) - { - fprintf(stderr,"Missing default value for 'gear-switch-ratio' in '%s'.\n", - filename.c_str()); - exit(-1); - } - if(m_gear_power_increase.size()==0) - { - fprintf(stderr,"Missing default value for 'gear-power-increase' in '%s'.\n", - filename.c_str()); - exit(-1); - } - if(m_gear_switch_ratio.size()!=m_gear_power_increase.size()) { - fprintf(stderr,"Number of entries for 'gear-switch-ratio' and 'gear-power-increase"); - fprintf(stderr,"in '%s' must be equal.\n", filename.c_str()); - exit(-1); - } if(m_scores.size()==0 || (int)m_scores.size()!=m_max_karts) { @@ -74,46 +86,12 @@ fprintf(stderr,"No menu background defined in stk_config"); exit(-1); } - CHECK_NEG(m_max_karts, "max-karts" ); - CHECK_NEG(m_grid_order, "grid-order" ); - - CHECK_NEG(m_mass, "mass" ); - CHECK_NEG(m_wheel_base, "wheel-base" ); - CHECK_NEG(m_engine_power, "engine-power" ); - CHECK_NEG(m_min_speed_turn, "min-speed-angle" ); - CHECK_NEG(m_angle_at_min, "min-speed-angle" ); - CHECK_NEG(m_max_speed_turn, "max-speed-angle" ); - CHECK_NEG(m_angle_at_max, "max-speed-angle" ); - CHECK_NEG(m_brake_factor, "brake-factor" ); - - CHECK_NEG(m_wheelie_max_speed_ratio, "wheelie-max-speed-ratio" ); - CHECK_NEG(m_wheelie_max_pitch, "wheelie-max-pitch" ); - CHECK_NEG(m_wheelie_pitch_rate, "wheelie-pitch-rate" ); - CHECK_NEG(m_wheelie_restore_rate, "wheelie-restore-rate" ); - CHECK_NEG(m_wheelie_speed_boost, "wheelie-speed-boost" ); - CHECK_NEG(m_wheelie_power_boost, "wheelie-power-boost" ); - + CHECK_NEG(m_max_karts, "max-karts" ); + CHECK_NEG(m_grid_order, "grid-order" ); CHECK_NEG(m_parachute_friction, "parachute-friction" ); CHECK_NEG(m_parachute_done_fraction, "parachute-done-fraction" ); CHECK_NEG(m_parachute_time, "parachute-time" ); CHECK_NEG(m_parachute_time_other, "parachute-time-other" ); - - CHECK_NEG(m_time_full_steer, "time-full-steer" ); - - //bullet physics data - CHECK_NEG(m_suspension_stiffness, "suspension-stiffness" ); - CHECK_NEG(m_wheel_damping_relaxation, "wheel-damping-relaxation" ); - CHECK_NEG(m_wheel_damping_compression, "wheel-damping-compression" ); - CHECK_NEG(m_friction_slip, "friction-slip" ); - CHECK_NEG(m_roll_influence, "roll-influence" ); - CHECK_NEG(m_wheel_radius, "wheel-radius" ); - CHECK_NEG(m_chassis_linear_damping, "chassis-linear-damping" ); - CHECK_NEG(m_chassis_angular_damping, "chassis-angular-damping" ); - CHECK_NEG(m_maximum_speed, "maximum-speed" ); - CHECK_NEG(m_max_speed_reverse_ratio, "max-speed-reverse-ratio" ); - CHECK_NEG(m_gravity_center_shift[0], "gravity-center-shift" ); - CHECK_NEG(m_gravity_center_shift[1], "gravity-center-shift" ); - CHECK_NEG(m_gravity_center_shift[2], "gravity-center-shift" ); CHECK_NEG(m_bomb_time, "bomb-time" ); CHECK_NEG(m_bomb_time_increase, "bomb-time-increase" ); CHECK_NEG(m_anvil_time, "anvil-time" ); @@ -122,21 +100,12 @@ CHECK_NEG(m_zipper_force, "zipper-force" ); CHECK_NEG(m_zipper_speed_gain, "zipper-speed-gain" ); CHECK_NEG(m_shortcut_length, "shortcut-length" ); - CHECK_NEG(m_suspension_rest, "suspension-rest" ); - CHECK_NEG(m_suspension_travel_cm, "suspension-travel-cm" ); - CHECK_NEG(m_jump_velocity, "jump-velocity" ); CHECK_NEG(m_explosion_impulse, "explosion-impulse" ); CHECK_NEG(m_explosion_impulse_objects, "explosion-impulse-objects" ); - CHECK_NEG(m_upright_tolerance, "upright-tolerance" ); - CHECK_NEG(m_upright_max_force, "upright-max-force" ); - CHECK_NEG(m_track_connection_accel, "track-connection-force" ); - CHECK_NEG(m_camera_max_accel, "camera-max-accel" ); - CHECK_NEG(m_camera_max_brake, "camera-max-brake" ); - CHECK_NEG(m_camera_distance, "camera-distance" ); CHECK_NEG(m_max_history, "max-history" ); CHECK_NEG(m_delay_finish_time, "delay-finish-time" ); CHECK_NEG(m_music_credit_time, "music-credit-time" ); - + m_kart_properties.checkAllSet(filename); } // load // ----------------------------------------------------------------------------- @@ -146,40 +115,28 @@ */ void STKConfig::init_defaults() { - m_wheel_base = m_mass = - m_min_speed_turn = m_angle_at_min = m_max_speed_turn = m_angle_at_max = - m_anvil_weight = m_parachute_friction = - m_parachute_time = m_parachute_done_fraction = m_parachute_time_other = - m_engine_power = m_brake_factor = - m_anvil_speed_factor = m_time_full_steer = m_wheelie_max_pitch = - m_wheelie_max_speed_ratio = m_wheelie_pitch_rate = - m_wheelie_restore_rate = m_wheelie_speed_boost = - m_bomb_time = m_bomb_time_increase= m_anvil_time = - m_zipper_time = m_zipper_force = m_zipper_speed_gain = - m_shortcut_length = m_music_credit_time = m_delay_finish_time = - //bullet physics data - m_suspension_stiffness = m_wheel_damping_relaxation = - m_wheel_damping_compression = m_friction_slip = m_roll_influence = - m_wheel_radius = m_wheelie_power_boost = - m_chassis_linear_damping = m_chassis_angular_damping = - m_maximum_speed = m_suspension_rest = - m_max_speed_reverse_ratio = m_explosion_impulse = m_jump_velocity = - m_explosion_impulse_objects = m_upright_tolerance = m_upright_max_force = - m_suspension_travel_cm = m_track_connection_accel = - // Camera - m_camera_max_accel = m_camera_max_brake = m_camera_distance = UNDEFINED; - m_gravity_center_shift = Vec3(UNDEFINED); - m_front_wheel_connection = Vec3(UNDEFINED); - m_rear_wheel_connection = Vec3(UNDEFINED); - m_max_karts = -100; - m_grid_order = -100; - m_max_history = -100; - m_title_music = NULL; + m_anvil_weight = m_parachute_friction = + m_parachute_time = m_parachute_done_fraction = + m_parachute_time_other = m_anvil_speed_factor = + m_bomb_time = m_bomb_time_increase = + m_anvil_time = m_zipper_time = + m_zipper_force = m_zipper_speed_gain = + m_explosion_impulse = m_explosion_impulse_objects = + m_shortcut_length = m_music_credit_time = + m_delay_finish_time = + UNDEFINED; + m_max_karts = -100; + m_grid_order = -100; + m_max_history = -100; + m_title_music = NULL; m_scores.clear(); m_leader_intervals.clear(); } // init_defaults //----------------------------------------------------------------------------- +/** Extracts the actual information from a lisp file. + * \param lisp Pointer to the lisp data structure. + */ void STKConfig::getAllData(const lisp::Lisp* lisp) { @@ -214,5 +171,6 @@ // Get the default KartProperties // ------------------------------ - KartProperties::getAllData(lisp->getLisp("kart-defaults")); + m_kart_properties.getAllData(lisp->getLisp("kart-defaults")); + } // getAllData Modified: trunk/supertuxkart/src/stk_config.hpp =================================================================== --- trunk/supertuxkart/src/stk_config.hpp 2008-10-16 19:53:37 UTC (rev 2344) +++ trunk/supertuxkart/src/stk_config.hpp 2008-10-16 23:49:27 UTC (rev 2345) @@ -30,8 +30,10 @@ * includes the list of default kart physics parameters which are used for * each kart (but which can be overwritten for each kart, too). */ -class STKConfig : public KartProperties +class STKConfig { +protected: + KartProperties m_kart_properties; /**< Default kart properties. */ public: static float UNDEFINED; float m_anvil_weight; /**<Additional kart weight if anvil is @@ -69,16 +71,22 @@ std::vector<float> m_leader_intervals; /**<Interval in follow the leader till last kart is reomved. */ - std::vector<int> m_scores; /**<Scores depending on position. */ + std::vector<int> + m_scores; /**<Scores depending on position. */ - MusicInformation* m_title_music; /**<Filename of the title music to play.*/ - std::string m_menu_background; /**<Picture used as menu background. */ + MusicInformation + *m_title_music; /**<Filename of the title music to play.*/ + std::string + m_menu_background; /**<Picture used as menu background. */ /** Empty constructor. The actual work is done in load. */ - STKConfig() : KartProperties() {}; + STKConfig() {}; void init_defaults (); void getAllData (const lisp::Lisp* lisp); - void load (const std::string filename); + void load (const std::string &filename); + /** Returns the default kart properties for each kart. */ + const KartProperties & + getDefaultKartProperties() const {return m_kart_properties; } } ; // STKConfig This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <au...@us...> - 2008-10-27 02:22:07
|
Revision: 2383 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2383&view=rev Author: auria Date: 2008-10-27 01:38:10 +0000 (Mon, 27 Oct 2008) Log Message: ----------- improved kart engine sound Modified Paths: -------------- trunk/supertuxkart/data/sfx/engine.wav trunk/supertuxkart/src/kart.cpp Added Paths: ----------- trunk/supertuxkart/data/sfx/license.txt Modified: trunk/supertuxkart/data/sfx/engine.wav =================================================================== (Binary files differ) Added: trunk/supertuxkart/data/sfx/license.txt =================================================================== --- trunk/supertuxkart/data/sfx/license.txt (rev 0) +++ trunk/supertuxkart/data/sfx/license.txt 2008-10-27 01:38:10 UTC (rev 2383) @@ -0,0 +1,3 @@ +All sounds are released under GPL, except : + +* engine.wav, which comes from the TORCS project and is released under the Free Art License \ No newline at end of file Modified: trunk/supertuxkart/src/kart.cpp =================================================================== --- trunk/supertuxkart/src/kart.cpp 2008-10-27 00:40:54 UTC (rev 2382) +++ trunk/supertuxkart/src/kart.cpp 2008-10-27 01:38:10 UTC (rev 2383) @@ -259,7 +259,7 @@ //create the engine sound if(m_engine_sound) { - m_engine_sound->speed(0.5f); + m_engine_sound->speed(0.6f); m_engine_sound->loop(); m_engine_sound->play(); } @@ -831,21 +831,10 @@ if(fabsf(m_speed) < 0.2f) // quick'n'dirty workaround for bug 1776883 m_speed = 0; - //Change the engine sound based on kart RPM. - //The equation here is: - // speed * gear_ratio - // RPM = -------------------- - // tire_diameter - //the magic number 1.7 is used to bring the computed gear ratio into a sensible range - float gear_ratio = 1.7f + (1 - m_current_gear_ratio); - float tire_diameter = m_kart_properties->getWheelRadius(); - - m_max_gear_rpm = m_current_gear_ratio * max_speed; - // 8 is magic number again. - m_rpm = ((m_speed * gear_ratio) / (8*tire_diameter)); + // when going faster, use higher pitch for engine if(m_engine_sound && sfx_manager->sfxAllowed()) { - m_engine_sound->speed((float)((m_rpm * 2) / m_max_gear_rpm)); + m_engine_sound->speed(0.6 + (float)(m_speed / max_speed)*0.7f); m_engine_sound->position(getXYZ()); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <au...@us...> - 2008-10-29 00:42:16
|
Revision: 2388 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2388&view=rev Author: auria Date: 2008-10-29 00:42:09 +0000 (Wed, 29 Oct 2008) Log Message: ----------- renamed 'homing' to 'cake' Modified Paths: -------------- trunk/supertuxkart/src/Makefile.am trunk/supertuxkart/src/gui/help_page_two.cpp trunk/supertuxkart/src/gui/race_gui.cpp trunk/supertuxkart/src/ide/Xcode/STK_XCode.xcodeproj/project.pbxproj trunk/supertuxkart/src/items/collectable.cpp trunk/supertuxkart/src/items/collectable_manager.cpp trunk/supertuxkart/src/items/collectable_manager.hpp trunk/supertuxkart/src/items/projectile_manager.cpp trunk/supertuxkart/src/robots/default_robot.cpp Added Paths: ----------- trunk/supertuxkart/data/cake.projectile trunk/supertuxkart/src/items/cake.cpp trunk/supertuxkart/src/items/cake.hpp Removed Paths: ------------- trunk/supertuxkart/data/homingmissile.projectile trunk/supertuxkart/src/items/homing.cpp trunk/supertuxkart/src/items/homing.hpp Copied: trunk/supertuxkart/data/cake.projectile (from rev 2385, trunk/supertuxkart/data/homingmissile.projectile) =================================================================== --- trunk/supertuxkart/data/cake.projectile (rev 0) +++ trunk/supertuxkart/data/cake.projectile 2008-10-29 00:42:09 UTC (rev 2388) @@ -0,0 +1,15 @@ +;; -*- mode: lisp -*- + +(tuxkart-collectable + (name "homing") + (model "homingmissile.ac") + (icon "homingmissile.rgb") + (speed 50.0) + (min-height 0.2) + (max-height 1.0) + (force-updown 25.0) ;; force raising/lowering the homing missile if it's too low/high + (max-distance 90.0) ;; maximum distance at which a kart is still followed + (max-turn-angle 65.0) ;; maximum turn angle when following a kart +) + +;; EOF ;; Deleted: trunk/supertuxkart/data/homingmissile.projectile =================================================================== --- trunk/supertuxkart/data/homingmissile.projectile 2008-10-28 23:44:26 UTC (rev 2387) +++ trunk/supertuxkart/data/homingmissile.projectile 2008-10-29 00:42:09 UTC (rev 2388) @@ -1,15 +0,0 @@ -;; -*- mode: lisp -*- - -(tuxkart-collectable - (name "homing") - (model "homingmissile.ac") - (icon "homingmissile.rgb") - (speed 50.0) - (min-height 0.2) - (max-height 1.0) - (force-updown 25.0) ;; force raising/lowering the homing missile if it's too low/high - (max-distance 90.0) ;; maximum distance at which a kart is still followed - (max-turn-angle 65.0) ;; maximum turn angle when following a kart -) - -;; EOF ;; Modified: trunk/supertuxkart/src/Makefile.am =================================================================== --- trunk/supertuxkart/src/Makefile.am 2008-10-28 23:44:26 UTC (rev 2387) +++ trunk/supertuxkart/src/Makefile.am 2008-10-29 00:42:09 UTC (rev 2388) @@ -49,25 +49,25 @@ audio/music_information.cpp audio/music_information.hpp \ audio/music_ogg.cpp audio/music_ogg.hpp \ audio/sfx_base.hpp \ - audio/sfx_manager.cpp audio/sfx_manager.hpp \ - audio/sfx_openal.cpp audio/sfx_openal.hpp \ - audio/sound_manager.cpp audio/sound_manager.hpp \ - utils/random_generator.hpp utils/random_generator.cpp \ - utils/ssg_help.cpp utils/ssg_help.hpp \ - material_manager.cpp material_manager.hpp \ - grand_prix_manager.cpp grand_prix_manager.hpp \ - items/attachment.cpp items/attachment.hpp \ - items/attachment_manager.cpp items/attachment_manager.hpp \ - items/collectable.cpp items/collectable.hpp \ - items/collectable_manager.cpp items/collectable_manager.hpp \ - items/herring.cpp items/herring.hpp \ - items/herring_manager.cpp items/herring_manager.hpp \ - items/projectile_manager.cpp items/projectile_manager.hpp \ - items/missile.cpp items/missile.hpp \ - items/homing.cpp items/homing.hpp \ - items/bowling.cpp items/bowling.hpp \ - smoke.cpp smoke.hpp \ - input.hpp kart_control.hpp \ + audio/sfx_manager.cpp audio/sfx_manager.hpp \ + audio/sfx_openal.cpp audio/sfx_openal.hpp \ + audio/sound_manager.cpp audio/sound_manager.hpp \ + utils/random_generator.hpp utils/random_generator.cpp \ + utils/ssg_help.cpp utils/ssg_help.hpp \ + material_manager.cpp material_manager.hpp \ + grand_prix_manager.cpp grand_prix_manager.hpp \ + items/attachment.cpp items/attachment.hpp \ + items/attachment_manager.cpp items/attachment_manager.hpp \ + items/collectable.cpp items/collectable.hpp \ + items/collectable_manager.cpp items/collectable_manager.hpp \ + items/herring.cpp items/herring.hpp \ + items/herring_manager.cpp items/herring_manager.hpp \ + items/projectile_manager.cpp items/projectile_manager.hpp \ + items/missile.cpp items/missile.hpp \ + items/cake.cpp items/cake.hpp \ + items/bowling.cpp items/bowling.hpp \ + smoke.cpp smoke.hpp \ + input.hpp kart_control.hpp \ isect.cpp isect.hpp \ track.cpp track.hpp \ explosion.cpp explosion.hpp \ @@ -75,37 +75,37 @@ grand_prix_data.cpp grand_prix_data.hpp \ kart_properties_manager.cpp kart_properties_manager.hpp \ kart_properties.cpp kart_properties.hpp \ - stk_config.cpp stk_config.hpp \ - highscores.cpp highscores.hpp \ - highscore_manager.cpp highscore_manager.hpp \ - unlock_manager.cpp unlock_manager.hpp \ + stk_config.cpp stk_config.hpp \ + highscores.cpp highscores.hpp \ + highscore_manager.cpp highscore_manager.hpp \ + unlock_manager.cpp unlock_manager.hpp \ file_manager.cpp file_manager.hpp \ - loader.cpp loader.hpp \ + loader.cpp loader.hpp \ race_manager.cpp race_manager.hpp \ string_utils.cpp string_utils.hpp \ track_manager.cpp track_manager.hpp \ - callback.hpp \ - moving_physics.hpp moving_physics.cpp \ - moving_texture.hpp moving_texture.cpp \ + callback.hpp \ + moving_physics.hpp moving_physics.cpp \ + moving_texture.hpp moving_texture.cpp \ callback_manager.cpp callback_manager.hpp \ physics.cpp physics.hpp \ - skid_mark.cpp skid_mark.hpp \ - shadow.cpp shadow.hpp \ + skid_mark.cpp skid_mark.hpp \ + shadow.cpp shadow.hpp \ particle_system.cpp particle_system.hpp \ - main_loop.cpp main_loop.hpp \ - camera.cpp camera.hpp \ - sdldrv.cpp sdldrv.hpp \ + main_loop.cpp main_loop.hpp \ + camera.cpp camera.hpp \ + sdldrv.cpp sdldrv.hpp \ moveable.cpp moveable.hpp \ - kart.cpp kart.hpp \ + kart.cpp kart.hpp \ user_pointer.hpp auto_kart.hpp \ - player_kart.cpp player_kart.hpp \ - terrain_info.cpp terrain_info.hpp \ - triangle_mesh.cpp triangle_mesh.hpp \ - flyable.cpp flyable.hpp \ - history.cpp history.hpp \ - scene.hpp scene.cpp \ - no_copy.hpp constants.hpp \ - translation.cpp translation.hpp \ + player_kart.cpp player_kart.hpp \ + terrain_info.cpp terrain_info.hpp \ + triangle_mesh.cpp triangle_mesh.hpp \ + flyable.cpp flyable.hpp \ + history.cpp history.hpp \ + scene.hpp scene.cpp \ + no_copy.hpp constants.hpp \ + translation.cpp translation.hpp \ player.hpp \ challenges/challenge.hpp challenges/challenge.cpp \ challenges/challenge_data.hpp challenges/challenge_data.cpp \ Modified: trunk/supertuxkart/src/gui/help_page_two.cpp =================================================================== --- trunk/supertuxkart/src/gui/help_page_two.cpp 2008-10-28 23:44:26 UTC (rev 2387) +++ trunk/supertuxkart/src/gui/help_page_two.cpp 2008-10-29 00:42:09 UTC (rev 2388) @@ -70,7 +70,7 @@ widget_manager->breakLine(); widget_manager->addImgWgt(WTOK_IMG2, 10, 12, - collectable_manager->getIcon(COLLECT_HOMING)->getState()->getTextureHandle()); + collectable_manager->getIcon(COLLECT_CAKE)->getState()->getTextureHandle()); widget_manager->addTextWgt(WTOK_TXT2, 90, 12, _("Cake - thrown at the closest rival,\nbest on short ranges and long straights")); Modified: trunk/supertuxkart/src/gui/race_gui.cpp =================================================================== --- trunk/supertuxkart/src/gui/race_gui.cpp 2008-10-28 23:44:26 UTC (rev 2387) +++ trunk/supertuxkart/src/gui/race_gui.cpp 2008-10-29 00:42:09 UTC (rev 2388) @@ -185,7 +185,7 @@ if (race_manager->getNumPlayers() ==1 ) { Kart* kart = RaceManager::getPlayerKart(0); - kart->setCollectable(COLLECT_HOMING, 10000); + kart->setCollectable(COLLECT_CAKE, 10000); } break; case GA_DEBUG_TOGGLE_FPS: Modified: trunk/supertuxkart/src/ide/Xcode/STK_XCode.xcodeproj/project.pbxproj =================================================================== --- trunk/supertuxkart/src/ide/Xcode/STK_XCode.xcodeproj/project.pbxproj 2008-10-28 23:44:26 UTC (rev 2387) +++ trunk/supertuxkart/src/ide/Xcode/STK_XCode.xcodeproj/project.pbxproj 2008-10-29 00:42:09 UTC (rev 2388) @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 9518C11D0EB7AF7A00952372 /* cake.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9518C11B0EB7AF7A00952372 /* cake.cpp */; }; + 9518C11E0EB7AF7A00952372 /* cake.hpp in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9518C11C0EB7AF7A00952372 /* cake.hpp */; }; 95B0CF470EB69DDA001A0D06 /* actionmap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 95B0C9E90EB69DCE001A0D06 /* actionmap.cpp */; }; 95B0CF480EB69DDA001A0D06 /* actionmap.hpp in CopyFiles */ = {isa = PBXBuildFile; fileRef = 95B0C9EA0EB69DCE001A0D06 /* actionmap.hpp */; }; 95B0CF490EB69DDA001A0D06 /* music.hpp in CopyFiles */ = {isa = PBXBuildFile; fileRef = 95B0C9EC0EB69DCE001A0D06 /* music.hpp */; }; @@ -391,8 +393,6 @@ 95B0D3630EB69DDF001A0D06 /* herring.hpp in CopyFiles */ = {isa = PBXBuildFile; fileRef = 95B0CE320EB69DD9001A0D06 /* herring.hpp */; }; 95B0D3640EB69DDF001A0D06 /* herring_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 95B0CE330EB69DD9001A0D06 /* herring_manager.cpp */; }; 95B0D3650EB69DDF001A0D06 /* herring_manager.hpp in CopyFiles */ = {isa = PBXBuildFile; fileRef = 95B0CE340EB69DD9001A0D06 /* herring_manager.hpp */; }; - 95B0D3660EB69DDF001A0D06 /* homing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 95B0CE350EB69DD9001A0D06 /* homing.cpp */; }; - 95B0D3670EB69DDF001A0D06 /* homing.hpp in CopyFiles */ = {isa = PBXBuildFile; fileRef = 95B0CE360EB69DD9001A0D06 /* homing.hpp */; }; 95B0D3680EB69DDF001A0D06 /* missile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 95B0CE370EB69DD9001A0D06 /* missile.cpp */; }; 95B0D3690EB69DDF001A0D06 /* missile.hpp in CopyFiles */ = {isa = PBXBuildFile; fileRef = 95B0CE380EB69DD9001A0D06 /* missile.hpp */; }; 95B0D36A0EB69DDF001A0D06 /* projectile_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 95B0CE390EB69DD9001A0D06 /* projectile_manager.cpp */; }; @@ -758,7 +758,6 @@ 95B0D3610EB69DDF001A0D06 /* collectable_manager.hpp in CopyFiles */, 95B0D3630EB69DDF001A0D06 /* herring.hpp in CopyFiles */, 95B0D3650EB69DDF001A0D06 /* herring_manager.hpp in CopyFiles */, - 95B0D3670EB69DDF001A0D06 /* homing.hpp in CopyFiles */, 95B0D3690EB69DDF001A0D06 /* missile.hpp in CopyFiles */, 95B0D36B0EB69DDF001A0D06 /* projectile_manager.hpp in CopyFiles */, 95B0D36E0EB69DDF001A0D06 /* kart.hpp in CopyFiles */, @@ -832,12 +831,15 @@ 95B0D3F20EB69DE0001A0D06 /* random_generator.hpp in CopyFiles */, 95B0D3F40EB69DE0001A0D06 /* ssg_help.hpp in CopyFiles */, 95B0D3F60EB69DE0001A0D06 /* vec3.hpp in CopyFiles */, + 9518C11E0EB7AF7A00952372 /* cake.hpp in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 1; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 9518C11B0EB7AF7A00952372 /* cake.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cake.cpp; sourceTree = "<group>"; }; + 9518C11C0EB7AF7A00952372 /* cake.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = cake.hpp; sourceTree = "<group>"; }; 95B0C9E90EB69DCE001A0D06 /* actionmap.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = actionmap.cpp; sourceTree = "<group>"; }; 95B0C9EA0EB69DCE001A0D06 /* actionmap.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = actionmap.hpp; sourceTree = "<group>"; }; 95B0C9EC0EB69DCE001A0D06 /* music.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = music.hpp; sourceTree = "<group>"; }; @@ -1222,8 +1224,6 @@ 95B0CE320EB69DD9001A0D06 /* herring.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = herring.hpp; sourceTree = "<group>"; }; 95B0CE330EB69DD9001A0D06 /* herring_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = herring_manager.cpp; sourceTree = "<group>"; }; 95B0CE340EB69DD9001A0D06 /* herring_manager.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = herring_manager.hpp; sourceTree = "<group>"; }; - 95B0CE350EB69DD9001A0D06 /* homing.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = homing.cpp; sourceTree = "<group>"; }; - 95B0CE360EB69DD9001A0D06 /* homing.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = homing.hpp; sourceTree = "<group>"; }; 95B0CE370EB69DD9001A0D06 /* missile.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = missile.cpp; sourceTree = "<group>"; }; 95B0CE380EB69DD9001A0D06 /* missile.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = missile.hpp; sourceTree = "<group>"; }; 95B0CE390EB69DD9001A0D06 /* projectile_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = projectile_manager.cpp; sourceTree = "<group>"; }; @@ -2290,6 +2290,8 @@ 95B0CE260EB69DD9001A0D06 /* items */ = { isa = PBXGroup; children = ( + 9518C11B0EB7AF7A00952372 /* cake.cpp */, + 9518C11C0EB7AF7A00952372 /* cake.hpp */, 95B0CE270EB69DD9001A0D06 /* attachment.cpp */, 95B0CE280EB69DD9001A0D06 /* attachment.hpp */, 95B0CE290EB69DD9001A0D06 /* attachment_manager.cpp */, @@ -2304,8 +2306,6 @@ 95B0CE320EB69DD9001A0D06 /* herring.hpp */, 95B0CE330EB69DD9001A0D06 /* herring_manager.cpp */, 95B0CE340EB69DD9001A0D06 /* herring_manager.hpp */, - 95B0CE350EB69DD9001A0D06 /* homing.cpp */, - 95B0CE360EB69DD9001A0D06 /* homing.hpp */, 95B0CE370EB69DD9001A0D06 /* missile.cpp */, 95B0CE380EB69DD9001A0D06 /* missile.hpp */, 95B0CE390EB69DD9001A0D06 /* projectile_manager.cpp */, @@ -2957,7 +2957,6 @@ 95B0D3600EB69DDF001A0D06 /* collectable_manager.cpp in Sources */, 95B0D3620EB69DDF001A0D06 /* herring.cpp in Sources */, 95B0D3640EB69DDF001A0D06 /* herring_manager.cpp in Sources */, - 95B0D3660EB69DDF001A0D06 /* homing.cpp in Sources */, 95B0D3680EB69DDF001A0D06 /* missile.cpp in Sources */, 95B0D36A0EB69DDF001A0D06 /* projectile_manager.cpp in Sources */, 95B0D36C0EB69DDF001A0D06 /* kart.cpp in Sources */, @@ -3017,6 +3016,7 @@ 95B0D3F10EB69DE0001A0D06 /* random_generator.cpp in Sources */, 95B0D3F30EB69DE0001A0D06 /* ssg_help.cpp in Sources */, 95B0D3F50EB69DE0001A0D06 /* vec3.cpp in Sources */, + 9518C11D0EB7AF7A00952372 /* cake.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; Copied: trunk/supertuxkart/src/items/cake.cpp (from rev 2385, trunk/supertuxkart/src/items/homing.cpp) =================================================================== --- trunk/supertuxkart/src/items/cake.cpp (rev 0) +++ trunk/supertuxkart/src/items/cake.cpp 2008-10-29 00:42:09 UTC (rev 2388) @@ -0,0 +1,169 @@ +// $Id: homing.cpp 1284 2007-11-08 12:31:54Z hikerstk $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2007 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "items/cake.hpp" +#include "constants.hpp" + +#include <iostream> + +float Cake::m_st_max_distance; +float Cake::m_st_max_distance_squared; +float Cake::m_st_max_turn_angle; + +Cake::Cake (Kart *kart) : Flyable(kart, COLLECT_CAKE) +{ + m_target = NULL; + + // A bit of a hack: the mass of this kinematic object is still 1.0 + // (see flyable), which enables collisions. I tried setting + // collisionFilterGroup/mask, but still couldn't get this object to + // collide with the track. By setting the mass to 1, collisions happen. + // (if bullet is compiled with _DEBUG, a warning will be printed the first + // time a homing-track collision happens). + float y_offset=kart->getKartLength()+2.0f*m_extend.getY(); + + float up_velocity = m_speed/7.0f; + + btTransform trans = kart->getTrans(); + + const float pitch = 0.0f; //getTerrainPitch(heading); + + // find closest kart in front of the current one + const Kart *closest_kart=0; btVector3 direction; float kartDistSquared; + getClosestKart(&closest_kart, &kartDistSquared, &direction, kart /* search in front of this kart */); + + // aim at this kart if 1) it's not too far, 2) if the aimed kart's speed + // allows the projectile to catch up with it + if(closest_kart != NULL && kartDistSquared < m_st_max_distance_squared && m_speed>closest_kart->getSpeed()) + { + m_target = (Kart*)closest_kart; + //std::cout << "aiming at " << closest_kart->getName().c_str() << std::endl; + + // calculate appropriate initial up velocity so that the + // projectile lands on the aimed kart (9.8 is the gravity) + const float time = sqrt(kartDistSquared) / (m_speed - closest_kart->getSpeed()/2.5f); // the division is an empirical estimation + up_velocity = time*9.8f; + + // calculate the approximate location of the aimed kart in 'time' seconds + btVector3 closestKartLoc = closest_kart->getTrans().getOrigin(); + closestKartLoc += time*closest_kart->getVelocity(); + + // calculate the angle at which the projectile should be thrown + // to hit the aimed kart + float projectileAngle=atan2(-(closestKartLoc.getX() - kart->getTrans().getOrigin().getX()), + closestKartLoc.getY() - kart->getTrans().getOrigin().getY() ); + + btMatrix3x3 thisKartDirMatrix = kart->getKartHeading().getBasis(); + btVector3 thisKartDirVector(thisKartDirMatrix[0][1], + thisKartDirMatrix[1][1], + thisKartDirMatrix[2][1]); + + // apply transformation to the bullet object + btMatrix3x3 m; + m.setEulerZYX(pitch, 0.0f, projectileAngle /*+thisKartAngle*/); + trans.setBasis(m); + + } + else + { + m_target = NULL; + // kart is too far to be hit. so throw the projectile in a generic way, + // straight ahead, without trying to hit anything in particular + trans = kart->getKartHeading(pitch); + /* + std::cout << "Using generic direction because "; + + if(closest_kart == NULL) std::cout << "no closest kart was found "; + else if(!(kartDistSquared < m_st_max_distance_squared)) std::cout << closest_kart->getName().c_str() << " is too far : " << sqrt(kartDistSquared) << " (" << kartDistSquared << ")"; + if(closest_kart != NULL && !(m_speed>closest_kart->getSpeed())) std::cout << "kart is too fast "; + std::cout << std::endl; + */ + } + + + m_initial_velocity = btVector3(0.0f, m_speed, up_velocity); + + createPhysics(y_offset, m_initial_velocity, + new btCylinderShape(0.5f*m_extend), true /* gravity */, true /* rotation */, &trans); + // m_body->setCollisionFlags(m_body->getCollisionFlags() | + // btCollisionObject::CF_KINEMATIC_OBJECT ); + m_body->setActivationState(DISABLE_DEACTIVATION); + + m_body->applyTorque( btVector3(5,-3,7) ); + +} // Cake + +// ----------------------------------------------------------------------------- +void Cake::init(const lisp::Lisp* lisp, ssgEntity *cake_model) +{ + Flyable::init(lisp, cake_model, COLLECT_CAKE); + m_st_max_turn_angle = 15.0f; + m_st_max_distance = 80.0f; + m_st_max_distance_squared = 80.0f * 80.0f; + + lisp->get("max-distance", m_st_max_distance ); + m_st_max_distance_squared = m_st_max_distance*m_st_max_distance; + + lisp->get("max-turn-angle", m_st_max_turn_angle); +} // init + +// ----------------------------------------------------------------------------- +void Cake::update(float dt) +{ + + if(m_target != NULL) + { + // correct direction to go towards aimed kart + btTransform my_trans = getTrans(); + btTransform target = m_target->getTrans(); + + btVector3 ideal_direction = target.getOrigin() - my_trans.getOrigin(); + ideal_direction.normalize(); + + const btVector3& actual_direction = m_body -> getLinearVelocity(); + + ideal_direction.setInterpolate3(actual_direction.normalized(), ideal_direction, dt); + + const int current_xy_speed = (int)sqrt( actual_direction.getX()*actual_direction.getX() + + actual_direction.getY()*actual_direction.getY()); + + m_body->setLinearVelocity( btVector3(ideal_direction.getX()*current_xy_speed, + ideal_direction.getY()*current_xy_speed, + actual_direction.getZ()) ); + + /* + // pull towards aimed kart + btVector3 pullForce = target.getOrigin() - my_trans.getOrigin(); + pullForce.setZ(0); + pullForce.normalize(); + pullForce *= 10; + m_body->applyCentralImpulse( pullForce ); + */ + /* + // if over aimed kart, pull down + if(fabsf(my_trans.getOrigin().getX() - target.getOrigin().getX()) < 5.0 && + fabsf(my_trans.getOrigin().getY() - target.getOrigin().getY()) < 5.0) + { + m_body->applyCentralForce( btVector3(0, 0, -20.0f) ); + } + */ + } + + Flyable::update(dt); +} // update \ No newline at end of file Copied: trunk/supertuxkart/src/items/cake.hpp (from rev 2385, trunk/supertuxkart/src/items/homing.hpp) =================================================================== --- trunk/supertuxkart/src/items/cake.hpp (rev 0) +++ trunk/supertuxkart/src/items/cake.hpp 2008-10-29 00:42:09 UTC (rev 2388) @@ -0,0 +1,49 @@ +// $Id: missile.hpp 1284 2007-11-08 12:31:54Z hikerstk $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2007 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CAKE_H +#define HEADER_CAKE_H + +#include "flyable.hpp" + +class Cake : public Flyable +{ +private: + static float m_st_max_distance; // maximum distance for a missile to be attracted + static float m_st_max_distance_squared; + static float m_st_max_turn_angle; + + btVector3 m_initial_velocity; + //float steerTowards(btTransform& trans, btVector3& target); + + Kart* m_target; // which kart is targeted by this + // projectile (NULL if none) +public: + Cake (Kart *kart); + static void init (const lisp::Lisp* lisp, ssgEntity* cake_model); + virtual void update (float dt); + virtual void hitTrack () { explode(NULL); } + // Kinematic objects are not allowed to have a velocity (assertion in + // bullet), so we have to do our own velocity handling here + virtual const btVector3 &getVelocity() const {return m_initial_velocity;} + virtual void setVelocity(const btVector3& v) {m_initial_velocity=v; } + +}; // Cake + +#endif Modified: trunk/supertuxkart/src/items/collectable.cpp =================================================================== --- trunk/supertuxkart/src/items/collectable.cpp 2008-10-28 23:44:26 UTC (rev 2387) +++ trunk/supertuxkart/src/items/collectable.cpp 2008-10-29 00:42:09 UTC (rev 2388) @@ -87,7 +87,7 @@ { case COLLECT_ZIPPER: m_owner->handleZipper(); break ; - case COLLECT_HOMING: + case COLLECT_CAKE: case COLLECT_BOWLING: case COLLECT_MISSILE: m_sound_shot->position(m_owner->getXYZ()); Modified: trunk/supertuxkart/src/items/collectable_manager.cpp =================================================================== --- trunk/supertuxkart/src/items/collectable_manager.cpp 2008-10-28 23:44:26 UTC (rev 2387) +++ trunk/supertuxkart/src/items/collectable_manager.cpp 2008-10-29 00:42:09 UTC (rev 2388) @@ -26,7 +26,7 @@ #include "translation.hpp" #include "items/bowling.hpp" #include "missile.hpp" -#include "items/homing.hpp" +#include "items/cake.hpp" #include "loader.hpp" #if defined(WIN32) && !defined(__CYGWIN__) @@ -45,7 +45,7 @@ {COLLECT_ZIPPER, "zipper.collectable" }, {COLLECT_BOWLING, "bowling.projectile" }, {COLLECT_MISSILE, "missile.projectile" }, - {COLLECT_HOMING, "homingmissile.projectile" }, + {COLLECT_CAKE, "cake.projectile" }, {COLLECT_ANVIL, "anvil.collectable" }, {COLLECT_PARACHUTE, "parachute.collectable" }, {COLLECT_MAX, "" }, @@ -139,8 +139,8 @@ Bowling::init (lisp, m_all_models[collectType]); break; case COLLECT_MISSILE: Missile::init(lisp, m_all_models[collectType]); break; - case COLLECT_HOMING: - Homing::init (lisp, m_all_models[collectType]); break; + case COLLECT_CAKE: + Cake::init (lisp, m_all_models[collectType]); break; default:; } // switch Modified: trunk/supertuxkart/src/items/collectable_manager.hpp =================================================================== --- trunk/supertuxkart/src/items/collectable_manager.hpp 2008-10-28 23:44:26 UTC (rev 2387) +++ trunk/supertuxkart/src/items/collectable_manager.hpp 2008-10-29 00:42:09 UTC (rev 2388) @@ -30,7 +30,7 @@ // The anvil and parachute must be at the end of the enum, and the // zipper just before them (see collectable::hitRedHerring). enum CollectableType {COLLECT_NOTHING, - COLLECT_MISSILE, COLLECT_HOMING, + COLLECT_MISSILE, COLLECT_CAKE, COLLECT_BOWLING, COLLECT_ZIPPER, COLLECT_PARACHUTE, COLLECT_ANVIL, COLLECT_MAX}; Deleted: trunk/supertuxkart/src/items/homing.cpp =================================================================== --- trunk/supertuxkart/src/items/homing.cpp 2008-10-28 23:44:26 UTC (rev 2387) +++ trunk/supertuxkart/src/items/homing.cpp 2008-10-29 00:42:09 UTC (rev 2388) @@ -1,169 +0,0 @@ -// $Id: homing.cpp 1284 2007-11-08 12:31:54Z hikerstk $ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2007 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#include "items/homing.hpp" -#include "constants.hpp" - -#include <iostream> - -float Homing::m_st_max_distance; -float Homing::m_st_max_distance_squared; -float Homing::m_st_max_turn_angle; - -Homing::Homing (Kart *kart) : Flyable(kart, COLLECT_HOMING) -{ - m_target = NULL; - - // A bit of a hack: the mass of this kinematic object is still 1.0 - // (see flyable), which enables collisions. I tried setting - // collisionFilterGroup/mask, but still couldn't get this object to - // collide with the track. By setting the mass to 1, collisions happen. - // (if bullet is compiled with _DEBUG, a warning will be printed the first - // time a homing-track collision happens). - float y_offset=kart->getKartLength()+2.0f*m_extend.getY(); - - float up_velocity = m_speed/7.0f; - - btTransform trans = kart->getTrans(); - - const float pitch = 0.0f; //getTerrainPitch(heading); - - // find closest kart in front of the current one - const Kart *closest_kart=0; btVector3 direction; float kartDistSquared; - getClosestKart(&closest_kart, &kartDistSquared, &direction, kart /* search in front of this kart */); - - // aim at this kart if 1) it's not too far, 2) if the aimed kart's speed - // allows the projectile to catch up with it - if(closest_kart != NULL && kartDistSquared < m_st_max_distance_squared && m_speed>closest_kart->getSpeed()) - { - m_target = (Kart*)closest_kart; - //std::cout << "aiming at " << closest_kart->getName().c_str() << std::endl; - - // calculate appropriate initial up velocity so that the - // projectile lands on the aimed kart (9.8 is the gravity) - const float time = sqrt(kartDistSquared) / (m_speed - closest_kart->getSpeed()/2.5f); // the division is an empirical estimation - up_velocity = time*9.8f; - - // calculate the approximate location of the aimed kart in 'time' seconds - btVector3 closestKartLoc = closest_kart->getTrans().getOrigin(); - closestKartLoc += time*closest_kart->getVelocity(); - - // calculate the angle at which the projectile should be thrown - // to hit the aimed kart - float projectileAngle=atan2(-(closestKartLoc.getX() - kart->getTrans().getOrigin().getX()), - closestKartLoc.getY() - kart->getTrans().getOrigin().getY() ); - - btMatrix3x3 thisKartDirMatrix = kart->getKartHeading().getBasis(); - btVector3 thisKartDirVector(thisKartDirMatrix[0][1], - thisKartDirMatrix[1][1], - thisKartDirMatrix[2][1]); - - // apply transformation to the bullet object - btMatrix3x3 m; - m.setEulerZYX(pitch, 0.0f, projectileAngle /*+thisKartAngle*/); - trans.setBasis(m); - - } - else - { - m_target = NULL; - // kart is too far to be hit. so throw the projectile in a generic way, - // straight ahead, without trying to hit anything in particular - trans = kart->getKartHeading(pitch); - /* - std::cout << "Using generic direction because "; - - if(closest_kart == NULL) std::cout << "no closest kart was found "; - else if(!(kartDistSquared < m_st_max_distance_squared)) std::cout << closest_kart->getName().c_str() << " is too far : " << sqrt(kartDistSquared) << " (" << kartDistSquared << ")"; - if(closest_kart != NULL && !(m_speed>closest_kart->getSpeed())) std::cout << "kart is too fast "; - std::cout << std::endl; - */ - } - - - m_initial_velocity = btVector3(0.0f, m_speed, up_velocity); - - createPhysics(y_offset, m_initial_velocity, - new btCylinderShape(0.5f*m_extend), true /* gravity */, true /* rotation */, &trans); - // m_body->setCollisionFlags(m_body->getCollisionFlags() | - // btCollisionObject::CF_KINEMATIC_OBJECT ); - m_body->setActivationState(DISABLE_DEACTIVATION); - - m_body->applyTorque( btVector3(5,-3,7) ); - -} // Homing - -// ----------------------------------------------------------------------------- -void Homing::init(const lisp::Lisp* lisp, ssgEntity *homing) -{ - Flyable::init(lisp, homing, COLLECT_HOMING); - m_st_max_turn_angle = 15.0f; - m_st_max_distance = 80.0f; - m_st_max_distance_squared = 80.0f * 80.0f; - - lisp->get("max-distance", m_st_max_distance ); - m_st_max_distance_squared = m_st_max_distance*m_st_max_distance; - - lisp->get("max-turn-angle", m_st_max_turn_angle); -} // init - -// ----------------------------------------------------------------------------- -void Homing::update(float dt) -{ - - if(m_target != NULL) - { - // correct direction to go towards aimed kart - btTransform my_trans = getTrans(); - btTransform target = m_target->getTrans(); - - btVector3 ideal_direction = target.getOrigin() - my_trans.getOrigin(); - ideal_direction.normalize(); - - const btVector3& actual_direction = m_body -> getLinearVelocity(); - - ideal_direction.setInterpolate3(actual_direction.normalized(), ideal_direction, dt); - - const int current_xy_speed = (int)sqrt( actual_direction.getX()*actual_direction.getX() + - actual_direction.getY()*actual_direction.getY()); - - m_body->setLinearVelocity( btVector3(ideal_direction.getX()*current_xy_speed, - ideal_direction.getY()*current_xy_speed, - actual_direction.getZ()) ); - - /* - // pull towards aimed kart - btVector3 pullForce = target.getOrigin() - my_trans.getOrigin(); - pullForce.setZ(0); - pullForce.normalize(); - pullForce *= 10; - m_body->applyCentralImpulse( pullForce ); - */ - /* - // if over aimed kart, pull down - if(fabsf(my_trans.getOrigin().getX() - target.getOrigin().getX()) < 5.0 && - fabsf(my_trans.getOrigin().getY() - target.getOrigin().getY()) < 5.0) - { - m_body->applyCentralForce( btVector3(0, 0, -20.0f) ); - } - */ - } - - Flyable::update(dt); -} // update \ No newline at end of file Deleted: trunk/supertuxkart/src/items/homing.hpp =================================================================== --- trunk/supertuxkart/src/items/homing.hpp 2008-10-28 23:44:26 UTC (rev 2387) +++ trunk/supertuxkart/src/items/homing.hpp 2008-10-29 00:42:09 UTC (rev 2388) @@ -1,49 +0,0 @@ -// $Id: missile.hpp 1284 2007-11-08 12:31:54Z hikerstk $ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2007 Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 3 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#ifndef HEADER_HOMING_H -#define HEADER_HOMING_H - -#include "flyable.hpp" - -class Homing : public Flyable -{ -private: - static float m_st_max_distance; // maximum distance for a missile to be attracted - static float m_st_max_distance_squared; - static float m_st_max_turn_angle; - - btVector3 m_initial_velocity; - //float steerTowards(btTransform& trans, btVector3& target); - - Kart* m_target; // which kart is targeted by this - // projectile (NULL if none) -public: - Homing (Kart *kart); - static void init (const lisp::Lisp* lisp, ssgEntity* homing); - virtual void update (float dt); - virtual void hitTrack () { explode(NULL); } - // Kinematic objects are not allowed to have a velocity (assertion in - // bullet), so we have to do our own velocity handling here - virtual const btVector3 &getVelocity() const {return m_initial_velocity;} - virtual void setVelocity(const btVector3& v) {m_initial_velocity=v; } - -}; // Homing - -#endif Modified: trunk/supertuxkart/src/items/projectile_manager.cpp =================================================================== --- trunk/supertuxkart/src/items/projectile_manager.cpp 2008-10-28 23:44:26 UTC (rev 2387) +++ trunk/supertuxkart/src/items/projectile_manager.cpp 2008-10-29 00:42:09 UTC (rev 2388) @@ -23,7 +23,7 @@ #include "items/projectile_manager.hpp" #include "items/bowling.hpp" #include "missile.hpp" -#include "items/homing.hpp" +#include "items/cake.hpp" #include "explosion.hpp" #include "items/collectable_manager.hpp" #include "items/collectable.hpp" @@ -186,7 +186,7 @@ switch(type) { case COLLECT_BOWLING: f = new Bowling(kart); break; - case COLLECT_HOMING: f = new Homing(kart); break; + case COLLECT_CAKE: f = new Cake(kart); break; case COLLECT_MISSILE: f = new Missile(kart); break; default: return NULL; } Modified: trunk/supertuxkart/src/robots/default_robot.cpp =================================================================== --- trunk/supertuxkart/src/robots/default_robot.cpp 2008-10-28 23:44:26 UTC (rev 2387) +++ trunk/supertuxkart/src/robots/default_robot.cpp 2008-10-29 00:42:09 UTC (rev 2388) @@ -376,7 +376,7 @@ break; case COLLECT_MISSILE: - case COLLECT_HOMING: + case COLLECT_CAKE: if( m_time_since_last_shot > 5.0f && m_crashes.m_kart != -1 ) { if( (getXYZ()-RaceManager::getKart(m_crashes.m_kart)->getXYZ() ).length_2d() > This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <au...@us...> - 2008-10-29 15:55:58
|
Revision: 2392 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2392&view=rev Author: auria Date: 2008-10-29 15:55:54 +0000 (Wed, 29 Oct 2008) Log Message: ----------- removed most 'herring' names Modified Paths: -------------- trunk/supertuxkart/data/textures/materials.dat trunk/supertuxkart/src/callback_manager.hpp trunk/supertuxkart/src/challenges/challenge_data.cpp trunk/supertuxkart/src/file_manager.cpp trunk/supertuxkart/src/file_manager.hpp trunk/supertuxkart/src/grand_prix_data.cpp trunk/supertuxkart/src/grand_prix_data.hpp trunk/supertuxkart/src/gui/help_page_one.cpp trunk/supertuxkart/src/gui/race_gui.cpp trunk/supertuxkart/src/items/attachment.cpp trunk/supertuxkart/src/items/attachment.hpp trunk/supertuxkart/src/items/collectable.cpp trunk/supertuxkart/src/items/collectable.hpp trunk/supertuxkart/src/items/collectable_manager.hpp trunk/supertuxkart/src/items/item.cpp trunk/supertuxkart/src/items/item.hpp trunk/supertuxkart/src/items/item_manager.cpp trunk/supertuxkart/src/items/item_manager.hpp trunk/supertuxkart/src/kart.cpp trunk/supertuxkart/src/kart.hpp trunk/supertuxkart/src/main.cpp trunk/supertuxkart/src/material_manager.hpp trunk/supertuxkart/src/modes/standard_race.cpp trunk/supertuxkart/src/modes/standard_race.hpp trunk/supertuxkart/src/modes/three_strikes_battle.hpp trunk/supertuxkart/src/modes/world.cpp trunk/supertuxkart/src/modes/world.hpp trunk/supertuxkart/src/moveable.hpp trunk/supertuxkart/src/network/herring_info.hpp trunk/supertuxkart/src/network/race_state.cpp trunk/supertuxkart/src/network/race_state.hpp trunk/supertuxkart/src/player_kart.cpp trunk/supertuxkart/src/player_kart.hpp trunk/supertuxkart/src/race_manager.hpp trunk/supertuxkart/src/sdldrv.cpp trunk/supertuxkart/src/track.cpp trunk/supertuxkart/src/track.hpp trunk/supertuxkart/src/user_config.cpp trunk/supertuxkart/src/user_config.hpp Added Paths: ----------- trunk/supertuxkart/data/items/ trunk/supertuxkart/data/items.items Removed Paths: ------------- trunk/supertuxkart/data/herrings/ trunk/supertuxkart/data/new.herring trunk/supertuxkart/data/old.herring trunk/supertuxkart/data/textures/herring.rgb trunk/supertuxkart/data/textures/herringbones.rgb Copied: trunk/supertuxkart/data/items.items (from rev 2391, trunk/supertuxkart/data/new.herring) =================================================================== --- trunk/supertuxkart/data/items.items (rev 0) +++ trunk/supertuxkart/data/items.items 2008-10-29 15:55:54 UTC (rev 2392) @@ -0,0 +1,10 @@ +;; -*- mode: lisp -*- + +(item + (gold "goldcoin" ) + (silver "silvercoin") + (green "banana" ) + (red "bonusblock") +) + +;; EOF ;; Deleted: trunk/supertuxkart/data/new.herring =================================================================== --- trunk/supertuxkart/data/new.herring 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/data/new.herring 2008-10-29 15:55:54 UTC (rev 2392) @@ -1,10 +0,0 @@ -;; -*- mode: lisp -*- - -(herring - (gold "goldcoin" ) - (silver "silvercoin") - (green "banana" ) - (red "bonusblock") -) - -;; EOF ;; Deleted: trunk/supertuxkart/data/old.herring =================================================================== --- trunk/supertuxkart/data/old.herring 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/data/old.herring 2008-10-29 15:55:54 UTC (rev 2392) @@ -1,11 +0,0 @@ -;; -*- mode: lisp -*- - -;; nothing specified --> chose the default models -(herring - (gold "OLD_GOLD") - (silver "OLD_SILVER") - (green "OLD_GREEN") - (red "OLD_RED") -) - -;; EOF ;; Deleted: trunk/supertuxkart/data/textures/herring.rgb =================================================================== (Binary files differ) Deleted: trunk/supertuxkart/data/textures/herringbones.rgb =================================================================== (Binary files differ) Modified: trunk/supertuxkart/data/textures/materials.dat =================================================================== --- trunk/supertuxkart/data/textures/materials.dat 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/data/textures/materials.dat 2008-10-29 15:55:54 UTC (rev 2392) @@ -139,6 +139,7 @@ "zipper_collect.rgb" N N N 0.0 N N 1.0 N Y N N "zipper.rgb" N N N 0.0 N N 1.0 N Y N N "bowlingicon.rgb" N N N 0.0 N N 1.0 N Y N N +# TextureName Clamp Trans Alpha Light SphMp Frict Ign Zip Rst Col "banana.rgb" N N N 0.5 N N 1.0 N N N N "bananawrap.rgb" Y Y Y 0.5 N N 1.0 N Y N N "fuzzy.rgb" Y Y Y 0.2 N N 0.5 Y N N N @@ -152,7 +153,6 @@ "homingmissile.rgb" Y Y Y 0.1 N N 1.0 Y N N N "anvil.rgb" Y Y Y 0.1 N N 1.0 Y N N N "parachute.rgb" Y Y Y 0.1 N N 1.0 Y N N N -"herring.rgb" Y Y Y 0.9 N N 1.0 Y N N N "wheel.rgb" Y Y Y 0.0 N N 1.0 Y N N N "speedback.rgb" Y Y Y 0.0 N N 1.0 Y N N N "speedfore.rgb" Y Y Y 0.0 N N 1.0 Y N N N @@ -164,19 +164,19 @@ "window.rgb" N N Y 0.0 Y N 1.0 N N N N "signs.rgb" N N Y 0.5 N N 0.5 N N N N "greenice.rgb" N N N 0.0 N N 0.5 N N Y N -"snow.rgb" N N N 0.0 Y N 0.00000018 N N N N +"snow.rgb" N N N 0.0 Y N 0.00000018 N N N N "ice.rgb" N N N 0.0 Y N 0.000000095 N N N N "snowyrock.rgb" N N N 0.0 Y N 0.0000002 N N N N -"sand2.rgb" N N N 0.0 Y N 0.0000001 N N N N -"road_dirt.rgb" N N N 0.0 Y N 0.00000025 N N N N -"grass2.rgb" N N N 0.0 Y N 0.00000015 N N N N -"dirt2sand.rgb" N N N 0.0 Y N 0.0000002 N N N N -"grass2dirt.rgb" N N N 0.0 Y N 0.0000002 N N N N -"logs.rgb" N N N 0.0 Y N 0.0000002 N N N N -"stonetex.rgb" N N N 0.0 Y N 0.0000002 N N N N -"redwhite.rgb" N N N 0.0 Y N 0.0000002 N N N N -"dirt.rgb" N N N 0.0 Y N 0.00000025 N N N N +"sand2.rgb" N N N 0.0 Y N 0.0000001 N N N N +"road_dirt.rgb" N N N 0.0 Y N 0.00000025 N N N N +"grass2.rgb" N N N 0.0 Y N 0.00000015 N N N N +"dirt2sand.rgb" N N N 0.0 Y N 0.0000002 N N N N +"grass2dirt.rgb" N N N 0.0 Y N 0.0000002 N N N N +"logs.rgb" N N N 0.0 Y N 0.0000002 N N N N +"stonetex.rgb" N N N 0.0 Y N 0.0000002 N N N N +"redwhite.rgb" N N N 0.0 Y N 0.0000002 N N N N +"dirt.rgb" N N N 0.0 Y N 0.00000025 N N N N "city_asphalt_1.rgb" N N N 0.0 Y N 0.0000003 N N N N -"city_checker.rgb" N N N 0.0 Y N 0.0000003 N N N N +"city_checker.rgb" N N N 0.0 Y N 0.0000003 N N N N # EOF # Modified: trunk/supertuxkart/src/callback_manager.hpp =================================================================== --- trunk/supertuxkart/src/callback_manager.hpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/callback_manager.hpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -30,7 +30,7 @@ // gets loaded once, and deleted at the end (and when switching windows / // fullscreen). Sinace it's not much overhead, a separate class is provided // for every model that might contain a callback. -enum CallbackType { CB_COLLECTABLE, CB_ATTACHMENT, CB_EXPLOSION, CB_HERRING, +enum CallbackType { CB_COLLECTABLE, CB_ATTACHMENT, CB_EXPLOSION, CB_ITEM, CB_KART, CB_TRACK, CB_MAX }; class CallbackManager Modified: trunk/supertuxkart/src/challenges/challenge_data.cpp =================================================================== --- trunk/supertuxkart/src/challenges/challenge_data.cpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/challenges/challenge_data.cpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -223,7 +223,7 @@ if((int)race_manager->getNumKarts()<m_num_karts) return false; // not enough AI karts Kart* kart = RaceManager::getPlayerKart(0); - if(m_energy>0 && kart->getNumHerring()<m_energy) return false; // not enough energy + if(m_energy>0 && kart->getNumItems()<m_energy) return false; // not enough energy if(m_position>0 && kart->getPosition()>m_position) return false; // too far behind // Follow the leader Modified: trunk/supertuxkart/src/file_manager.cpp =================================================================== --- trunk/supertuxkart/src/file_manager.cpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/file_manager.cpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -206,10 +206,10 @@ } // getKartDir //----------------------------------------------------------------------------- -std::string FileManager::getHerringDir() const +std::string FileManager::getItemsDir() const { - return m_root_dir+"/data/herrings"; -} // getHerringDir + return m_root_dir+"/data/items"; +} // getItemsDir //----------------------------------------------------------------------------- std::string FileManager::getTranslationDir() const { @@ -253,9 +253,9 @@ } // getConfigFile //----------------------------------------------------------------------------- -std::string FileManager::getHerringFile(const std::string& fname) const +std::string FileManager::getItemFile(const std::string& fname) const { - return getHerringDir()+"/"+fname; + return getItemsDir()+"/"+fname; } // getConfigFile //----------------------------------------------------------------------------- Modified: trunk/supertuxkart/src/file_manager.hpp =================================================================== --- trunk/supertuxkart/src/file_manager.hpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/file_manager.hpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -43,7 +43,7 @@ std::string getHomeDir () const; std::string getTrackDir () const; std::string getKartDir () const; - std::string getHerringDir () const; + std::string getItemsDir () const; std::string getTranslationDir() const; std::vector<std::string>getMusicDirs() const; std::string getTextureFile (const std::string& fname) const; @@ -54,7 +54,7 @@ std::string getConfigFile (const std::string& fname) const; std::string getHighscoreFile (const std::string& fname) const; std::string getLogFile (const std::string& fname) const; - std::string getHerringFile (const std::string& fname) const; + std::string getItemFile (const std::string& fname) const; std::string getMusicFile (const std::string& fname) const; std::string getSFXFile (const std::string& fname) const; std::string getFontFile (const std::string& fname) const; Modified: trunk/supertuxkart/src/grand_prix_data.cpp =================================================================== --- trunk/supertuxkart/src/grand_prix_data.cpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/grand_prix_data.cpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -45,7 +45,7 @@ lisp->get ("name", m_name ); lisp->get ("description", m_description ); - lisp->get ("herring", m_herring_style); + lisp->get ("item", m_item_style); lisp->getVector("tracks", m_tracks ); lisp->getVector("laps", m_laps ); } Modified: trunk/supertuxkart/src/grand_prix_data.hpp =================================================================== --- trunk/supertuxkart/src/grand_prix_data.hpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/grand_prix_data.hpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -35,7 +35,7 @@ std::string m_id; // Internal name of the grand prix, not translated std::string m_filename; // Original filename, only for error handling needed std::string m_description; // Description for this track - std::string m_herring_style; // herring style which overwrites the track default + std::string m_item_style; // item style which overwrites the track default /** The ident of the tracks in this grand prix in their right order, ident means the filename of the .track file without .track extension (ie. 'volcano') */ @@ -52,7 +52,7 @@ const std::string& getName () const { return m_name; } const std::string& getId () const { return m_id; } const std::string& getDescription () const { return m_description; } - const std::string& getHerringStyle() const { return m_herring_style; } + const std::string& getItemStyle () const { return m_item_style; } const std::string& getFilename () const { return m_filename; } const std::string& getTrack(size_t track_index) const { assert(track_index < m_tracks.size()); return m_tracks[track_index]; } Modified: trunk/supertuxkart/src/gui/help_page_one.cpp =================================================================== --- trunk/supertuxkart/src/gui/help_page_one.cpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/gui/help_page_one.cpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -77,25 +77,25 @@ widget_manager->breakLine(); /*Rotating 3D models*/ - ssgEntity* hm = herring_manager->getHerringModel(HE_RED); + ssgEntity* hm = item_manager->getItemModel(ITEM_BONUS_BOX); ssgDeRefDelete(m_box); m_box = new ssgTransform; m_box->ref(); m_box->addKid(hm); - hm = herring_manager->getHerringModel(HE_SILVER); + hm = item_manager->getItemModel(ITEM_SILVER_COIN); ssgDeRefDelete(m_silver_coin); m_silver_coin = new ssgTransform; m_silver_coin->ref(); m_silver_coin->addKid(hm); - hm = herring_manager->getHerringModel(HE_GOLD); + hm = item_manager->getItemModel(ITEM_GOLD_COIN); ssgDeRefDelete(m_gold_coin); m_gold_coin = new ssgTransform; m_gold_coin->ref(); m_gold_coin->addKid(hm); - hm = herring_manager->getHerringModel(HE_GREEN); + hm = item_manager->getItemModel(ITEM_BANANA); ssgDeRefDelete(m_banana); m_banana = new ssgTransform; m_banana->ref(); Modified: trunk/supertuxkart/src/gui/race_gui.cpp =================================================================== --- trunk/supertuxkart/src/gui/race_gui.cpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/gui/race_gui.cpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -463,8 +463,8 @@ void RaceGUI::drawEnergyMeter ( Kart *player_kart, int offset_x, int offset_y, float ratio_x, float ratio_y ) { - float state = (float)(player_kart->getNumHerring()) / - MAX_HERRING_EATEN; + float state = (float)(player_kart->getNumItems()) / + MAX_ITEMS_COLLECTED; int x = (int)((user_config->m_width-24) * ratio_x) + offset_x; int y = (int)(250 * ratio_y) + offset_y; int w = (int)(16 * ratio_x); @@ -472,10 +472,10 @@ int wl = (int)(ratio_x); if(wl < 1) wl = 1; - const int GRADS = (int)(MAX_HERRING_EATEN/5); // each graduation equals 5 herring + const int GRADS = (int)(MAX_ITEMS_COLLECTED/5); // each graduation equals 5 items int gh = (int)(h/GRADS); //graduation height float coin_target = (float)race_manager->getCoinTarget(); - int th = (int)(h*(coin_target/MAX_HERRING_EATEN)); + int th = (int)(h*(coin_target/MAX_ITEMS_COLLECTED)); glDisable(GL_TEXTURE_2D); // Draw a Meter border Modified: trunk/supertuxkart/src/items/attachment.cpp =================================================================== --- trunk/supertuxkart/src/items/attachment.cpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/items/attachment.cpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -63,7 +63,7 @@ } // set // ----------------------------------------------------------------------------- -void Attachment::hitGreenHerring(const Herring &herring, int random_attachment) +void Attachment::hitBanana(const Item &item, int random_attachment) { if(user_config->m_profile) return; float leftover_time = 0.0f; @@ -93,8 +93,8 @@ // so that the clients can be updated. if(network_manager->getMode()==NetworkManager::NW_SERVER) { - race_state->herringCollected(m_kart->getWorldKartId(), - herring.getHerringId(), + race_state->itemCollected(m_kart->getWorldKartId(), + item.getItemId(), random_attachment); } @@ -117,7 +117,7 @@ m_kart->adjustSpeedWeight(stk_config->m_anvil_speed_factor); break ; } // switch -} // hitGreenHerring +} // hitBanana //----------------------------------------------------------------------------- //** Moves a bomb from kart FROM to kart TO. Modified: trunk/supertuxkart/src/items/attachment.hpp =================================================================== --- trunk/supertuxkart/src/items/attachment.hpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/items/attachment.hpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -24,7 +24,7 @@ #include "utils/random_generator.hpp" class Kart; -class Herring; +class Item; // Some loop in Attachment.cpp depend on PARACHUTE being the first element, // and TINYTUX being the last one. So if new elemts are added, make sure @@ -77,11 +77,11 @@ } /** Randomly selects the new attachment. For a server process, the * attachment can be passed into this function. - \param herring The herring that was collected. + \param item The item that was collected. \param random_attachment Optional: only used on the clients, it specifies the new attachment to use */ - void hitGreenHerring(const Herring &herring, int random_attachment=-1); + void hitBanana(const Item &item, int random_attachment=-1); void update (float dt); void moveBombFromTo(Kart *from, Kart *to); }; Modified: trunk/supertuxkart/src/items/collectable.cpp =================================================================== --- trunk/supertuxkart/src/items/collectable.cpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/items/collectable.cpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -154,7 +154,7 @@ } // use //----------------------------------------------------------------------------- -void Collectable::hitRedHerring(int n, const Herring &herring, int add_info) +void Collectable::hitBonusBox(int n, const Item &item, int add_info) { //The probabilities of getting the anvil or the parachute increase //depending on how bad the owner's position is. For the first @@ -186,9 +186,9 @@ m_number = 1; if(network_manager->getMode()==NetworkManager::NW_SERVER) { - race_state->herringCollected(m_owner->getWorldKartId(), - herring.getHerringId(), - m_type); + race_state->itemCollected(m_owner->getWorldKartId(), + item.getItemId(), + m_type); } return; } @@ -198,9 +198,9 @@ m_number = 1; if(network_manager->getMode()==NetworkManager::NW_SERVER) { - race_state->herringCollected(m_owner->getWorldKartId(), - herring.getHerringId(), - (char)m_type); + race_state->itemCollected(m_owner->getWorldKartId(), + item.getItemId(), + (char)m_type); } return; } @@ -238,9 +238,9 @@ // so that the clients can be updated. if(network_manager->getMode()==NetworkManager::NW_SERVER) { - race_state->herringCollected(m_owner->getWorldKartId(), - herring.getHerringId(), - newC); + race_state->itemCollected(m_owner->getWorldKartId(), + item.getItemId(), + newC); } if(m_type==COLLECT_NOTHING) @@ -254,4 +254,4 @@ if(m_number > MAX_COLLECTABLES) m_number = MAX_COLLECTABLES; } // Ignore new collectable if it is different from the current one -} // hitRedHerring +} // hitBonusBox Modified: trunk/supertuxkart/src/items/collectable.hpp =================================================================== --- trunk/supertuxkart/src/items/collectable.hpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/items/collectable.hpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -26,7 +26,7 @@ #include "utils/random_generator.hpp" class Kart; -class Herring; +class Item; class SFXBase; class Collectable @@ -49,7 +49,7 @@ void reset (); int getNum () const {return m_number;} CollectableType getType () const {return m_type; } - void hitRedHerring(int n, const Herring &herring, int newC=-1); + void hitBonusBox (int n, const Item &item, int newC=-1); Material* getIcon (); void use (); }; Modified: trunk/supertuxkart/src/items/collectable_manager.hpp =================================================================== --- trunk/supertuxkart/src/items/collectable_manager.hpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/items/collectable_manager.hpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -28,7 +28,7 @@ class ssgEntity; // The anvil and parachute must be at the end of the enum, and the -// zipper just before them (see collectable::hitRedHerring). +// zipper just before them (see collectable::hitBonusBox). enum CollectableType {COLLECT_NOTHING, COLLECT_MISSILE, COLLECT_CAKE, COLLECT_BOWLING, COLLECT_ZIPPER, Modified: trunk/supertuxkart/src/items/item.cpp =================================================================== --- trunk/supertuxkart/src/items/item.cpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/items/item.cpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -23,30 +23,30 @@ #include "scene.hpp" #include "coord.hpp" -Herring::Herring(herringType type, const Vec3& xyz, ssgEntity* model, - unsigned int herring_id) +Item::Item(ItemType type, const Vec3& xyz, ssgEntity* model, + unsigned int item_id) : m_coord(xyz, Vec3(0, 0, 0)) { - m_herring_id = herring_id; + m_item_id = item_id; m_type = type; m_eaten = false; - m_time_till_return = 0.0f; // not strictly necessary, see isEaten() + m_time_till_return = 0.0f; // not strictly necessary, see isCollected() m_root = new ssgTransform(); m_root->ref(); m_root->setTransform(const_cast<sgCoord*>(&m_coord.toSgCoord())); m_root->addKid(model); scene->add(m_root); -} // Herring +} // Item //----------------------------------------------------------------------------- -Herring::~Herring() +Item::~Item() { ssgDeRefDelete(m_root); -} // ~Herring +} // ~Item //----------------------------------------------------------------------------- -void Herring::reset() +void Item::reset() { m_eaten = false; m_time_till_return = 0.0f; @@ -54,13 +54,13 @@ } // reset //----------------------------------------------------------------------------- -int Herring::hitKart(Kart* kart) +int Item::hitKart(Kart* kart) { return (kart->getXYZ()-m_coord.getXYZ()).length2()<0.8f; } // hitKart //----------------------------------------------------------------------------- -void Herring::update(float delta) +void Item::update(float delta) { if(m_eaten) { @@ -90,7 +90,7 @@ } // update //----------------------------------------------------------------------------- -void Herring::isEaten() +void Item::isCollected() { m_eaten = true; m_time_till_return = 2.0f; Modified: trunk/supertuxkart/src/items/item.hpp =================================================================== --- trunk/supertuxkart/src/items/item.hpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/items/item.hpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -17,8 +17,8 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -#ifndef HEADER_HERRING_H -#define HEADER_HERRING_H +#ifndef HEADER_ITEM_H +#define HEADER_ITEM_H // num_players triggers 'already defined' messages without the WINSOCKAPI define. Don't ask me :( #define _WINSOCKAPI_ @@ -29,33 +29,33 @@ class ssgTransform; class ssgEntity; -// HE_RED must be the first, HE_SILVER the last entry. See HerringManager -enum herringType { HE_RED, HE_GREEN, HE_GOLD, HE_SILVER, HE_NONE }; +// ITEM_BONUS_BOX must be the first, ITEM_SILVER_COIN the last entry. See ItemManager +enum ItemType { ITEM_BONUS_BOX, ITEM_BANANA, ITEM_GOLD_COIN, ITEM_SILVER_COIN, ITEM_NONE }; // ----------------------------------------------------------------------------- -class Herring +class Item { private: - herringType m_type; // Herring type - bool m_eaten; // true if herring was eaten & is not displayed - float m_time_till_return; // time till an eaten herring reappears + ItemType m_type; // Item type + bool m_eaten; // true if item was collected & is not displayed + float m_time_till_return; // time till a collected item reappears Coord m_coord; // Original coordinates, used mainly when - // eaten herrings reappear. - ssgTransform* m_root; // The actual root of the herring - unsigned int m_herring_id; // index in herring_manager field + // collected items reappear. + ssgTransform* m_root; // The actual root of the item + unsigned int m_item_id; // index in item_manager field public: - Herring (herringType type, const Vec3& xyz, ssgEntity* model, - unsigned int herring_id); - ~Herring (); - unsigned int getHerringId() const {return m_herring_id; } + Item (ItemType type, const Vec3& xyz, ssgEntity* model, + unsigned int item_id); + ~Item (); + unsigned int getItemId() const {return m_item_id; } void update (float delta); - void isEaten (); + void isCollected (); int hitKart (Kart* kart ); void reset (); ssgTransform* getRoot () const {return m_root;} - herringType getType () const {return m_type;} + ItemType getType () const {return m_type;} bool wasEaten() const {return m_eaten;} } -; // class Herring +; // class Item #endif Modified: trunk/supertuxkart/src/items/item_manager.cpp =================================================================== --- trunk/supertuxkart/src/items/item_manager.cpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/items/item_manager.cpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -35,7 +35,7 @@ #if defined(WIN32) && !defined(__CYGWIN__) # define snprintf _snprintf #endif -/** Simple shadow class, only used here for default herrings. */ +/** Simple shadow class, only used here for default items. */ class Shadow { ssgBranch *sh ; @@ -75,63 +75,63 @@ ssgVtxTable *gs = new ssgVtxTable ( GL_TRIANGLE_STRIP, va, na, ta, ca ) ; gs -> clrTraversalMaskBits ( SSGTRAV_ISECT|SSGTRAV_HOT ) ; - gs -> setState ( fuzzy_gst ) ; + //gs -> setState ( fuzzy_gst ) ; sh -> addKid ( gs ) ; sh -> ref () ; /* Make sure it doesn't get deleted by mistake */ } // Shadow //============================================================================= -HerringManager* herring_manager; +ItemManager* item_manager; typedef std::map<std::string,ssgEntity*>::const_iterator CI_type; -HerringManager::HerringManager() +ItemManager::ItemManager() { m_all_models.clear(); - // The actual loading is done in loadDefaultHerrings -} // HerringManager + // The actual loading is done in loadDefaultItems +} // ItemManager //----------------------------------------------------------------------------- -void HerringManager::removeTextures() +void ItemManager::removeTextures() { - for(AllHerringType::iterator i =m_all_herrings.begin(); - i!=m_all_herrings.end(); i++) + for(AllItemTypes::iterator i =m_all_items.begin(); + i!=m_all_items.end(); i++) { delete *i; } - m_all_herrings.clear(); + m_all_items.clear(); for(CI_type i=m_all_models.begin(); i!=m_all_models.end(); ++i) { ssgDeRefDelete(i->second); } m_all_models.clear(); - callback_manager->clear(CB_HERRING); + callback_manager->clear(CB_ITEM); } // removeTextures //----------------------------------------------------------------------------- -HerringManager::~HerringManager() +ItemManager::~ItemManager() { for(CI_type i=m_all_models.begin(); i!=m_all_models.end(); ++i) { ssgDeRefDelete(i->second); } -} // ~HerringManager +} // ~ItemManager //----------------------------------------------------------------------------- -void HerringManager::loadDefaultHerrings() +void ItemManager::loadDefaultItems() { // Load all models. This can't be done in the constructor, // since the file_manager isn't ready at that stage. // ------------------------------------------------------- std::set<std::string> files; - file_manager->listFiles(files, file_manager->getHerringDir(), + file_manager->listFiles(files, file_manager->getItemsDir(), /*is_full_path*/true, /*make_full_path*/true); for(std::set<std::string>::iterator i = files.begin(); i != files.end(); ++i) { if(!StringUtils::has_suffix(*i, ".ac")) continue; - ssgEntity* h = loader->load(*i, CB_HERRING, + ssgEntity* h = loader->load(*i, CB_ITEM, /*optimise*/true, /*full_path*/true); std::string shortName = StringUtils::basename(StringUtils::without_extension(*i)); @@ -143,16 +143,16 @@ // Load the old, internal only models // ---------------------------------- - sgVec3 yellow = { 1.0f, 1.0f, 0.4f }; CreateDefaultHerring(yellow, "OLD_GOLD" ); - sgVec3 cyan = { 0.4f, 1.0f, 1.0f }; CreateDefaultHerring(cyan , "OLD_SILVER"); - sgVec3 red = { 0.8f, 0.0f, 0.0f }; CreateDefaultHerring(red , "OLD_RED" ); - sgVec3 green = { 0.0f, 0.8f, 0.0f }; CreateDefaultHerring(green , "OLD_GREEN" ); + sgVec3 yellow = { 1.0f, 1.0f, 0.4f }; createDefaultItem(yellow, "OLD_GOLD" ); + sgVec3 cyan = { 0.4f, 1.0f, 1.0f }; createDefaultItem(cyan , "OLD_SILVER"); + sgVec3 red = { 0.8f, 0.0f, 0.0f }; createDefaultItem(red , "OLD_RED" ); + sgVec3 green = { 0.0f, 0.8f, 0.0f }; createDefaultItem(green , "OLD_GREEN" ); - setDefaultHerringStyle(); -} // loadDefaultHerrings + setDefaultItemStyle(); +} // loadDefaultItems //----------------------------------------------------------------------------- -void HerringManager::setDefaultHerringStyle() +void ItemManager::setDefaultItemStyle() { // This should go in an internal, system wide configuration file const std::string DEFAULT_NAMES[4] = {"bonusblock", "banana", @@ -160,17 +160,17 @@ bool bError=0; char msg[MAX_ERROR_MESSAGE_LENGTH]; - for(int i=HE_RED; i<=HE_SILVER; i++) + for(int i=ITEM_BONUS_BOX; i<=ITEM_SILVER_COIN; i++) { - m_herring_model[i] = m_all_models[DEFAULT_NAMES[i]]; - if(!m_herring_model[i]) + m_item_model[i] = m_all_models[DEFAULT_NAMES[i]]; + if(!m_item_model[i]) { snprintf(msg, sizeof(msg), - "Herring model '%s' is missing (see herring_manager)!\n", + "Item model '%s' is missing (see item_manager)!\n", DEFAULT_NAMES[i].c_str()); bError=1; break; - } // if !m_herring_model + } // if !m_item_model } // for i if(bError) { @@ -185,7 +185,7 @@ } else { - fprintf(stderr, " %s in models/herrings/%s.ac.\n", + fprintf(stderr, " %s in %s.ac.\n", i->first.c_str(), i->first.c_str()); } @@ -195,85 +195,86 @@ exit(-1); } // if bError -} // setDefaultHerringStyle +} // setDefaultItemStyle //----------------------------------------------------------------------------- -Herring* HerringManager::newHerring(herringType type, const Vec3& xyz) +Item* ItemManager::newItem(ItemType type, const Vec3& xyz) { - Herring* h = new Herring(type, xyz, m_herring_model[type], m_all_herrings.size()); - m_all_herrings.push_back(h); + Item* h = new Item(type, xyz, m_item_model[type], m_all_items.size()); + m_all_items.push_back(h); return h; -} // newHerring +} // newItem //----------------------------------------------------------------------------- -/** Set a herring as eaten. - * This function is called on the server when a herring is eaten, or on the - * client upon receiving information about eaten herrings. */ -void HerringManager::eatenHerring(int herring_id, Kart *kart, - int add_info) +/** Set an item as collected. + * This function is called on the server when an item is collected, or on the + * client upon receiving information about collected items. */ +void ItemManager::collectedItem(int item_id, Kart *kart, int add_info) { - Herring *herring=m_all_herrings[herring_id]; - herring->isEaten(); - kart->collectedHerring(*herring, add_info); -} // eatenHerring + Item *item=m_all_items[item_id]; + item->isCollected(); + kart->collectedItem(*item, add_info); +} // collectedItem //----------------------------------------------------------------------------- -void HerringManager::hitHerring(Kart* kart) +void ItemManager::hitItem(Kart* kart) { // Only do this on the server if(network_manager->getMode()==NetworkManager::NW_CLIENT) return; - for(AllHerringType::iterator i =m_all_herrings.begin(); - i!=m_all_herrings.end(); i++) + for(AllItemTypes::iterator i =m_all_items.begin(); + i!=m_all_items.end(); i++) { if((*i)->wasEaten()) continue; if((*i)->hitKart(kart)) { - eatenHerring(i-m_all_herrings.begin(), kart); + collectedItem(i-m_all_items.begin(), kart); } // if hit - } // for m_all_herrings -} // hitHerring + } // for m_all_items +} // hitItem //----------------------------------------------------------------------------- -/** Remove all herring instances, and the track specific models. This is used +/** Remove all item instances, and the track specific models. This is used * just before a new track is loaded and a race is started. */ -void HerringManager::cleanup() +void ItemManager::cleanup() { - for(AllHerringType::iterator i =m_all_herrings.begin(); - i!=m_all_herrings.end(); i++) + for(AllItemTypes::iterator i =m_all_items.begin(); + i!=m_all_items.end(); i++) { delete *i; } - m_all_herrings.clear(); + m_all_items.clear(); - setDefaultHerringStyle(); + setDefaultItemStyle(); + // FIXME - this seems outdated + // Then load the default style from the user_config file // ----------------------------------------------------- - // This way if a herring is not defined in the herringstyle-file, the + // This way if an item is not defined in the item-style-file, the // default (i.e. old herring) is used. try { // FIXME: This should go in a system-wide configuration file, // and only one of this and the hard-coded settings in - // setDefaultHerringStyle are necessary!!! - loadHerringStyle(user_config->m_herring_style); + // setDefaultItemStyle are necessary!!! + loadItemStyle(user_config->m_item_style); } catch(std::runtime_error) { - fprintf(stderr,"The herring style '%s' in your configuration file does not exist.\nIt is ignored.\n", - user_config->m_herring_style.c_str()); - user_config->m_herring_style=""; + fprintf(stderr,"The item style '%s' in your configuration file does not exist.\nIt is ignored.\n", + user_config->m_item_style.c_str()); + user_config->m_item_style=""; } try { - loadHerringStyle(m_user_filename); + loadItemStyle(m_user_filename); } catch(std::runtime_error) { - fprintf(stderr,"The herring style '%s' specified on the command line does not exist.\nIt is ignored.\n", + fprintf(stderr,"The item style '%s' specified on the command line does not exist.\nIt is ignored.\n", m_user_filename.c_str()); m_user_filename=""; // reset to avoid further warnings. } @@ -281,30 +282,30 @@ } // cleanup //----------------------------------------------------------------------------- -/** Remove all herring instances, and the track specific models. This is used +/** Remove all item instances, and the track specific models. This is used * just before a new track is loaded and a race is started */ -void HerringManager::reset() +void ItemManager::reset() { - for(AllHerringType::iterator i =m_all_herrings.begin(); - i!=m_all_herrings.end(); i++) + for(AllItemTypes::iterator i =m_all_items.begin(); + i!=m_all_items.end(); i++) { (*i)->reset(); } // for i } // reset //----------------------------------------------------------------------------- -void HerringManager::update(float delta) +void ItemManager::update(float delta) { - for(AllHerringType::iterator i =m_all_herrings.begin(); - i!=m_all_herrings.end(); i++) + for(AllItemTypes::iterator i =m_all_items.begin(); + i!=m_all_items.end(); i++) { (*i)->update(delta); - } // for m_all_herrings + } // for m_all_items } // delta //----------------------------------------------------------------------------- -void HerringManager::CreateDefaultHerring(sgVec3 colour, std::string name) +void ItemManager::createDefaultItem(sgVec3 colour, std::string name) { ssgVertexArray *va = new ssgVertexArray () ; sgVec3 v ; ssgNormalArray *na = new ssgNormalArray () ; sgVec3 n ; @@ -332,7 +333,8 @@ ssgLeaf *gset = new ssgVtxTable ( GL_TRIANGLE_STRIP, va, na, ta, ca ) ; - gset->setState(material_manager->getMaterial("herring.rgb")->getState()) ; + // FIXME - this method seems outdated + //gset->setState(material_manager->getMaterial("herring.rgb")->getState()) ; Shadow* sh = new Shadow ( -0.5f, 0.5f, -0.25f, 0.25f ) ; @@ -343,42 +345,42 @@ tr -> ref () ; /* Make sure it doesn't get deleted by mistake */ m_all_models[name] = tr; -} // CreateDefaultHerring +} // createDefaultItem //----------------------------------------------------------------------------- -void HerringManager::loadHerringStyle(const std::string filename) +void ItemManager::loadItemStyle(const std::string filename) { if(filename.length()==0) return; const lisp::Lisp* root = 0; lisp::Parser parser; - root = parser.parse(file_manager->getConfigFile(filename + ".herring")); + root = parser.parse(file_manager->getConfigFile(filename + ".items")); - const lisp::Lisp* herring_node = root->getLisp("herring"); - if(!herring_node) + const lisp::Lisp* item_node = root->getLisp("item"); + if(!item_node) { char msg[MAX_ERROR_MESSAGE_LENGTH]; - snprintf(msg, sizeof(msg), "Couldn't load map '%s': no herring node.", + snprintf(msg, sizeof(msg), "Couldn't load map '%s': no item node.", filename.c_str()); delete root; throw std::runtime_error(msg); delete root; } - setHerring(herring_node, "red", HE_RED ); - setHerring(herring_node, "green", HE_GREEN ); - setHerring(herring_node, "gold" ,HE_GOLD ); - setHerring(herring_node, "silver",HE_SILVER); + setItem(item_node, "red", ITEM_BONUS_BOX ); + setItem(item_node, "green", ITEM_BANANA ); + setItem(item_node, "gold" ,ITEM_GOLD_COIN ); + setItem(item_node, "silver",ITEM_SILVER_COIN); delete root; -} // loadHerringStyle +} // loadItemStyle //----------------------------------------------------------------------------- -void HerringManager::setHerring(const lisp::Lisp *herring_node, - const char *colour, herringType type) +void ItemManager::setItem(const lisp::Lisp *item_node, + const char *colour, ItemType type) { std::string name; - herring_node->get(colour, name); + item_node->get(colour, name); if(name.size()>0) { - m_herring_model[type]=m_all_models[name]; + m_item_model[type]=m_all_models[name]; } -} // setHerring +} // setItem Modified: trunk/supertuxkart/src/items/item_manager.hpp =================================================================== --- trunk/supertuxkart/src/items/item_manager.hpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/items/item_manager.hpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -17,8 +17,8 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -#ifndef HEADER_HERRINGMANAGER_H -#define HEADER_HERRINGMANAGER_H +#ifndef HEADER_ITEMMANAGER_H +#define HEADER_ITEMMANAGER_H #include <vector> @@ -29,48 +29,47 @@ class Kart; class ssgEntity; -class HerringManager +class ItemManager { private: - // The vector of all herrings of the current track - typedef std::vector<Herring*> AllHerringType; - AllHerringType m_all_herrings; + // The vector of all items of the current track + typedef std::vector<Item*> AllItemTypes; + AllItemTypes m_all_items; - // This stores all herring models defined in the models/herring - // subdirectory. - ssgEntity *m_herring_model[HE_SILVER+1]; + // This stores all item models + ssgEntity *m_item_model[ITEM_SILVER_COIN+1]; // This is the active model. It gets determined by first loading the // default, then track models, user models, grand prix models. This means that - // a herring style specified in a track overwrites a command line option. + // an item style specified in a track overwrites a command line option. std::map<std::string,ssgEntity*> m_all_models; std::string m_user_filename; - void CreateDefaultHerring(sgVec3 colour, std::string name); - void setDefaultHerringStyle(); - void setHerring(const lisp::Lisp *herring_node, const char *colour, - herringType type); + void createDefaultItem(sgVec3 colour, std::string name); + void setDefaultItemStyle(); + void setItem(const lisp::Lisp *item_node, const char *colour, + ItemType type); public: - HerringManager(); - ~HerringManager(); - void loadDefaultHerrings(); - void loadHerringStyle(const std::string filename); - Herring* newHerring (herringType type, const Vec3& xyz); + ItemManager(); + ~ItemManager(); + void loadDefaultItems(); + void loadItemStyle (const std::string filename); + Item* newItem (ItemType type, const Vec3& xyz); void update (float delta); - void hitHerring (Kart* kart); + void hitItem (Kart* kart); void cleanup (); void reset (); void removeTextures (); void setUserFilename (char *s) {m_user_filename=s;} - void eatenHerring (int herring_id, Kart *kart, + void collectedItem (int item_id, Kart *kart, int add_info=-1); - ssgEntity* getHerringModel (herringType type) - {return m_herring_model[type];} + ssgEntity* getItemModel (ItemType type) + {return m_item_model[type];} }; -extern HerringManager* herring_manager; +extern ItemManager* item_manager; #endif Modified: trunk/supertuxkart/src/kart.cpp =================================================================== --- trunk/supertuxkart/src/kart.cpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/kart.cpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -70,7 +70,7 @@ m_kart_properties = kart_properties_manager->getKart(kart_name); //m_grid_position = position; m_initial_position = position; - m_num_herrings_gobbled = 0; + m_num_items_collected = 0; m_eliminated = false; m_finished_race = false; m_finish_time = 0.0f; @@ -358,7 +358,7 @@ m_eliminated = false; m_finish_time = 0.0f; m_zipper_time_left = 0.0f; - m_num_herrings_gobbled = 0; + m_num_items_collected = 0; m_wheel_rotation = 0; m_wheelie_angle = 0.0f; m_bounce_back_time = 0.0f; @@ -403,35 +403,35 @@ } // raceFinished //----------------------------------------------------------------------------- -void Kart::collectedHerring(const Herring &herring, int add_info) +void Kart::collectedItem(const Item &item, int add_info) { - const herringType type = herring.getType(); + const ItemType type = item.getType(); switch (type) { - case HE_GREEN : m_attachment.hitGreenHerring(herring, add_info); break; - case HE_SILVER : m_num_herrings_gobbled++ ; break; - case HE_GOLD : m_num_herrings_gobbled += 3 ; break; - case HE_RED : { - int n=1 + 4*getNumHerring() / MAX_HERRING_EATEN; - m_collectable.hitRedHerring(n, herring,add_info);break; + case ITEM_BANANA : m_attachment.hitBanana(item, add_info); break; + case ITEM_SILVER_COIN : m_num_items_collected++ ; break; + case ITEM_GOLD_COIN : m_num_items_collected += 3 ; break; + case ITEM_BONUS_BOX : { + int n=1 + 4*getNumItems() / MAX_ITEMS_COLLECTED; + m_collectable.hitBonusBox(n, item,add_info);break; } default : break; } // switch TYPE // Attachments and collectables are stored in the corresponding - // functions (hit{Red,Green}Herring), so only coins need to be + // functions (hit{Red,Green}Item), so only coins need to be // stored here. if(network_manager->getMode()==NetworkManager::NW_SERVER && - (type==HE_SILVER || type==HE_GOLD) ) + (type==ITEM_SILVER_COIN || type==ITEM_GOLD_COIN) ) { - race_state->herringCollected(getWorldKartId(), herring.getHerringId()); + race_state->itemCollected(getWorldKartId(), item.getItemId()); } - if ( m_num_herrings_gobbled > MAX_HERRING_EATEN ) - m_num_herrings_gobbled = MAX_HERRING_EATEN; + if ( m_num_items_collected > MAX_ITEMS_COLLECTED ) + m_num_items_collected = MAX_ITEMS_COLLECTED; -} // collectedHerring +} // collectedItem //----------------------------------------------------------------------------- // Simulates gears @@ -541,7 +541,7 @@ m_rescue_pitch = getHPR().getPitch(); m_rescue_roll = getHPR().getRoll(); RaceManager::getWorld()->getPhysics()->removeKart(this); - race_state->herringCollected(getWorldKartId(), -1, -1); + race_state->itemCollected(getWorldKartId(), -1, -1); } btQuaternion q_roll (btVector3(0.f, 1.f, 0.f), -m_rescue_roll*dt/rescue_time*M_PI/180.0f); @@ -613,8 +613,8 @@ } // neither reset nor zipper material } // if there is material - // Check if any herring was hit. - herring_manager->hitHerring(this); + // Check if any item was hit. + item_manager->hitItem(this); processSkidMarks(); Modified: trunk/supertuxkart/src/kart.hpp =================================================================== --- trunk/supertuxkart/src/kart.hpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/kart.hpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -33,7 +33,7 @@ #include "terrain_info.hpp" class SkidMark; -class Herring; +class Item; class Smoke; class SFXBase; @@ -68,7 +68,7 @@ btUprightConstraint *m_uprightConstraint; private: - int m_num_herrings_gobbled; + int m_num_items_collected; ssgSimpleState* m_smokepuff; // don't delete the following 2 vars (they're kids in the hirarchy) Smoke *m_smoke_system; @@ -130,7 +130,7 @@ { m_attachment.set(t, time_left, k); } Collectable *getCollectable () { return &m_collectable; } int getNumCollectables () const { return m_collectable.getNum();} - int getNumHerring () const { return m_num_herrings_gobbled;} + int getNumItems () const { return m_num_items_collected;} int getPosition () const { return m_race_position; } int getInitialPosition () const { return m_initial_position; } float getFinishTime () const { return m_finish_time; } @@ -211,7 +211,7 @@ virtual bool isPlayerKart () const {return false; } // addMessages gets called by world to add messages to the gui virtual void addMessages () {}; - virtual void collectedHerring (const Herring &herring, int random_attachment); + virtual void collectedItem (const Item &item, int random_attachment); virtual void reset (); virtual void handleZipper (); virtual void crashed (Kart *k); Modified: trunk/supertuxkart/src/main.cpp =================================================================== --- trunk/supertuxkart/src/main.cpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/main.cpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -99,7 +99,7 @@ //FIXME" --players n Define number of players to between 1 and 4.\n" //FIXME " --reverse Enable reverse mode\n" //FIXME " --mirror Enable mirror mode (when supported)\n" - " --herring STYLE Use STYLE as your herring style\n" + " --item STYLE Use STYLE as your item style\n" " -f, --fullscreen Fullscreen display\n" " -w, --windowed Windowed display (default)\n" " -s, --screensize WxH Set the screen size (e.g. 320x200)\n" @@ -403,9 +403,9 @@ { history->doReplayHistory(History::HISTORY_POSITION); } - else if( !strcmp(argv[i], "--herring") && i+1<argc ) + else if( !strcmp(argv[i], "--item") && i+1<argc ) { - herring_manager->setUserFilename(argv[i+1]); + item_manager->setUserFilename(argv[i+1]); } else { @@ -445,7 +445,7 @@ projectile_manager = new ProjectileManager (); collectable_manager = new CollectableManager (); callback_manager = new CallbackManager (); - herring_manager = new HerringManager (); + item_manager = new ItemManager (); attachment_manager = new AttachmentManager (); highscore_manager = new HighscoreManager (); grand_prix_manager = new GrandPrixManager (); @@ -512,7 +512,7 @@ kart_properties_manager -> loadKartData (); projectile_manager -> loadData (); collectable_manager -> loadCollectables (); - herring_manager -> loadDefaultHerrings(); + item_manager -> loadDefaultItems(); attachment_manager -> loadModels (); scene = new Scene(); Modified: trunk/supertuxkart/src/material_manager.hpp =================================================================== --- trunk/supertuxkart/src/material_manager.hpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/material_manager.hpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -48,7 +48,7 @@ void popTempMaterial (); }; -extern ssgState *fuzzy_gst, *herringbones_gst; +//extern ssgState *fuzzy_gst, *herringbones_gst; ssgState *getAppState ( char *fname ) ; extern MaterialManager *material_manager; Modified: trunk/supertuxkart/src/modes/standard_race.cpp =================================================================== --- trunk/supertuxkart/src/modes/standard_race.cpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/modes/standard_race.cpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -99,9 +99,9 @@ else World::getDefaultCollectibles(collectible_type, amount); } //----------------------------------------------------------------------------- -bool StandardRace::useRedHerring() +bool StandardRace::enableBonusBoxes() { - // in time trial mode, don't use "red herrings" + // in time trial mode, don't use bonus boxes return race_manager->getMinorMode() != RaceManager::MINOR_MODE_TIME_TRIAL; } //----------------------------------------------------------------------------- Modified: trunk/supertuxkart/src/modes/standard_race.hpp =================================================================== --- trunk/supertuxkart/src/modes/standard_race.hpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/modes/standard_race.hpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -38,7 +38,7 @@ virtual void update(float delta); virtual void restartRace(); virtual void getDefaultCollectibles(int& collectible_type, int& amount); - virtual bool useRedHerring(); + virtual bool enableBonusBoxes(); virtual std::string getInternalCode() const; }; Modified: trunk/supertuxkart/src/modes/three_strikes_battle.hpp =================================================================== --- trunk/supertuxkart/src/modes/three_strikes_battle.hpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/modes/three_strikes_battle.hpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -50,7 +50,7 @@ virtual void update(float delta); virtual void restartRace(); //virtual void getDefaultCollectibles(int& collectible_type, int& amount); - //virtual bool useRedHerring(); + //virtual bool enableBonusBoxes(); virtual bool useFastMusicNearEnd() const { return false; } virtual KartIconDisplayInfo* getKartsDisplayInfo(const RaceGUI* caller); virtual bool raceHasLaps(){ return false; } Modified: trunk/supertuxkart/src/modes/world.cpp =================================================================== --- trunk/supertuxkart/src/modes/world.cpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/modes/world.cpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -274,7 +274,7 @@ } projectile_manager->update(dt); - herring_manager->update(dt); + item_manager->update(dt); /* Routine stuff we do even when paused */ callback_manager->update(dt); @@ -426,25 +426,25 @@ } // removeKart //----------------------------------------------------------------------------- -/** Cleans up old herrings (from a previous race), removes old track specific - * herring models, and loads the actual track. +/** Cleans up old items (from a previous race), removes old track specific + * item models, and loads the actual track. */ void World::loadTrack() { - // remove old herrings (from previous race), and remove old - // track specific herring models - herring_manager->cleanup(); + // remove old items (from previous race), and remove old + // track specific item models + item_manager->cleanup(); if(race_manager->getMajorMode()== RaceManager::MAJOR_MODE_GRAND_PRIX) { try { - herring_manager->loadHerringStyle(race_manager->getHerringStyle()); + item_manager->loadItemStyle(race_manager->getItemStyle()); } catch(std::runtime_error) { - fprintf(stderr, "The grand prix '%s' contains an invalid herring style '%s'.\n", + fprintf(stderr, "The grand prix '%s' contains an invalid item style '%s'.\n", race_manager->getGrandPrix()->getName().c_str(), - race_manager->getHerringStyle().c_str()); + race_manager->getItemStyle().c_str()); fprintf(stderr, "Please fix the file '%s'.\n", race_manager->getGrandPrix()->getFilename().c_str()); } @@ -453,12 +453,12 @@ { try { - herring_manager->loadHerringStyle(m_track->getHerringStyle()); + item_manager->loadItemStyle(m_track->getItemStyle()); } catch(std::runtime_error) { - fprintf(stderr, "The track '%s' contains an invalid herring style '%s'.\n", - m_track->getName(), m_track->getHerringStyle().c_str()); + fprintf(stderr, "The track '%s' contains an invalid item style '%s'.\n", + m_track->getName(), m_track->getItemStyle().c_str()); fprintf(stderr, "Please fix the file '%s'.\n", m_track->getFilename().c_str()); } @@ -494,7 +494,7 @@ // Enable SFX again sfx_manager->resumeAll(); - herring_manager->reset(); + item_manager->reset(); projectile_manager->cleanup(); race_manager->reset(); callback_manager->reset(); Modified: trunk/supertuxkart/src/modes/world.hpp =================================================================== --- trunk/supertuxkart/src/modes/world.hpp 2008-10-29 03:59:21 UTC (rev 2391) +++ trunk/supertuxkart/src/modes/world.hpp 2008-10-29 15:55:54 UTC (rev 2392) @@ -42,7 +42,7 @@ * by the race manager on the start of each race (so a new world is created * for each race of a Grand Prix). It creates the * physics, loads the track, creates all karts, and initialises the race - * specific managers (HerringManager, ProjectilManager, highscores, ...). + * specific managers (ItemManag... [truncated message content] |
From: <au...@us...> - 2008-10-30 00:44:46
|
Revision: 2395 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2395&view=rev Author: auria Date: 2008-10-30 00:44:41 +0000 (Thu, 30 Oct 2008) Log Message: ----------- fixed autotools build with latest changes Modified Paths: -------------- trunk/supertuxkart/configure.ac trunk/supertuxkart/data/Makefile.am Modified: trunk/supertuxkart/configure.ac =================================================================== --- trunk/supertuxkart/configure.ac 2008-10-30 00:17:03 UTC (rev 2394) +++ trunk/supertuxkart/configure.ac 2008-10-30 00:44:41 UTC (rev 2395) @@ -395,7 +395,7 @@ data/Makefile \ data/fonts/Makefile \ data/grandprix/Makefile \ - data/herrings/Makefile \ + data/items/Makefile \ data/karts/Makefile \ data/models/Makefile \ data/music/Makefile \ Modified: trunk/supertuxkart/data/Makefile.am =================================================================== --- trunk/supertuxkart/data/Makefile.am 2008-10-30 00:17:03 UTC (rev 2394) +++ trunk/supertuxkart/data/Makefile.am 2008-10-30 00:44:41 UTC (rev 2395) @@ -1,10 +1,10 @@ # data/ -SUBDIRS = fonts herrings karts models music po sfx textures tracks grandprix +SUBDIRS = fonts items karts models music po sfx textures tracks grandprix pkgdatadir = $(datadir)/games/@PACKAGE@/data pkgdata_DATA = $(shell find $(srcdir) -name "*.data") \ - $(shell find $(srcdir) -name "*.herring") \ + $(shell find $(srcdir) -name "*.items") \ $(shell find $(srcdir) -name "*.projectile") \ $(shell find $(srcdir) -name "*.cup") \ $(shell find $(srcdir) -maxdepth 1 -name "*.challenge") \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <au...@us...> - 2008-10-30 02:22:02
|
Revision: 2397 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2397&view=rev Author: auria Date: 2008-10-30 01:32:04 +0000 (Thu, 30 Oct 2008) Log Message: ----------- removed 'herring' from .loc files (and thus blender editing) Modified Paths: -------------- trunk/supertuxkart/data/tracks/olivermath/olivermath.loc trunk/supertuxkart/src/track.cpp trunk/supertuxkart/src/track.hpp Modified: trunk/supertuxkart/data/tracks/olivermath/olivermath.loc =================================================================== --- trunk/supertuxkart/data/tracks/olivermath/olivermath.loc 2008-10-30 00:56:45 UTC (rev 2396) +++ trunk/supertuxkart/data/tracks/olivermath/olivermath.loc 2008-10-30 01:32:04 UTC (rev 2397) @@ -35,27 +35,27 @@ # # Herring. # -YHERRING,60,30 -YHERRING,-20,22 +GOLD,60,30 +GOLD,-20,22 -RHERRING,30,22 -GHERRING,30,18 -RHERRING,30,16 +BBOX,30,22 +BANA,30,18 +BBOX,30,16 -RHERRING,50,40 -GHERRING,30,60 -RHERRING,10,80 +BBOX,50,40 +BANA,30,60 +BBOX,10,80 -RHERRING,-5,-10 -RHERRING,-5,30 +BBOX,-5,-10 +BBOX,-5,30 -SHERRING,-19,79 -SHERRING,-19,81 -SHERRING,-21,79 -SHERRING,-21,81 +COIN,-19,79 +COIN,-19,81 +COIN,-21,79 +COIN,-21,81 -SHERRING,-30,-10 -RHERRING,-30,-12 -GHERRING,-32,-10 -YHERRING,-32,-12 -RHERRING,35,62 +COIN,-30,-10 +BBOX,-30,-12 +BANA,-32,-10 +GOLD,-32,-12 +BBOX,35,62 Modified: trunk/supertuxkart/src/track.cpp =================================================================== --- trunk/supertuxkart/src/track.cpp 2008-10-30 00:56:45 UTC (rev 2396) +++ trunk/supertuxkart/src/track.cpp 2008-10-30 01:32:04 UTC (rev 2397) @@ -1183,16 +1183,73 @@ char htype = '\0' ; + /* the first 2 are for backwards compatibility. Don't use 'herring' names in any new track */ if ( sscanf ( s, "%cHERRING,%f,%f,%f", &htype, &(loc.xyz[0]), &(loc.xyz[1]), &(loc.xyz[2]) ) == 4 ) { - item_command(&loc.xyz, htype, false) ; + ItemType type=ITEM_BANANA; + if ( htype=='Y' || htype=='y' ) { type = ITEM_GOLD_COIN ;} + if ( htype=='G' || htype=='g' ) { type = ITEM_BANANA ;} + if ( htype=='R' || htype=='r' ) { type = ITEM_BONUS_BOX ;} + if ( htype=='S' || htype=='s' ) { type = ITEM_SILVER_COIN ;} + item_command(&loc.xyz, type, false) ; } else if ( sscanf ( s, "%cHERRING,%f,%f", &htype, &(loc.xyz[0]), &(loc.xyz[1]) ) == 3 ) { - item_command (&loc.xyz, htype, true) ; + ItemType type=ITEM_BANANA; + if ( htype=='Y' || htype=='y' ) { type = ITEM_GOLD_COIN ;} + if ( htype=='G' || htype=='g' ) { type = ITEM_BANANA ;} + if ( htype=='R' || htype=='r' ) { type = ITEM_BONUS_BOX ;} + if ( htype=='S' || htype=='s' ) { type = ITEM_SILVER_COIN ;} + item_command (&loc.xyz, type, true) ; } + /* and now the new names */ + else if ( sscanf ( s, "BBOX,%f,%f,%f", + &(loc.xyz[0]), &(loc.xyz[1]), &(loc.xyz[2]) ) == 3 ) + { + item_command(&loc.xyz, ITEM_BONUS_BOX, false); + } + else if ( sscanf ( s, "BBOX,%f,%f", + &(loc.xyz[0]), &(loc.xyz[1]) ) == 2 ) + { + item_command(&loc.xyz, ITEM_BONUS_BOX, true); + } + + else if ( sscanf ( s, "BANA,%f,%f,%f", + &(loc.xyz[0]), &(loc.xyz[1]), &(loc.xyz[2]) ) == 3 ) + { + item_command(&loc.xyz, ITEM_BANANA, false); + } + + else if ( sscanf ( s, "BANA,%f,%f", + &(loc.xyz[0]), &(loc.xyz[1]) ) == 2 ) + { + item_command(&loc.xyz, ITEM_BANANA, true); + } + + else if ( sscanf ( s, "COIN,%f,%f,%f", + &(loc.xyz[0]), &(loc.xyz[1]), &(loc.xyz[2]) ) == 3 ) + { + item_command(&loc.xyz, ITEM_SILVER_COIN, false); + } + else if ( sscanf ( s, "COIN,%f,%f", + &(loc.xyz[0]), &(loc.xyz[1]) ) == 2 ) + { + item_command(&loc.xyz, ITEM_SILVER_COIN, true); + } + + else if ( sscanf ( s, "GOLD,%f,%f,%f", + &(loc.xyz[0]), &(loc.xyz[1]), &(loc.xyz[2]) ) == 3 ) + { + item_command(&loc.xyz, ITEM_GOLD_COIN, false); + } + else if ( sscanf ( s, "GOLD,%f,%f", + &(loc.xyz[0]), &(loc.xyz[1]) ) == 2 ) + { + item_command(&loc.xyz, ITEM_GOLD_COIN, true); + } + else if ( sscanf ( s, "START,%f,%f,%f", &(loc.xyz[0]), &(loc.xyz[1]), &(loc.xyz[2]) ) == 3 ) { @@ -1337,7 +1394,7 @@ } // loadTrack //----------------------------------------------------------------------------- -void Track::item_command (sgVec3 *xyz, char htype, int bNeedHeight ) +void Track::item_command (sgVec3 *xyz, int type, int bNeedHeight ) { // if only 2d coordinates are given, let the item fall from very high @@ -1345,17 +1402,12 @@ // Even if 3d data are given, make sure that the item is on the ground (*xyz)[2] = getHeight ( m_model, *xyz ) + 0.06f; - ItemType type=ITEM_BANANA; - if ( htype=='Y' || htype=='y' ) { type = ITEM_GOLD_COIN ;} - if ( htype=='G' || htype=='g' ) { type = ITEM_BANANA ;} - if ( htype=='R' || htype=='r' ) { type = ITEM_BONUS_BOX ;} - if ( htype=='S' || htype=='s' ) { type = ITEM_SILVER_COIN ;} // Some modes (e.g. time trial) don't have any bonus boxes if(type==ITEM_BONUS_BOX && !RaceManager::getWorld()->enableBonusBoxes()) return; Vec3 loc((*xyz)); - item_manager->newItem(type, loc); + item_manager->newItem((ItemType)type, loc); } // item_command // ---------------------------------------------------------------------------- Modified: trunk/supertuxkart/src/track.hpp =================================================================== --- trunk/supertuxkart/src/track.hpp 2008-10-30 00:56:45 UTC (rev 2396) +++ trunk/supertuxkart/src/track.hpp 2008-10-30 01:32:04 UTC (rev 2397) @@ -195,7 +195,7 @@ private: void loadTrack (std::string filename); - void item_command (sgVec3 *xyz, char htype, int bNeedHeight); + void item_command (sgVec3 *xyz, int item_type, int bNeedHeight); void loadDriveline (); void readDrivelineFromFile (std::vector<Vec3>& line, const std::string& file_ext ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <au...@us...> - 2008-10-30 18:40:45
|
Revision: 2403 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2403&view=rev Author: auria Date: 2008-10-30 18:40:41 +0000 (Thu, 30 Oct 2008) Log Message: ----------- cleanup in cakes to remove some missile leftovers Modified Paths: -------------- trunk/supertuxkart/data/cake.projectile trunk/supertuxkart/src/items/cake.cpp trunk/supertuxkart/src/items/cake.hpp Modified: trunk/supertuxkart/data/cake.projectile =================================================================== --- trunk/supertuxkart/data/cake.projectile 2008-10-30 04:12:38 UTC (rev 2402) +++ trunk/supertuxkart/data/cake.projectile 2008-10-30 18:40:41 UTC (rev 2403) @@ -9,7 +9,6 @@ (max-height 1.0) (force-updown 25.0) ;; force raising/lowering the homing missile if it's too low/high (max-distance 90.0) ;; maximum distance at which a kart is still followed - (max-turn-angle 65.0) ;; maximum turn angle when following a kart ) ;; EOF ;; Modified: trunk/supertuxkart/src/items/cake.cpp =================================================================== --- trunk/supertuxkart/src/items/cake.cpp 2008-10-30 04:12:38 UTC (rev 2402) +++ trunk/supertuxkart/src/items/cake.cpp 2008-10-30 18:40:41 UTC (rev 2403) @@ -24,7 +24,6 @@ float Cake::m_st_max_distance; float Cake::m_st_max_distance_squared; -float Cake::m_st_max_turn_angle; Cake::Cake (Kart *kart) : Flyable(kart, POWERUP_CAKE) { @@ -53,8 +52,7 @@ if(closest_kart != NULL && kartDistSquared < m_st_max_distance_squared && m_speed>closest_kart->getSpeed()) { m_target = (Kart*)closest_kart; - //std::cout << "aiming at " << closest_kart->getName().c_str() << std::endl; - + // calculate appropriate initial up velocity so that the // projectile lands on the aimed kart (9.8 is the gravity) const float time = sqrt(kartDistSquared) / (m_speed - closest_kart->getSpeed()/2.5f); // the division is an empirical estimation @@ -86,14 +84,6 @@ // kart is too far to be hit. so throw the projectile in a generic way, // straight ahead, without trying to hit anything in particular trans = kart->getKartHeading(pitch); - /* - std::cout << "Using generic direction because "; - - if(closest_kart == NULL) std::cout << "no closest kart was found "; - else if(!(kartDistSquared < m_st_max_distance_squared)) std::cout << closest_kart->getName().c_str() << " is too far : " << sqrt(kartDistSquared) << " (" << kartDistSquared << ")"; - if(closest_kart != NULL && !(m_speed>closest_kart->getSpeed())) std::cout << "kart is too fast "; - std::cout << std::endl; - */ } @@ -101,8 +91,7 @@ createPhysics(y_offset, m_initial_velocity, new btCylinderShape(0.5f*m_extend), true /* gravity */, true /* rotation */, &trans); - // m_body->setCollisionFlags(m_body->getCollisionFlags() | - // btCollisionObject::CF_KINEMATIC_OBJECT ); + m_body->setActivationState(DISABLE_DEACTIVATION); m_body->applyTorque( btVector3(5,-3,7) ); @@ -113,14 +102,11 @@ void Cake::init(const lisp::Lisp* lisp, ssgEntity *cake_model) { Flyable::init(lisp, cake_model, POWERUP_CAKE); - m_st_max_turn_angle = 15.0f; m_st_max_distance = 80.0f; m_st_max_distance_squared = 80.0f * 80.0f; lisp->get("max-distance", m_st_max_distance ); m_st_max_distance_squared = m_st_max_distance*m_st_max_distance; - - lisp->get("max-turn-angle", m_st_max_turn_angle); } // init // ----------------------------------------------------------------------------- Modified: trunk/supertuxkart/src/items/cake.hpp =================================================================== --- trunk/supertuxkart/src/items/cake.hpp 2008-10-30 04:12:38 UTC (rev 2402) +++ trunk/supertuxkart/src/items/cake.hpp 2008-10-30 18:40:41 UTC (rev 2403) @@ -27,7 +27,6 @@ private: static float m_st_max_distance; // maximum distance for a missile to be attracted static float m_st_max_distance_squared; - static float m_st_max_turn_angle; btVector3 m_initial_velocity; //float steerTowards(btTransform& trans, btVector3& target); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <st...@us...> - 2008-11-06 07:17:21
|
Revision: 2411 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=2411&view=rev Author: stevo14 Date: 2008-11-06 07:17:11 +0000 (Thu, 06 Nov 2008) Log Message: ----------- Added more configuration options for SFX. Potentially fixed looping music glitch. Modified Paths: -------------- trunk/supertuxkart/data/sfx/sfx.config trunk/supertuxkart/src/audio/music_ogg.cpp trunk/supertuxkart/src/audio/sfx_manager.cpp trunk/supertuxkart/src/audio/sfx_manager.hpp trunk/supertuxkart/src/audio/sfx_openal.cpp trunk/supertuxkart/src/audio/sfx_openal.hpp trunk/supertuxkart/src/camera.cpp trunk/supertuxkart/src/player_kart.cpp Modified: trunk/supertuxkart/data/sfx/sfx.config =================================================================== --- trunk/supertuxkart/data/sfx/sfx.config 2008-11-06 01:02:07 UTC (rev 2410) +++ trunk/supertuxkart/data/sfx/sfx.config 2008-11-06 07:17:11 UTC (rev 2411) @@ -1,24 +1,120 @@ ;; -*- mode: lisp -*- (sfx-config - (ugh "ugh.wav") - (winner "radio/grandprix_winner.wav") - (grab "tintagel/grab_collectable.wav") - (crash "tintagel/crash.wav") - (shot "radio/shot.wav") - (explosion "explosion.wav") - (bzzt "bzzt.wav") - (beep "radio/horn.wav") - (use_anvil "radio/slap.wav") - (use_parachute "radio/squeaky.wav") - (wee "wee.wav"); - (back_menu "tintagel/deselect_option.wav") - (select_menu "tintagel/select_option.wav"); - (move_menu "tintagel/move_option.wav") - (full "tintagel/energy_bar_full.wav") - (prestart "tintagel/pre_start_race.wav") - (start "tintagel/start_race.wav") - (missile_lock "radio/radarping.wav") - (engine "engine.wav") + (ugh + (filename "ugh.wav") ;; The name of the wav file associated with this Sound effect + (volume 1.0 ) ;; Range: 0.0 (silent) to 1.0 (full volume) + (roll-off 0.1 ) ;; The ammount of volume that is subtracted for every unit + ;; of distance between the sound and the listener. + (positional 0 ) ;; 1 = true, 0 = false + ) + (winner + (filename "radio/grandprix_winner.wav") + (volume 1.0 ) + (roll-off 0.1 ) + (positional 0 ) + ) + (grab + (filename "tintagel/grab_collectable.wav") + (volume 1.0 ) + (roll-off 0.1 ) + (positional 0 ) + ) + (bzzt + (filename "bzzt.wav") + (volume 1.0 ) + (roll-off 0.1 ) + (positional 0 ) + ) + (wee + (filename "wee.wav") + (volume 1.0 ) + (roll-off 0.1 ) + (positional 0 ) + ) + (back_menu + (filename "tintagel/deselect_option.wav") + (volume 1.0 ) + (roll-off 0.1 ) + (positional 0 ) + ) + (select_menu + (filename "tintagel/select_option.wav") + (volume 1.0 ) + (roll-off 0.1 ) + (positional 0 ) + ) + (move_menu + (filename "tintagel/move_option.wav") + (volume 1.0 ) + (roll-off 0.1 ) + (positional 0 ) + ) + (full + (filename "tintagel/energy_bar_full.wav") + (volume 1.0 ) + (roll-off 0.1 ) + (positional 0 ) + ) + (prestart + (filename "tintagel/pre_start_race.wav") + (volume 1.0 ) + (roll-off 0.1 ) + (positional 0 ) + ) + (start + (filename "tintagel/start_race.wav") + (volume 1.0 ) + (roll-off 0.1 ) + (positional 0 ) + ) + (missile_lock + (filename "radio/radarping.wav") + (volume 1.0 ) + (roll-off 0.1 ) + (positional 0 ) + ) + (engine + (filename "engine.wav") + (volume 1.0 ) + (roll-off 0.2 ) + (positional 1 ) + ) + (crash + (filename "tintagel/crash.wav") + (volume 1.0 ) + (roll-off 0.5 ) + (positional 1 ) + ) + (shot + (filename "radio/shot.wav") + (volume 1.0 ) + (roll-off 0.1 ) + (positional 1 ) + ) + (explosion + (filename "explosion.wav") + (volume 1.0 ) + (roll-off 0.05 ) + (positional 1 ) + ) + (beep + (filename "radio/horn.wav") + (volume 1.0 ) + (roll-off 0.2 ) + (positional 1 ) + ) + (use_anvil + (filename "radio/slap.wav") + (volume 1.0 ) + (roll-off 0.5 ) + (positional 1 ) + ) + (use_parachute + (filename "radio/squeaky.wav") + (volume 1.0 ) + (roll-off 0.5 ) + (positional 1 ) + ) ) ;; EOF ;; Modified: trunk/supertuxkart/src/audio/music_ogg.cpp =================================================================== --- trunk/supertuxkart/src/audio/music_ogg.cpp 2008-11-06 01:02:07 UTC (rev 2410) +++ trunk/supertuxkart/src/audio/music_ogg.cpp 2008-11-06 07:17:11 UTC (rev 2411) @@ -249,12 +249,18 @@ if(!check()) return; active = streamIntoBuffer(buffer); + if(!active) + { + // no more data. Seek to beginning (causes the sound to loop) + ov_time_seek(&m_oggStream, 0); + active = streamIntoBuffer(buffer);//now there really should be data + //fprintf(stdout,"Music buffer under-run.\n"); + } + alSourceQueueBuffers(m_soundSource, 1, &buffer); - if(!check()) return; } - // check for underrun if (active) { // we have data, so we should be playing... @@ -262,15 +268,14 @@ alGetSourcei(m_soundSource, AL_SOURCE_STATE, &state); if (state != AL_PLAYING) { - fprintf(stderr,"WARNING: Alsa source state: %d\n", state); + fprintf(stderr,"WARNING: Music not playing when it should be. Source state: %d\n", state); alGetSourcei(m_soundSource, AL_BUFFERS_PROCESSED, &processed); alSourcePlay(m_soundSource); } } else { - // no more data. Seek to beginning -> loop - ov_time_seek(&m_oggStream, 0); + fprintf(stderr,"WARNING: Attempt to stream music into buffer failed twice in a row.\n"); } } // update Modified: trunk/supertuxkart/src/audio/sfx_manager.cpp =================================================================== --- trunk/supertuxkart/src/audio/sfx_manager.cpp 2008-11-06 01:02:07 UTC (rev 2410) +++ trunk/supertuxkart/src/audio/sfx_manager.cpp 2008-11-06 07:17:11 UTC (rev 2411) @@ -39,6 +39,7 @@ #include "user_config.hpp" #include "file_manager.hpp" #include "translation.hpp" +#include "race_manager.hpp" SFXManager* sfx_manager= NULL; @@ -49,6 +50,9 @@ // The sound manager initialises OpenAL m_initialized = sound_manager->initialized(); m_sfx_buffers.resize(NUM_SOUNDS); + m_sfx_positional.resize(NUM_SOUNDS); + m_sfx_rolloff.resize(NUM_SOUNDS); + m_sfx_gain.resize(NUM_SOUNDS); if(!m_initialized) return; loadSfx(); } // SoundManager @@ -119,9 +123,18 @@ void SFXManager::loadSingleSfx(const lisp::Lisp* lisp, const char *name, SFXType item) { - std::string wav; - lisp->get(name, wav); + const lisp::Lisp* sfxLisp = lisp->getLisp(name); + std::string wav; float rolloff = 0.1f; float gain = 1.0f; int positional = 0; + sfxLisp->get("filename", wav ); + sfxLisp->get("roll-off", rolloff ); + sfxLisp->get("positional", positional ); + sfxLisp->get("volume", gain ); + + m_sfx_rolloff[item] = rolloff; + m_sfx_positional[item] = positional; + m_sfx_gain[item] = gain; + std::string path = file_manager->getSFXFile(wav); alGenBuffers(1, &(m_sfx_buffers[item])); @@ -181,7 +194,11 @@ */ SFXBase *SFXManager::newSFX(SFXType id) { - SFXBase *p=new SFXOpenAL(m_sfx_buffers[id]); + bool positional = false; + if(race_manager->getNumLocalPlayers() < 2) + positional = (bool)m_sfx_positional[id]; + + SFXBase *p=new SFXOpenAL(m_sfx_buffers[id], positional, m_sfx_rolloff[id], m_sfx_gain[id]); m_all_sfx.push_back(p); return p; } // newSFX Modified: trunk/supertuxkart/src/audio/sfx_manager.hpp =================================================================== --- trunk/supertuxkart/src/audio/sfx_manager.hpp 2008-11-06 01:02:07 UTC (rev 2410) +++ trunk/supertuxkart/src/audio/sfx_manager.hpp 2008-11-06 07:17:11 UTC (rev 2411) @@ -63,6 +63,9 @@ /** The buffers for all sound effects. These are shared among all * instances of SFXOpenal. */ std::vector<ALuint> m_sfx_buffers; + std::vector<int> m_sfx_positional; + std::vector<float> m_sfx_rolloff; + std::vector<float> m_sfx_gain; std::vector<SFXBase*> m_all_sfx; bool m_initialized; void loadSfx(); Modified: trunk/supertuxkart/src/audio/sfx_openal.cpp =================================================================== --- trunk/supertuxkart/src/audio/sfx_openal.cpp 2008-11-06 01:02:07 UTC (rev 2410) +++ trunk/supertuxkart/src/audio/sfx_openal.cpp 2008-11-06 07:17:11 UTC (rev 2411) @@ -37,11 +37,12 @@ #include "file_manager.hpp" #include "user_config.hpp" -SFXOpenAL::SFXOpenAL(ALuint buffer) : SFXBase() +SFXOpenAL::SFXOpenAL(ALuint buffer, bool positional, float rolloff, float gain) : SFXBase() { m_soundBuffer = buffer; m_soundSource = 0; m_ok = false; + m_positional = false; alGenSources(1, &m_soundSource ); if(!SFXManager::checkError("generating a source")) return; @@ -50,9 +51,14 @@ alSource3f(m_soundSource, AL_POSITION, 0.0, 0.0, 0.0); alSource3f(m_soundSource, AL_VELOCITY, 0.0, 0.0, 0.0); alSource3f(m_soundSource, AL_DIRECTION, 0.0, 0.0, 0.0); - alSourcef (m_soundSource, AL_ROLLOFF_FACTOR, 0.1f ); - alSourcei (m_soundSource, AL_SOURCE_RELATIVE, AL_FALSE );//sound position is *not* relative to the camera. + alSourcef (m_soundSource, AL_ROLLOFF_FACTOR, rolloff ); + alSourcef (m_soundSource, AL_GAIN, gain ); + if(positional) + alSourcei (m_soundSource, AL_SOURCE_RELATIVE, AL_FALSE); + else + alSourcei (m_soundSource, AL_SOURCE_RELATIVE, AL_TRUE); + m_positional = positional; m_ok = SFXManager::checkError("setting up the source"); } // SFXOpenAL @@ -146,7 +152,7 @@ */ void SFXOpenAL::position(const Vec3 &position) { - if(!sfx_manager->sfxAllowed()||!m_ok) return; + if(!sfx_manager->sfxAllowed()||!m_ok||!m_positional) return; alSource3f(m_soundSource, AL_POSITION, (float)position.getX(), (float)position.getY(), (float)position.getZ()); Modified: trunk/supertuxkart/src/audio/sfx_openal.hpp =================================================================== --- trunk/supertuxkart/src/audio/sfx_openal.hpp 2008-11-06 01:02:07 UTC (rev 2410) +++ trunk/supertuxkart/src/audio/sfx_openal.hpp 2008-11-06 07:17:11 UTC (rev 2411) @@ -35,8 +35,9 @@ ALuint m_soundBuffer; // Buffers hold sound data. ALuint m_soundSource; // Sources are points emitting sound. bool m_ok; + bool m_positional; public: - SFXOpenAL(ALuint buffer); + SFXOpenAL(ALuint buffer, bool positional, float rolloff, float gain); virtual ~SFXOpenAL(); virtual void play(); virtual void loop(); Modified: trunk/supertuxkart/src/camera.cpp =================================================================== --- trunk/supertuxkart/src/camera.cpp 2008-11-06 01:02:07 UTC (rev 2410) +++ trunk/supertuxkart/src/camera.cpp 2008-11-06 07:17:11 UTC (rev 2411) @@ -207,7 +207,8 @@ m_xyz = c.getXYZ(); m_hpr = c.getHPR(); m_context -> setCamera(&c.toSgCoord()); - sound_manager->positionListener(m_xyz, kart_xyz - m_xyz); + if(race_manager->getNumLocalPlayers() < 2) + sound_manager->positionListener(m_xyz, kart_xyz - m_xyz); } // update //----------------------------------------------------------------------------- Modified: trunk/supertuxkart/src/player_kart.cpp =================================================================== --- trunk/supertuxkart/src/player_kart.cpp 2008-11-06 01:02:07 UTC (rev 2410) +++ trunk/supertuxkart/src/player_kart.cpp 2008-11-06 07:17:11 UTC (rev 2411) @@ -171,13 +171,6 @@ if(!history->replayHistory()) steer(dt, m_steer_val); - //position the generic sounds at the kart's position - m_bzzt_sound->position(getXYZ()); - m_wee_sound->position(getXYZ()); - m_ugh_sound->position(getXYZ()); - m_grab_sound->position(getXYZ()); - m_full_sound->position(getXYZ()); - if(RaceManager::getWorld()->isStartPhase()) { if(m_controls.accel!=0.0 || m_controls.brake!=false || This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |