-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgame.cpp
More file actions
82 lines (65 loc) · 1.52 KB
/
game.cpp
File metadata and controls
82 lines (65 loc) · 1.52 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
#include "game.hpp"
static sf::VideoMode videoMode(1250, 850);
static const char *aaa = "Fastype!";
//Init functions
void Game::initWindow(){
this->window = new sf::RenderWindow(videoMode, aaa, sf::Style::Titlebar | sf::Style::Close);
//this->window->setFramerateLimit(100);
}
//Constructors
Game::Game(){
this->initWindow();
this->initStates();
}
Game::~Game(){
delete this->window;
}
//Accessors
//Functions
//Core
void Game::run(){
int delta = 0;
int sum = 9;
while(this->window->isOpen()){
sum += delta;
auto start = std::chrono::high_resolution_clock::now();
for (int i = 0; i < sum/8; i++)
this->update();
sum %= 8;
this->render();
auto end = std::chrono::high_resolution_clock::now();
std::chrono::duration<double, std::milli> elapsed = end - start;
sum += (int)elapsed.count();
}
}
void Game::initStates(){
this->states.push(new MainMenuState(this->window, &this->states));
}
void Game::updateEvents(){
while(this->window->pollEvent(this->event)){
if(this->event.type == sf::Event::Closed){
this->window->close();
}
}
}
void Game::update(){
this->updateEvents();
if(!this->states.empty()){
this->states.top()->update();
if(this->states.top()->getQuit()){
this->states.top()->endState();
delete this->states.top();
this->states.pop();
}
}
else{
this->window->close();
}
}
void Game::render(){
this->window->clear();
//Draw stuff
if(!this->states.empty())
this->states.top()->render(this->window);
this->window->display();
}