Guest User

Untitled

a guest
Apr 1st, 2016
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.96 KB | None | 0 0
  1. #include "gameMain.h"
  2.  
  3. gameMain::gameMain()
  4. {
  5.     m_window = nullptr;
  6.     m_renderer = nullptr;
  7.     m_event = new SDL_Event();
  8.  
  9.     Running = true;
  10.     FPS = 60;
  11. }
  12.  
  13. gameMain::~gameMain()
  14. {
  15.     delete m_event;
  16.     SDL_DestroyRenderer(m_renderer);
  17.     SDL_DestroyWindow(m_window);
  18.  
  19.     SDL_Quit();
  20.     IMG_Quit();
  21. }
  22.  
  23. void gameMain::run(std::string title, int w, int h)
  24. {
  25.     m_screenWidth = w;
  26.     m_screenHeight = h;
  27.     m_title = title;
  28.  
  29.     initSystems();
  30.     gameLoop();
  31. }
  32.  
  33. void gameMain::initSystems()
  34. {
  35.     if (SDL_Init(SDL_INIT_VIDEO) != 0)
  36.     {
  37.         printf("Error Starting SDL. Error: %s\n", SDL_GetError());
  38.     }
  39.  
  40.     if (IMG_Init(IMG_INIT_PNG) != IMG_INIT_PNG)
  41.     {
  42.         printf("Error Starting SDL_IMG. ERROR: %s\n", IMG_GetError());
  43.     }
  44.  
  45.     m_window = SDL_CreateWindow(
  46.         m_title.c_str(),
  47.         SDL_WINDOWPOS_CENTERED,
  48.         SDL_WINDOWPOS_CENTERED,
  49.         m_screenWidth,
  50.         m_screenHeight,
  51.         SDL_WINDOW_SHOWN);
  52.  
  53.     if (m_window == nullptr)
  54.     {
  55.         printf("Error Creating SDL_Window. Error: %s\n", SDL_GetError());
  56.     }
  57.  
  58.     m_renderer = SDL_CreateRenderer(m_window,-1,SDL_RENDERER_ACCELERATED);
  59.  
  60.     if (m_renderer == nullptr)
  61.     {
  62.         printf("Error Creating SDL_Renderer. Error: %s\n", SDL_GetError());
  63.     }
  64. }
  65.  
  66. void gameMain::gameLoop()
  67. {
  68.     while (Running)
  69.     {
  70.         Uint32 m_startTime = SDL_GetTicks();
  71.  
  72.         processInput();
  73.         Draw();
  74.  
  75.         if (1000 / FPS > SDL_GetTicks() - m_startTime)
  76.         {
  77.             SDL_Delay((1000 / FPS) - (SDL_GetTicks() - m_startTime));
  78.         }
  79.     }
  80. }
  81.  
  82. void gameMain::processInput()
  83. {
  84.     while (SDL_PollEvent(m_event))
  85.     {
  86.         switch (m_event->type)
  87.         {
  88.             case SDL_QUIT:
  89.             {
  90.                 Running = false;
  91.             } break;
  92.  
  93.             case SDL_KEYDOWN:
  94.             {
  95.                 switch (m_event->key.keysym.sym)
  96.                 {
  97.                     case SDLK_ESCAPE:
  98.                     {
  99.                         Running = false;
  100.                     } break;
  101.                 }
  102.             } break;
  103.         }
  104.     }
  105. }
  106.  
  107. void gameMain::Draw()
  108. {
  109.     SDL_SetRenderDrawColor(m_renderer, 100, 149, 237, 255);
  110.  
  111.     SDL_RenderClear(m_renderer);
  112.     SDL_RenderPresent(m_renderer);
  113. }
  114.  
  115. SDL_Renderer* gameMain::getRenderer()
  116. {
  117.     return m_renderer;
  118. }
Add Comment
Please, Sign In to add comment