1
+ #include < SDL.h>
2
+ #include < SDL_image.h>
3
+ #include " Game.h"
4
+ #include " InputHandler.h"
5
+ #include " MenuState.h"
6
+ #include " PlayState.h"
7
+ Game* Game::s_pInstance = 0 ;
8
+
9
+ bool Game::init (const char *title, int xpos, int ypos, int height, int width, int flags)
10
+ {
11
+ if (SDL_Init (SDL_INIT_EVERYTHING) >= 0 ) {
12
+ m_pWindow = SDL_CreateWindow (title, xpos, ypos, height, width, flags);
13
+ if (m_pWindow != 0 )
14
+ {
15
+ m_pRenderer = SDL_CreateRenderer (m_pWindow, -1 , 0 );
16
+
17
+ m_pGameStateMachine = new GameStateMachine ();
18
+ m_pGameStateMachine->changeState (new MenuState ());
19
+
20
+
21
+ TheTextureManager::Instance ()->load (" assets/animate-alpha.png" , " animate" , m_pRenderer);
22
+
23
+ // m_gameObjects.push_back(new Player(new LoaderParams(100, 100, 128, 82, "animate")));
24
+ // m_gameObjects.push_back(new Enemy(new LoaderParams(300, 300, 128, 82, "animate")));
25
+
26
+ m_bRunning = true ;
27
+ return true ;
28
+ }
29
+ }
30
+ return false ;
31
+ }
32
+
33
+ void Game::render ()
34
+ {
35
+ SDL_SetRenderDrawColor (m_pRenderer, 0 , 100 , 0 , 255 );
36
+ SDL_RenderClear (m_pRenderer);
37
+
38
+ m_pGameStateMachine->render ();
39
+
40
+ for (vector<GameObject*>::size_type i = 0 ; i != m_gameObjects.size (); i++)
41
+ {
42
+ m_gameObjects[i]->draw ();
43
+ }
44
+ SDL_RenderPresent (m_pRenderer);
45
+ }
46
+ void Game::update ()
47
+ {
48
+ for (vector<GameObject*>::size_type i = 0 ; i != m_gameObjects.size (); i++)
49
+ {
50
+ m_gameObjects[i]->update ();
51
+ }
52
+ m_pGameStateMachine->update ();
53
+ }
54
+
55
+ void Game::handleEvents ()
56
+ {
57
+ TheInputHandler::Instance ()->update ();
58
+
59
+ if (TheInputHandler::Instance ()->isKeyDown (SDL_SCANCODE_RETURN))
60
+ {
61
+ m_pGameStateMachine->changeState (new PlayState ());
62
+ }
63
+
64
+ }
65
+ void Game::clean ()
66
+ {
67
+ SDL_DestroyRenderer (m_pRenderer);
68
+ SDL_DestroyWindow (m_pWindow);
69
+ }
70
+
71
+ bool Game::running () { return m_bRunning; }
72
+
73
+ void Game::quit () {
74
+ m_bRunning = false ;
75
+ }
0 commit comments