[Super-tux-commit] supertux/src badguy.cpp,1.91,1.92 badguy.h,1.47,1.48
Brought to you by:
wkendrick
From: Ryan F. <sik...@us...> - 2004-05-25 19:41:58
|
Update of /cvsroot/super-tux/supertux/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9629 Modified Files: badguy.cpp badguy.h Log Message: - some wingling tweaks Index: badguy.h =================================================================== RCS file: /cvsroot/super-tux/supertux/src/badguy.h,v retrieving revision 1.47 retrieving revision 1.48 diff -u -d -r1.47 -r1.48 --- badguy.h 25 May 2004 02:51:30 -0000 1.47 +++ badguy.h 25 May 2004 19:41:48 -0000 1.48 @@ -102,6 +102,7 @@ bool removable; bool seen; int squishcount; /// number of times this enemy was squiched + Vector target; // Target that badguy is aiming for (wingling uses this) Timer timer; Vector start_position; Physic physic; Index: badguy.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/badguy.cpp,v retrieving revision 1.91 retrieving revision 1.92 diff -u -d -r1.91 -r1.92 --- badguy.cpp 25 May 2004 10:38:52 -0000 1.91 +++ badguy.cpp 25 May 2004 19:41:47 -0000 1.92 @@ -201,6 +201,7 @@ dir = LEFT; seen = false; animation_offset = 0; + target.x = target.y = -1; sprite_left = sprite_right = 0; physic.reset(); frozen_timer.init(true); @@ -244,6 +245,7 @@ { mode = NORMAL; animation_offset = 0; + target.x = target.y = -1; physic.reset(); frozen_timer.init(true); timer.init(true); @@ -791,11 +793,19 @@ else { Player& tux = *World::current()->get_tux(); + int dirsign = physic.get_velocity_x() < 0 ? -1 : 1; - if (fabsf(tux.base.x - base.x) < 200 && base.y < tux.base.y && tux.dying == DYING_NOT) - physic.set_velocity(-2.0f, -2.0f); - else - physic.set_velocity(-WINGLING_FLY_SPEED, 0); + if (fabsf(tux.base.x - base.x) < 150 && base.y < tux.base.y && tux.dying == DYING_NOT) + { + if (target.x < 0 && target.y < 0) + { + target.x = tux.base.x; + target.y = tux.base.y; + physic.set_velocity(dirsign * 1.5f, -2.25f); + } + } + else if (base.y >= target.y - 16) + physic.set_velocity(dirsign * WINGLING_FLY_SPEED, 0); } physic.apply(elapsed_time, base.x, base.y); @@ -803,7 +813,9 @@ // Handle dying timer: if (dying == DYING_SQUISHED && !timer.check()) - remove_me(); + remove_me(); + + // TODO: Winglings should be removed after flying off the screen } |