12 typedef struct _console_control_info {
18 } console_control_info;
20 console_control_info Console_controls[CONCNTL_NUM_CONTROLS];
22 void concntl_cmd_lookdown_on(int argc, char **argv) { console_control_set_state(CONCNTL_LOOKDOWN, 1); }
23 void concntl_cmd_lookdown_off(int argc, char **argv) { console_control_set_state(CONCNTL_LOOKDOWN, 0); }
24 void concntl_cmd_lookup_on(int argc, char **argv) { console_control_set_state(CONCNTL_LOOKUP, 1); }
25 void concntl_cmd_lookup_off(int argc, char **argv) { console_control_set_state(CONCNTL_LOOKUP, 0); }
26 void concntl_cmd_left_on(int argc, char **argv) { console_control_set_state(CONCNTL_LEFT, 1); }
27 void concntl_cmd_left_off(int argc, char **argv) { console_control_set_state(CONCNTL_LEFT, 0); }
28 void concntl_cmd_right_on(int argc, char **argv) { console_control_set_state(CONCNTL_RIGHT, 1); }
29 void concntl_cmd_right_off(int argc, char **argv) { console_control_set_state(CONCNTL_RIGHT, 0); }
30 void concntl_cmd_strafe_on(int argc, char **argv) { console_control_set_state(CONCNTL_STRAFE, 1); }
31 void concntl_cmd_strafe_off(int argc, char **argv) { console_control_set_state(CONCNTL_STRAFE, 0); }
32 void concntl_cmd_moveleft_on(int argc, char **argv) { console_control_set_state(CONCNTL_MOVELEFT, 1); }
33 void concntl_cmd_moveleft_off(int argc, char **argv) { console_control_set_state(CONCNTL_MOVELEFT, 0); }
34 void concntl_cmd_moveright_on(int argc, char **argv) { console_control_set_state(CONCNTL_MOVERIGHT, 1); }
35 void concntl_cmd_moveright_off(int argc, char **argv) { console_control_set_state(CONCNTL_MOVERIGHT, 0); }
36 void concntl_cmd_moveup_on(int argc, char **argv) { console_control_set_state(CONCNTL_MOVEUP, 1); }
37 void concntl_cmd_moveup_off(int argc, char **argv) { console_control_set_state(CONCNTL_MOVEUP, 0); }
38 void concntl_cmd_movedown_on(int argc, char **argv) { console_control_set_state(CONCNTL_MOVEDOWN, 1); }
39 void concntl_cmd_movedown_off(int argc, char **argv) { console_control_set_state(CONCNTL_MOVEDOWN, 0); }
40 void concntl_cmd_bank_on(int argc, char **argv) { console_control_set_state(CONCNTL_BANK, 1); }
41 void concntl_cmd_bank_off(int argc, char **argv) { console_control_set_state(CONCNTL_BANK, 0); }
42 void concntl_cmd_bankleft_on(int argc, char **argv) { console_control_set_state(CONCNTL_BANKLEFT, 1); }
43 void concntl_cmd_bankleft_off(int argc, char **argv) { console_control_set_state(CONCNTL_BANKLEFT, 0); }
44 void concntl_cmd_bankright_on(int argc, char **argv) { console_control_set_state(CONCNTL_BANKRIGHT, 1); }
45 void concntl_cmd_bankright_off(int argc, char **argv) { console_control_set_state(CONCNTL_BANKRIGHT, 0); }
46 void concntl_cmd_attack_on(int argc, char **argv) { console_control_set_state(CONCNTL_ATTACK, 1); }
47 void concntl_cmd_attack_off(int argc, char **argv) { console_control_set_state(CONCNTL_ATTACK, 0); }
48 void concntl_cmd_attack2_on(int argc, char **argv) { console_control_set_state(CONCNTL_ATTACK2, 1); }
49 void concntl_cmd_attack2_off(int argc, char **argv) { console_control_set_state(CONCNTL_ATTACK2, 0); }
50 void concntl_cmd_flare_on(int argc, char **argv) { console_control_set_state(CONCNTL_FLARE, 1); }
51 void concntl_cmd_flare_off(int argc, char **argv) { console_control_set_state(CONCNTL_FLARE, 0); }
52 void concntl_cmd_forward_on(int argc, char **argv) { console_control_set_state(CONCNTL_FORWARD, 1); }
53 void concntl_cmd_forward_off(int argc, char **argv) { console_control_set_state(CONCNTL_FORWARD, 0); }
54 void concntl_cmd_back_on(int argc, char **argv) { console_control_set_state(CONCNTL_BACK, 1); }
55 void concntl_cmd_back_off(int argc, char **argv) { console_control_set_state(CONCNTL_BACK, 0); }
56 void concntl_cmd_bomb_on(int argc, char **argv) { console_control_set_state(CONCNTL_BOMB, 1); }
57 void concntl_cmd_bomb_off(int argc, char **argv) { console_control_set_state(CONCNTL_BOMB, 0); }
58 void concntl_cmd_rearview_on(int argc, char **argv) { console_control_set_state(CONCNTL_REARVIEW, 1); }
59 void concntl_cmd_rearview_off(int argc, char **argv) { console_control_set_state(CONCNTL_REARVIEW, 0); }
60 void concntl_cmd_cruiseup_on(int argc, char **argv) { console_control_set_state(CONCNTL_CRUISEUP, 1); }
61 void concntl_cmd_cruiseup_off(int argc, char **argv) { console_control_set_state(CONCNTL_CRUISEUP, 0); }
62 void concntl_cmd_cruisedown_on(int argc, char **argv) { console_control_set_state(CONCNTL_CRUISEDOWN, 1); }
63 void concntl_cmd_cruisedown_off(int argc, char **argv) { console_control_set_state(CONCNTL_CRUISEDOWN, 0); }
64 void concntl_cmd_cruiseoff_on(int argc, char **argv) { console_control_set_state(CONCNTL_CRUISEOFF, 1); }
65 void concntl_cmd_cruiseoff_off(int argc, char **argv) { console_control_set_state(CONCNTL_CRUISEOFF, 0); }
66 void concntl_cmd_automap_on(int argc, char **argv) { console_control_set_state(CONCNTL_AUTOMAP, 1); }
67 void concntl_cmd_automap_off(int argc, char **argv) { console_control_set_state(CONCNTL_AUTOMAP, 0); }
68 void concntl_cmd_afterburn_on(int argc, char **argv) { console_control_set_state(CONCNTL_AFTERBURN, 1); }
69 void concntl_cmd_afterburn_off(int argc, char **argv) { console_control_set_state(CONCNTL_AFTERBURN, 0); }
70 void concntl_cmd_cycle_on(int argc, char **argv) { console_control_set_state(CONCNTL_CYCLE, 1); }
71 void concntl_cmd_cycle_off(int argc, char **argv) { console_control_set_state(CONCNTL_CYCLE, 0); }
72 void concntl_cmd_cycle2_on(int argc, char **argv) { console_control_set_state(CONCNTL_CYCLE2, 1); }
73 void concntl_cmd_cycle2_off(int argc, char **argv) { console_control_set_state(CONCNTL_CYCLE2, 0); }
74 void concntl_cmd_headlight_on(int argc, char **argv) { console_control_set_state(CONCNTL_HEADLIGHT, 1); }
75 void concntl_cmd_headlight_off(int argc, char **argv) { console_control_set_state(CONCNTL_HEADLIGHT, 0); }
76 void concntl_cmd_nrgshield_on(int argc, char **argv) { console_control_set_state(CONCNTL_NRGSHIELD, 1); }
77 void concntl_cmd_nrgshield_off(int argc, char **argv) { console_control_set_state(CONCNTL_NRGSHIELD, 0); }
78 void concntl_cmd_togglebomb_on(int argc, char **argv) { console_control_set_state(CONCNTL_TOGGLEBOMB, 1); }
79 void concntl_cmd_togglebomb_off(int argc, char **argv) { console_control_set_state(CONCNTL_TOGGLEBOMB, 0); }
81 /* select / toggle weapons */
82 void concntl_cmd_weapon(int argc, char **argv)
86 if (argc < 2 || !stricmp(argv[1], "-h")) {
87 con_printf(CON_NORMAL, "%s <num>\n", argv[0]);
88 con_printf(CON_NORMAL, " select or toggle weapon <num>\n");
98 do_weapon_select((n-1) % 5, (n-1) / 5);
102 // Returns the number of seconds this 'button' has been down since last call.
103 fix console_control_down_time(console_control control)
107 if (!Console_controls[control].state) {
108 time_down = Console_controls[control].time_held_down;
109 Console_controls[control].time_held_down = 0;
111 time = timer_get_fixed_seconds();
112 time_down = time - Console_controls[control].time_went_down;
113 Console_controls[control].time_went_down = time;
119 unsigned int console_control_down_count(console_control control)
123 n = Console_controls[control].down_count;
124 Console_controls[control].down_count = 0;
129 unsigned int console_control_up_count(console_control control)
133 n = Console_controls[control].up_count;
134 Console_controls[control].up_count = 0;
140 // Returns 1 if this control is currently down
141 unsigned int console_control_state(console_control control)
143 return Console_controls[control].state;
147 void console_control_set_state(console_control control, int state)
149 console_control_info *ctl = &Console_controls[control];
154 ctl->time_went_down = timer_get_fixed_seconds();
158 ctl->time_held_down += timer_get_fixed_seconds() - ctl->time_went_down;
163 void console_control_init(void)
165 memset(Console_controls, 0, sizeof(console_control_info) * CONCNTL_NUM_CONTROLS);
167 cmd_addcommand("+lookdown", concntl_cmd_lookdown_on);
168 cmd_addcommand("-lookdown", concntl_cmd_lookdown_off);
169 cmd_addcommand("+lookup", concntl_cmd_lookup_on);
170 cmd_addcommand("-lookup", concntl_cmd_lookup_off);
171 cmd_addcommand("+left", concntl_cmd_left_on);
172 cmd_addcommand("-left", concntl_cmd_left_off);
173 cmd_addcommand("+right", concntl_cmd_right_on);
174 cmd_addcommand("-right", concntl_cmd_right_off);
175 cmd_addcommand("+strafe", concntl_cmd_strafe_on);
176 cmd_addcommand("-strafe", concntl_cmd_strafe_off);
177 cmd_addcommand("+moveleft", concntl_cmd_moveleft_on);
178 cmd_addcommand("-moveleft", concntl_cmd_moveleft_off);
179 cmd_addcommand("+moveright", concntl_cmd_moveright_on);
180 cmd_addcommand("-moveright", concntl_cmd_moveright_off);
181 cmd_addcommand("+moveup", concntl_cmd_moveup_on);
182 cmd_addcommand("-moveup", concntl_cmd_moveup_off);
183 cmd_addcommand("+movedown", concntl_cmd_movedown_on);
184 cmd_addcommand("-movedown", concntl_cmd_movedown_off);
185 cmd_addcommand("+bank", concntl_cmd_bank_on);
186 cmd_addcommand("-bank", concntl_cmd_bank_off);
187 cmd_addcommand("+bankleft", concntl_cmd_bankleft_on);
188 cmd_addcommand("-bankleft", concntl_cmd_bankleft_off);
189 cmd_addcommand("+bankright", concntl_cmd_bankright_on);
190 cmd_addcommand("-bankright", concntl_cmd_bankright_off);
191 cmd_addcommand("+attack", concntl_cmd_attack_on);
192 cmd_addcommand("-attack", concntl_cmd_attack_off);
193 cmd_addcommand("+attack2", concntl_cmd_attack2_on);
194 cmd_addcommand("-attack2", concntl_cmd_attack2_off);
195 cmd_addcommand("+flare", concntl_cmd_flare_on);
196 cmd_addcommand("-flare", concntl_cmd_flare_off);
197 cmd_addcommand("+forward", concntl_cmd_forward_on);
198 cmd_addcommand("-forward", concntl_cmd_forward_off);
199 cmd_addcommand("+back", concntl_cmd_back_on);
200 cmd_addcommand("-back", concntl_cmd_back_off);
201 cmd_addcommand("+bomb", concntl_cmd_bomb_on);
202 cmd_addcommand("-bomb", concntl_cmd_bomb_off);
203 cmd_addcommand("+rearview", concntl_cmd_rearview_on);
204 cmd_addcommand("-rearview", concntl_cmd_rearview_off);
205 cmd_addcommand("+cruiseup", concntl_cmd_cruiseup_on);
206 cmd_addcommand("-cruiseup", concntl_cmd_cruiseup_off);
207 cmd_addcommand("+cruisedown", concntl_cmd_cruisedown_on);
208 cmd_addcommand("-cruisedown", concntl_cmd_cruisedown_off);
209 cmd_addcommand("+cruiseoff", concntl_cmd_cruiseoff_on);
210 cmd_addcommand("-cruiseoff", concntl_cmd_cruiseoff_off);
211 cmd_addcommand("+automap", concntl_cmd_automap_on);
212 cmd_addcommand("-automap", concntl_cmd_automap_off);
213 cmd_addcommand("+afterburn", concntl_cmd_afterburn_on);
214 cmd_addcommand("-afterburn", concntl_cmd_afterburn_off);
215 cmd_addcommand("+cycle", concntl_cmd_cycle_on);
216 cmd_addcommand("-cycle", concntl_cmd_cycle_off);
217 cmd_addcommand("+cycle2", concntl_cmd_cycle2_on);
218 cmd_addcommand("-cycle2", concntl_cmd_cycle2_off);
219 cmd_addcommand("+headlight", concntl_cmd_headlight_on);
220 cmd_addcommand("-headlight", concntl_cmd_headlight_off);
221 cmd_addcommand("+nrgshield", concntl_cmd_nrgshield_on);
222 cmd_addcommand("-nrgshield", concntl_cmd_nrgshield_off);
223 cmd_addcommand("+togglebomb", concntl_cmd_togglebomb_on);
224 cmd_addcommand("-togglebomb", concntl_cmd_togglebomb_off);
226 cmd_addcommand("weapon", concntl_cmd_weapon);