X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fgameobjs.h;h=49515a34551f9ef1e05045b23ff9a677fd8a515d;hb=5dba61177d71c5572fd29af172fcdab7b1f9a561;hp=87ab2be9146a9623d8cf5f8ea8132552195798e3;hpb=b322b763e4782f0519434fed6dbee60686eeb1a4;p=supertux.git diff --git a/src/gameobjs.h b/src/gameobjs.h index 87ab2be91..49515a345 100644 --- a/src/gameobjs.h +++ b/src/gameobjs.h @@ -1,7 +1,8 @@ // $Id$ // // SuperTux -// Copyright (C) 2004 SuperTux Development Team, see AUTHORS for details +// Copyright (C) 2000 Bill Kendrick +// Copyright (C) 2004 Tobias Glaesser // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License @@ -15,7 +16,8 @@ // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. #ifndef SUPERTUX_GAMEOBJS_H #define SUPERTUX_GAMEOBJS_H @@ -24,67 +26,134 @@ #include "texture.h" #include "timer.h" #include "scene.h" +#include "physic.h" +#include "collision.h" +#include "game_object.h" +#include "drawable.h" +#include "moving_object.h" +#include "lispwriter.h" /* Bounciness of distros: */ #define NO_BOUNCE 0 #define BOUNCE 1 -class BouncyDistro +class BouncyDistro : public GameObject, public Drawable { - public: - base_type base; - - void init(float x, float y); - void action(double frame_ratio); - void draw(); +public: + BouncyDistro(DisplayManager& displaymanager, const Vector& pos); + virtual void action(float elapsed_time); + virtual void draw(Camera& viewport, int layer); + +private: + Vector position; + float ym; }; -extern texture_type img_distro[4]; +extern Surface* img_distro[4]; #define BOUNCY_BRICK_MAX_OFFSET 8 #define BOUNCY_BRICK_SPEED 0.9 class Tile; -class BrokenBrick +class BrokenBrick : public GameObject, public Drawable { - public: - base_type base; +public: + BrokenBrick(DisplayManager& displaymanager, Tile* tile, + const Vector& pos, const Vector& movement); + + virtual void action(float elapsed_time); + virtual void draw(Camera& viewport, int layer); + +private: Timer timer; Tile* tile; - - void init(Tile* tile, float x, float y, float xm, float ym); - void action(double frame_ratio); - void draw(); + Vector position; + Vector movement; }; -class BouncyBrick +class BouncyBrick : public GameObject, public Drawable { - public: - float offset; +public: + BouncyBrick(DisplayManager& displaymanager, const Vector& pos); + virtual void action(float elapsed_time); + virtual void draw(Camera& viewport, int layer); + +private: + Vector position; + float offset; float offset_m; - int shape; - base_type base; - - void init(float x, float y); - void action(double frame_ratio); - void draw(); + int shape; }; -class FloatingScore +class FloatingScore : public GameObject, public Drawable { - public: - int value; - Timer timer; - base_type base; +public: + FloatingScore(DisplayManager& displaymanager, const Vector& pos, int s); - void init(float x, float y, int s); - void action(double frame_ratio); - void draw(); + virtual void action(float elapsed_time); + virtual void draw(Camera& viewport, int layer); + +private: + Vector position; + char str[10]; + Timer timer; }; +class Trampoline : public MovingObject, public Drawable, public Serializable +{ +public: + Trampoline(DisplayManager& displaymanager, LispReader& reader); + + virtual void write(LispWriter& writer); + virtual void action(float frame_ratio); + virtual void draw(Camera& viewport, int layer); + + virtual void collision(const MovingObject& other, int); + void collision(void *p_c_object, int c_object, CollisionType type); + + Physic physic; + enum { M_NORMAL, M_HELD } mode; + + private: + float power; + unsigned int frame; +}; + +class FlyingPlatform : public MovingObject, public Drawable, public Serializable +{ +public: + FlyingPlatform(DisplayManager& displaymanager, LispReader& reader); + + virtual void write(LispWriter& writer); + virtual void action(float frame_ratio); + virtual void draw(Camera& viewport, int layer); + + virtual void collision(const MovingObject& other, int); + void collision(void *p_c_object, int c_object, CollisionType type); + + float get_vel_x() { return vel_x; } + float get_vel_y() { return vel_y; } + + Physic physic; + enum { M_NORMAL, M_HELD } mode; + + private: + std::vector pos_x; + std::vector pos_y; + float velocity; + + float vel_x, vel_y; // calculated based in the velocity + + int point; + bool move; + unsigned int frame; +}; + +void load_object_gfx(); + #endif /* Local Variables: */ /* mode:c++ */ -/* End */ +/* End: */