[Super-tux-commit] supertux/src gameobjs.cpp,1.43,1.44 gameobjs.h,1.31,1.32 player.cpp,1.148,1.149 p
Brought to you by:
wkendrick
From: Ricardo C. <rm...@us...> - 2004-08-05 10:10:38
|
Update of /cvsroot/super-tux/supertux/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25303/src Modified Files: gameobjs.cpp gameobjs.h player.cpp player.h resources.cpp sector.cpp sector.h Log Message: Made the stomp cloud to have an independent movement from Tux by making it a GameObject. Next time, please don't implement it, unless you do it properly. Index: player.h =================================================================== RCS file: /cvsroot/super-tux/supertux/src/player.h,v retrieving revision 1.78 retrieving revision 1.79 diff -u -d -r1.78 -r1.79 --- player.h 26 Jul 2004 18:09:13 -0000 1.78 +++ player.h 5 Aug 2004 10:10:19 -0000 1.79 @@ -119,7 +119,6 @@ Sprite* grab_right; Sprite* duck_right; Sprite* duck_left; - Sprite* stomp; }; extern PlayerSprite smalltux; @@ -163,11 +162,8 @@ Timer shooting_timer; // used to show the arm when Tux is shooting Timer dying_timer; Timer growing_timer; - Timer stomp_timer; Physic physic; - Vector stomp_pos; - public: Player(); virtual ~Player(); Index: sector.h =================================================================== RCS file: /cvsroot/super-tux/supertux/src/sector.h,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- sector.h 21 Jul 2004 16:51:53 -0000 1.9 +++ sector.h 5 Aug 2004 10:10:19 -0000 1.10 @@ -45,6 +45,7 @@ class TileMap; class Upgrade; class Bullet; +class SmokeCloud; class BadGuy; class Tile; @@ -102,6 +103,7 @@ void add_upgrade(const Vector& pos, Direction dir, UpgradeKind kind); bool add_bullet(const Vector& pos, float xm, Direction dir); + bool add_smoke_cloud(const Vector& pos); /** Try to grab the coin at the given coordinates */ void trygrabdistro(const Vector& pos, int bounciness); @@ -154,6 +156,7 @@ std::vector<Upgrade*> upgrades; std::vector<Bullet*> bullets; + std::vector<SmokeCloud*> smoke_clouds; public: // ugly typedef std::vector<InteractiveObject*> InteractiveObjects; Index: sector.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/sector.cpp,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- sector.cpp 25 Jul 2004 19:03:36 -0000 1.18 +++ sector.cpp 5 Aug 2004 10:10:19 -0000 1.19 @@ -423,6 +423,12 @@ std::remove(flying_platforms.begin(), flying_platforms.end(), flying_platform), flying_platforms.end()); } + SmokeCloud* smoke_cloud = dynamic_cast<SmokeCloud*> (*i); + if(smoke_cloud) { + smoke_clouds.erase( + std::remove(smoke_clouds.begin(), smoke_clouds.end(), smoke_cloud), + smoke_clouds.end()); + } delete *i; i = gameobjects.erase(i); @@ -454,6 +460,10 @@ = dynamic_cast<InteractiveObject*> (*i); if(interactive_object) interactive_objects.push_back(interactive_object); + SmokeCloud* smoke_cloud = dynamic_cast<SmokeCloud*> (*i); + if(smoke_cloud) + smoke_clouds.push_back(smoke_cloud); + gameobjects.push_back(*i); } @@ -674,6 +684,13 @@ return true; } +bool +Sector::add_smoke_cloud(const Vector& pos) +{ + add_object(new SmokeCloud(pos)); + return true; +} + /* Break a brick: */ bool Sector::trybreakbrick(const Vector& pos, bool small) Index: player.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/player.cpp,v retrieving revision 1.148 retrieving revision 1.149 diff -u -d -r1.148 -r1.149 --- player.cpp 26 Jul 2004 18:09:13 -0000 1.148 +++ player.cpp 5 Aug 2004 10:10:19 -0000 1.149 @@ -40,7 +40,6 @@ #define TILES_FOR_BUTTJUMP 3 // animation times (in ms): #define SHOOTING_TIME 320 -#define STOMP_TIME 250 // others stuff: #define AUTOSCROLL_DEAD_INTERVAL 300 @@ -118,7 +117,6 @@ can_jump = true; butt_jump = false; - stomp_pos = Vector(0,0); frame_main = 0; frame_ = 0; @@ -510,12 +508,11 @@ // Do butt jump if (butt_jump && on_ground() && size == BIG) { - + // Add a smoke cloud if (duck) - stomp_pos = Vector(base.x - 32, base.y); + Sector::current()->add_smoke_cloud(Vector(base.x - 32, base.y)); else - stomp_pos = Vector(base.x - 32, base.y + 32); - stomp_timer.start(STOMP_TIME); + Sector::current()->add_smoke_cloud(Vector(base.x - 32, base.y + 32)); butt_jump = false; @@ -774,10 +771,6 @@ sprite->grab_left->draw(context, pos, LAYER_OBJECTS + 1); } - // Draw stomp clouds when doing a butt jump - if (stomp_timer.check()) - sprite->stomp->draw(context, stomp_pos, LAYER_OBJECTS + 1); - // Draw blinking star overlay if (invincible_timer.started() && (invincible_timer.get_left() > TUX_INVINCIBLE_TIME_WARNING || global_frame_counter % 3)) Index: gameobjs.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/gameobjs.cpp,v retrieving revision 1.43 retrieving revision 1.44 diff -u -d -r1.43 -r1.44 --- gameobjs.cpp 20 Jul 2004 18:04:47 -0000 1.43 +++ gameobjs.cpp 5 Aug 2004 10:10:19 -0000 1.44 @@ -181,7 +181,7 @@ void Trampoline::draw(DrawingContext& context) { - img_trampoline[frame]->draw(context, Vector(base.x, base.y), LAYER_OBJECTS); + img_trampoline[frame]->draw(context, base, LAYER_OBJECTS); frame = 0; } @@ -336,7 +336,7 @@ void FlyingPlatform::draw(DrawingContext& context) { - img_flying_platform->draw(context, Vector(base.x, base.y), LAYER_OBJECTS); + img_flying_platform->draw(context, base, LAYER_OBJECTS); } void @@ -413,6 +413,29 @@ } } +Sprite *img_smoke_cloud; + +SmokeCloud::SmokeCloud(const Vector& pos) + : position(pos) +{ + timer.start(250); +} + +void +SmokeCloud::action(float elapsed_time) +{ + position.y -= 2 * elapsed_time; + + if(!timer.check()) + remove_me(); +} + +void +SmokeCloud::draw(DrawingContext& context) +{ + img_smoke_cloud->draw(context, position, LAYER_OBJECTS+1); +} + void load_object_gfx() { char sprite_name[16]; @@ -424,4 +447,6 @@ } img_flying_platform = sprite_manager->load("flying_platform"); + + img_smoke_cloud = sprite_manager->load("stomp"); } Index: gameobjs.h =================================================================== RCS file: /cvsroot/super-tux/supertux/src/gameobjs.h,v retrieving revision 1.31 retrieving revision 1.32 diff -u -d -r1.31 -r1.32 --- gameobjs.h 21 Jul 2004 16:51:53 -0000 1.31 +++ gameobjs.h 5 Aug 2004 10:10:19 -0000 1.32 @@ -162,6 +162,21 @@ unsigned int frame; }; +extern Sprite *img_smoke_cloud; + +class SmokeCloud : public GameObject +{ +public: + SmokeCloud(const Vector& pos); + + virtual void action(float elapsed_time); + virtual void draw(DrawingContext& context); + +private: + Timer timer; + Vector position; +}; + void load_object_gfx(); #endif Index: resources.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/resources.cpp,v retrieving revision 1.46 retrieving revision 1.47 diff -u -d -r1.46 -r1.47 --- resources.cpp 28 Jul 2004 10:48:49 -0000 1.46 +++ resources.cpp 5 Aug 2004 10:10:19 -0000 1.47 @@ -143,7 +143,6 @@ smalltux.skid_right = sprite_manager->load("smalltux-skid-right"); smalltux.grab_left = sprite_manager->load("smalltux-grab-left"); smalltux.grab_right = sprite_manager->load("smalltux-grab-right"); - smalltux.stomp = sprite_manager->load("stomp"); largetux.stand_left = sprite_manager->load("largetux-stand-left"); largetux.stand_right = sprite_manager->load("largetux-stand-right"); @@ -159,7 +158,6 @@ largetux.grab_right = sprite_manager->load("largetux-grab-right"); largetux.duck_left = sprite_manager->load("largetux-duck-left"); largetux.duck_right = sprite_manager->load("largetux-duck-right"); - largetux.stomp = sprite_manager->load("stomp"); firetux.stand_left = sprite_manager->load("firetux-stand-left"); firetux.stand_right = sprite_manager->load("firetux-stand-right"); @@ -175,7 +173,6 @@ firetux.grab_right = sprite_manager->load("firetux-grab-right"); firetux.duck_left = sprite_manager->load("firetux-duck-left"); firetux.duck_right = sprite_manager->load("firetux-duck-right"); - firetux.stomp = sprite_manager->load("stomp"); icetux.stand_left = sprite_manager->load("icetux-stand-left"); icetux.stand_right = sprite_manager->load("icetux-stand-right"); @@ -191,8 +188,6 @@ 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"); - icetux.stomp = sprite_manager->load("stomp"); - /* Water: */ img_water = new Surface(datadir + "/images/shared/water.png", false); |