Cytopia  0.3
A city building simulation game
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
WindowManager.hxx
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string>
4 #include <iostream>
5 #include <vector>
6 #include <memory>
7 
8 #include <SDL.h>
9 
10 #include "../util/Singleton.hxx"
11 
12 enum class FULLSCREEN_MODE
13 {
14  WINDOWED = 0,
15  BORDERLESS = 1,
16  FULLSCREEN = 2
17 };
18 
19 class WindowManager : public Singleton<WindowManager>
20 {
21 public:
23 
24  // Disable copy and assignemnt operators
25  WindowManager(WindowManager const &) = delete;
26  WindowManager &operator=(WindowManager const &) = delete;
27 
28  void toggleFullScreen() const;
29 
33  void setWindowTitle(const std::string &title);
34 
38  SDL_Renderer *getRenderer() const { return m_renderer; };
39 
43  SDL_Window *getWindow() const { return m_window; };
44 
45  const std::vector<std::unique_ptr<SDL_DisplayMode>> &getSupportedScreenResolutions() const { return m_resolutions; };
46 
47  void setScreenResolution(int mode);
48  // void setLastScreenResolution() { setScreenResolution(m_lastSelectedResolutionIdx); };
49 
54  void setFullScreenMode(FULLSCREEN_MODE mode) const;
55 
57  void newImGuiFrame();
58 
59  void renderScreen();
60 
61 private:
67  WindowManager();
72 
73  std::string m_title = "Cytopia";
74  const std::string m_windowIcon = "resources/images/app_icons/cytopia_icon.png";
75 
76  SDL_Window *m_window = nullptr;
77  SDL_Renderer *m_renderer = nullptr;
78 
79  std::vector<std::unique_ptr<SDL_DisplayMode>> m_resolutions;
80 
81  int m_numOfDisplays = 0;
82  int m_activeDisplay = 0;
83  // int m_lastSelectedResolutionIdx = 0;
84 
86 
89 
91  void destroyImGuiRenderer();
92 };
WindowManager::destroyImGuiRenderer
void destroyImGuiRenderer()
shuts down the renderer for ImGui and the ImGui context.
Definition: WindowManager.cxx:181
WindowManager::operator=
WindowManager & operator=(WindowManager const &)=delete
WindowManager::~WindowManager
~WindowManager()
Destroy the WindowManager object.
Definition: WindowManager.cxx:74
WindowManager::getRenderer
SDL_Renderer * getRenderer() const
get SDL Renderer
Definition: WindowManager.hxx:38
FULLSCREEN_MODE::FULLSCREEN
@ FULLSCREEN
WindowManager::m_windowIcon
const std::string m_windowIcon
the window's icon
Definition: WindowManager.hxx:74
WindowManager::m_title
std::string m_title
title of the window
Definition: WindowManager.hxx:73
WindowManager::m_resolutions
std::vector< std::unique_ptr< SDL_DisplayMode > > m_resolutions
Definition: WindowManager.hxx:79
FULLSCREEN_MODE
FULLSCREEN_MODE
Definition: WindowManager.hxx:12
FULLSCREEN_MODE::BORDERLESS
@ BORDERLESS
FULLSCREEN_MODE::WINDOWED
@ WINDOWED
WindowManager::m_renderer
SDL_Renderer * m_renderer
pointer to the SDL_Renderer
Definition: WindowManager.hxx:77
WindowManager::setFullScreenMode
void setFullScreenMode(FULLSCREEN_MODE mode) const
sets the game's window mode
Definition: WindowManager.cxx:96
WindowManager::m_numOfDisplays
int m_numOfDisplays
Definition: WindowManager.hxx:81
WindowManager::getSupportedScreenResolutions
const std::vector< std::unique_ptr< SDL_DisplayMode > > & getSupportedScreenResolutions() const
Definition: WindowManager.hxx:45
WindowManager::m_window
SDL_Window * m_window
pointer to the SDL_Window
Definition: WindowManager.hxx:76
Singleton
Abstract Singleton implementation.
Definition: Singleton.hxx:8
WindowManager::renderScreen
void renderScreen()
Definition: WindowManager.cxx:231
WindowManager
Definition: WindowManager.hxx:19
WindowManager::initializeScreenResolutions
void initializeScreenResolutions()
Definition: WindowManager.cxx:141
WindowManager::m_activeDisplay
int m_activeDisplay
Definition: WindowManager.hxx:82
WindowManager::setWindowTitle
void setWindowTitle(const std::string &title)
sets title of the window
Definition: WindowManager.cxx:135
WindowManager::setScreenResolution
void setScreenResolution(int mode)
Definition: WindowManager.cxx:188
WindowManager::getWindow
SDL_Window * getWindow() const
get SDL Window
Definition: WindowManager.hxx:43
WindowManager::WindowManager
WindowManager()
Construct a new WindowManager object.
Definition: WindowManager.cxx:14
WindowManager::toggleFullScreen
void toggleFullScreen() const
Definition: WindowManager.cxx:82
string
std::string string
Definition: AudioConfig.hxx:14
WindowManager::newImGuiFrame
void newImGuiFrame()
creates and renders a new ImGui frame
Definition: WindowManager.cxx:224
WindowManager::initializeImguiRenderer
void initializeImguiRenderer()
Sets up platform/renderer backends and theme.
Definition: WindowManager.cxx:169