[Super-tux-commit] supertux/src badguy.cpp,1.70,1.71 badguy.h,1.38,1.39 defines.h,1.36,1.37 gameloop
Brought to you by:
wkendrick
From: Ricardo C. <rm...@us...> - 2004-05-12 17:56:46
|
Update of /cvsroot/super-tux/supertux/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30577/src Modified Files: badguy.cpp badguy.h defines.h gameloop.cpp player.cpp player.h resources.cpp special.cpp special.h world.cpp worldmap.cpp Log Message: First implementation of the ice power. Index: player.h =================================================================== RCS file: /cvsroot/super-tux/supertux/src/player.h,v retrieving revision 1.54 retrieving revision 1.55 diff -u -d -r1.54 -r1.55 --- player.h 11 May 2004 17:50:48 -0000 1.54 +++ player.h 12 May 2004 17:56:34 -0000 1.55 @@ -103,14 +103,16 @@ extern PlayerSprite smalltux; extern PlayerSprite largetux; extern PlayerSprite firetux; +extern PlayerSprite icetux; class Player : public GameObject { public: enum HurtMode { KILL, SHRINK }; + enum Power { NONE_POWER, FIRE_POWER, ICE_POWER }; player_input_type input; - bool got_coffee; + int got_power; int size; bool duck; bool holding_something; Index: special.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/special.cpp,v retrieving revision 1.42 retrieving revision 1.43 diff -u -d -r1.42 -r1.43 --- special.cpp 12 May 2004 01:16:33 -0000 1.42 +++ special.cpp 12 May 2004 17:56:34 -0000 1.43 @@ -31,7 +31,8 @@ #include "sprite_manager.h" #include "resources.h" -Sprite* img_bullet; +Sprite* img_firebullet; +Sprite* img_icebullet; Sprite* img_star; Sprite* img_growup; Sprite* img_iceflower; @@ -43,7 +44,7 @@ #define BULLET_XM 6 void -Bullet::init(float x, float y, float xm, Direction dir) +Bullet::init(float x, float y, float xm, Direction dir, int kind_) { life_count = 3; base.width = 4; @@ -63,6 +64,7 @@ base.y = y; base.ym = BULLET_STARTING_YM; old_base = base; + kind = kind_; } void @@ -103,7 +105,10 @@ life_count -= 1; } - base.ym = base.ym + 0.5 * frame_ratio; + if(kind == FIRE_BULLET) + base.ym = base.ym + 0.5 * frame_ratio; + else if(kind == FIRE_BULLET) + base.ym = 0; if (base.x < scroll_x || base.x > scroll_x + screen->w || @@ -123,7 +128,10 @@ if (base.x >= scroll_x - base.width && base.x <= scroll_x + screen->w) { - img_bullet->draw(base.x, base.y); + if(kind == FIRE_BULLET) + img_firebullet->draw(base.x, base.y); + else if(kind == FIRE_BULLET) + img_icebullet->draw(base.x, base.y); } } @@ -333,11 +341,17 @@ play_sound(sounds[SND_EXCELLENT], SOUND_CENTER_SPEAKER); pplayer->grow(); } + else if (kind == UPGRADE_FIREFLOWER) + { + play_sound(sounds[SND_COFFEE], SOUND_CENTER_SPEAKER); + pplayer->grow(); + pplayer->got_power = pplayer->FIRE_POWER; + } else if (kind == UPGRADE_ICEFLOWER) { play_sound(sounds[SND_COFFEE], SOUND_CENTER_SPEAKER); pplayer->grow(); - pplayer->got_coffee = true; + pplayer->got_power = pplayer->ICE_POWER; } else if (kind == UPGRADE_HERRING) { @@ -365,7 +379,8 @@ img_star = sprite_manager->load("star"); img_1up = sprite_manager->load("1up"); - img_bullet = sprite_manager->load("bullet"); + img_firebullet = sprite_manager->load("firebullet"); + img_icebullet = sprite_manager->load("icebullet"); } void free_special_gfx() Index: worldmap.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/worldmap.cpp,v retrieving revision 1.69 retrieving revision 1.70 diff -u -d -r1.69 -r1.70 --- worldmap.cpp 12 May 2004 15:36:15 -0000 1.69 +++ worldmap.cpp 12 May 2004 17:56:34 -0000 1.70 @@ -648,7 +648,8 @@ bool old_level_state = level->solved; level->solved = true; - if (session.get_world()->get_tux()->got_coffee) + if (session.get_world()->get_tux()->got_power != + session.get_world()->get_tux()->NONE_POWER) player_status.bonus = PlayerStatus::FLOWER_BONUS; else if (session.get_world()->get_tux()->size == BIG) player_status.bonus = PlayerStatus::GROWUP_BONUS; Index: gameloop.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/gameloop.cpp,v retrieving revision 1.125 retrieving revision 1.126 diff -u -d -r1.125 -r1.126 --- gameloop.cpp 12 May 2004 15:36:15 -0000 1.125 +++ gameloop.cpp 12 May 2004 17:56:33 -0000 1.126 @@ -343,7 +343,11 @@ break; case SDLK_DELETE: if(debug_mode) - tux.got_coffee = 1; + tux.got_power = tux.FIRE_POWER; + break; + case SDLK_HOME: + if(debug_mode) + tux.got_power = tux.ICE_POWER; break; case SDLK_INSERT: if(debug_mode) Index: special.h =================================================================== RCS file: /cvsroot/super-tux/supertux/src/special.h,v retrieving revision 1.20 retrieving revision 1.21 diff -u -d -r1.20 -r1.21 --- special.h 2 May 2004 21:28:32 -0000 1.20 +++ special.h 12 May 2004 17:56:34 -0000 1.21 @@ -32,6 +32,7 @@ enum UpgradeKind { UPGRADE_GROWUP, + UPGRADE_FIREFLOWER, UPGRADE_ICEFLOWER, UPGRADE_HERRING, UPGRADE_1UP @@ -65,14 +66,21 @@ void bump(Player* player); }; +enum BulletsKind { + FIRE_BULLET, + ICE_BULLET +}; + class Bullet : public GameObject { public: int life_count; base_type base; base_type old_base; + + int kind; - void init(float x, float y, float xm, Direction dir); + void init(float x, float y, float xm, Direction dir, int kind_); void action(double frame_ratio); void draw(); void collision(int c_object); Index: player.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/player.cpp,v retrieving revision 1.92 retrieving revision 1.93 diff -u -d -r1.92 -r1.93 --- player.cpp 11 May 2004 23:15:45 -0000 1.92 +++ player.cpp 12 May 2004 17:56:33 -0000 1.93 @@ -37,6 +37,7 @@ PlayerSprite smalltux; PlayerSprite largetux; +PlayerSprite icetux; PlayerSprite firetux; PlayerKeymap keymap; @@ -72,7 +73,7 @@ base.height = 32; size = SMALL; - got_coffee = false; + got_power = NONE_POWER; base.x = plevel->start_pos_x; base.y = plevel->start_pos_y; @@ -453,7 +454,7 @@ /* Shoot! */ - if (input.fire == DOWN && input.old_fire == UP && got_coffee) + 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); input.old_fire = DOWN; @@ -559,8 +560,10 @@ if (size == SMALL) sprite = &smalltux; - else if (got_coffee) + else if (got_power == FIRE_POWER) sprite = &firetux; + else if (got_power == ICE_POWER) + sprite = &icetux; else sprite = &largetux; @@ -709,9 +712,9 @@ if (mode == SHRINK && size == BIG) { - if (got_coffee) + if (got_power != NONE_POWER) { - got_coffee = false; + got_power = NONE_POWER; } else { @@ -751,7 +754,7 @@ void Player::remove_powerups() { - got_coffee = false; + got_power = NONE_POWER; size = SMALL; base.height = 32; } Index: defines.h =================================================================== RCS file: /cvsroot/super-tux/supertux/src/defines.h,v retrieving revision 1.36 retrieving revision 1.37 diff -u -d -r1.36 -r1.37 --- defines.h 10 May 2004 20:39:42 -0000 1.36 +++ defines.h 12 May 2004 17:56:33 -0000 1.37 @@ -69,7 +69,9 @@ #define START_LIVES 4 -#define MAX_BULLETS 2 +#define MAX_FIRE_BULLETS 2 +#define MAX_ICE_BULLETS 1 +#define FROZEN_TIME 3000 #define YM_FOR_JUMP 6.0 #define WALK_ACCELERATION_X 0.03 Index: badguy.h =================================================================== RCS file: /cvsroot/super-tux/supertux/src/badguy.h,v retrieving revision 1.38 retrieving revision 1.39 diff -u -d -r1.38 -r1.39 --- badguy.h 8 May 2004 23:46:43 -0000 1.38 +++ badguy.h 12 May 2004 17:56:33 -0000 1.39 @@ -96,6 +96,7 @@ 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.70 retrieving revision 1.71 diff -u -d -r1.70 -r1.71 --- badguy.cpp 11 May 2004 23:15:43 -0000 1.70 +++ badguy.cpp 12 May 2004 17:56:33 -0000 1.71 @@ -151,6 +151,7 @@ old_base = base; dir = LEFT; seen = false; + frozen_timer.init(true); animation_offset = 0; sprite_left = sprite_right = 0; physic.reset(); @@ -683,6 +684,9 @@ if(!seen) return; + if(frozen_timer.check()) + return; + switch (kind) { case BAD_MRICEBLOCK: @@ -939,6 +943,7 @@ BadGuy::collision(void *p_c_object, int c_object, CollisionType type) { BadGuy* pbad_c = NULL; + Bullet* pbullet_c = NULL; if(type == COLLISION_BUMP) { bump(); @@ -955,7 +960,12 @@ switch (c_object) { case CO_BULLET: - kill_me(10); + pbullet_c = (Bullet*) p_c_object; + + if(pbullet_c->kind == FIRE_BULLET) + kill_me(10); + else if(pbullet_c->kind == ICE_BULLET) + frozen_timer.start(FROZEN_TIME); break; case CO_BADGUY: Index: world.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/world.cpp,v retrieving revision 1.81 retrieving revision 1.82 diff -u -d -r1.81 -r1.82 --- world.cpp 12 May 2004 12:40:46 -0000 1.81 +++ world.cpp 12 May 2004 17:56:34 -0000 1.82 @@ -89,7 +89,7 @@ break; case PlayerStatus::FLOWER_BONUS: - tux.got_coffee = true; + tux.got_power = tux.FIRE_POWER; // FIXME: add ice power to here // fall through case PlayerStatus::GROWUP_BONUS: @@ -546,11 +546,22 @@ void World::add_bullet(float x, float y, float xm, Direction dir) { - if(bullets.size() > MAX_BULLETS-1) - return; + if(tux.got_power == tux.FIRE_POWER) + { + if(bullets.size() > MAX_FIRE_BULLETS-1) + return; + } + else if(tux.got_power == tux.ICE_POWER) + { + if(bullets.size() > MAX_ICE_BULLETS-1) + return; + } Bullet new_bullet; - new_bullet.init(x,y,xm,dir); + if(tux.got_power == tux.FIRE_POWER) + new_bullet.init(x,y,xm,dir, FIRE_BULLET); + else if(tux.got_power == tux.ICE_POWER) + new_bullet.init(x,y,xm,dir, ICE_BULLET); bullets.push_back(new_bullet); play_sound(sounds[SND_SHOOT], SOUND_CENTER_SPEAKER); Index: resources.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/resources.cpp,v retrieving revision 1.30 retrieving revision 1.31 diff -u -d -r1.30 -r1.31 --- resources.cpp 29 Apr 2004 15:18:27 -0000 1.30 +++ resources.cpp 12 May 2004 17:56:34 -0000 1.31 @@ -97,6 +97,22 @@ firetux.duck_left = sprite_manager->load("firetux-duck-left"); firetux.duck_right = sprite_manager->load("firetux-duck-right"); + icetux.stand_left = sprite_manager->load("icetux-stand-left"); + icetux.stand_right = sprite_manager->load("icetux-stand-right"); + icetux.walk_left = sprite_manager->load("icetux-walk-left"); + icetux.walk_right = sprite_manager->load("icetux-walk-right"); + icetux.jump_left = sprite_manager->load("icetux-jump-left"); + icetux.jump_right = sprite_manager->load("icetux-jump-right"); + icetux.kick_left = sprite_manager->load("icetux-kick-left"); + icetux.kick_right = sprite_manager->load("icetux-kick-right"); + icetux.skid_right = sprite_manager->load("icetux-skid-right"); + icetux.skid_left = sprite_manager->load("icetux-skid-left"); + icetux.grab_left = sprite_manager->load("icetux-grab-left"); + icetux.grab_right = sprite_manager->load("icetux-grab-right"); + icetux.duck_left = sprite_manager->load("icetux-duck-left"); + icetux.duck_right = sprite_manager->load("icetux-duck-right"); + + /* Water: */ img_water = new Surface(datadir + "/images/shared/water.png", IGNORE_ALPHA); |