Immatriculation
From wiki.flightgear.org
| 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);
