#ifndef SUPERTUX_SPECIAL_H
#define SUPERTUX_SPECIAL_H
-#include <SDL.h>
+#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*/