# include <values.h> // for MAXINT
#endif
-#include <Aircraft/aircraft.h>
-#include <Debug/fg_debug.h>
+#include <Aircraft/aircraft.hxx>
+#include <Debug/logstream.hxx>
#include <Include/fg_constants.h>
#include <Main/options.hxx>
#include <Math/fg_random.h>
#include <Math/polar3d.hxx>
#include <Scenery/scenery.hxx>
#include <Time/fg_timer.hxx>
-#include <Weather/weather.h>
#if defined ( __sun__ ) || defined ( __sgi )
extern "C" {
#include "hud.hxx"
+static char units[5];
// The following routines obtain information concerntin the aircraft's
// current state and return it to calling instrument display routines.
instr_item *HIptr;
int index;
- fgPrintf( FG_COCKPIT, FG_INFO, "Initializing current aircraft HUD\n" );
+ FG_LOG( FG_COCKPIT, FG_INFO, "Initializing current aircraft HUD" );
HUD_deque.erase( HUD_deque.begin(), HUD_deque.end()); // empty the HUD deque
int fgHUDInit2( fgAIRCRAFT * /* current_aircraft */ )
{
- instr_item *HIptr;
- int index;
-
- fgPrintf( FG_COCKPIT, FG_INFO, "Initializing current aircraft HUD\n" );
-
- HUD_deque.erase( HUD_deque.begin(), HUD_deque.end()); // empty the HUD deque
-
-// hud->code = 1;
-// hud->status = 0;
-
- // For now lets just hardcode the hud here.
- // In the future, hud information has to come from the same place
- // aircraft information came from.
-
-// fgHUDSetTimeMode( hud, NIGHT );
-// fgHUDSetBrightness( hud, BRT_LIGHT );
-
-// index = 0;
- index = 19;
-
- do {
- switch ( index ) {
- case 0: // TBI
- HIptr = (instr_item *) new fgTBI_instr( 270, 100, 60, 10 );
- break;
-
- case 1: // Artificial Horizon
- HIptr = (instr_item *) new HudLadder( 240, 195, 120, 180 );
- break;
-
- case 2: // KIAS
- HIptr = (instr_item *) new hud_card( 130,
- 170,
- 28,
- 200,
- get_speed,
- HUDS_LEFT | HUDS_VERT,
- 200.0, 0.0,
- 1.0,
- 10, 5,
- 0,
- 0,
- 50.0,
- true);
-
- break;
-
- case 3: // Radio Altimeter
- HIptr = (instr_item *) new hud_card( 420,
- 195,
- 25,
- 150,
- get_agl,
- HUDS_LEFT | HUDS_VERT,
- 1000, 0,
- 1.0,
- 25, 5,
- 0,
- 0,
- 200.0,
- true);
- break;
-
- case 4: // GYRO COMPASS
- HIptr = (instr_item *) new hud_card( 200,
- 375,
- 200,
- 28,
- get_heading,
- HUDS_TOP,
- 360, 0,
- 1.0,
- 5, 1,
- 360,
- 0,
- 25,
- true);
- break;
-
- case 5: // AMSL
- HIptr = (instr_item *) new hud_card( 460,
- 170,
- 35,
- 200,
- get_altitude,
- HUDS_RIGHT | HUDS_VERT,
- 15000, 0,
- 1.0,
- 100, 25,
- 0,
- 0,
- 250,
- true);
- break;
-
- case 6:
- HIptr = (instr_item *) new guage_instr( 250, // x
- 350, // y
- 100, // width
- 20, // height
- get_aileronval, // data source
- HUDS_BOTTOM | HUDS_NOTEXT,
- 100.0,
- +1.0,
- -1.0);
- break;
-
- case 7:
- HIptr = (instr_item *) new guage_instr( 170, // x
- 225, // y
- 20, // width
- 100, // height
- get_elevatorval, // data source
- HUDS_RIGHT | HUDS_VERT | HUDS_NOTEXT,
- -100.0, // Scale data
- +1.0, // Data Range
- -1.0);
- break;
-
- case 8:
- HIptr = (instr_item *) new guage_instr( 250, // x
- 200, // y
- 100, // width
- 20, // height
- get_rudderval, // data source
- HUDS_TOP | HUDS_NOTEXT,
- 100.0,
- +1.0,
- -1.0);
- break;
-
- case 9:
- HIptr = (instr_item *) new guage_instr( 100, // x
- 190,
- 20,
- 160, // height
- get_throttleval, // data source
- HUDS_VERT | HUDS_RIGHT | HUDS_NOTEXT,
- 100.0,
- 1.0,
- 0.0);
- break;
-
- case 10: // Digital KIAS
- HIptr = (instr_item *) new instr_label ( 110,
- 150,
- 40,
- 30,
- get_speed,
- "%5.0f",
- NULL,
- " Kts",
- 1.0,
- HUDS_TOP,
- RIGHT_JUST,
- SMALL,
- 0,
- TRUE );
- break;
-
- case 11: // Digital Rate of Climb
- HIptr = (instr_item *) new instr_label ( 110,
- 135,
- 40,
- 10,
- get_altitude,
- "Climb %5.0f",
- NULL,
- " m",
- 1.0,
- HUDS_TOP,
- LEFT_JUST,
- SMALL,
- 0,
- TRUE );
- break;
-
- case 12: // Roll indication diagnostic
- HIptr = (instr_item *) new instr_label ( 110,
- 120,
- 40,
- 10,
- get_roll,
- "%5.2f",
- " Roll",
- " Deg",
- 1.0,
- HUDS_TOP,
- RIGHT_JUST,
- SMALL,
- 0,
- TRUE );
- break;
-
- case 13: // Angle of attack diagnostic
- HIptr = (instr_item *) new instr_label ( 440,
- 150,
- 60,
- 10,
- get_aoa,
- " %5.2f",
- "AOA",
- " Deg",
- 1.0,
- HUDS_TOP,
- RIGHT_JUST,
- SMALL,
- 0,
- TRUE );
- break;
-
- case 14:
- HIptr = (instr_item *) new instr_label ( 440,
- 135,
- 60,
- 10,
- get_heading,
- " %5.1f",
- "Heading ",
- " Deg",
- 1.0,
- HUDS_TOP,
- RIGHT_JUST,
- SMALL,
- 0,
- TRUE );
- break;
-
- case 15:
- HIptr = (instr_item *) new instr_label ( 440,
- 120,
- 60,
- 10,
- get_sideslip,
- "%5.2f",
- "Sideslip ",
- NULL,
- 1.0,
- HUDS_TOP,
- RIGHT_JUST,
- SMALL,
- 0,
- TRUE );
- break;
-
- case 16:
- HIptr = (instr_item *) new instr_label( 440,
- 100,
- 60,
- 10,
- get_throttleval,
- "%5.2f",
- "Throttle ",
- NULL,
- 1.0,
- HUDS_TOP,
- RIGHT_JUST,
- SMALL,
- 0,
- TRUE );
- break;
-
- case 17:
- HIptr = (instr_item *) new instr_label( 440,
- 85,
- 60,
- 10,
- get_elevatorval,
- "%5.2f",
- "Elevator ",
- NULL,
- 1.0,
- HUDS_TOP,
- RIGHT_JUST,
- SMALL,
- 0,
- TRUE );
- break;
-
- case 18:
- HIptr = (instr_item *) new instr_label( 440,
- 60,
- 60,
- 10,
- get_aileronval,
- "%5.2f",
- "Aileron ",
- NULL,
- 1.0,
- HUDS_TOP,
- RIGHT_JUST,
- SMALL,
- 0,
- TRUE );
- break;
-
-
- case 19:
- HIptr = (instr_item *) new instr_label( 10,
- 10,
- 60,
- 10,
- get_frame_rate,
- "%.1f",
- "Frame rate = ",
- NULL,
- 1.0,
- HUDS_TOP,
- RIGHT_JUST,
- SMALL,
- 0,
- TRUE );
- break;
-
- case 20:
- switch( current_options.get_tris_or_culled() ) {
- case 0:
- HIptr = (instr_item *) new instr_label( 10,
- 25,
- 90,
- 10,
- get_vfc_tris_drawn,
- "%.0f",
- "Tris Rendered = ",
- NULL,
- 1.0,
- HUDS_TOP,
- RIGHT_JUST,
- SMALL,
- 0,
- TRUE );
- break;
- case 1:
- HIptr = (instr_item *) new instr_label( 10,
- 25,
- 90,
- 10,
- get_vfc_ratio,
- "%.2f",
- "VFC Ratio = ",
- NULL,
- 1.0,
- HUDS_TOP,
- RIGHT_JUST,
- SMALL,
- 0,
- TRUE );
- break;
- }
- break;
-
- case 21:
- HIptr = (instr_item *) new instr_label( 10,
- 40,
- 90,
- 10,
- get_fov,
- "%.1f",
- "FOV = ",
- NULL,
- 1.0,
- HUDS_TOP,
- RIGHT_JUST,
- SMALL,
- 0,
- TRUE );
- break;
-
- default:
- HIptr = 0;;
- }
- if( HIptr ) { // Anything to install?
- HUD_deque.insert( HUD_deque.begin(), HIptr);
- }
- index++;
+ instr_item *HIptr;
+ int index;
+
+ FG_LOG( FG_COCKPIT, FG_INFO, "Initializing current aircraft HUD" );
+
+ HUD_deque.erase( HUD_deque.begin(), HUD_deque.end());
+
+ // hud->code = 1;
+ // hud->status = 0;
+
+ // For now lets just hardcode the hud here.
+ // In the future, hud information has to come from the same place
+ // aircraft information came from.
+
+ // fgHUDSetTimeMode( hud, NIGHT );
+ // fgHUDSetBrightness( hud, BRT_LIGHT );
+
+ // index = 0;
+ index = 19;
+
+ instr_item* p;
+
+ p = new instr_label( 10, 10, 60, 10,
+ get_frame_rate,
+ "%.1f",
+ "Frame rate = ",
+ NULL,
+ 1.0,
+ HUDS_TOP,
+ RIGHT_JUST,
+ SMALL,
+ 0,
+ TRUE );
+ HUD_deque.push_front( p );
+
+ if ( current_options.get_tris_or_culled() == 0 )
+ p = new instr_label( 10, 25, 90, 10,
+ get_vfc_tris_drawn,
+ "%.0f",
+ "Tris Rendered = ",
+ NULL,
+ 1.0,
+ HUDS_TOP,
+ RIGHT_JUST,
+ SMALL,
+ 0,
+ TRUE );
+ else
+ p = new instr_label( 10, 25, 90, 10,
+ get_vfc_ratio,
+ "%.2f",
+ "VFC Ratio = ",
+ NULL,
+ 1.0,
+ HUDS_TOP,
+ RIGHT_JUST,
+ SMALL,
+ 0,
+ TRUE );
+ HUD_deque.push_front( p );
+
+ p = new instr_label( 10, 40, 90, 10,
+ get_fov,
+ "%.1f",
+ "FOV = ",
+ NULL,
+ 1.0,
+ HUDS_TOP,
+ RIGHT_JUST,
+ SMALL,
+ 0,
+ TRUE );
+ HUD_deque.push_front( p );
+
+ const int x_pos = 480;
+ p = new instr_label( x_pos, 40, 40, 30,
+ get_speed,
+ "%5.0f",
+ "Airspeed ",
+ " Kts",
+ 1.0,
+ HUDS_TOP,
+ RIGHT_JUST,
+ SMALL,
+ 0,
+ TRUE );
+ HUD_deque.push_front( p );
+
+ if ( current_options.get_units() == fgOPTIONS::FG_UNITS_FEET ) {
+ strcpy(units, " ft");
+ } else {
+ strcpy(units, " m");
}
- while( HIptr );
-
- return 0; // For now. Later we may use this for an error code.
+ p = new instr_label( x_pos, 25, 40, 10,
+ get_altitude,
+ "%5.0f",
+ "Altitude ",
+ units,
+ 1.0,
+ HUDS_TOP,
+ RIGHT_JUST,
+ SMALL,
+ 0,
+ TRUE );
+ HUD_deque.push_front( p );
+
+ p = new instr_label( x_pos, 10, 60, 10,
+ get_heading,
+ "%5.1f",
+ "Heading ",
+ " Deg",
+ 1.0,
+ HUDS_TOP,
+ RIGHT_JUST,
+ SMALL,
+ 0,
+ TRUE );
+ HUD_deque.push_front( p );
+
+ return 0; // For now. Later we may use this for an error code.
}
int global_day_night_switch = DAY;
glLineWidth(1);
- deque < instr_item * > :: iterator current;
- deque < instr_item * > :: iterator last;
+ deque < instr_item * > :: iterator current = HUD_deque.begin();
+ deque < instr_item * > :: iterator last = HUD_deque.end();
- current = HUD_deque.begin();
- last = HUD_deque.end();
- while ( current != last ) {
+ for ( ; current != last; ++current ) {
pHUDInstr = *current;
- current++;
// for( i = hud_displays; i; --i) { // Draw everything
// if( HUD_deque.at(i)->enabled()) {
}
// $Log$
+// Revision 1.27 1998/11/06 21:17:47 curt
+// Converted to new logstream debugging facility. This allows release
+// builds with no messages at all (and no performance impact) by using
+// the -DFG_NDEBUG flag.
+//
+// Revision 1.26 1998/11/03 12:33:11 curt
+// Display ft or m in mini-hud next to altitude.
+//
+// Revision 1.25 1998/10/17 01:33:57 curt
+// C++ ifying ...
+//
+// Revision 1.24 1998/10/16 23:27:25 curt
+// C++-ifying.
+//
+// Revision 1.23 1998/10/16 00:53:00 curt
+// Mods to display a bit more info when mini-hud is active.
+//
// Revision 1.22 1998/09/29 14:56:31 curt
// c++-ified comments.
//