]> git.mxchange.org Git - flightgear.git/commitdiff
Added an command line option to set starting position based on airport ID.
authorcurt <curt>
Sat, 25 Apr 1998 15:11:10 +0000 (15:11 +0000)
committercurt <curt>
Sat, 25 Apr 1998 15:11:10 +0000 (15:11 +0000)
Main/Makefile.am
Main/Makefile.in
Main/airports.cxx [new file with mode: 0644]
Main/airports.hxx [new file with mode: 0644]
Main/fg_init.cxx
Main/fg_init.hxx
Main/options.cxx
Main/options.hxx

index 30292e0685340ce9f3cf8c076ae46c6e7caa9ba7..08cc5d65b2b2aea295d539e6ee2eb62ab6424ed1 100644 (file)
@@ -7,6 +7,7 @@ bin_SCRIPTS = runfg runfg.bat
 fg_SOURCES = \
        GLUTkey.cxx GLUTkey.hxx \
        GLUTmain.cxx \
+       airports.cxx airports.hxx \
        fg_config.h \
        fg_init.cxx fg_init.hxx \
        options.cxx options.hxx \
index 3d13ea6f3130672e0d4a76fbc82f92621a39fb4e..64171d5f97e56ea1d1476d450812574016ba79e4 100644 (file)
@@ -80,6 +80,7 @@ bin_SCRIPTS = runfg runfg.bat
 fg_SOURCES = \
        GLUTkey.cxx GLUTkey.hxx \
        GLUTmain.cxx \
+       airports.cxx airports.hxx \
        fg_config.h \
        fg_init.cxx fg_init.hxx \
        options.cxx options.hxx \
@@ -116,7 +117,8 @@ X_CFLAGS = @X_CFLAGS@
 X_LIBS = @X_LIBS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
-fg_OBJECTS =  GLUTkey.o GLUTmain.o fg_init.o options.o views.o
+fg_OBJECTS =  GLUTkey.o GLUTmain.o airports.o fg_init.o options.o \
+views.o
 fg_DEPENDENCIES =  $(top_builddir)/Simulator/Aircraft/libAircraft.la \
 $(top_builddir)/Simulator/Astro/libAstro.la \
 $(top_builddir)/Simulator/Autopilot/libAutopilot.la \
@@ -146,8 +148,8 @@ DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
 TAR = tar
 GZIP = --best
-DEP_FILES =  .deps/GLUTkey.P .deps/GLUTmain.P .deps/fg_init.P \
-.deps/options.P .deps/views.P
+DEP_FILES =  .deps/GLUTkey.P .deps/GLUTmain.P .deps/airports.P \
+.deps/fg_init.P .deps/options.P .deps/views.P
 CXXMKDEP = $(CXX) -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS)
 SOURCES = $(fg_SOURCES)
 OBJECTS = $(fg_OBJECTS)
diff --git a/Main/airports.cxx b/Main/airports.cxx
new file mode 100644 (file)
index 0000000..2422a83
--- /dev/null
@@ -0,0 +1,109 @@
+//
+// airports.cxx -- a really simplistic class to manage airport ID,
+//                 lat, lon of the center of one of it's runways, and 
+//                 elevation in feet.
+//
+// Written by Curtis Olson, started April 1998.
+//
+// Copyright (C) 1998  Curtis L. Olson  - curt@me.umn.edu
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+//
+// $Id$
+// (Log is kept at end of this file)
+
+
+#include <string.h>
+
+#include <Debug/fg_debug.h>
+#include <Include/general.h>
+#include <zlib/zlib.h>
+
+#include "airports.hxx"
+
+
+// Constructor
+fgAIRPORTS::fgAIRPORTS( void ) {
+}
+
+
+// load the data
+int fgAIRPORTS::load( char *file ) {
+    fgGENERAL *g;
+    char path[256], gzpath[256], line[256];
+    char id[5];
+    double lon, lat, elev;
+    gzFile f;
+
+    g = &general;
+
+    // build the path name to the ambient lookup table
+    path[0] = '\0';
+    strcat(path, g->root_dir);
+    strcat(path, "/Scenery/");
+    strcat(path, "Airports");
+    strcpy(gzpath, path);
+    strcat(gzpath, ".gz");
+
+    // first try "path.gz"
+    if ( (f = gzopen(gzpath, "rb")) == NULL ) {
+       // next try "path"
+        if ( (f = gzopen(path, "rb")) == NULL ) {
+           fgPrintf(FG_GENERAL, FG_EXIT, "Cannot open file: %s\n", path);
+       }
+    }
+
+    size = 0;
+    while ( gzgets(f, line, 250) != NULL ) {
+       // printf("%s", line);
+       sscanf( line, "%s %lf %lf %lfl\n", id, &lon, &lat, &elev );
+       strcpy(airports[size].id, id);
+       airports[size].longitude = lon;
+       airports[size].latitude = lat;
+       airports[size].elevation = elev;
+
+       size++;
+    }
+
+    gzclose(f);
+}
+
+
+// search for the specified id
+fgAIRPORT fgAIRPORTS::search( char *id ) {
+    fgAIRPORT a;
+    int i;
+
+    for ( i = 0; i < size; i++ ) {
+       if ( strcmp(airports[i].id, id) == 0 ) {
+           return(airports[i]);
+       }
+    }
+
+    strcpy(a.id, "none");
+    return(a);
+}
+
+
+// Destructor
+fgAIRPORTS::~fgAIRPORTS( void ) {
+}
+
+
+// $Log$
+// Revision 1.1  1998/04/25 15:11:11  curt
+// Added an command line option to set starting position based on airport ID.
+//
+//
diff --git a/Main/airports.hxx b/Main/airports.hxx
new file mode 100644 (file)
index 0000000..af4ea1e
--- /dev/null
@@ -0,0 +1,74 @@
+//
+// airports.hxx -- a really simplistic class to manage airport ID,
+//                 lat, lon of the center of one of it's runways, and 
+//                 elevation in feet.
+//
+// Written by Curtis Olson, started April 1998.
+//
+// Copyright (C) 1998  Curtis L. Olson  - curt@me.umn.edu
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+//
+// $Id$
+// (Log is kept at end of this file)
+
+
+#ifndef _AIRPORTS_HXX
+#define _AIRPORTS_HXX
+
+
+#ifndef __cplusplus                                                          
+# error This library requires C++
+#endif                                   
+
+
+#define MAX_AIRPORTS 10000
+
+
+typedef struct {
+    char id[5];
+    double longitude, latitude, elevation;
+} fgAIRPORT;
+
+
+class fgAIRPORTS {
+    fgAIRPORT airports[MAX_AIRPORTS];
+    int size;
+
+public:
+
+    // Constructor
+    fgAIRPORTS( void );
+
+    // load the data
+    int load( char *file );
+
+    // search for the specified id
+    fgAIRPORT search( char *id );
+
+    // Destructor
+    ~fgAIRPORTS( void );
+
+};
+
+
+#endif /* _AIRPORTS_HXX */
+
+
+// $Log$
+// Revision 1.1  1998/04/25 15:11:11  curt
+// Added an command line option to set starting position based on airport ID.
+//
+//
index ef22e2fce1e24d4aa9b81b6064112bb3dd141294..39c12580ec040ef14a5c6e86621e5114cc8a6a1e 100644 (file)
@@ -1,29 +1,27 @@
-/* -*- Mode: C++ -*-
- *
- * fg_init.c -- Flight Gear top level initialization routines
- *
- * Written by Curtis Olson, started August 1997.
- *
- * Copyright (C) 1997  Curtis L. Olson  - curt@infoplane.com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- *
- * $Id$
- * (Log is kept at end of this file)
- **************************************************************************/
+//
+// fg_init.cxx -- Flight Gear top level initialization routines
+//
+// Written by Curtis Olson, started August 1997.
+//
+// Copyright (C) 1997  Curtis L. Olson  - curt@infoplane.com
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+//
+//
+// $Id$
+// (Log is kept at end of this file)
 
 
 #ifdef HAVE_CONFIG_H
 #include <Time/sunpos.hxx>
 #include <Weather/weather.h>
 
+#include "airports.hxx"
 #include "fg_init.hxx"
+#include "options.hxx"
 #include "views.hxx"
 
-extern int show_hud;             /* HUD state */
+// extern int show_hud;             // HUD state
 extern int displayInstruments;
 extern const char *default_root;
 
-/* General house keeping initializations */
-
-int fgInitGeneral( void ) {
-    fgGENERAL *g;
-
-    g = &general;
-
-    // determine the fg root path.  
-    if( !(g->root_dir) ) { 
-       // If not set by command line test for environmental var..
-       g->root_dir = getenv("FG_ROOT");
-       if ( !g->root_dir ) { 
-           // No root path set? Then assume, we will exit if this is
-           // wrong when looking for support files.
-           fgPrintf( FG_GENERAL, FG_EXIT, "%s %s\n",
-                      "Cannot continue without environment variable FG_ROOT",
-                     "being defined.");
-       }
-    }
-    fgPrintf( FG_GENERAL, FG_INFO, "FG_ROOT = %s\n\n", g->root_dir);
-
-    fgPrintf( FG_GENERAL, FG_INFO, "General Initialization\n" );
-    fgPrintf( FG_GENERAL, FG_INFO, "======= ==============\n" );
-
-    // seed the random number generater
-    fg_srandom();
-
-    return ( 1 ); 
-}
-
-
-// This is the top level init routine which calls all the other
-// initialization routines.  If you are adding a subsystem to flight
-// gear, its initialization call should located in this routine.
-// Returns non-zero if a problem encountered.
-
-int fgInitSubsystems( void ) {
-    double cur_elev;
 
+// Set initial position
+int fgInitPosition( void ) {
     fgFLIGHT *f;
-    struct fgLIGHT *l;
-    struct fgTIME *t;
-    struct fgVIEW *v;
-
-    l = &cur_light_params;
-    t = &cur_time_params;
-    v = &current_view;
-
-    fgPrintf( FG_GENERAL, FG_INFO, "Initialize Subsystems\n");
-    fgPrintf( FG_GENERAL, FG_INFO, "========== ==========\n");
-
-    /****************************************************************
-     * The following section sets up the flight model EOM parameters and
-     * should really be read in from one or more files.
-     ****************************************************************/
-
-    // Must happen before any of the flight model or control
-    // parameters are set
+    fgOPTIONS *o;
 
-    fgAircraftInit();   // In the future this might not be the case.
     f = current_aircraft.flight;
+    o = &current_options;
 
     // Initial Position at (P13) Globe, AZ
     FG_Longitude = ( -110.6642444 ) * DEG_TO_RAD;
@@ -230,15 +177,99 @@ int fgInitSubsystems( void ) {
     // FG_Runway_altitude = (2646 + 2000);
     // FG_Altitude = FG_Runway_altitude + 3.758099;
 
+    if ( strlen(o->airport_id) ) {
+       fgAIRPORTS airports;
+       fgAIRPORT a;
+
+       fgPrintf( FG_GENERAL, FG_INFO, 
+                 "Attempting to set starting position from airport code %s.\n",
+                 o->airport_id);
+
+       airports.load("Airports");
+       a = airports.search(o->airport_id);
+       if ( strcmp(a.id, "none") == 0 ) {
+           fgPrintf( FG_GENERAL, FG_INFO, 
+                     "Failed to find %s in database.\n", o->airport_id);
+       } else {
+           FG_Longitude = ( a.longitude ) * DEG_TO_RAD;
+           FG_Latitude  = ( a.latitude ) * DEG_TO_RAD;
+           FG_Runway_altitude = ( a.elevation + 300 );
+           FG_Altitude = FG_Runway_altitude + 3.758099;
+       }           
+    }
+    
     fgPrintf( FG_GENERAL, FG_INFO, 
              "Initial position is: (%.4f, %.4f, %.2f)\n", 
              FG_Longitude * RAD_TO_DEG, FG_Latitude * RAD_TO_DEG, 
              FG_Altitude * FEET_TO_METER);
+}
+
+
+// General house keeping initializations
+int fgInitGeneral( void ) {
+    fgGENERAL *g;
+
+    g = &general;
+
+    // determine the fg root path.  
+    if( !(g->root_dir) ) { 
+       // If not set by command line test for environmental var..
+       g->root_dir = getenv("FG_ROOT");
+       if ( !g->root_dir ) { 
+           // No root path set? Then assume, we will exit if this is
+           // wrong when looking for support files.
+           fgPrintf( FG_GENERAL, FG_EXIT, "%s %s\n",
+                      "Cannot continue without environment variable FG_ROOT",
+                     "being defined.");
+       }
+    }
+    fgPrintf( FG_GENERAL, FG_INFO, "FG_ROOT = %s\n\n", g->root_dir);
+
+    fgPrintf( FG_GENERAL, FG_INFO, "General Initialization\n" );
+    fgPrintf( FG_GENERAL, FG_INFO, "======= ==============\n" );
+
+    // seed the random number generater
+    fg_srandom();
+
+    return ( 1 ); 
+}
+
+
+// This is the top level init routine which calls all the other
+// initialization routines.  If you are adding a subsystem to flight
+// gear, its initialization call should located in this routine.
+// Returns non-zero if a problem encountered.
+int fgInitSubsystems( void ) {
+    double cur_elev;
+
+    fgFLIGHT *f;
+    struct fgLIGHT *l;
+    struct fgTIME *t;
+    struct fgVIEW *v;
+
+    l = &cur_light_params;
+    t = &cur_time_params;
+    v = &current_view;
+
+    fgPrintf( FG_GENERAL, FG_INFO, "Initialize Subsystems\n");
+    fgPrintf( FG_GENERAL, FG_INFO, "========== ==========\n");
+
+    // The following section sets up the flight model EOM parameters
+    // and should really be read in from one or more files.
+
+    // Must happen before any of the flight model or control
+    // parameters are set
+
+    fgAircraftInit();   // In the future this might not be the case.
+    f = current_aircraft.flight;
+
+    // set the initial position
+    fgInitPosition();
 
     // Initial Velocity
-    FG_V_north = 0.0 /*  7.287719E+00 */;
-    FG_V_east  = 0.0 /*  1.521770E+03 */;
-    FG_V_down  = 0.0 /* -1.265722E-05 */;
+    FG_V_north = 0.0;   //  7.287719E+00
+    FG_V_east  = 0.0;   //  1.521770E+03
+    FG_V_down  = 0.0;   // -1.265722E-05
 
     // Initial Orientation
     FG_Phi   = -2.658474E-06;
@@ -403,201 +434,204 @@ int fgInitSubsystems( void ) {
 }
 
 
-/* $Log$
-/* Revision 1.2  1998/04/24 00:49:20  curt
-/* Wrapped "#include <config.h>" in "#ifdef HAVE_CONFIG_H"
-/* Trying out some different option parsing code.
-/* Some code reorganization.
-/*
- * Revision 1.1  1998/04/22 13:25:44  curt
- * C++ - ifing the code.
- * Starting a bit of reorganization of lighting code.
- *
- * Revision 1.56  1998/04/18 04:11:28  curt
- * Moved fg_debug to it's own library, added zlib support.
- *
- * Revision 1.55  1998/04/14 02:21:03  curt
- * Incorporated autopilot heading hold contributed by:  Jeff Goeke-Smith
- * <jgoeke@voyager.net>
- *
- * Revision 1.54  1998/04/08 23:35:36  curt
- * Tweaks to Gnu automake/autoconf system.
- *
- * Revision 1.53  1998/04/03 22:09:06  curt
- * Converting to Gnu autoconf system.
- *
- * Revision 1.52  1998/03/23 21:24:38  curt
- * Source code formating tweaks.
- *
- * Revision 1.51  1998/03/14 00:31:22  curt
- * Beginning initial terrain texturing experiments.
- *
- * Revision 1.50  1998/03/09 22:46:19  curt
- * Minor tweaks.
- *
- * Revision 1.49  1998/02/23 19:07:59  curt
- * Incorporated Durk's Astro/ tweaks.  Includes unifying the sun position
- * calculation code between sun display, and other FG sections that use this
- * for things like lighting.
- *
- * Revision 1.48  1998/02/21 14:53:15  curt
- * Added Charlie's HUD changes.
- *
- * Revision 1.47  1998/02/19 13:05:53  curt
- * Incorporated some HUD tweaks from Michelle America.
- * Tweaked the sky's sunset/rise colors.
- * Other misc. tweaks.
- *
- * Revision 1.46  1998/02/18 15:07:06  curt
- * Tweaks to build with SGI OpenGL (and therefor hopefully other accelerated
- * drivers will work.)
- *
- * Revision 1.45  1998/02/16 13:39:43  curt
- * Miscellaneous weekend tweaks.  Fixed? a cache problem that caused whole
- * tiles to occasionally be missing.
- *
- * Revision 1.44  1998/02/12 21:59:50  curt
- * Incorporated code changes contributed by Charlie Hotchkiss
- * <chotchkiss@namg.us.anritsu.com>
- *
- * Revision 1.43  1998/02/11 02:50:40  curt
- * Minor changes.
- *
- * Revision 1.42  1998/02/09 22:56:58  curt
- * Removed "depend" files from cvs control.  Other minor make tweaks.
- *
- * Revision 1.41  1998/02/09 15:07:50  curt
- * Minor tweaks.
- *
- * Revision 1.40  1998/02/07 15:29:44  curt
- * Incorporated HUD changes and struct/typedef changes from Charlie Hotchkiss
- * <chotchkiss@namg.us.anritsu.com>
- *
- * Revision 1.39  1998/02/03 23:20:25  curt
- * Lots of little tweaks to fix various consistency problems discovered by
- * Solaris' CC.  Fixed a bug in fg_debug.c with how the fgPrintf() wrapper
- * passed arguments along to the real printf().  Also incorporated HUD changes
- * by Michele America.
- *
- * Revision 1.38  1998/02/02 20:53:58  curt
- * Incorporated Durk's changes.
- *
- * Revision 1.37  1998/02/01 03:39:54  curt
- * Minor tweaks.
- *
- * Revision 1.36  1998/01/31 00:43:13  curt
- * Added MetroWorks patches from Carmen Volpe.
- *
- * Revision 1.35  1998/01/27 00:47:57  curt
- * Incorporated Paul Bleisch's <bleisch@chromatic.com> new debug message
- * system and commandline/config file processing code.
- *
- * Revision 1.34  1998/01/22 02:59:37  curt
- * Changed #ifdef FILE_H to #ifdef _FILE_H
- *
- * Revision 1.33  1998/01/21 21:11:34  curt
- * Misc. tweaks.
- *
- * Revision 1.32  1998/01/19 19:27:08  curt
- * Merged in make system changes from Bob Kuehne <rpk@sgi.com>
- * This should simplify things tremendously.
- *
- * Revision 1.31  1998/01/19 18:40:32  curt
- * Tons of little changes to clean up the code and to remove fatal errors
- * when building with the c++ compiler.
- *
- * Revision 1.30  1998/01/13 00:23:09  curt
- * Initial changes to support loading and management of scenery tiles.  Note,
- * there's still a fair amount of work left to be done.
- *
- * Revision 1.29  1998/01/08 02:22:08  curt
- * Beginning to integrate Tile management subsystem.
- *
- * Revision 1.28  1998/01/07 03:18:58  curt
- * Moved astronomical stuff from .../Src/Scenery to .../Src/Astro/
- *
- * Revision 1.27  1998/01/05 18:44:35  curt
- * Add an option to advance/decrease time from keyboard.
- *
- * Revision 1.26  1997/12/30 23:09:04  curt
- * Tweaking initialization sequences.
- *
- * Revision 1.25  1997/12/30 22:22:33  curt
- * Further integration of event manager.
- *
- * Revision 1.24  1997/12/30 20:47:44  curt
- * Integrated new event manager with subsystem initializations.
- *
- * Revision 1.23  1997/12/30 16:36:50  curt
- * Merged in Durk's changes ...
- *
- * Revision 1.22  1997/12/19 23:34:05  curt
- * Lot's of tweaking with sky rendering and lighting.
- *
- * Revision 1.21  1997/12/19 16:45:00  curt
- * Working on scene rendering order and options.
- *
- * Revision 1.20  1997/12/18 23:32:33  curt
- * First stab at sky dome actually starting to look reasonable. :-)
- *
- * Revision 1.19  1997/12/17 23:13:36  curt
- * Began working on rendering a sky.
- *
- * Revision 1.18  1997/12/15 23:54:49  curt
- * Add xgl wrappers for debugging.
- * Generate terrain normals on the fly.
- *
- * Revision 1.17  1997/12/15 20:59:09  curt
- * Misc. tweaks.
- *
- * Revision 1.16  1997/12/12 19:52:48  curt
- * Working on lightling and material properties.
- *
- * Revision 1.15  1997/12/11 04:43:55  curt
- * Fixed sun vector and lighting problems.  I thing the moon is now lit
- * correctly.
- *
- * Revision 1.14  1997/12/10 22:37:47  curt
- * Prepended "fg" on the name of all global structures that didn't have it yet.
- * i.e. "struct WEATHER {}" became "struct fgWEATHER {}"
- *
- * Revision 1.13  1997/11/25 19:25:32  curt
- * Changes to integrate Durk's moon/sun code updates + clean up.
- *
- * Revision 1.12  1997/11/15 18:16:35  curt
- * minor tweaks.
- *
- * Revision 1.11  1997/10/30 12:38:42  curt
- * Working on new scenery subsystem.
- *
- * Revision 1.10  1997/10/25 03:24:23  curt
- * Incorporated sun, moon, and star positioning code contributed by Durk Talsma.
- *
- * Revision 1.9  1997/09/23 00:29:39  curt
- * Tweaks to get things to compile with gcc-win32.
- *
- * Revision 1.8  1997/09/22 14:44:20  curt
- * Continuing to try to align stars correctly.
- *
- * Revision 1.7  1997/09/16 15:50:30  curt
- * Working on star alignment and time issues.
- *
- * Revision 1.6  1997/09/05 14:17:30  curt
- * More tweaking with stars.
- *
- * Revision 1.5  1997/09/04 02:17:36  curt
- * Shufflin' stuff.
- *
- * Revision 1.4  1997/08/27 21:32:26  curt
- * Restructured view calculation code.  Added stars.
- *
- * Revision 1.3  1997/08/27 03:30:19  curt
- * Changed naming scheme of basic shared structures.
- *
- * Revision 1.2  1997/08/25 20:27:23  curt
- * Merged in initial HUD and Joystick code.
- *
- * Revision 1.1  1997/08/23 01:46:20  curt
- * Initial revision.
- *
- */
+// $Log$
+// Revision 1.3  1998/04/25 15:11:11  curt
+// Added an command line option to set starting position based on airport ID.
+//
+// Revision 1.2  1998/04/24 00:49:20  curt
+// Wrapped "#include <config.h>" in "#ifdef HAVE_CONFIG_H"
+// Trying out some different option parsing code.
+// Some code reorganization.
+//
+// Revision 1.1  1998/04/22 13:25:44  curt
+// C++ - ifing the code.
+// Starting a bit of reorganization of lighting code.
+//
+// Revision 1.56  1998/04/18 04:11:28  curt
+// Moved fg_debug to it's own library, added zlib support.
+//
+// Revision 1.55  1998/04/14 02:21:03  curt
+// Incorporated autopilot heading hold contributed by:  Jeff Goeke-Smith
+// <jgoeke@voyager.net>
+//
+// Revision 1.54  1998/04/08 23:35:36  curt
+// Tweaks to Gnu automake/autoconf system.
+//
+// Revision 1.53  1998/04/03 22:09:06  curt
+// Converting to Gnu autoconf system.
+//
+// Revision 1.52  1998/03/23 21:24:38  curt
+// Source code formating tweaks.
+//
+// Revision 1.51  1998/03/14 00:31:22  curt
+// Beginning initial terrain texturing experiments.
+//
+// Revision 1.50  1998/03/09 22:46:19  curt
+// Minor tweaks.
+//
+// Revision 1.49  1998/02/23 19:07:59  curt
+// Incorporated Durk's Astro/ tweaks.  Includes unifying the sun position
+// calculation code between sun display, and other FG sections that use this
+// for things like lighting.
+//
+// Revision 1.48  1998/02/21 14:53:15  curt
+// Added Charlie's HUD changes.
+//
+// Revision 1.47  1998/02/19 13:05:53  curt
+// Incorporated some HUD tweaks from Michelle America.
+// Tweaked the sky's sunset/rise colors.
+// Other misc. tweaks.
+//
+// Revision 1.46  1998/02/18 15:07:06  curt
+// Tweaks to build with SGI OpenGL (and therefor hopefully other accelerated
+// drivers will work.)
+//
+// Revision 1.45  1998/02/16 13:39:43  curt
+// Miscellaneous weekend tweaks.  Fixed? a cache problem that caused whole
+// tiles to occasionally be missing.
+//
+// Revision 1.44  1998/02/12 21:59:50  curt
+// Incorporated code changes contributed by Charlie Hotchkiss
+// <chotchkiss@namg.us.anritsu.com>
+//
+// Revision 1.43  1998/02/11 02:50:40  curt
+// Minor changes.
+//
+// Revision 1.42  1998/02/09 22:56:58  curt
+// Removed "depend" files from cvs control.  Other minor make tweaks.
+//
+// Revision 1.41  1998/02/09 15:07:50  curt
+// Minor tweaks.
+//
+// Revision 1.40  1998/02/07 15:29:44  curt
+// Incorporated HUD changes and struct/typedef changes from Charlie Hotchkiss
+// <chotchkiss@namg.us.anritsu.com>
+//
+// Revision 1.39  1998/02/03 23:20:25  curt
+// Lots of little tweaks to fix various consistency problems discovered by
+// Solaris' CC.  Fixed a bug in fg_debug.c with how the fgPrintf() wrapper
+// passed arguments along to the real printf().  Also incorporated HUD changes
+// by Michele America.
+//
+// Revision 1.38  1998/02/02 20:53:58  curt
+// Incorporated Durk's changes.
+//
+// Revision 1.37  1998/02/01 03:39:54  curt
+// Minor tweaks.
+//
+// Revision 1.36  1998/01/31 00:43:13  curt
+// Added MetroWorks patches from Carmen Volpe.
+//
+// Revision 1.35  1998/01/27 00:47:57  curt
+// Incorporated Paul Bleisch's <bleisch@chromatic.com> new debug message
+// system and commandline/config file processing code.
+//
+// Revision 1.34  1998/01/22 02:59:37  curt
+// Changed #ifdef FILE_H to #ifdef _FILE_H
+//
+// Revision 1.33  1998/01/21 21:11:34  curt
+// Misc. tweaks.
+//
+// Revision 1.32  1998/01/19 19:27:08  curt
+// Merged in make system changes from Bob Kuehne <rpk@sgi.com>
+// This should simplify things tremendously.
+//
+// Revision 1.31  1998/01/19 18:40:32  curt
+// Tons of little changes to clean up the code and to remove fatal errors
+// when building with the c++ compiler.
+//
+// Revision 1.30  1998/01/13 00:23:09  curt
+// Initial changes to support loading and management of scenery tiles.  Note,
+// there's still a fair amount of work left to be done.
+//
+// Revision 1.29  1998/01/08 02:22:08  curt
+// Beginning to integrate Tile management subsystem.
+//
+// Revision 1.28  1998/01/07 03:18:58  curt
+// Moved astronomical stuff from .../Src/Scenery to .../Src/Astro/
+//
+// Revision 1.27  1998/01/05 18:44:35  curt
+// Add an option to advance/decrease time from keyboard.
+//
+// Revision 1.26  1997/12/30 23:09:04  curt
+// Tweaking initialization sequences.
+//
+// Revision 1.25  1997/12/30 22:22:33  curt
+// Further integration of event manager.
+//
+// Revision 1.24  1997/12/30 20:47:44  curt
+// Integrated new event manager with subsystem initializations.
+//
+// Revision 1.23  1997/12/30 16:36:50  curt
+// Merged in Durk's changes ...
+//
+// Revision 1.22  1997/12/19 23:34:05  curt
+// Lot's of tweaking with sky rendering and lighting.
+//
+// Revision 1.21  1997/12/19 16:45:00  curt
+// Working on scene rendering order and options.
+//
+// Revision 1.20  1997/12/18 23:32:33  curt
+// First stab at sky dome actually starting to look reasonable. :-)
+//
+// Revision 1.19  1997/12/17 23:13:36  curt
+// Began working on rendering a sky.
+//
+// Revision 1.18  1997/12/15 23:54:49  curt
+// Add xgl wrappers for debugging.
+// Generate terrain normals on the fly.
+//
+// Revision 1.17  1997/12/15 20:59:09  curt
+// Misc. tweaks.
+//
+// Revision 1.16  1997/12/12 19:52:48  curt
+// Working on lightling and material properties.
+//
+// Revision 1.15  1997/12/11 04:43:55  curt
+// Fixed sun vector and lighting problems.  I thing the moon is now lit
+// correctly.
+//
+// Revision 1.14  1997/12/10 22:37:47  curt
+// Prepended "fg" on the name of all global structures that didn't have it yet.
+// i.e. "struct WEATHER {}" became "struct fgWEATHER {}"
+//
+// Revision 1.13  1997/11/25 19:25:32  curt
+// Changes to integrate Durk's moon/sun code updates + clean up.
+//
+// Revision 1.12  1997/11/15 18:16:35  curt
+// minor tweaks.
+//
+// Revision 1.11  1997/10/30 12:38:42  curt
+// Working on new scenery subsystem.
+//
+// Revision 1.10  1997/10/25 03:24:23  curt
+// Incorporated sun, moon, and star positioning code contributed by Durk Talsma.
+//
+// Revision 1.9  1997/09/23 00:29:39  curt
+// Tweaks to get things to compile with gcc-win32.
+//
+// Revision 1.8  1997/09/22 14:44:20  curt
+// Continuing to try to align stars correctly.
+//
+// Revision 1.7  1997/09/16 15:50:30  curt
+// Working on star alignment and time issues.
+//
+// Revision 1.6  1997/09/05 14:17:30  curt
+// More tweaking with stars.
+//
+// Revision 1.5  1997/09/04 02:17:36  curt
+// Shufflin' stuff.
+//
+// Revision 1.4  1997/08/27 21:32:26  curt
+// Restructured view calculation code.  Added stars.
+//
+// Revision 1.3  1997/08/27 03:30:19  curt
+// Changed naming scheme of basic shared structures.
+//
+// Revision 1.2  1997/08/25 20:27:23  curt
+// Merged in initial HUD and Joystick code.
+//
+// Revision 1.1  1997/08/23 01:46:20  curt
+// Initial revision.
+//
+
index f58c30310b39287341806a580c38d850b4ff97de..503050ed8f8737ef1c6931faeb20f67bc1541381 100644 (file)
@@ -1,31 +1,30 @@
-/**************************************************************************
- * fg_init.h -- Flight Gear top level initialization routines
- *
- * Written by Curtis Olson, started August 1997.
- *
- * Copyright (C) 1997  Curtis L. Olson  - curt@infoplane.com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * $Id$
- * (Log is kept at end of this file)
- **************************************************************************/
+//
+// fg_init.hxx -- Flight Gear top level initialization routines
+//
+// Written by Curtis Olson, started August 1997.
+//
+// Copyright (C) 1997  Curtis L. Olson  - curt@infoplane.com
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+//
+// $Id$
+// (Log is kept at end of this file)
 
 
-#ifndef _FG_INIT_H
-#define _FG_INIT_H
+#ifndef _FG_INIT_HXX
+#define _FG_INIT_HXX
 
 
 #ifndef __cplusplus                                                          
 // General house keeping initializations
 int fgInitGeneral ( void );
 
+
 // This is the top level init routine which calls all the other
 // initialization routines.  If you are adding a subsystem to flight
 // gear, its initialization call should located in this routine.
 int fgInitSubsystems( void );
 
 
-#endif /* _FG_INIT_H */
+#endif // _FG_INIT_H
 
 
-/* $Log$
-/* Revision 1.1  1998/04/22 13:25:44  curt
-/* C++ - ifing the code.
-/* Starting a bit of reorganization of lighting code.
-/*
- * Revision 1.4  1998/04/21 17:02:41  curt
- * Prepairing for C++ integration.
- *
- * Revision 1.3  1998/02/12 21:59:50  curt
- * Incorporated code changes contributed by Charlie Hotchkiss
- * <chotchkiss@namg.us.anritsu.com>
- *
- * Revision 1.2  1998/01/22 02:59:38  curt
- * Changed #ifdef FILE_H to #ifdef _FILE_H
- *
- * Revision 1.1  1997/08/23 01:46:20  curt
- * Initial revision.
- *
- */
+// $Log$
+// Revision 1.2  1998/04/25 15:11:12  curt
+// Added an command line option to set starting position based on airport ID.
+//
+// Revision 1.1  1998/04/22 13:25:44  curt
+// C++ - ifing the code.
+// Starting a bit of reorganization of lighting code.
+//
+// Revision 1.4  1998/04/21 17:02:41  curt
+// Prepairing for C++ integration.
+//
+// Revision 1.3  1998/02/12 21:59:50  curt
+// Incorporated code changes contributed by Charlie Hotchkiss
+// <chotchkiss@namg.us.anritsu.com>
+//
+// Revision 1.2  1998/01/22 02:59:38  curt
+// Changed #ifdef FILE_H to #ifdef _FILE_H
+//
+// Revision 1.1  1997/08/23 01:46:20  curt
+// Initial revision.
+//
index d1cb3976f9ebf89067f4ab82ab5bdca9b0ce4d12..e72df7f31e244ca90c444c9fbf880f3e64ea81f5 100644 (file)
@@ -41,6 +41,7 @@ fgOPTIONS current_options;
 fgOPTIONS::fgOPTIONS( void ) {
     // set initial values/defaults
 
+    strcpy(airport_id, "");
     hud_status = 0;
     time_offset = 0;
 }
@@ -149,7 +150,10 @@ int fgOPTIONS::parse( int argc, char **argv ) {
     while ( i < argc ) {
        fgPrintf(FG_GENERAL, FG_INFO, "argv[%d] = %s\n", i, argv[i]);
 
-       if ( strcmp(argv[i], "--disable-hud") == 0 ) {
+       if ( strncmp(argv[i], "--airport-id=", 13) == 0 ) {
+           argv[i] += 13;
+           strncpy(airport_id, argv[i], 4);
+       } else if ( strcmp(argv[i], "--disable-hud") == 0 ) {
            hud_status = 0;     
        } else if ( strcmp(argv[i], "--enable-hud") == 0 ) {
            hud_status = 1;     
@@ -173,6 +177,7 @@ int fgOPTIONS::parse( int argc, char **argv ) {
 // Print usage message
 void fgOPTIONS::usage ( void ) {
     printf("Usage: fg [ options ... ]\n");
+    printf("\t--airport-id=ABCD:  specify starting postion by airport id\n");
     printf("\t--disable-hud:  disable heads up display\n");
     printf("\t--enable-hud:  enable heads up display\n");
     printf("\t--help -h:  print usage\n");
@@ -186,6 +191,9 @@ fgOPTIONS::~fgOPTIONS( void ) {
 
 
 // $Log$
+// Revision 1.2  1998/04/25 15:11:12  curt
+// Added an command line option to set starting position based on airport ID.
+//
 // Revision 1.1  1998/04/24 00:49:21  curt
 // Wrapped "#include <config.h>" in "#ifdef HAVE_CONFIG_H"
 // Trying out some different option parsing code.
index 566ab99e6b65b8fa66d152cdf61ab73b7712db5a..736d2bcacbcfb7ee4ba31fa2b640edc45f1f1898 100644 (file)
@@ -41,6 +41,9 @@ class fgOPTIONS {
 
 public:
 
+    // ID of initial starting airport
+    char airport_id[5];
+
     // HUD on/off
     int hud_status;
 
@@ -69,6 +72,9 @@ extern fgOPTIONS current_options;
 
 
 // $Log$
+// Revision 1.2  1998/04/25 15:11:13  curt
+// Added an command line option to set starting position based on airport ID.
+//
 // Revision 1.1  1998/04/24 00:49:21  curt
 // Wrapped "#include <config.h>" in "#ifdef HAVE_CONFIG_H"
 // Trying out some different option parsing code.