Update of /cvsroot/super-tux/supertux/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16152/src
Modified Files:
player.cpp
Log Message:
changed duck mode a bit so that you can only jump a little bit when being ducked and that you can unduck in air
Index: player.cpp
===================================================================
RCS file: /cvsroot/super-tux/supertux/src/player.cpp,v
retrieving revision 1.102
retrieving revision 1.103
diff -u -d -r1.102 -r1.103
--- player.cpp 18 May 2004 16:43:37 -0000 1.102
+++ player.cpp 18 May 2004 16:57:57 -0000 1.103
@@ -392,11 +392,15 @@
// Press jump key
if(input.up == DOWN && can_jump && on_ground())
{
- // jump higher if we are running
- if (fabs(physic.get_velocity_x()) > MAX_WALK_XM)
- physic.set_velocity_y(5.8);
- else
- physic.set_velocity_y(5.2);
+ if(duck) { // only jump a little bit when in duck mode {
+ physic.set_velocity_y(3);
+ } else {
+ // jump higher if we are running
+ if (fabs(physic.get_velocity_x()) > MAX_WALK_XM)
+ physic.set_velocity_y(5.8);
+ else
+ physic.set_velocity_y(5.2);
+ }
--base.y;
jumping = true;
@@ -492,13 +496,21 @@
// changing base size confuses collision otherwise
old_base = previous_base = base;
}
- else if(input.down == UP && size == BIG && duck && physic.get_velocity_y() == 0 && on_ground())
+ else if(input.down == UP && size == BIG && duck)
{
- duck = false;
+ // try if we can really unduck
base.y -= 32;
base.height = 64;
- // changing base size confuses collision otherwise
- old_base = previous_base = base;
+ // when unducking in air we need some space to do so
+ if(on_ground() || !collision_object_map(base)) {
+ duck = false;
+ // changing base size confuses collision otherwise
+ old_base = previous_base = base;
+ } else {
+ // undo the ducking changes
+ base.y += 32;
+ base.height = 32;
+ }
}
}
|