[Super-tux-commit] supertux/src badguy.cpp,1.88,1.89 badguy.h,1.46,1.47
Brought to you by:
wkendrick
From: Ryan F. <sik...@us...> - 2004-05-25 02:51:39
|
Update of /cvsroot/super-tux/supertux/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21769/src Modified Files: badguy.cpp badguy.h Log Message: - beginnings of a wingling Index: badguy.h =================================================================== RCS file: /cvsroot/super-tux/supertux/src/badguy.h,v retrieving revision 1.46 retrieving revision 1.47 diff -u -d -r1.46 -r1.47 --- badguy.h 24 May 2004 22:36:56 -0000 1.46 +++ badguy.h 25 May 2004 02:51:30 -0000 1.47 @@ -49,6 +49,7 @@ BAD_FLYINGSNOWBALL, BAD_SPIKY, BAD_SNOWBALL, + BAD_WINGLING, NUM_BadGuyKinds }; @@ -144,6 +145,7 @@ void action_flyingsnowball(double frame_ratio); void action_spiky(double frame_ratio); void action_snowball(double frame_ratio); + void action_wingling(double frame_ratio); /** initializes the badguy (when he appears on screen) */ void activate(Direction direction); Index: badguy.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/badguy.cpp,v retrieving revision 1.88 retrieving revision 1.89 diff -u -d -r1.88 -r1.89 --- badguy.cpp 24 May 2004 22:36:56 -0000 1.88 +++ badguy.cpp 25 May 2004 02:51:30 -0000 1.89 @@ -74,8 +74,10 @@ Sprite* img_snowball_right; Sprite* img_snowball_squished_left; Sprite* img_snowball_squished_right; +Sprite* img_wingling_left; #define BADGUY_WALK_SPEED .8f +#define WINGLING_FLY_SPEED 1.6f BadGuyKind badguykind_from_string(const std::string& str) { @@ -99,6 +101,8 @@ return BAD_SPIKY; else if (str == "snowball" || str == "bsod") // was bsod in old maps return BAD_SNOWBALL; + else if (str == "wingling") + return BAD_WINGLING; else { printf("Couldn't convert badguy: '%s'\n", str.c_str()); @@ -140,6 +144,9 @@ case BAD_SNOWBALL: return "snowball"; break; + case BAD_WINGLING: + return "wingling"; + break; default: return "snowball"; } @@ -271,6 +278,10 @@ } else if(kind == BAD_SNOWBALL) { physic.set_velocity(dirsign * BADGUY_WALK_SPEED, 0); set_sprite(img_snowball_left, img_snowball_right); + } else if(kind == BAD_WINGLING) { + physic.set_velocity(dirsign * WINGLING_FLY_SPEED, 0); + physic.enable_gravity(false); + set_sprite(img_wingling_left, img_wingling_left); } base.x = start_position.x; @@ -766,6 +777,30 @@ } void +BadGuy::action_wingling(double elapsed_time) +{ + if (dying != DYING_NOT) + physic.enable_gravity(true); + else + { + Player& tux = *World::current()->get_tux(); + + 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); + } + + physic.apply(elapsed_time, base.x, base.y); + + + // Handle dying timer: + if (dying == DYING_SQUISHED && !timer.check()) + remove_me(); +} + + +void BadGuy::action(float elapsed_time) { float scroll_x = World::current()->camera->get_translation().x; @@ -864,6 +899,11 @@ case BAD_SNOWBALL: action_snowball(elapsed_time); break; + + case BAD_WINGLING: + action_wingling(elapsed_time); + break; + default: break; } @@ -1040,7 +1080,12 @@ squish_me(player); set_sprite(img_snowball_squished_left, img_snowball_squished_right); return; + } else if(kind == BAD_WINGLING) { + squish_me(player); + set_sprite(img_wingling_left, img_wingling_left); } + + } void @@ -1123,6 +1168,7 @@ case CO_BADGUY: pbad_c = (BadGuy*) p_c_object; + /* If we're a kicked mriceblock, kill [almost] any badguys we hit */ if(kind == BAD_MRICEBLOCK && mode == KICK && kind != BAD_FLAME && kind != BAD_BOMB && kind != BAD_STALACTITE) @@ -1168,7 +1214,11 @@ /* When enemies run into eachother, make them change directions */ else { - // Jumpy, fish, flame, stalactites are exceptions + // Wingling doesn't interact with other badguys + if (pbad_c->kind == BAD_WINGLING || kind == BAD_WINGLING) + break; + + // Jumpy, fish, flame, stalactites, wingling are exceptions if (pbad_c->kind == BAD_JUMPY || pbad_c->kind == BAD_FLAME || pbad_c->kind == BAD_STALACTITE || pbad_c->kind == BAD_FISH) break; @@ -1283,6 +1333,7 @@ img_snowball_right = sprite_manager->load("snowball-right"); img_snowball_squished_left = sprite_manager->load("snowball-squished-left"); img_snowball_squished_right = sprite_manager->load("snowball-squished-right"); + img_wingling_left = sprite_manager->load("wingling-left"); } void free_badguy_gfx() |