Immatriculation

From wiki.flightgear.org

Jump to: navigation, search
This article is a stub. You can help the wiki by expanding it..


Immatriclation at the tail of the DR400.

Immatriculation makes it possible to add a user changeable callsign to an aircraft.

Examples are based on the Robin DR400.

-set.xml

Add this to enable the immatriculation:

<model>
 <immat>true</immat>
</model>

Let's make a menu button:

<menubar>
 <default>
  <menu n="100">
   <label>Robin DR400</label>
   <enabled type="bool">true</enabled>
   <item>
     <label>Immatriculation</label>
     <binding>
       <command>nasal</command>
       <script>dr400.immat_dialog.toggle()</script>
     </binding>
   </item>
  </menu>
 </default>
</menubar>
</sim>

And place a path to the immat.nas file we will create in the next step.

<nasal>
 <file>Aircraft/DR400/Nasal/immat.nas</file>
</nasal>

immat.nas

# ===========================
# Immatriculation by Zakharov
# ===========================

var refresh_immat = func {
    var immat = props.globals.getNode("/sim/model/immat",1).getValue();
    var immat_size = size(immat);
    if (immat_size != 0) immat = string.uc(immat);
    for (var i = 0; i < 6; i += 1) {
	if (i >= immat_size)
	    glyph = -1;
	elsif (string.isupper(immat[i]))
		glyph = immat[i] - `A`;
	elsif (string.isdigit(immat[i]))
	    glyph = immat[i] - `0` + 26;
	else
	   glyph = 36;
	props.globals.getNode("/sim/multiplay/generic/int["~i~"]", 1).setValue(glyph+1);
    }
}

var immat_dialog = gui.Dialog.new("/sim/gui/dialogs/DR400/status/dialog",
				  "Aircraft/DR400/Dialogs/immat.xml");

setlistener("/sim/signals/fdm-initialized", func {
  if (props.globals.getNode("/sim/model/immat") == nil) {
    var immat = props.globals.getNode("/sim/model/immat",1);
    var callsign = props.globals.getNode("/sim/multiplay/callsign").getValue();
    if (callsign != "callsign") immat.setValue(callsign);
  else immat.setValue("F-GHYQ");
  }
  refresh_immat();
  setlistener("sim/model/immat", refresh_immat, 0);
},0);
Personal tools