[Super-tux-commit] supertux/src player.cpp,1.102,1.103
Brought to you by:
wkendrick
From: Matze B. <mat...@us...> - 2004-05-18 16:58:08
|
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; + } } } |