]> git.mxchange.org Git - flightgear.git/blobdiff - src/Controls/controls.cxx
Return a positive shortage when there is still fuel in the tank;
[flightgear.git] / src / Controls / controls.cxx
index 97d6a8990c9ac774545187ee4a430d3085cfc3bb..839353327f580ba29d10436085417bdca473d88d 100644 (file)
 #include <Main/fg_props.hxx>
 
 
-FGControls controls;
-
-
 // Constructor
 FGControls::FGControls() :
     aileron( 0.0 ),
+    aileron_trim( 0.0 ),
     elevator( 0.0 ),
-    elevator_trim( 1.969572E-03 ),
+    elevator_trim( 0.0 ),
     rudder( 0.0 ),
+    rudder_trim( 0.0 ),
     throttle_idle( true )
 {
-    for ( int engine = 0; engine < MAX_ENGINES; engine++ ) {
-       throttle[engine] = 0.0;
-       mixture[engine] = 1.0;
-       prop_advance[engine] = 1.0;
-    }
-
-    for ( int wheel = 0; wheel < MAX_WHEELS; wheel++ ) {
-        brake[wheel] = 0.0;
-    }
 }
 
 
 void FGControls::reset_all()
 {
     set_aileron(0.0);
+    set_aileron_trim(0.0);
     set_elevator(0.0);
     set_elevator_trim(0.0);
     set_rudder(0.0);
+    set_rudder_trim(0.0);
     set_throttle(FGControls::ALL_ENGINES, 0.0);
+    set_starter(FGControls::ALL_ENGINES, false);
+    set_magnetos(FGControls::ALL_ENGINES, 0);
     throttle_idle = true;
+    gear_down = true;
 }
 
 
@@ -69,6 +64,19 @@ FGControls::~FGControls() {
 void
 FGControls::init ()
 {
+    for ( int engine = 0; engine < MAX_ENGINES; engine++ ) {
+       throttle[engine] = 0.0;
+       mixture[engine] = 1.0;
+       prop_advance[engine] = 1.0;
+       magnetos[engine] = 0;
+       starter[engine] = false;
+    }
+
+    for ( int wheel = 0; wheel < MAX_WHEELS; wheel++ ) {
+        brake[wheel] = 0.0;
+    }
+
+    auto_coordination = fgGetNode("/sim/auto-coordination", true);
 }
 
 
@@ -76,42 +84,60 @@ void
 FGControls::bind ()
 {
   fgTie("/controls/aileron", this,
-                   &FGControls::get_aileron, &FGControls::set_aileron);
+       &FGControls::get_aileron, &FGControls::set_aileron);
+  fgSetArchivable("/controls/aileron");
+  fgTie("/controls/aileron-trim", this,
+       &FGControls::get_aileron_trim, &FGControls::set_aileron_trim);
+  fgSetArchivable("/controls/aileron-trim");
   fgTie("/controls/elevator", this,
        &FGControls::get_elevator, &FGControls::set_elevator);
+  fgSetArchivable("/controls/elevator");
   fgTie("/controls/elevator-trim", this,
        &FGControls::get_elevator_trim, &FGControls::set_elevator_trim);
+  fgSetArchivable("/controls/elevator-trim");
   fgTie("/controls/rudder", this,
        &FGControls::get_rudder, &FGControls::set_rudder);
+  fgSetArchivable("/controls/rudder");
+  fgTie("/controls/rudder-trim", this,
+       &FGControls::get_rudder_trim, &FGControls::set_rudder_trim);
+  fgSetArchivable("/controls/rudder-trim");
   fgTie("/controls/flaps", this,
        &FGControls::get_flaps, &FGControls::set_flaps);
+  fgSetArchivable("/controls/flaps");
   int index;
   for (index = 0; index < MAX_ENGINES; index++) {
     char name[32];
     sprintf(name, "/controls/throttle[%d]", index);
     fgTie(name, this, index,
          &FGControls::get_throttle, &FGControls::set_throttle);
+    fgSetArchivable(name);
     sprintf(name, "/controls/mixture[%d]", index);
     fgTie(name, this, index,
         &FGControls::get_mixture, &FGControls::set_mixture);
-    sprintf(name, "/controls/propellor-pitch[%d]", index);
+    fgSetArchivable(name);
+    sprintf(name, "/controls/propeller-pitch[%d]", index);
     fgTie(name, this, index,
         &FGControls::get_prop_advance, &FGControls::set_prop_advance);
+    fgSetArchivable(name);
+    sprintf(name, "/controls/magnetos[%d]", index);
+    fgTie(name, this, index,
+        &FGControls::get_magnetos, &FGControls::set_magnetos);
+    fgSetArchivable(name);
+    sprintf(name, "/controls/starter[%d]", index);
+    fgTie(name, this, index,
+        &FGControls::get_starter, &FGControls::set_starter);
+    fgSetArchivable(name);
   }
-  fgTie("/controls/throttle/all", this, ALL_ENGINES,
-       &FGControls::get_throttle, &FGControls::set_throttle);
-  fgTie("/controls/mixture/all", this, ALL_ENGINES,
-       &FGControls::get_mixture, &FGControls::set_mixture);
-  fgTie("/controls/propellor-pitch/all", this, ALL_ENGINES,
-       &FGControls::get_prop_advance, &FGControls::set_prop_advance);
   for (index = 0; index < MAX_WHEELS; index++) {
     char name[32];
     sprintf(name, "/controls/brakes[%d]", index);
     fgTie(name, this, index,
         &FGControls::get_brake, &FGControls::set_brake);
+    fgSetArchivable(name);
   }
-  fgTie("/controls/brakes/all", this, ALL_WHEELS,
-       &FGControls::get_brake, &FGControls::set_brake);
+  fgTie("/controls/gear-down", this,
+       &FGControls::get_gear_down, &FGControls::set_gear_down);
+  fgSetArchivable("/controls/gear-down");
 }
 
 
@@ -120,9 +146,11 @@ FGControls::unbind ()
 {
                                // Tie control properties.
   fgUntie("/controls/aileron");
+  fgUntie("/controls/aileron-trim");
   fgUntie("/controls/elevator");
   fgUntie("/controls/elevator-trim");
   fgUntie("/controls/rudder");
+  fgUntie("/controls/rudder-trim");
   fgUntie("/controls/flaps");
   int index;
   for (index = 0; index < MAX_ENGINES; index++) {
@@ -131,7 +159,11 @@ FGControls::unbind ()
     fgUntie(name);
     sprintf(name, "/controls/mixture[%d]", index);
     fgUntie(name);
-    sprintf(name, "/controls/propellor-pitch[%d]", index);
+    sprintf(name, "/controls/propeller-pitch[%d]", index);
+    fgUntie(name);
+    sprintf(name, "/controls/magnetos[%d]", index);
+    fgUntie(name);
+    sprintf(name, "/controls/starter[%d]", index);
     fgUntie(name);
   }
   for (index = 0; index < MAX_WHEELS; index++) {
@@ -139,11 +171,12 @@ FGControls::unbind ()
     sprintf(name, "/controls/brakes[%d]", index);
     fgUntie(name);
   }
+  fgUntie("/controls/gear-down");
 }
 
 
 void
-FGControls::update ()
+FGControls::update (int dt)
 {
 }