]> git.mxchange.org Git - flightgear.git/blobdiff - Main/GLUTkey.cxx
Turned "struct fgCONTROLS" into a class, with inlined accessor functions.
[flightgear.git] / Main / GLUTkey.cxx
index 14659f6983c5b45006c5c6a0300e31d8209e82fe..85b6969bfdf5064c91e6f9f2917fe9b0bee67f14 100644 (file)
 #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>
@@ -46,7 +46,7 @@
 #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"
@@ -69,14 +69,13 @@ static void local_update_sky_and_lighting_params( void ) {
 
 // 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 = &current_view;
@@ -88,6 +87,27 @@ void GLUTkey(unsigned char k, int x, int y) {
     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;
@@ -151,54 +171,51 @@ void GLUTkey(unsigned char k, int x, int y) {
            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 );
@@ -332,39 +349,39 @@ void GLUTspecialkey(int k, int x, int y) {
            //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;
        }
     }
@@ -372,6 +389,25 @@ void GLUTspecialkey(int k, int x, int y) {
 
 
 // $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.
 //