Account for new surface types on runways and in the kln89 instrument
Signed-off-by: fly <merspieler@alwaysdata.com>
This commit is contained in:
parent
b32c33fc72
commit
b1e702abc4
2 changed files with 99 additions and 22 deletions
|
@ -33,31 +33,58 @@
|
||||||
using std::string;
|
using std::string;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* surface codes
|
* surface codes, defined here (as of Jan 2024) https://developer.x-plane.com/article/airport-data-apt-dat-12-00-file-format-specification/
|
||||||
* 1 - asphalt
|
* 1,20-38 - asphalt
|
||||||
* 2 - concrete
|
* 2,50-57 - concrete
|
||||||
* 3 - turf
|
* 3 - turf
|
||||||
* 4 - dirt
|
* 4 - dirt
|
||||||
* 5 - gravel
|
* 5 - gravel
|
||||||
* 6 - asphalt helipad
|
|
||||||
* 7 - concrete helipad
|
|
||||||
* 8 - turf helipad
|
|
||||||
* 9 - dirt helipad
|
|
||||||
* 12 - lakebed
|
* 12 - lakebed
|
||||||
|
* 13 - water runway
|
||||||
|
* 14 - snow or ice
|
||||||
|
* 15 - Transparent
|
||||||
*/
|
*/
|
||||||
const char * FGRunwayBase::surfaceName( int surface_code )
|
const char * FGRunwayBase::surfaceName( int surface_code )
|
||||||
{
|
{
|
||||||
switch( surface_code ) {
|
switch( surface_code ) {
|
||||||
case 1: return "asphalt";
|
case 1:
|
||||||
case 2: return "concrete";
|
case 20: // Light colored asphalt
|
||||||
|
case 21:
|
||||||
|
case 22:
|
||||||
|
case 23:
|
||||||
|
case 24: // Asphalt
|
||||||
|
case 25:
|
||||||
|
case 26:
|
||||||
|
case 27: // Darker colored asphalt
|
||||||
|
case 28:
|
||||||
|
case 29:
|
||||||
|
case 30:
|
||||||
|
case 31: // Very dark colored asphalt
|
||||||
|
case 32:
|
||||||
|
case 33:
|
||||||
|
case 34:
|
||||||
|
case 35: // Near black, ‘new’ looking asphalt
|
||||||
|
case 36:
|
||||||
|
case 37:
|
||||||
|
case 38:
|
||||||
|
return "asphalt";
|
||||||
|
case 2:
|
||||||
|
case 50: // Light “new” looking concrete
|
||||||
|
case 51:
|
||||||
|
case 52:
|
||||||
|
case 53: // Concrete
|
||||||
|
case 54:
|
||||||
|
case 55: // Dark concrete
|
||||||
|
case 56:
|
||||||
|
case 57:
|
||||||
|
return "concrete";
|
||||||
case 3: return "turf";
|
case 3: return "turf";
|
||||||
case 4: return "dirt";
|
case 4: return "dirt";
|
||||||
case 5: return "gravel";
|
case 5: return "gravel";
|
||||||
case 6: return "asphalt helipad";
|
|
||||||
case 7: return "concrete helipad";
|
|
||||||
case 8: return "turf helipad";
|
|
||||||
case 9: return "dirt helipad";
|
|
||||||
case 12: return "lakebed";
|
case 12: return "lakebed";
|
||||||
|
case 13: return "water";
|
||||||
|
case 14: return "ice";
|
||||||
|
case 15: return "transparent";
|
||||||
default: return "unknown";
|
default: return "unknown";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -92,7 +119,7 @@ SGGeod FGRunwayBase::pointOffCenterline(double aOffset, double lateralOffset) co
|
||||||
|
|
||||||
bool FGRunwayBase::isHardSurface() const
|
bool FGRunwayBase::isHardSurface() const
|
||||||
{
|
{
|
||||||
return ((_surface_code == 1) || (_surface_code == 2));
|
return ((_surface_code == 1 || (_surface_code >= 20 && _surface_code <= 38)) || (_surface_code == 2 || (_surface_code >= 50 && _surface_code <= 57)));
|
||||||
}
|
}
|
||||||
|
|
||||||
FGTaxiway::FGTaxiway(PositionedID aGuid,
|
FGTaxiway::FGTaxiway(PositionedID aGuid,
|
||||||
|
|
|
@ -165,7 +165,7 @@ void KLN89AptPage::Update(double dt) {
|
||||||
// I guess we can make a heuristic guess as to fuel availability from the runway sizes
|
// I guess we can make a heuristic guess as to fuel availability from the runway sizes
|
||||||
// For now assume that airports with asphalt or concrete runways will have at least 100L,
|
// For now assume that airports with asphalt or concrete runways will have at least 100L,
|
||||||
// and that runways over 4000ft will have JET.
|
// and that runways over 4000ft will have JET.
|
||||||
if(_aptRwys[0]->surface() <= 2) {
|
if(_aptRwys[0]->isHardSurface()) {
|
||||||
if(_aptRwys[0]->lengthFt() >= 4000) {
|
if(_aptRwys[0]->lengthFt() >= 4000) {
|
||||||
_kln89->DrawText("JET 100L", 2, 0, 1);
|
_kln89->DrawText("JET 100L", 2, 0, 1);
|
||||||
} else {
|
} else {
|
||||||
|
@ -199,9 +199,34 @@ void KLN89AptPage::Update(double dt) {
|
||||||
// TODO: why not store these strings as an array?
|
// TODO: why not store these strings as an array?
|
||||||
switch(_aptRwys[i]->surface()) {
|
switch(_aptRwys[i]->surface()) {
|
||||||
case 1:
|
case 1:
|
||||||
// Asphalt - fall through
|
case 20: // Light colored asphalt
|
||||||
case 2:
|
case 21:
|
||||||
// Concrete
|
case 22:
|
||||||
|
case 23:
|
||||||
|
case 24: // Asphalt
|
||||||
|
case 25:
|
||||||
|
case 26:
|
||||||
|
case 27: // Darker colored asphalt
|
||||||
|
case 28:
|
||||||
|
case 29:
|
||||||
|
case 30:
|
||||||
|
case 31: // Very dark colored asphalt
|
||||||
|
case 32:
|
||||||
|
case 33:
|
||||||
|
case 34:
|
||||||
|
case 35: // Near black, ‘new’ looking asphalt
|
||||||
|
case 36:
|
||||||
|
case 37:
|
||||||
|
case 38:
|
||||||
|
case 2: //Concrete
|
||||||
|
case 50: // Light “new” looking concrete
|
||||||
|
case 51:
|
||||||
|
case 52:
|
||||||
|
case 53: // Concrete
|
||||||
|
case 54:
|
||||||
|
case 55: // Dark concrete
|
||||||
|
case 56:
|
||||||
|
case 57:
|
||||||
_kln89->DrawText("HRD", 2, 9, 2);
|
_kln89->DrawText("HRD", 2, 9, 2);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
|
@ -249,9 +274,34 @@ void KLN89AptPage::Update(double dt) {
|
||||||
// TODO: why not store these strings as an array?
|
// TODO: why not store these strings as an array?
|
||||||
switch(_aptRwys[i]->surface()) {
|
switch(_aptRwys[i]->surface()) {
|
||||||
case 1:
|
case 1:
|
||||||
// Asphalt - fall through
|
case 20: // Light colored asphalt
|
||||||
case 2:
|
case 21:
|
||||||
// Concrete
|
case 22:
|
||||||
|
case 23:
|
||||||
|
case 24: // Asphalt
|
||||||
|
case 25:
|
||||||
|
case 26:
|
||||||
|
case 27: // Darker colored asphalt
|
||||||
|
case 28:
|
||||||
|
case 29:
|
||||||
|
case 30:
|
||||||
|
case 31: // Very dark colored asphalt
|
||||||
|
case 32:
|
||||||
|
case 33:
|
||||||
|
case 34:
|
||||||
|
case 35: // Near black, ‘new’ looking asphalt
|
||||||
|
case 36:
|
||||||
|
case 37:
|
||||||
|
case 38:
|
||||||
|
case 2: //Concrete
|
||||||
|
case 50: // Light “new” looking concrete
|
||||||
|
case 51:
|
||||||
|
case 52:
|
||||||
|
case 53: // Concrete
|
||||||
|
case 54:
|
||||||
|
case 55: // Dark concrete
|
||||||
|
case 56:
|
||||||
|
case 57:
|
||||||
_kln89->DrawText("HRD", 2, 9, 0);
|
_kln89->DrawText("HRD", 2, 9, 0);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
|
|
Loading…
Reference in a new issue