X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fgameobjs.h;h=a3a354ac67b0f20314aed2f0fce6b57d5252837c;hb=935c2f6a2a27248de63fba86b74a724675761487;hp=16106b4ff68480c46e445e13d111fc2ae67ae137;hpb=f9c5c22959ac3020274f3be3531d176e413b0220;p=supertux.git diff --git a/src/gameobjs.h b/src/gameobjs.h index 16106b4ff..a3a354ac6 100644 --- a/src/gameobjs.h +++ b/src/gameobjs.h @@ -22,21 +22,25 @@ #ifndef SUPERTUX_GAMEOBJS_H #define SUPERTUX_GAMEOBJS_H -#include "type.h" -#include "screen/texture.h" -#include "timer.h" +#include "special/base.h" +#include "video/surface.h" +#include "special/timer.h" #include "scene.h" -#include "physic.h" +#include "math/physic.h" #include "collision.h" -#include "game_object.h" -#include "moving_object.h" +#include "special/game_object.h" +#include "special/moving_object.h" #include "serializable.h" -#include "lispwriter.h" +#include "utils/lispwriter.h" /* Bounciness of distros: */ #define NO_BOUNCE 0 #define BOUNCE 1 +namespace SuperTux { +class Sprite; +} + struct TileId; class BouncyDistro : public GameObject @@ -87,24 +91,28 @@ private: TileId& shape; }; -class FloatingScore : public GameObject +class FloatingText : public GameObject { public: - FloatingScore(const Vector& pos, int s); + FloatingText(const Vector& pos, const std::string& text_); + FloatingText(const Vector& pos, int s); // use this for score, for instance virtual void action(float elapsed_time); virtual void draw(DrawingContext& context); private: Vector position; - char str[10]; + std::string text; Timer timer; }; +extern Sprite *img_trampoline; + class Trampoline : public MovingObject, public Serializable { public: Trampoline(LispReader& reader); + Trampoline(float x, float y); virtual void write(LispWriter& writer); virtual void action(float frame_ratio); @@ -121,10 +129,13 @@ public: unsigned int frame; }; +extern Sprite *img_flying_platform; + class FlyingPlatform : public MovingObject, public Serializable { public: FlyingPlatform(LispReader& reader); + FlyingPlatform(int x, int y); virtual void write(LispWriter& writer); virtual void action(float frame_ratio); @@ -151,6 +162,46 @@ public: 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; +}; + +class Particles : public GameObject +{ +public: + Particles(const Vector& epicenter, int min_angle, int max_angle, + const Vector& initial_velocity, const Vector& acceleration, + int number, Color color, int size, int life_time); + ~Particles(); + + virtual void action(float elapsed_time); + virtual void draw(DrawingContext& context); + +private: + Color color; + float size; + Vector accel; + Timer timer; + bool live_forever; + + struct Particle { + Vector pos, vel; +// float angle; + }; + std::vector particles; +}; + void load_object_gfx(); #endif