-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBaseWindow.cpp
91 lines (78 loc) · 1.42 KB
/
BaseWindow.cpp
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
#include "BaseWindow.h"
BaseWindow::BaseWindow(std::shared_ptr<Graphic> graphicIn)
{
TTF_Init();
font = TTF_OpenFont(std::string(Utility::getBasePath() + "assets/fonts/arial.ttf").c_str(), 20);
fontColor.r = 0;
fontColor.g = 0;
fontColor.b = 0;
graphic = graphicIn;
running = true;
newState = false;
state = STATE::MAINMENU;
}
BaseWindow::~BaseWindow(void)
{
}
void BaseWindow::renderBody(void)
{
for(int i = 0; i < texts.size(); i++)
{
texts[i].render();
}
for(int i = 0; i < buttons.size(); i++)
{
buttons[i].render();
}
}
void BaseWindow::render(void)
{
SDL_SetRenderDrawColor(graphic->getRenderer(), 0xff, 0xff, 0xff, 0xff);
SDL_RenderClear(graphic->getRenderer());
renderBody();
SDL_RenderPresent(graphic->getRenderer());
}
void BaseWindow::onEvent(SDL_Event* ev, const Uint8* keyStates)
{
switch (ev->type)
{
case SDL_QUIT:
{
running = false;
break;
}
case SDL_KEYDOWN:
{
if(ev->key.keysym.sym == SDLK_ESCAPE)
running = false;
break;
}
}
for(int i = 0; i < buttons.size(); i++)
{
buttons[i].onEvent(ev, keyStates);
}
}
void BaseWindow::update(float, const Uint8*)
{
for(int i = 0; i < buttons.size(); i++)
{
if(buttons[i].hasClicked())
{
newState = true;
state = buttons[i].getOnClick();
}
}
}
bool BaseWindow::hasNewState(void)
{
return newState;
}
STATE BaseWindow::requestStateChange(void)
{
return state;
}
bool BaseWindow::isRunning(void)
{
return running;
}