X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCockpit%2Fhud.cxx;h=043eeb8ee12cad7f6bb17a4f093ac5bc20bedf34;hb=75747d35167cdf4586d32fc82d8c7dddd6bfeee9;hp=f2b2bcc588b4e88138614c09f99dcab05b95effd;hpb=da5ea10d5db9675e6a5d75db5b33edfc350566b1;p=flightgear.git diff --git a/src/Cockpit/hud.cxx b/src/Cockpit/hud.cxx index f2b2bcc58..043eeb8ee 100644 --- a/src/Cockpit/hud.cxx +++ b/src/Cockpit/hud.cxx @@ -44,6 +44,8 @@ #include // char related functions #include // strcmp() +#include SG_GLU_H + #include #include #include @@ -453,6 +455,7 @@ readLabel(const SGPropertyNode * node) } } +#ifdef ENABLE_SP_FMDS if ( loadfn== "aux1" ) { load_fn = get_aux1; } else if ( loadfn == "aux2" ) { @@ -489,7 +492,9 @@ readLabel(const SGPropertyNode * node) load_fn = get_aux17; } else if ( loadfn == "aux18" ) { load_fn = get_aux18; - } else if ( loadfn == "ax" ) { + } else +#endif + if ( loadfn == "ax" ) { load_fn = get_Ax; } else if ( loadfn == "speed" ) { load_fn = get_speed; @@ -580,6 +585,29 @@ readTBI(const SGPropertyNode * node) return p; } //end readTBI +static instr_item * +readRunway(const SGPropertyNode * node) { + name = node->getStringValue("name"); + x = node->getIntValue("x"); + y = node->getIntValue("y"); + width = node->getIntValue("width"); + height = node->getIntValue("height"); + scaling = node->getDoubleValue("scale"); + working = node->getBoolValue("working",true); + runway_instr *ri = new runway_instr(x,y,width,height,scaling,working); + double scale = node->getDoubleValue("arrow_scale",1.0); + ri->setDrawArrow((scale>0)?true:false); + ri->setDrawArrowAlways((scale>0)?node->getBoolValue("arrow_always"):false); + ri->setStippleOutline(node->getIntValue("outer_stipple",0xFFFF)); + ri->setStippleCenterline(node->getIntValue("center_stipple",0xFFFF)); + ri->setArrowRotationRadius(node->getDoubleValue("arrow_radius")); + ri->setArrowScale(scale); + ri->setLineScale(node->getDoubleValue("line_scale",1.0)); + ri->setScaleDist(node->getDoubleValue("scale_dist_nm")); + SG_LOG(SG_INPUT, SG_INFO, "Done reading instrument " << name); + return (instr_item *) ri; +} + int readInstrument(const SGPropertyNode * node) { @@ -638,6 +666,18 @@ int readInstrument(const SGPropertyNode * node) }//for - tbis } + + const SGPropertyNode * rwy_group = node->getNode("runways"); + if (rwy_group != 0) { + int nRwy = rwy_group->nChildren(); + for (int j = 0; j < nRwy; j++) { + SG_LOG( SG_COCKPIT, SG_DEBUG, + "************** Reading runway properties" ); + HIptr = readRunway(rwy_group->getChild(j)); + HUD_deque.insert( HUD_deque.begin(), HIptr); + + }//for - runways + } return 0; }//end readinstrument @@ -1106,6 +1146,7 @@ void drawHUD() static char hud_wp0_text[256]; static char hud_wp1_text[256]; static char hud_wp2_text[256]; + static char hud_alt_text[256]; if( antialiased_node->getBoolValue() ) { glEnable(GL_LINE_SMOOTH); @@ -1213,7 +1254,14 @@ void drawHUD() } if ( strcmp( altitude_enabled->getStringValue(), "altitude-hold" ) == 0 ) { - HUD_TextList.add( fgText( 40, apY, (char *)fgGetString("/autopilot/settings/altitude-ft") ) ); + snprintf( hud_alt_text, 256, "alt = %.0f\n", + fgGetDouble("/autopilot/settings/target-altitude-ft") ); + HUD_TextList.add( fgText( 40, apY, hud_alt_text ) ); + apY -= 15; + } else if ( strcmp( altitude_enabled->getStringValue(), "agl-hold" ) == 0 ){ + snprintf( hud_alt_text, 256, "agl = %.0f\n", + fgGetDouble("/autopilot/settings/target-agl-ft") ); + HUD_TextList.add( fgText( 40, apY, hud_alt_text ) ); apY -= 15; }