-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathScene_Menu.cpp
More file actions
121 lines (102 loc) · 3.23 KB
/
Copy pathScene_Menu.cpp
File metadata and controls
121 lines (102 loc) · 3.23 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
#include "Scene_Menu.h"
#include "Scene_TopDown.h"
#include "Scene_Play.h"
#include "Scene_GeometryShooter.h"
#include "Scene.h"
Scene_Menu::Scene_Menu(GameEngine * gameEngine)
: Scene(gameEngine)
{
init();
}
void Scene_Menu::init()
{
m_menuStrings.push_back("LEVEL 1");
m_menuStrings.push_back("LEVEL 2");
m_menuStrings.push_back("LEVEL 3");
//configurationFilePath
m_levelPaths.push_back("level1Conf.txt");
m_levelPaths.push_back("level2Conf.txt");
m_levelPaths.push_back("level3Conf.txt");
registerAction(sf::Keyboard::W, "UP");
registerAction(sf::Keyboard::S, "DOWN");
registerAction(sf::Keyboard::Enter, "PLAY");
registerAction(sf::Keyboard::Escape, "QUIT");
m_title = "MAIN MENU";
m_entityManager = EntityManager();
auto & assets = m_game->assets();
m_menuText.setFont(assets.getFont("fontName"));
m_menuText.setCharacterSize(24);
m_menuText.setFillColor(sf::Color::White);
m_menuText.setStyle(sf::Text::Bold);
m_menuText.setString(m_title);
}
void Scene_Menu::update(sf::Time deltaTime)
{
sRender();
currentFrame++;
}
void Scene_Menu::sRender()
{
m_game->window().clear(sf::Color::Black);
std::string levelName = m_menuStrings[m_selectedMenuIndex];
m_game->window().draw(m_menuText);
float posX = 50.0f;
float posY = 50.0f;
sf::RectangleShape rectangle(sf::Vector2f(120.f, 50.f));
rectangle.setFillColor(sf::Color::Cyan);
rectangle.setPosition(posX, posY * (float) (m_selectedMenuIndex + 1) );
m_game->window().draw(rectangle);
for (int i = 0; i < m_menuStrings.size(); ++i )
{
sf::Text levelText;
levelText.setFont(m_game->assets().getFont("fontName"));
levelText.setCharacterSize(24);
levelText.setFillColor(sf::Color::White);
levelText.setStyle(sf::Text::Bold);
levelText.setPosition(posX, posY * (float)(i + 1) );
levelText.setString(m_menuStrings[i]);
m_game->window().draw(levelText);
}
}
void Scene_Menu::sDoAction(const Action & action)
{
if(action.type() == "START")
{
if(action.name() == "UP")
{
if(m_selectedMenuIndex > 0) { m_selectedMenuIndex--; }
else { m_selectedMenuIndex = m_menuStrings.size() - 1; }
}
else if(action.name() == "DOWN")
{
m_selectedMenuIndex = (m_selectedMenuIndex + 1) % m_menuStrings.size();
}
else if(action.name() == "PLAY")
{
if (m_selectedMenuIndex == 0)
{
m_game->changeScene("LEVEL 1", std::make_shared<Scene_Play>(m_game, m_levelPaths[m_selectedMenuIndex]));
}
else if (m_selectedMenuIndex == 1)
{
m_game->changeScene("LEVEL 2", std::make_shared<Scene_TopDown>(m_game, m_levelPaths[m_selectedMenuIndex]));
}
else if (m_selectedMenuIndex == 2)
{
m_game->changeScene("LEVEL 3", std::make_shared<Scene_GeometryShooter>(m_game, m_levelPaths[m_selectedMenuIndex]));
}
}
else if(action.name() == "QUIT")
{
onEnd();
}
}
}
//void Scene_Menu::doAction(const Action & action)
//{
//
//}
void Scene_Menu::onEnd()
{
m_game->quit();
}