[Super-tux-commit] supertux/src player.cpp,1.101,1.102 world.cpp,1.97,1.98 world.h,1.40,1.41
Brought to you by:
wkendrick
From: Matze B. <mat...@us...> - 2004-05-18 16:43:46
|
Update of /cvsroot/super-tux/supertux/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11720/src Modified Files: player.cpp world.cpp world.h Log Message: fixed butt jump to work even when up-key is not pressed, added a little jump after breaking a brick. The thing still has problems with breaking the correct fix, as the used position is not the actual one, but the target position for the next frame, so you can break some bricks that aren't reachable normally Index: player.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/player.cpp,v retrieving revision 1.101 retrieving revision 1.102 diff -u -d -r1.101 -r1.102 --- player.cpp 18 May 2004 14:16:37 -0000 1.101 +++ player.cpp 18 May 2004 16:43:37 -0000 1.102 @@ -390,32 +390,27 @@ Player::handle_vertical_input() { // Press jump key - if(input.up == DOWN && can_jump) + if(input.up == DOWN && can_jump && on_ground()) { - if (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); + // 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; - can_jump = false; - if (size == SMALL) - play_sound(sounds[SND_JUMP], SOUND_CENTER_SPEAKER); - else - play_sound(sounds[SND_BIGJUMP], SOUND_CENTER_SPEAKER); - } + --base.y; + jumping = true; + can_jump = false; + if (size == SMALL) + play_sound(sounds[SND_JUMP], SOUND_CENTER_SPEAKER); + else + play_sound(sounds[SND_BIGJUMP], SOUND_CENTER_SPEAKER); } // Let go of jump key - else if(input.up == UP && jumping) + else if(input.up == UP && jumping && physic.get_velocity_y() > 0) { jumping = false; - if(physic.get_velocity_y() > 0) { - physic.set_velocity_y(0); - } + physic.set_velocity_y(0); } if (input.down == DOWN && !on_ground() && !duck) @@ -424,15 +419,15 @@ butt_jump = false; if (input.down == DOWN && butt_jump && on_ground()) { - if (isbrick(base.x, base.y + base.height)) - World::current()->trybreakbrick(base.x, base.y + base.height, false); - if (isbrick(base.x + base.width, base.y + base.height)) - World::current()->trybreakbrick(base.x + base.width, base.y + base.height, false); - + if(World::current()->trybreakbrick(base.x, base.y + base.height, false) + || World::current()->trybreakbrick( + base.x + base.width, base.y + base.height, false)) { + // make tux jumping a little bit again after breaking the bricks + physic.set_velocity_y(2); + } butt_jump = false; } - if ( (issolid(base.x + base.width / 2, base.y + base.height + 64) || issolid(base.x + 1, base.y + base.height + 64) || issolid(base.x + base.width - 1, base.y + base.height + 64)) @@ -457,13 +452,9 @@ if (on_ground() && input.up == UP) can_jump = true; - if (input.up == DOWN || (input.up == UP && jumping)) - { - handle_vertical_input(); - } + handle_vertical_input(); /* Shoot! */ - if (input.fire == DOWN && input.old_fire == UP && got_power != NONE_POWER) { World::current()->add_bullet(base.x, base.y, physic.get_velocity_x(), dir); Index: world.h =================================================================== RCS file: /cvsroot/super-tux/supertux/src/world.h,v retrieving revision 1.40 retrieving revision 1.41 diff -u -d -r1.40 -r1.41 --- world.h 16 May 2004 01:36:54 -0000 1.40 +++ world.h 18 May 2004 16:43:37 -0000 1.41 @@ -111,7 +111,7 @@ void trygrabdistro(float x, float y, int bounciness); /** Try to break the brick at the given coordinates */ - void trybreakbrick(float x, float y, bool small); + bool trybreakbrick(float x, float y, bool small); /** Try to get the content out of a bonus box, thus emptying it */ void tryemptybox(float x, float y, Direction col_side); Index: world.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/world.cpp,v retrieving revision 1.97 retrieving revision 1.98 diff -u -d -r1.97 -r1.98 --- world.cpp 18 May 2004 14:16:38 -0000 1.97 +++ world.cpp 18 May 2004 16:43:37 -0000 1.98 @@ -643,7 +643,7 @@ } /* Break a brick: */ -void +bool World::trybreakbrick(float x, float y, bool small) { Level* plevel = get_level(); @@ -677,6 +677,7 @@ play_sound(sounds[SND_DISTRO], SOUND_CENTER_SPEAKER); player_status.score = player_status.score + SCORE_DISTRO; player_status.distros++; + return true; } else if (!small) { @@ -691,8 +692,12 @@ /* Get some score: */ play_sound(sounds[SND_BRICK], SOUND_CENTER_SPEAKER); player_status.score = player_status.score + SCORE_BRICK; + + return true; } } + + return false; } /* Empty a box: */ |