-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathKeyboardController.hpp
More file actions
69 lines (56 loc) · 1.78 KB
/
Copy pathKeyboardController.hpp
File metadata and controls
69 lines (56 loc) · 1.78 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
#ifndef KEYBOARD_CONTROLLER_H_
#define KEYBOARD_CONTROLLER_H_
#include "Controller.hpp"
struct KeyboardController : Controller
{
KeyboardController()
: playRecording(false)
{
sf::Time timer;
}
virtual void update(sf::Time timeDelta, Agent* agent)
{
timer += timeDelta;
PhysicalProperties* phys = &(agent->phys);
phys->jumpAcceleration = 0.0f;
Event event = { timer, {} };
if (!playRecording) {
bool noKeyWasPressed = true;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) {
noKeyWasPressed = false;
agent->eventManager.pushCommand(event, command_e::WALK_LEFT);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) {
noKeyWasPressed = false;
agent->eventManager.pushCommand(event, command_e::WALK_RIGHT);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Z) /*&& phys->isOnGround*/) {
noKeyWasPressed = false;
agent->eventManager.pushCommand(event, command_e::JUMP);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Space)) {
playRecording = true;
timer = sf::seconds(0);
agent->animatedSprite->setPosition(0, 0);
agent->eventManager.pushCommand(event, command_e::RESTART);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::R)) {
timer = sf::seconds(0);
agent->animatedSprite->setPosition(0, 0);
agent->eventManager.pushCommand(event, command_e::RESTART);
}
if (noKeyWasPressed) {
agent->eventManager.pushCommand(event, command_e::STOP);
} else
noKeyWasPressed = true;
agent->eventManager.pushEvent(event);
} else {
if (!agent->eventManager.nextEvent(timer)) {
playRecording = false;
}
}
}
bool playRecording;
sf::Time timer;
};
#endif