1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
class IWindow
{
public:
virtual void SetSize(int x, int y) = 0;
void AddListener(IWindowListener* pListener);
void RemoveListener(IWindowListener* pListener);
private:
std::vector<IWindowListener*> m_vecListeners;
};
class IWindowListener
{
friend class IWindow;
protected:
virtual void OnKeyPress(...) = 0;
};
class CSDLWindow : public IWindow
{
private:
virtual void SetSize(); // Utilisera la SDL
};
class CSFMLWindow : public IWindow
{
private:
virtual void SetSize(); // Utilisera la SFML
};
class CMyApp : public IWindowListener
{
public:
CMyApp();
private:
virtual void OnKeyPress(...);
IWindow m_Window; // Manipulation de la fenêtre via son interface
};
CMyApp::CMyApp
{
#ifdef USE_SDL
m_Window = new CSDLWindow();
#else
m_Window = new CSFMLWindow();
#endif // USE_SDL
m_Window.AddListener(this);
m_Window.SetSize(800, 600);
}; |
Partager