1 // Copyright 2005 by Anthony Liekens anthony@liekens.net
2 
3 #ifndef INPUT_H
4 #define INPUT_H
5 
6 enum InputType
7 {
8         IT_NONE,
9         IT_KEYBOARD,
10         IT_MOUSEMOTION,
11         IT_MOUSEBUTTON,
12         IT_STICKMOTION,
13         IT_STICKBUTTON,
14         IT_STICKHAT // TODO: Not yet implemented.
15 };
16 
17 enum AxisDirection
18 {
19         AD_NEGATIVE,
20         AD_POSITIVE
21 };
22 
23 typedef struct Input
24 {
25         InputType inputType;
26 
27         int id0;
28         int id1;
29         int id2;
30 };
31 
32 enum GameAction
33 {
34         GA_NULL,                // Nothing. Dummy entry.
35 
36         GA_SENSE_CANCEL,        // Input mapping sense cancel.
37         GA_SENSE_COMPLETE,      // Input mapping sense complete.
38 
39         GA_TOGGLE_GRAB,         // Toggles input grabbing for windowed mode
40 
41         // General actions
42         GA_LEAVE,               // Leave menu, game whatever.
43         GA_SCREENSHOT,          // Make a screenshot.
44         GA_PAUSE,               // Pause/Unpause the game.
45         GA_TOGGLE_FULLSCREEN,   // Toggle between fullscreen and windowed mode.
46 
47         GA_RESTART_ROUND,       // Restart round.
48         GA_NEXT_ROUND,          // Start next round.
49 
50         // Game related actions
51         GA_SELECT_ALL,                  // Select all planets as source.
52         GA_TOGGLE_ENEMY_VISIBILITY,       // Toggle between showing and hiding the enemy ships.
53 
54         GA_SELECTION,
55 
56         GA_CURSOR_UP,
57         GA_CURSOR_DOWN,
58         GA_CURSOR_LEFT,
59         GA_CURSOR_RIGHT,
60 
61         GA_SELECT_NEAREST_PLANET,
62         GA_MOVE_TO_NEAREST_PLANET,
63 
64         GA_SET_FLEET_STRENGTH_SINGLE,
65         GA_FLEET_STRENGTH_UP,
66         GA_FLEET_STRENGTH_DOWN,
67 
68         GA_SET_FLEET_STRENGTH_10,
69         GA_SET_FLEET_STRENGTH_20,
70         GA_SET_FLEET_STRENGTH_30,
71         GA_SET_FLEET_STRENGTH_40,
72         GA_SET_FLEET_STRENGTH_50,
73         GA_SET_FLEET_STRENGTH_60,
74         GA_SET_FLEET_STRENGTH_70,
75         GA_SET_FLEET_STRENGTH_80,
76         GA_SET_FLEET_STRENGTH_90,
77         GA_SET_FLEET_STRENGTH_100,
78 
79 };
80 #define GA_FIRST (GA_TOGGLE_GRAB)
81 #define GA_COUNT (GA_SET_FLEET_STRENGTH_100+1)
82 
83 class InputHandler {
84 
85   public:
86     virtual void handle(GameAction ga, int value) = 0;
87 };
88 
89 #endif
90