[Super-tux-commit] supertux/src/badguy dispenser.cpp,NONE,1.1 dispenser.h,NONE,1.1 bouncing_snowball
Brought to you by:
wkendrick
From: Marek M. <wa...@us...> - 2004-11-24 17:34:03
|
Update of /cvsroot/super-tux/supertux/src/badguy In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1377/src/badguy Modified Files: bouncing_snowball.cpp bouncing_snowball.h mrbomb.cpp Added Files: dispenser.cpp dispenser.h Log Message: added simple enemy dispenser (can only dispense bouncing snowballs so far and looks like a snowball) it's in data/test/bonusblocks.stl, right behind the secret area ;-) fixed typo(?) in mrbomb.cpp --- NEW FILE: dispenser.cpp --- #include <config.h> #include "dispenser.h" #include "badguy/bouncing_snowball.h" #define DISPENSE_TIME 3 Dispenser::Dispenser(LispReader& reader) { reader.read_float("x", start_position.x); reader.read_float("y", start_position.y); reader.read_string("badguy", badguy); bbox.set_size(32, 32); sprite = sprite_manager->create("snowball"); } void Dispenser::write(LispWriter& writer) { writer.start_list("dispenser"); writer.write_float("x", get_pos().x); writer.write_float("y", get_pos().y); writer.write_string("badguy", badguy); writer.end_list("dispenser"); } void Dispenser::activate() { dispense_timer.start(DISPENSE_TIME, true); } bool Dispenser::collision_squished(Player& player) { remove_me(); player.bounce(*this); return true; } void Dispenser::active_action(float elapsed_time) { if (dispense_timer.check()) { Sector::current()->add_object(new BouncingSnowball(get_pos().x, get_pos().y)); } } HitResponse Dispenser::collision_solid(GameObject& , const CollisionHit& hit) { if(fabsf(hit.normal.y) > .5) { // hit floor or roof? physic.set_velocity_y(0); } else { // hit right or left dir = dir == LEFT ? RIGHT : LEFT; sprite->set_action(dir == LEFT ? "left" : "right"); physic.set_velocity_x(-physic.get_velocity_x()); } return CONTINUE; } Index: mrbomb.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/badguy/mrbomb.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- mrbomb.cpp 23 Nov 2004 16:47:26 -0000 1.2 +++ mrbomb.cpp 24 Nov 2004 17:33:50 -0000 1.3 @@ -16,12 +16,12 @@ void MrBomb::write(LispWriter& writer) { - writer.start_list("snowball"); + writer.start_list("mrbomb"); writer.write_float("x", get_pos().x); writer.write_float("y", get_pos().y); - writer.end_list("snowball"); + writer.end_list("mrbomb"); } void --- NEW FILE: dispenser.h --- #ifndef __DISPENSER_H__ #define __DISPENSER_H__ #include "badguy.h" #include "timer.h" class Dispenser : public BadGuy { public: Dispenser(LispReader& reader); void activate(); void write(LispWriter& writer); HitResponse collision_solid(GameObject& other, const CollisionHit& hit); void active_action(float elapsed_time); protected: bool collision_squished(Player& player); std::string badguy; Timer2 dispense_timer; }; #endif Index: bouncing_snowball.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/badguy/bouncing_snowball.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- bouncing_snowball.cpp 23 Nov 2004 16:47:26 -0000 1.2 +++ bouncing_snowball.cpp 24 Nov 2004 17:33:49 -0000 1.3 @@ -13,6 +13,14 @@ sprite = sprite_manager->create("bouncingsnowball"); } +BouncingSnowball::BouncingSnowball(float pos_x, float pos_y) +{ + start_position.x = pos_x; + start_position.y = pos_y; + bbox.set_size(32, 32); + sprite = sprite_manager->create("bouncingsnowball"); +} + void BouncingSnowball::write(LispWriter& writer) { Index: bouncing_snowball.h =================================================================== RCS file: /cvsroot/super-tux/supertux/src/badguy/bouncing_snowball.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- bouncing_snowball.h 20 Nov 2004 22:14:39 -0000 1.1 +++ bouncing_snowball.h 24 Nov 2004 17:33:49 -0000 1.2 @@ -7,6 +7,7 @@ { public: BouncingSnowball(LispReader& reader); + BouncingSnowball(float pos_x, float pos_y); void activate(); void write(LispWriter& writer); |