[Super-tux-commit] supertux/src badguy.cpp,1.71,1.72 badguy.h,1.39,1.40 player.cpp,1.93,1.94
Brought to you by:
wkendrick
From: Ricardo C. <rm...@us...> - 2004-05-13 12:44:48
|
Update of /cvsroot/super-tux/supertux/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28762/src Modified Files: badguy.cpp badguy.h player.cpp Log Message: Improved frozen behavior. Still isn't perfect, enemies don't fall right away you kill'em. Index: player.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/player.cpp,v retrieving revision 1.93 retrieving revision 1.94 diff -u -d -r1.93 -r1.94 --- player.cpp 12 May 2004 17:56:33 -0000 1.93 +++ player.cpp 13 May 2004 12:44:36 -0000 1.94 @@ -673,14 +673,12 @@ kill(SHRINK); } else - { - pbad_c->dying = DYING_FALLING; - play_sound(sounds[SND_FALL], SOUND_CENTER_SPEAKER); - World::current()->add_score(pbad_c->base.x, - pbad_c->base.y, - 25 * player_status.score_multiplier); - } + pbad_c->kill_me(20); } + else if (pbad_c->frozen_timer.check() && (pbad_c->kind == BAD_MRBOMB + || pbad_c->kind == BAD_JUMPY || pbad_c->kind == BAD_FISH + || pbad_c->kind == BAD_SPIKY)) + pbad_c->kill_me(20); else { if (!invincible_timer.started()) Index: badguy.h =================================================================== RCS file: /cvsroot/super-tux/supertux/src/badguy.h,v retrieving revision 1.39 retrieving revision 1.40 diff -u -d -r1.39 -r1.40 --- badguy.h 12 May 2004 17:56:33 -0000 1.39 +++ badguy.h 13 May 2004 12:44:35 -0000 1.40 @@ -92,11 +92,12 @@ Direction dir; + Timer frozen_timer; // gets frozen when a ice shot hits it + private: bool removable; bool seen; int squishcount; /// number of times this enemy was squiched - Timer frozen_timer; // gets frozen when a ice shot hits it Timer timer; Physic physic; Index: badguy.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/badguy.cpp,v retrieving revision 1.71 retrieving revision 1.72 diff -u -d -r1.71 -r1.72 --- badguy.cpp 12 May 2004 17:56:33 -0000 1.71 +++ badguy.cpp 13 May 2004 12:44:28 -0000 1.72 @@ -42,8 +42,11 @@ Sprite* img_jumpy_left_up; Sprite* img_jumpy_left_down; Sprite* img_jumpy_left_middle; +Sprite* img_jumpy_left_iced; Sprite* img_mrbomb_left; Sprite* img_mrbomb_right; +Sprite* img_mrbomb_iced_left; +Sprite* img_mrbomb_iced_right; Sprite* img_mrbomb_ticking_left; Sprite* img_mrbomb_ticking_right; Sprite* img_mrbomb_explosion; @@ -52,6 +55,8 @@ Sprite* img_flame; Sprite* img_fish; Sprite* img_fish_down; +Sprite* img_fish_iced; +Sprite* img_fish_iced_down; Sprite* img_bouncingsnowball_left; Sprite* img_bouncingsnowball_right; Sprite* img_bouncingsnowball_squished; @@ -59,6 +64,8 @@ Sprite* img_flyingsnowball_squished; Sprite* img_spiky_left; Sprite* img_spiky_right; +Sprite* img_spiky_iced_left; +Sprite* img_spiky_iced_right; Sprite* img_snowball_left; Sprite* img_snowball_right; Sprite* img_snowball_squished_left; @@ -377,6 +384,12 @@ void BadGuy::action_jumpy(double frame_ratio) { + if(frozen_timer.check()) + { + set_sprite(img_jumpy_left_iced, img_jumpy_left_iced); + return; + } + const float vy = physic.get_velocity_y(); // XXX: These tests *should* use location from ground, not velocity @@ -420,6 +433,12 @@ void BadGuy::action_mrbomb(double frame_ratio) { + if(frozen_timer.check()) + { + set_sprite(img_mrbomb_iced_left, img_mrbomb_iced_right); + return; + } + if (dying == DYING_NOT) check_horizontal_bump(true); @@ -523,6 +542,16 @@ void BadGuy::action_fish(double frame_ratio) { + if(frozen_timer.check()) + { + if(physic.get_velocity_y() < 0) + set_sprite(img_fish_iced_down, img_fish_iced_down); + else + set_sprite(img_fish_iced, img_fish_iced); + + return; + } + static const float JUMPV = 6; static const int WAITTIME = 1000; @@ -630,6 +659,12 @@ void BadGuy::action_spiky(double frame_ratio) { + if(frozen_timer.check()) + { + set_sprite(img_spiky_iced_left, img_spiky_iced_right); + return; + } + if (dying == DYING_NOT) check_horizontal_bump(); @@ -684,9 +719,6 @@ if(!seen) return; - if(frozen_timer.check()) - return; - switch (kind) { case BAD_MRICEBLOCK: @@ -910,7 +942,7 @@ void BadGuy::kill_me(int score) { - if(kind == BAD_BOMB || kind == BAD_STALACTITE || kind == BAD_FLAME) + if(kind == BAD_BOMB) return; dying = DYING_FALLING; @@ -963,9 +995,19 @@ pbullet_c = (Bullet*) p_c_object; if(pbullet_c->kind == FIRE_BULLET) + { + if(kind == BAD_MRICEBLOCK || kind == BAD_STALACTITE || + kind == BAD_FISH || kind == BAD_BOUNCINGSNOWBALL || + kind == BAD_FLYINGSNOWBALL || kind == BAD_FLYINGSNOWBALL) kill_me(10); + } else if(pbullet_c->kind == ICE_BULLET) - frozen_timer.start(FROZEN_TIME); + { + if(kind == BAD_FLAME) + kill_me(10); + else + frozen_timer.start(FROZEN_TIME); + } break; case CO_BADGUY: @@ -1100,8 +1142,11 @@ img_jumpy_left_up = sprite_manager->load("jumpy-left-up"); img_jumpy_left_down = sprite_manager->load("jumpy-left-down"); img_jumpy_left_middle = sprite_manager->load("jumpy-left-middle"); + img_jumpy_left_iced = sprite_manager->load("jumpy-left-iced"); img_mrbomb_left = sprite_manager->load("mrbomb-left"); img_mrbomb_right = sprite_manager->load("mrbomb-right"); + img_mrbomb_iced_left = sprite_manager->load("mrbomb-iced-left"); + img_mrbomb_iced_right = sprite_manager->load("mrbomb-iced-right"); img_mrbomb_ticking_left = sprite_manager->load("mrbomb-ticking-left"); img_mrbomb_ticking_right = sprite_manager->load("mrbomb-ticking-right"); img_mrbomb_explosion = sprite_manager->load("mrbomb-explosion"); @@ -1110,6 +1155,8 @@ img_flame = sprite_manager->load("flame"); img_fish = sprite_manager->load("fish"); img_fish_down = sprite_manager->load("fish-down"); + img_fish_iced = sprite_manager->load("fish-iced"); + img_fish_iced_down = sprite_manager->load("fish-iced-down"); img_bouncingsnowball_left = sprite_manager->load("bouncingsnowball-left"); img_bouncingsnowball_right = sprite_manager->load("bouncingsnowball-right"); img_bouncingsnowball_squished = sprite_manager->load("bouncingsnowball-squished"); @@ -1117,6 +1164,8 @@ img_flyingsnowball_squished = sprite_manager->load("flyingsnowball-squished"); img_spiky_left = sprite_manager->load("spiky-left"); img_spiky_right = sprite_manager->load("spiky-right"); + img_spiky_iced_left = sprite_manager->load("spiky-iced-left"); + img_spiky_iced_right = sprite_manager->load("spiky-iced-right"); img_snowball_left = sprite_manager->load("snowball-left"); img_snowball_right = sprite_manager->load("snowball-right"); img_snowball_squished_left = sprite_manager->load("snowball-squished-left"); |