1 #ifndef WINDOW_MANAGER_H
2 #define WINDOW_MANAGER_H
3 
4 #ifndef WINDOW_TITLE
5 #define WINDOW_TITLE "SeriousProton Game"
6 #endif // WINDOW_TITLE
7 
8 #include <SFML/Graphics.hpp>
9 #include "P.h"
10 #include "Renderable.h"
11 
12 class WindowManager : public virtual PObject
13 {
14 private:
15     bool windowHasFocus;
16     float min_aspect_ratio;
17     bool allow_virtual_resize;
18 
19     sf::Vector2i virtualSize;
20     sf::RenderWindow window;
21     RenderChain* renderChain;
22     bool fullscreen;
23     int fsaa;
24 public:
25     WindowManager(int virtualWidth, int virtualHeight, bool fullscreen, RenderChain* chain, int fsaa = 0);
26     virtual ~WindowManager();
27 
getVirtualSize()28     sf::Vector2i getVirtualSize() const { return virtualSize; }
29     void render();
30     void close();
hasFocus()31     bool hasFocus() { return windowHasFocus; }
32 
isFullscreen()33     bool isFullscreen() { return fullscreen; }
34     void setFullscreen(bool fullscreen);
getFSAA()35     int getFSAA() { return fsaa; }
36     void setFSAA(int fsaa);
37 
setAllowVirtualResize(bool allow)38     void setAllowVirtualResize(bool allow) { allow_virtual_resize = allow; setupView(); }
setFrameLimit(int limit)39     void setFrameLimit(int limit) { window.setFramerateLimit(limit); }
setTitle(string title)40     void setTitle(string title) { window.setTitle(title); }
41 
42     sf::Vector2f mapPixelToCoords(const sf::Vector2i& point) const;
43     sf::Vector2i mapCoordsToPixel(const sf::Vector2f& point) const;
44 
45     friend class InputHandler;
46     friend class Engine;
47     friend class Clipboard;
48 private:
49     void create();
50     void setupView();
51 };
52 
53 #endif//WINDOW_MANAGER_H
54