X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fspecial.h;h=0e69b8914b2466a3ec55738e237e17e902265745;hb=e68610f027ad6f35025d9aca87202ceb4501e97e;hp=1cdbc4ceaf628036a0524e1131e8097632a45c0d;hpb=b077bfe311e9c8a5d3fb8a78d348a061d67860a6;p=supertux.git diff --git a/src/special.h b/src/special.h index 1cdbc4cea..0e69b8914 100644 --- a/src/special.h +++ b/src/special.h @@ -20,65 +20,70 @@ #ifndef SUPERTUX_SPECIAL_H #define SUPERTUX_SPECIAL_H -#include +#include "SDL.h" + #include "bitmask.h" -#include "type.h" -#include "texture.h" +#include "special/base.h" +#include "video/surface.h" #include "collision.h" #include "player.h" -#include "physic.h" +#include "math/physic.h" /* Upgrade types: */ enum UpgradeKind { UPGRADE_GROWUP, + UPGRADE_FIREFLOWER, UPGRADE_ICEFLOWER, - UPGRADE_HERRING, + UPGRADE_STAR, UPGRADE_1UP }; void load_special_gfx(); void free_special_gfx(); -class Upgrade +class Upgrade : public MovingObject { public: UpgradeKind kind; Direction dir; - base_type base; - base_type old_base; Physic physic; - void init(float x, float y, Direction dir, UpgradeKind kind); - void action(double frame_ratio); - void draw(); - void collision(void* p_c_object, int c_object); + Upgrade(const Vector& pos, Direction dir, UpgradeKind kind); + virtual ~Upgrade(); + + virtual void action(float frame_ratio); + virtual void draw(DrawingContext& context); + + virtual void collision(const MovingObject& other, int); + void collision(void* p_c_object, int c_object, CollisionType type); private: - /** removes the Upgrade from the global upgrade list. Note that after this - * call the class doesn't exist anymore! So don't use any member variables - * anymore then - */ - void remove_me(); + void bump(Player* player); +}; + +enum BulletsKind { + FIRE_BULLET, + ICE_BULLET }; -class Bullet +class Bullet : public MovingObject { - public: - base_type base; - base_type old_base; +public: + Bullet(const Vector& pos, float xm, int dir, + int kind); - void init(float x, float y, float xm, Direction dir); - void action(double frame_ratio); - void draw(); + virtual void action(float frame_ratio); + virtual void draw(DrawingContext& context); void collision(int c_object); + virtual void collision(const MovingObject& other_object, int type); + + int kind; + private: - /** removes the Upgrade from the global upgrade list. Note that after this - * call the class doesn't exist anymore! So don't use any member variables - * anymore then - */ - void remove_me(); + int life_count; + Physic physic; }; #endif /*SUPERTUX_SPECIAL_H*/