00001 #ifndef GAMEWIDGET_HPP 00002 #define GAMEWIDGET_HPP 00003 00004 #include <QMainWindow> 00005 00006 #include "Renderers/Qt2DDisplay.hpp" 00007 00008 class AbstractGame; 00009 class GameLauncher; 00010 00011 class GameWidget : public QMainWindow 00012 { 00013 Q_OBJECT 00014 00015 private: 00016 GameLauncher* m_pGameThread; 00017 AbstractGame* m_pGame; 00019 Qt2DDisplay* m_pRenderer; 00021 QAction* m_pSaveAction; 00025 void destroyGame(); 00026 00033 template <typename GameType> 00034 void createControlers(GameType* pGame, const std::vector<int>& controlerTypes); 00035 00038 void createGame(int gameType, const std::vector<int>& controlerTypes); 00039 00042 Q_SLOT void draw(); 00043 00047 Q_SLOT void victory(int color); 00048 00049 public: 00053 GameWidget(QWidget* parent=NULL); 00054 00057 ~GameWidget() 00058 { 00059 destroyGame(); 00060 } 00061 00065 Qt2DDisplay* getRenderer() { return m_pRenderer; } 00066 00069 Q_SLOT void newGame(); 00070 00073 Q_SLOT void loadGame(); 00074 00077 Q_SLOT void saveGame(); 00078 }; 00079 00092 #endif