#ifndef _VIEW_H #define _VIEW_H #include "ViewBase.h" #include "OverlayBase.h" #include "mathlib.h" #include "Sprite.h" #include "EntityBase.h" #include "SimpleConsoleOverlay.h" namespace asteroids { struct ShipEntity; struct AsteroidEntity; struct RocketEntity; struct BackgroundStar { vector3d position; }; /** \brief Performs the actual drawing based on Camera and Model */ class View : public Engine::ViewBase { public: virtual ~View() {}; protected: /** \brief Initializes the system */ virtual int OnInit (int argc, char* argv[]); virtual void OnDestroy (); /** \brief Updates the camera for further drawing */ virtual void UpdateCamera (); private: virtual void DrawWorld (); void DrawStars (); void DrawEntity (Engine::EntityBase *entity); void DrawShip (ShipEntity *ship); void DrawAsteroid (AsteroidEntity *asteroid); void DrawRocket (RocketEntity *asteroid); void DrawShipPart (Engine::EntityBase *entity); // boost::shared_ptr mMenuOverlay; // boost::shared_ptr mConsoleOverlay; std::vector mBackgroundStars; std::vector mShipPartsEntityIds; Engine::Sprite mAsteroidSprite; Engine::Sprite mShipSprite; Engine::Sprite mShipThrustSprite; Engine::Sprite mShipPartsSprite; virtual bool OnReceiveEvent (const Engine::EventBasePtr &event); }; } #endif // _VIEW_H