#include <stdio.h>
#include <stdlib.h>
-#include <Aircraft/aircraft.h>
+#include <Aircraft/aircraft.hxx>
#include <Astro/solarsystem.hxx>
#include <Astro/sky.hxx>
-#include <Autopilot/autopilot.h> // Added autopilot.h to list, Jeff Goeke-Smith
+#include <Autopilot/autopilot.hxx>
#include <Cockpit/hud.hxx>
#include <Debug/fg_debug.h>
#include <GUI/gui.h>
#include <Objects/material.hxx>
#include <PUI/pu.h>
#include <Time/light.hxx>
-#include <Weather/weather.h>
+#include <Weather/weather.hxx>
#include "GLUTkey.hxx"
#include "options.hxx"
// Handle keyboard events
void GLUTkey(unsigned char k, int x, int y) {
- fgCONTROLS *c;
fgFLIGHT *f;
fgTIME *t;
fgVIEW *v;
struct fgWEATHER *w;
float fov, tmp;
+ static bool winding_ccw = true;
- c = current_aircraft.controls;
f = current_aircraft.flight;
t = &cur_time_params;
v = ¤t_view;
if ( GLUT_ACTIVE_ALT && glutGetModifiers() ) {
fgPrintf( FG_INPUT, FG_DEBUG, " SHIFTED\n");
switch (k) {
+ case 1: // Ctrl-A key
+ fgAPToggleAltitude();
+ return;
+ case 8: // Ctrl-H key
+ fgAPToggleHeading();
+ return;
+ case 18: // Ctrl-R key
+ // temporary
+ winding_ccw = !winding_ccw;
+ if ( winding_ccw ) {
+ glFrontFace ( GL_CCW );
+ } else {
+ glFrontFace ( GL_CW );
+ }
+ return;
+ case 19: // Ctrl-S key
+ fgAPToggleAutoThrottle();
+ return;
+ case 20: // Ctrl-T key
+ fgAPToggleTerrainFollow();
+ return;
case 49: // numeric keypad 1
v->goal_view_offset = FG_PI * 0.75;
return;
tmp /= 1.10;
fgWeatherSetVisibility( tmp );
return;
- // autopilot additions
- case 65: // A key
- fgAPSetMode(1);
- return;
- case 83: // S key
- fgAPSetMode(0);
- return;
- case 68: // D key
- fgAPSetHeading(AP_CURRENT_HEADING);
- return;
}
} else {
fgPrintf( FG_INPUT, FG_DEBUG, "\n");
switch (k) {
case 50: // numeric keypad 2
- fgElevMove(-0.05);
+ controls.move_elevator(-0.05);
return;
case 56: // numeric keypad 8
- fgElevMove(0.05);
+ controls.move_elevator(0.05);
return;
case 49: // numeric keypad 1
- fgElevTrimMove(-0.001);
+ controls.move_elevator_trim(-0.001);
return;
case 55: // numeric keypad 7
- fgElevTrimMove(0.001);
+ controls.move_elevator_trim(0.001);
return;
case 52: // numeric keypad 4
- fgAileronMove(-0.05);
+ controls.move_aileron(-0.05);
return;
case 54: // numeric keypad 6
- fgAileronMove(0.05);
+ controls.move_aileron(0.05);
return;
case 48: // numeric keypad Ins
- fgRudderMove(-0.05);
+ controls.move_rudder(-0.05);
return;
case 13: // numeric keypad Enter
- fgRudderMove(0.05);
+ controls.move_rudder(0.05);
return;
case 53: // numeric keypad 5
- fgAileronSet(0.0);
- fgElevSet(0.0);
- fgRudderSet(0.0);
+ controls.set_aileron(0.0);
+ controls.set_elevator(0.0);
+ controls.set_rudder(0.0);
return;
case 57: // numeric keypad 9 (Pg Up)
- fgThrottleMove(0, 0.01);
+ controls.move_throttle( fgCONTROLS::FG_ALL_ENGINES, 0.01 );
return;
case 51: // numeric keypad 3 (Pg Dn)
- fgThrottleMove(0, -0.01);
+ controls.move_throttle( fgCONTROLS::FG_ALL_ENGINES, -0.01 );
+ return;
+ case 98: // b key
+ int b_ret;
+ double b_set;
+ b_ret = int( controls.get_brake( 0 ) );
+ b_set = double(!b_ret);
+ controls.set_brake( fgCONTROLS::FG_ALL_WHEELS, b_set);
return;
case 104: // h key
HUD_brightkey( false );
//exit(1);
return;
case GLUT_KEY_UP:
- fgElevMove(0.05);
+ controls.move_elevator(0.05);
return;
case GLUT_KEY_DOWN:
- fgElevMove(-0.05);
+ controls.move_elevator(-0.05);
return;
case GLUT_KEY_LEFT:
- fgAileronMove(-0.05);
+ controls.move_aileron(-0.05);
return;
case GLUT_KEY_RIGHT:
- fgAileronMove(0.05);
+ controls.move_aileron(0.05);
return;
case GLUT_KEY_HOME: // numeric keypad 1
- fgElevTrimMove(0.001);
+ controls.move_elevator_trim(0.001);
return;
case GLUT_KEY_END: // numeric keypad 7
- fgElevTrimMove(-0.001);
+ controls.move_elevator_trim(-0.001);
return;
case GLUT_KEY_INSERT: // numeric keypad Ins
- fgRudderMove(-0.05);
+ controls.move_rudder(-0.05);
return;
case 13: // numeric keypad Enter
- fgRudderMove(0.05);
+ controls.move_rudder(0.05);
return;
case 53: // numeric keypad 5
- fgAileronSet(0.0);
- fgElevSet(0.0);
- fgRudderSet(0.0);
+ controls.set_aileron(0.0);
+ controls.set_elevator(0.0);
+ controls.set_rudder(0.0);
return;
case GLUT_KEY_PAGE_UP: // numeric keypad 9 (Pg Up)
- fgThrottleMove(0, 0.01);
+ controls.move_throttle( fgCONTROLS::FG_ALL_ENGINES, 0.01 );
return;
case GLUT_KEY_PAGE_DOWN: // numeric keypad 3 (Pg Dn)
- fgThrottleMove(0, -0.01);
+ controls.move_throttle( fgCONTROLS::FG_ALL_ENGINES, -0.01 );
return;
}
}
// $Log$
+// Revision 1.30 1998/10/25 14:08:46 curt
+// Turned "struct fgCONTROLS" into a class, with inlined accessor functions.
+//
+// Revision 1.29 1998/10/20 14:58:57 curt
+// Ctrl-R now reverses default polygon winding so I can see if a hole in the
+// terrain is a result of improper winding, or if it is just an empty hole.
+//
+// Revision 1.28 1998/10/17 01:34:20 curt
+// C++ ifying ...
+//
+// Revision 1.27 1998/10/02 12:46:46 curt
+// Added an "auto throttle"
+//
+// Revision 1.26 1998/10/01 00:38:04 curt
+// More altitude hold tweaks.
+//
+// Revision 1.25 1998/09/29 02:03:36 curt
+// Autopilot mods.
+//
// Revision 1.24 1998/09/26 13:16:44 curt
// C++-ified the comments.
//