[Super-tux-commit] supertux/src badguy.cpp,1.92,1.93 badguy.h,1.48,1.49
Brought to you by:
wkendrick
From: Ryan F. <sik...@us...> - 2004-05-25 21:21:34
|
Update of /cvsroot/super-tux/supertux/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31209/src Modified Files: badguy.cpp badguy.h Log Message: - added walking tree enemy. still needs some work Index: badguy.h =================================================================== RCS file: /cvsroot/super-tux/supertux/src/badguy.h,v retrieving revision 1.48 retrieving revision 1.49 diff -u -d -r1.48 -r1.49 --- badguy.h 25 May 2004 19:41:48 -0000 1.48 +++ badguy.h 25 May 2004 21:21:22 -0000 1.49 @@ -50,6 +50,7 @@ BAD_SPIKY, BAD_SNOWBALL, BAD_WINGLING, + BAD_WALKINGTREE, NUM_BadGuyKinds }; @@ -82,7 +83,10 @@ FISH_WAIT, FLY_UP, - FLY_DOWN + FLY_DOWN, + + BGM_BIG, + BGM_SMALL }; public: DyingType dying; @@ -147,6 +151,7 @@ void action_spiky(double frame_ratio); void action_snowball(double frame_ratio); void action_wingling(double frame_ratio); + void action_walkingtree(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.92 retrieving revision 1.93 diff -u -d -r1.92 -r1.93 --- badguy.cpp 25 May 2004 19:41:47 -0000 1.92 +++ badguy.cpp 25 May 2004 21:21:22 -0000 1.93 @@ -75,6 +75,8 @@ Sprite* img_snowball_squished_left; Sprite* img_snowball_squished_right; Sprite* img_wingling_left; +Sprite* img_walkingtree_left; +Sprite* img_walkingtree_left_small; #define BADGUY_WALK_SPEED .8f #define WINGLING_FLY_SPEED 1.6f @@ -103,6 +105,8 @@ return BAD_SNOWBALL; else if (str == "wingling") return BAD_WINGLING; + else if (str == "walkingtree") + return BAD_WALKINGTREE; else { printf("Couldn't convert badguy: '%s'\n", str.c_str()); @@ -147,6 +151,8 @@ case BAD_WINGLING: return "wingling"; break; + case BAD_WALKINGTREE: + return "walkingtree"; default: return "snowball"; } @@ -291,6 +297,13 @@ physic.set_velocity(dirsign * WINGLING_FLY_SPEED, 0); physic.enable_gravity(false); set_sprite(img_wingling_left, img_wingling_left); + } else if (kind == BAD_WALKINGTREE) { + // TODO: why isn't the height/width being set properly in set_sprite? + physic.set_velocity(dirsign * BADGUY_WALK_SPEED, 0); + mode = BGM_BIG; + set_sprite(img_walkingtree_left, img_walkingtree_left); + base.width = 66; + base.height = 66; } base.x = start_position.x; @@ -818,6 +831,23 @@ // TODO: Winglings should be removed after flying off the screen } +void +BadGuy::action_walkingtree(double elapsed_time) +{ + if (dying == DYING_NOT) + check_horizontal_bump(); + + fall(); + + physic.apply(elapsed_time, base.x, base.y); + if (dying != DYING_FALLING) + collision_swept_object_map(&old_base,&base); + + // Handle dying timer: + if (dying == DYING_SQUISHED && !timer.check()) + remove_me(); +} + void BadGuy::action(float elapsed_time) @@ -923,6 +953,10 @@ action_wingling(elapsed_time); break; + case BAD_WALKINGTREE: + action_walkingtree(elapsed_time); + break; + default: break; } @@ -1102,6 +1136,25 @@ } else if(kind == BAD_WINGLING) { squish_me(player); set_sprite(img_wingling_left, img_wingling_left); + } else if(kind == BAD_WALKINGTREE) { + if (mode == BGM_BIG) + { + set_sprite(img_walkingtree_left_small, img_walkingtree_left_small); + physic.set_velocity_x(physic.get_velocity_x() * 1.1); + // XXX magic number: 66 is BGM_BIG height + base.y += 66 - base.height; + + player->base.y = base.y - player->base.height - 2; + make_player_jump(player); + + World::current()->add_score(Vector(base.x, base.y), + 25 * player_status.score_multiplier); + player_status.score_multiplier++; + + mode = BGM_SMALL; + } + else + squish_me(player); } @@ -1353,6 +1406,8 @@ 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"); + img_walkingtree_left = sprite_manager->load("walkingtree-left"); + img_walkingtree_left_small = sprite_manager->load("walkingtree-left-small"); } void free_badguy_gfx() |