-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSceneManager.cpp
More file actions
90 lines (71 loc) · 1.93 KB
/
SceneManager.cpp
File metadata and controls
90 lines (71 loc) · 1.93 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
#include "SceneManager.h"
#include"GameScene.h"
#include"MenuScene.h"
#include"ModeScene.h"
#include"LoseScene.h"
#include"WinScene.h"
#include"Health.h"
SceneManager* SceneManager::instance = NULL;
std::stack<Scene*> SceneManager::scenes = {};
std::stack<Scene*> SceneManager::trash = {};
int SceneManager::difficult = 2;
SceneManager::~SceneManager() {
while (!scenes.empty())
{
SceneManager::pop();
}
clean();
}
SceneManager* SceneManager::getInstance() {
if (!instance) {
instance = new SceneManager;
}
return instance;
}
/* Creador de escenas */
Scene* SceneManager::createGameScene(sf::RenderWindow* window, int cant_players, int difficult) {
GameScene * scene = new GameScene(window, difficult);
Player* player;
Health h;
player = new Player("Images/DinitrioSprite.png","arrows",h(difficult));
scene->addPlayers(*player);
if (cant_players == 2) {
player = new Player("Images/DinoncioSprite.png","letters",h(difficult));
scene->addPlayers(*player);
}
return scene;
}
Scene* SceneManager::createMenuScene(sf::RenderWindow* window) { return new MenuScene(window); }
Scene* SceneManager::createModeScene(sf::RenderWindow* window) { return new ModeScene(window); }
Scene* SceneManager::createLoseScene(sf::RenderWindow* window) { return new LoseScene(window); }
Scene* SceneManager::createWinScene(sf::RenderWindow* window) { return new WinScene(window); }
void SceneManager::push(Scene* newScene) {
scenes.push(newScene);
}
Scene* SceneManager::top() {
return scenes.top();
}
void SceneManager::pop() {
Scene* deleted = SceneManager::top();
scenes.pop();
trash.push(deleted);
}
void SceneManager::goToMenu() {
while (scenes.size() > 0)
{
pop();
}
}
void SceneManager::clean() {
while (!trash.empty()) {
Scene* deleted = trash.top();
trash.pop();
delete deleted;
}
}
void SceneManager::setDifficult(int difficult) {
SceneManager::difficult = difficult;
}
int SceneManager::getDifficult() {
return difficult;
}