Displaying text in XML gauges

Since this topic isn't covered at all in the FS 2004 SDK documentation, here's some info that I haven't yet seen covered online anywhere:

Displaying Text in Gauges

Formatting numbers

To display the value of a sim variable in text, use the following syntax:

<String>%(VARIABLE NAME)%!XY!</String>

Where:

VARIABLE NAME is any of the variables listed in parameters.doc. Be sure to include parentheses around the variable name in addition to the parentheses included with the %’s. (see example below) Note that there must not be a space between the ‘%’ and the ‘!’.

Y (required, case-sensitive) is the formatting of the variable, where:

  • s = string.
  • d = number (integer). If the number is not an integer, it is rounded to the nearest integer. Note that rounding, not truncation occurs.
  • f = number (floating point)

X is the minimum number of digits to display (optional)

If Y=’d’, the following rules apply:

  • If X is preceded by the digit ‘0’, then leading zeros are added if necessary.

  • If X is preceded by ‘-‘, text is left-aligned

  • If X is preceded by ‘+’, a ‘+’ is indicated in front of the number when the number is greater than 0 (a ‘-‘ is always used to indicate numbers less than 0)

  • If X is preceded by ‘ ‘ (space), leading spaces are added if necessary.

If Y=’f’, the following rule applies:

  • If a decimal point is used in the number X, the digit after the decimal point specifies the number of digits to display after the decimal point. See examples below,

 

Script

Result

%( 12.34 )%!4.3f!

12.340

%( 12.34 )%!04.3f!

12.340 (Leading ‘0’s not added to floating point numbers)

%( 12345.6789 )%!4.3f!

12345.679 (Number before decimal point does not limit the number of digits displayed before decimal point)

%( 34.56 )%!+d!

+35 (Note that rounding, not truncation, occurs)

%(234)%!5d!

  234 (note 2 leading spaces)

%( ‘foo’ )%!5s!

   foo (note 2 leading spaces)

%( 234 )%!3s!

234

Using Sim variables and expressions in text

For example:

<String>%((A:Indicated Altitude, feet))%!05f!</String>

Any of the operators described above (Boolean, string, arithmetic, etc.) may be used within the %() to create the intended expression. In other words,

<String>%(EXPRESSION)%!XY!</String>

Is valid, where EXPRESSION is any combination of valid sim variables and operators.

For example, the following string will display the current altitude in hundreds of feet or hundreds of meters, depending on the current international settings,

<String>
%( (P:Units of measure, enum) 2 ==
if{ (A:Indicated Altitude, meters) }
els{ (A:Indicated Altitude, feet) }
100 / )%!5d!
</String>

Keep in mind that the <String> element must be a child of a <Text> element, for example:

<Element>

    <Position X="0" Y="175"/>

    <Text

        X="80" Y="20"

        Bright="Yes"

        Length="10"

        Font="Quartz"

        Color="#E0E0E0" >

        String>05d: %((P:Local time,hours) flr)%!02d!</String>

    </Text>

</Element>

--------------------

Stay tuned for more info on this topic in a future post!