-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathManagerManager.cpp
More file actions
97 lines (86 loc) · 2.71 KB
/
ManagerManager.cpp
File metadata and controls
97 lines (86 loc) · 2.71 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
#include "ManagerManager.h"
ManagerManager::ManagerManager(RenderWindow* window_ptr, GameManager* gameManager_ptr, Settings* settings_ptr, Leaderboard* leaderboard_ptr, MenuManager* menuManager_ptr, DotZero* DotZero_ptr)
:window_ptr(window_ptr)
, screen_ptr{gameManager_ptr, settings_ptr, leaderboard_ptr, menuManager_ptr ,DotZero_ptr}
,background(*window_ptr)
{
}
ManagerManager::ManagerManager(RenderWindow* window_ptr)
:window_ptr(window_ptr)
,background(*window_ptr)
{
}
void ManagerManager::setPointers(GameManager* gameManager_ptr, Settings* settings_ptr, Leaderboard* leaderboard_ptr, MenuManager* menuManager_ptr, DotZero* DotZero_ptr)
{
this->screen_ptr[0] = gameManager_ptr;
this->screen_ptr[1] = settings_ptr;
this->screen_ptr[2] = leaderboard_ptr;
this->screen_ptr[3] = menuManager_ptr;
this->screen_ptr[4] = DotZero_ptr;
}
void ManagerManager::manage()
{
checkEvents();
}
void ManagerManager::setState(State state)
{
this->state = state;
screen_ptr[State_to_int()]->updateMouse();
}
void ManagerManager::checkEvents()
{
bool isFocused;
isFocused = true;
while (window_ptr->isOpen())
{
Event event;
while (window_ptr->pollEvent(event))
{
if (event.type == Event::Closed)
window_ptr->close();
else if (event.type == Event::GainedFocus) {
isFocused = true;
}
else if (event.type == Event::LostFocus) {
isFocused = false;
}
if (isFocused) {
if (event.type == Event::MouseMoved) {
screen_ptr[State_to_int()]->updateMouse();
}
else if (event.type == Event::KeyPressed) {
screen_ptr[State_to_int()]->manageInput(event.key.code);
}
else if (event.type == Event::TextEntered) {
if (event.text.unicode < 128 && State_to_int() == 0) { //ASCII only, gameManager only
dynamic_cast<GameManager*>(screen_ptr[State_to_int()])->pushChar(static_cast<char>(event.text.unicode));
}
}
else if (event.type == Event::MouseButtonPressed) {
screen_ptr[State_to_int()]->manageInput(event.mouseButton.button);
}
else if (event.type == Event::MouseButtonReleased) {
screen_ptr[State_to_int()]->manageInput(event.mouseButton.button, true);
}
}
}
if (isFocused) {
window_ptr->clear(Color(15, 15, 15));
update();
window_ptr->display();
}
}
}
void ManagerManager::update()
{
if(state == State::menu || state == State::settings ||
( state == State::game &&
(dynamic_cast<GameManager*>(screen_ptr[State_to_int()])->getState() == GameManager::difficultySelection ||
dynamic_cast<GameManager*>(screen_ptr[State_to_int()])->getState() == GameManager::customSelection
))
){
background.update();
window_ptr->draw(background);
}
screen_ptr[State_to_int()]->update();
}