Guest User

Untitled

a guest
Jun 12th, 2016
294
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.46 KB | None | 0 0
  1. #include "Game.h"
  2. #include "SDLWindow.h"
  3. #include <SDL.h>
  4. #include <cmath>
  5. #include <chrono>
  6. #include <windows.h>
  7.  
  8.  
  9. double UPDATE_INTERVAL = 0;
  10. const int TICKS_PER_SECOND = 25;
  11. const int SKIP_TICKS = 1000 / TICKS_PER_SECOND;
  12. const int MAX_FRAMESKIP = 5;
  13. int loops;
  14. float interpolation;
  15.  
  16. float frameend = 0;
  17. float framestart = 0;
  18. bool ballSpeedZeroed = false;
  19.  
  20. double MS_PER_UPDATE = 1000 / 60;
  21.  
  22.  
  23.  
  24. Game::Game() : mWindow(1024, 720), mPlayer("paddle.jpg", mWindow.GetRenderer(), 500.0f, 500.0f), mPlayer2("paddle.jpg", mWindow.GetRenderer(), 900.0f, 150.0f),
  25. mBall("be.jpg", mWindow.GetRenderer(), 100, 100, 0.001, 0)
  26. {
  27.     mQuit = false;
  28.     EntityList.push_back(&mPlayer);
  29.     EntityList.push_back(&mPlayer2);
  30.     EntityList.push_back(&mBall);
  31. }
  32.  
  33. void Game::Run()
  34. {
  35.    
  36.  
  37.     while (!mQuit)
  38.     {
  39.  
  40.         if (UPDATE_INTERVAL < 1)
  41.         {
  42.             framestart = SDL_GetTicks();
  43.             SDL_Delay(1);
  44.             frameend = SDL_GetTicks();
  45.             UPDATE_INTERVAL = frameend - framestart;
  46.         }
  47.  
  48.         framestart = SDL_GetTicks();
  49.         ProcessEvents();
  50.         Update();
  51.         Render();
  52.         frameend = SDL_GetTicks();
  53.         UPDATE_INTERVAL = frameend - framestart;
  54.  
  55.     }
  56.  
  57. }
  58.  
  59. Game::~Game()
  60. {
  61.  
  62. }
  63.  
  64. void Game::ProcessEvents()
  65. {
  66.  
  67.  
  68.     while (SDL_PollEvent(&mEvent))
  69.     {
  70.         const Uint8* currentKeyStates = SDL_GetKeyboardState(NULL);
  71.  
  72.         if (mEvent.type == SDL_QUIT)
  73.             mQuit = true;
  74.  
  75.         if (mEvent.type == SDL_KEYDOWN)
  76.         {
  77.             switch (mEvent.key.keysym.sym)
  78.             {
  79.             case SDLK_s:
  80.                 mPlayer.SetDownPressed(true);
  81.                 break;
  82.             case SDLK_w:
  83.                 mPlayer.SetUpPressed(true);
  84.                 break;
  85.             case SDLK_a:
  86.                 mPlayer.SetLeftPressed(true);
  87.                 break;
  88.             case SDLK_d:
  89.                 mPlayer.SetRightPressed(true);
  90.                 break;
  91.             }
  92.         }
  93.  
  94.         if (mEvent.type == SDL_KEYUP)
  95.         {
  96.             switch (mEvent.key.keysym.sym)
  97.             {
  98.             case SDLK_s:
  99.                 mPlayer.SetDownPressed(false);
  100.                 break;
  101.             case SDLK_w:
  102.                 mPlayer.SetUpPressed(false);
  103.                 break;
  104.             case SDLK_a:
  105.                 mPlayer.SetLeftPressed(false);
  106.                 break;
  107.             case SDLK_d:
  108.                 mPlayer.SetRightPressed(false);
  109.                 break;
  110.             }
  111.         }
  112.     }
  113. }
  114.  
  115. void Game::Update()
  116. {
  117.     mPlayer.HandleEvents(&mEvent);
  118.  
  119.     for (auto it = EntityList.begin(); it < EntityList.end(); ++it)
  120.     {
  121.         (*it)->Update(UPDATE_INTERVAL);
  122.     }
  123.    
  124. }
  125.  
  126. void Game::Render()
  127. {
  128.     SDL_RenderClear(mWindow.GetRenderer());
  129.  
  130.     for (auto it = EntityList.begin(); it < EntityList.end(); ++it)
  131.     {
  132.         (*it)->draw(mWindow.GetRenderer());
  133.     }
  134.  
  135.     SDL_RenderPresent(mWindow.GetRenderer());
  136. }
  137.  
  138. std::vector<Entity*> Game::EntityList;
Advertisement
Add Comment
Please, Sign In to add comment