Skip to content

Commit b461513

Browse files
author
Thumperrr
committed
added Application::OnEvent. Calls the appropriate event function in state.
1 parent c4779ab commit b461513

File tree

2 files changed

+164
-28
lines changed

2 files changed

+164
-28
lines changed

src/Application.cpp

Lines changed: 152 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ namespace chesspp
55
{
66
Application::Application()
77
: display(sf::VideoMode(640, 640), "ChessPlusPlus"),
8-
running(true),
9-
state(new AppStateGame(this))
8+
running(true),
9+
state(new AppStateGame(this))
1010
{
1111
}
1212

@@ -15,27 +15,163 @@ namespace chesspp
1515
sf::Event Event;
1616
while(running)
1717
{
18-
while(display.pollEvent(Event)){
19-
state->OnEvent(Event);
20-
21-
switch(Event.type){
22-
case sf::Event::Closed:
23-
running = false;
24-
break;
25-
default:
26-
break;
27-
}
28-
}
18+
while(display.pollEvent(Event))
19+
OnEvent(&Event);
2920

3021
state->OnRender(display);
31-
display.display();
22+
display.display();
3223
}
33-
24+
3425
return 0;
3526
}
3627

3728
Application::~Application()
3829
{
39-
delete state; //Even if it's null, no matter.
30+
delete state; //Even if it's null, no matter.
4031
}
32+
33+
void Application::OnEvent(sf::Event *Event)
34+
{
35+
switch(Event->type)
36+
{
37+
case sf::Event::Closed:
38+
{
39+
state->OnClosed();
40+
running = false;
41+
break;
42+
}
43+
case sf::Event::Resized:
44+
{
45+
state->OnResized(Event->size.width, Event->size.height);
46+
break;
47+
}
48+
case sf::Event::LostFocus:
49+
{
50+
state->OnLostFocus();
51+
break;
52+
}
53+
case sf::Event::GainedFocus:
54+
{
55+
state->OnGainedFocus();
56+
break;
57+
}
58+
case sf::Event::TextEntered:
59+
{
60+
state->OnTextEntered(Event->text.unicode);
61+
break;
62+
}
63+
case sf::Event::KeyPressed:
64+
{
65+
state->OnKeyPressed(Event->key.code, Event->key.alt, Event->key.control, Event->key.shift, Event->key.system);
66+
break;
67+
}
68+
case sf::Event::KeyReleased:
69+
{
70+
state->OnKeyReleased(Event->key.code, Event->key.alt, Event->key.control, Event->key.shift, Event->key.system);
71+
break;
72+
}
73+
case sf::Event::MouseWheelMoved:
74+
{
75+
state->OnMouseWheelMoved(Event->mouseWheel.delta, Event->mouseWheel.x, Event->mouseWheel.y);
76+
break;
77+
}
78+
case sf::Event::MouseButtonPressed:
79+
{
80+
switch(Event->mouseButton.button)
81+
{
82+
case sf::Mouse::Left:
83+
{
84+
state->OnLButtonPressed(Event->mouseButton.x, Event->mouseButton.y);
85+
break;
86+
}
87+
case sf::Mouse::Right:
88+
{
89+
state->OnRButtonPressed(Event->mouseButton.x, Event->mouseButton.y);
90+
break;
91+
}
92+
case sf::Mouse::Middle:
93+
{
94+
state->OnMButtonPressed(Event->mouseButton.x, Event->mouseButton.y);
95+
break;
96+
}
97+
default:
98+
{
99+
state->OnMouseButtonPressed(Event->mouseButton.button, Event->mouseButton.x, Event->mouseButton.y);
100+
break;
101+
}
102+
}
103+
break;
104+
}
105+
case sf::Event::MouseButtonReleased:
106+
{
107+
switch(Event->mouseButton.button)
108+
{
109+
case sf::Mouse::Left:
110+
{
111+
state->OnLButtonReleased(Event->mouseButton.x, Event->mouseButton.y);
112+
break;
113+
}
114+
case sf::Mouse::Right:
115+
{
116+
state->OnRButtonReleased(Event->mouseButton.x, Event->mouseButton.y);
117+
break;
118+
}
119+
case sf::Mouse::Middle:
120+
{
121+
state->OnMButtonReleased(Event->mouseButton.x, Event->mouseButton.y);
122+
break;
123+
}
124+
default:
125+
{
126+
state->OnMouseButtonPressed(Event->mouseButton.button, Event->mouseButton.x, Event->mouseButton.y);
127+
break;
128+
}
129+
}
130+
break;
131+
}
132+
case sf::Event::MouseMoved:
133+
{
134+
state->OnMouseMoved(Event->mouseMove.x, Event->mouseMove.y);
135+
break;
136+
}
137+
case sf::Event::MouseEntered:
138+
{
139+
state->OnMouseEnteredWindow();
140+
break;
141+
}
142+
case sf::Event::MouseLeft:
143+
{
144+
state->OnMouseLeftWindow();
145+
break;
146+
}
147+
case sf::Event::JoystickButtonPressed:
148+
{
149+
state->OnJoystickButtonPressed(Event->joystickButton.joystickId, Event->joystickButton.button);
150+
break;
151+
}
152+
case sf::Event::JoystickButtonReleased:
153+
{
154+
state->OnJoystickButtonReleased(Event->joystickButton.joystickId, Event->joystickButton.button);
155+
break;
156+
}
157+
case sf::Event::JoystickMoved:
158+
{
159+
state->OnJoystickMoved(Event->joystickMove.joystickId, Event->joystickMove.axis, Event->joystickMove.position);
160+
break;
161+
}
162+
case sf::Event::JoystickConnected:
163+
{
164+
state->OnJoystickConnected(Event->joystickConnect.joystickId);
165+
break;
166+
}
167+
case sf::Event::JoystickDisconnected:
168+
{
169+
state->OnJoystickDisconnected(Event->joystickConnect.joystickId);
170+
break;
171+
}
172+
default:
173+
break;
174+
}
175+
}
176+
41177
}

src/Application.h

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,20 @@ namespace chesspp
77
{
88
class Application
99
{
10-
sf::RenderWindow display;
10+
sf::RenderWindow display;
1111
bool running;
12-
AppState* state;
13-
12+
AppState* state;
13+
void OnEvent(sf::Event *Event);
14+
1415
public:
15-
Application();
16-
~Application();
17-
18-
template <class NewState> void ChangeState()
19-
{
20-
delete state;
21-
state = new NewState;
22-
}
23-
16+
Application();
17+
~Application();
18+
19+
template<class NewState> void ChangeState()
20+
{
21+
delete state;
22+
state = new NewState;
23+
}
2424
int Exec();
2525
};
2626
}

0 commit comments

Comments
 (0)