game.h 688 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #pragma once
  2. #include <SDL2/SDL.h>
  3. #include <SDL2/SDL_video.h>
  4. #include <memory>
  5. namespace Game
  6. {
  7. struct SDLWindow
  8. {
  9. SDL_Window *_window;
  10. SDLWindow (SDL_Window *window) { _window = window; }
  11. ~SDLWindow () { SDL_DestroyWindow (_window); }
  12. };
  13. struct SDLRenderer
  14. {
  15. SDL_Renderer *_renderer;
  16. SDLRenderer (SDL_Renderer *renderer) { _renderer = renderer; }
  17. ~SDLRenderer () { SDL_DestroyRenderer (_renderer); }
  18. };
  19. class App
  20. {
  21. public:
  22. App (const char *window_name, int width, int height);
  23. void run ();
  24. private:
  25. std::unique_ptr<SDLWindow> m_window;
  26. std::unique_ptr<SDLRenderer> m_renderer;
  27. bool can_quit = false;
  28. bool initialized = false;
  29. };
  30. }; // namespace Game