author | terom |
Mon, 08 Dec 2008 18:12:43 +0000 | |
changeset 300 | 417183866f35 |
parent 283 | 7540b0859579 |
child 311 | 440763821484 |
permissions | -rw-r--r-- |
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
1 |
#ifndef INPUT_HH |
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
2 |
#define INPUT_HH |
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
3 |
|
221 | 4 |
#include <stdint.h> |
230 | 5 |
#include <ClanLib/Display/input_device.h> |
221 | 6 |
#include <ClanLib/Display/keys.h> |
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
7 |
|
283
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
8 |
// const TimeMS INPUT_INTERVAL_MS = 20; |
221 | 9 |
|
283
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
10 |
/** |
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
11 |
* The bits used in the PlayerInput bitmask, each represents a separate action handled by LocalPlayer::handleInput. |
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
12 |
* |
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
13 |
* @see LocalPlayer::handleInput |
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
14 |
*/ |
233
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
15 |
enum PlayerInputBit { |
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
16 |
INPUT_NONE = 0x0000, |
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
17 |
|
221 | 18 |
INPUT_AIM_UP = 0x0001, |
19 |
INPUT_AIM_DOWN = 0x0002, |
|
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
20 |
|
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
21 |
INPUT_MOVE_LEFT = 0x0004, |
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
22 |
INPUT_MOVE_RIGHT = 0x0008, |
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
23 |
|
221 | 24 |
INPUT_JUMP = 0x0010, |
25 |
INPUT_DIG = 0x0020, |
|
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
26 |
INPUT_SHOOT = 0x0040, |
237 | 27 |
INPUT_CHANGE_NEXT = 0x0080, |
28 |
INPUT_CHANGE_PREV = 0x0100, |
|
29 |
INPUT_ROPE = 0x0200, |
|
30 |
INPUT_UNROPE = 0x0400, |
|
31 |
INPUT_ROPE_UP = 0x0800, |
|
32 |
INPUT_ROPE_DOWN = 0x1000, |
|
300 | 33 |
|
34 |
INPUT_SUICIDE = 0x2000, |
|
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
35 |
}; |
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
36 |
|
283
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
37 |
/** |
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
38 |
* The bits used in the GuiInput bitmask, each represents something handled locally by Graphics. |
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
39 |
*/ |
233
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
40 |
enum GuiInputBit { |
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
41 |
GUI_INPUT_QUIT = 0x0001, |
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
42 |
GUI_INPUT_DISPLAY_WEAPON = 0x0002, |
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
43 |
GUI_INPUT_DEBUG_PLAYER = 0x0004, |
221 | 44 |
}; |
45 |
||
283
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
46 |
/** |
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
47 |
* Bitmask of PlayerInputBits |
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
48 |
* |
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
49 |
* @see PlayerInputBit |
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
50 |
*/ |
233
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
51 |
typedef uint16_t PlayerInput; |
283
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
52 |
|
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
53 |
/** |
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
54 |
* Bitmask for GuiInputBits |
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
55 |
* |
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
56 |
* @see GuiInputBit |
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
57 |
*/ |
233
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
58 |
typedef uint16_t GuiInput; |
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
59 |
|
283
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
60 |
/** |
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
61 |
* Keymap definition used in Input.cc |
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
62 |
*/ |
235 | 63 |
template <typename BitEnumType> struct InputKeymapEntry; |
64 |
||
283
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
65 |
/** |
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
66 |
* Handles reading input from a keyboard and mapping it to PlayerInput/GuiInput bitmasks |
7540b0859579
start adding some documentation, most core classes (outside of Network) are now doxygen-enabled
terom
parents:
237
diff
changeset
|
67 |
*/ |
235 | 68 |
class Input { |
69 |
protected: |
|
70 |
CL_InputDevice &keyboard; |
|
71 |
||
72 |
public: |
|
73 |
Input (CL_InputDevice &keyboard); |
|
74 |
||
75 |
private: |
|
76 |
bool checkKeycode (int keycode); |
|
77 |
template <typename BitEnumType, typename BitMaskType> BitMaskType buildMask (InputKeymapEntry<BitEnumType> *keymap); |
|
78 |
||
79 |
public: |
|
80 |
/* |
|
81 |
* Reads the keyboard to determine current state of the Player/Gui input |
|
82 |
*/ |
|
83 |
PlayerInput readPlayerInput (void); |
|
84 |
GuiInput readGuiInput (void); |
|
85 |
}; |
|
230 | 86 |
|
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
87 |
#endif |