#ifndef __RENDERABLE_H__ #define __RENDERABLE_H__ #include #include "Common.h" /** * @class Renderable * @brief A base class for objects that are capable of returning renderable data * * This base class provides default mechanisms for an object to return renderable * data, track position and velocity. */ class Renderable { protected: Vector position; /**< The position of the renderable object */ Vector velocity; /**< The velocity (if any) of the renderable object */ public: Renderable(); Vector getPosition(); Vector getVelocity(); void setPosition(Vector); void setVelocity(Vector); virtual SDL_Surface *nextFrame(); }; /** * @class AnimatedRenderable * @brief A subclass of Renderable for objects that are renderable and animated * * This subclass defines the interface for libgame objects that are both * Renderable, but that also perform some kind of internal logic to return * different surfaces each call. */ class AnimatedRenderable : public Renderable { protected: FrameCounter frameCounter; /**< Current frame within the current animation */ public: AnimatedRenderable(); FrameCounter getFrameCounter(); int setFrameCounter(FrameCounter fc); }; #endif // __RENDERABLE_H__