-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathGame.cpp
More file actions
142 lines (88 loc) · 3.27 KB
/
Game.cpp
File metadata and controls
142 lines (88 loc) · 3.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#include "Game.h"
#include <SDL_image.h>
#include <iostream>
Game::Game(){}
Game::~Game(){}
//define our static instance:
Game* Game::s_pInstance = 0;
/* ****************INIT BEGIN**************** */
bool Game::init(const char* title, int xpos, int ypos, int width, int height, bool fullscreen){
//handling fullscreen mode
int flags = 0;
if(fullscreen){
flags = SDL_WINDOW_FULLSCREEN;
}
//attempt to initialize SDL
if(SDL_Init(SDL_INIT_EVERYTHING) == 0){
std::cout << "+SDL initialized!\n";
// init the window
m_pWindow = SDL_CreateWindow(title, xpos, ypos, width, height, flags);
if(m_pWindow != 0){ // window init success
std::cout << "+Create Window!\n";
//set the pointer to our renderer
//parameters: 1: window we want to render
// 2: index of the rendering driver to initialize (-1: first capable driver)
// 3: SDL_RendererFlag (0: default, no flag)
m_pRenderer = SDL_CreateRenderer(m_pWindow, -1, 0);
if(m_pRenderer != 0){ // renderer init success
std::cout << "+Create Renderer!\n";
//render a blue image on the screen
SDL_SetRenderDrawColor(m_pRenderer, 255,255,255,255);
}else{ // renderer init fail
std::cout << "-Renderer initialization failed!\n";
return false;
}
}else{ // window init fail
std::cout << "-Windows initialization failed!\n";
return false;
}
}else{ // SDL init fail
std::cout << "SDL initialization failed!\n";
return false;
}
std::cout << "+EVERYTHING was initialized with success!\n";
std::cout << "................................\n";
//Initialize controllers
TheInputHandler::Instance()->initialiseJoysticks();
// Create Game State Machine and add first state
m_pGameStateMachine = new FSM();
m_pGameStateMachine->changeState(new MenuState());
m_bRunning = true; // everything initialized successfully, start the main loop
return true;
}
/* ****************INIT END**************** */
/* ****************RENDER BEGIN**************** */
void Game::render(){
// clear the renderer to the draw color
SDL_RenderClear(m_pRenderer);
// FSM render() function
m_pGameStateMachine->render();
// draw to the screen
SDL_RenderPresent(m_pRenderer);
}
/* ****************RENDER END**************** */
/* ****************UPDATE BEGIN**************** */
void Game::update(){
//FSM update() function
m_pGameStateMachine->update();
}
/* ****************UPDATE END**************** */
/* ****************HANDLE EVENTS BEGIN**************** */
void Game::handleEvents()
{
//update inputs function
TheInputHandler::Instance()->update();
}
/* ****************HANDLE EVENTS END**************** */
/* ****************CLEAN BEGIN**************** */
void Game::clean(){
std::cout << "cleaning game\n";
//Clean controllers array
TheInputHandler::Instance()->clean();
//Destroy SDL objects
SDL_DestroyWindow(m_pWindow);
SDL_DestroyRenderer(m_pRenderer);
//Quit SDL
SDL_Quit();
}
/* ****************CLEAN END**************** */