game.cpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include "game.h"
  2. #include <SDL2/SDL_render.h>
  3. #include <SDL2/SDL_video.h>
  4. #include <fmt/core.h>
  5. #include <memory>
  6. namespace Game
  7. {
  8. App::App (const char *window_name, int width, int height)
  9. {
  10. m_window = std::make_unique<SDLWindow> (
  11. SDL_CreateWindow (window_name, SDL_WINDOWPOS_UNDEFINED,
  12. SDL_WINDOWPOS_UNDEFINED, width, height, 0));
  13. if (m_window.get ()->_window == NULL)
  14. {
  15. fmt::print ("Could not intialize window");
  16. return;
  17. }
  18. m_renderer = std::make_unique<SDLRenderer> (SDL_CreateRenderer (
  19. m_window.get ()->_window, -1, SDL_RENDERER_ACCELERATED));
  20. if (!m_renderer.get ()->_renderer)
  21. {
  22. fmt::print ("Could not initialize renderer");
  23. return;
  24. }
  25. initialized = true;
  26. }
  27. void
  28. App::run ()
  29. {
  30. if (!initialized)
  31. {
  32. fmt::print ("Game not initialized properly. Quitting");
  33. return;
  34. }
  35. SDL_Event event;
  36. for (;;)
  37. {
  38. while (SDL_PollEvent (&event))
  39. {
  40. switch (event.type)
  41. {
  42. case SDL_QUIT:
  43. can_quit = true;
  44. break;
  45. default:
  46. break;
  47. }
  48. }
  49. SDL_SetRenderDrawColor (m_renderer.get ()->_renderer, 51, 51, 51, 255);
  50. SDL_RenderClear (m_renderer.get ()->_renderer);
  51. SDL_RenderPresent (m_renderer.get ()->_renderer);
  52. SDL_Delay (16);
  53. if (can_quit)
  54. {
  55. return;
  56. }
  57. }
  58. }
  59. } // namespace Game