-
Notifications
You must be signed in to change notification settings - Fork 0
/
InputHandler.cpp
72 lines (63 loc) · 1.54 KB
/
InputHandler.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
#include <iostream>
#include "Headers/InputHandler/InputHandler.h"
#include "Headers/Utils.h"
#include "Headers/Game/Game.h"
#include "Headers/Command/MoveCommand.h"
#include "Headers/Command/UndoCommand.h"
#include "Headers/Command/ExitCommand.h"
InputHandler::InputHandler(GameComponent *parent) : GameComponent(parent)
{
}
InputHandler::~InputHandler()
{
}
Command *InputHandler::getInput()
{
char c;
c = Utils::getch();
// If exit button is pushed
if (c == 'q' | c == 'Q')
{
return new ExitCommand();
}
// If undo button is pushed
if (c == 'u' | c == 'U')
{
return new UndoCommand();
}
// If it's a move command or a not supported key
MoveCommand *command;
// Check for arrow keys
if (c == '\033')
{
c = Utils::getch();
c = Utils::getch();
switch (c)
{
case KEY_UP:
command = new MoveCommand();
command->setDirection(UP);
return command;
break;
case KEY_DOWN:
command = new MoveCommand();
command->setDirection(DOWN);
return command;
break;
case KEY_LEFT:
command = new MoveCommand();
command->setDirection(LEFT);
return command;
break;
case KEY_RIGHT:
command = new MoveCommand();
command->setDirection(RIGHT);
return command;
break;
default:
return nullptr;
break;
}
}
return nullptr;
}