generic aar.nas (air-to-air-refueling). Meant to replace all the files
lying around everywhere. Used by the vulcan2 already. Cleanup pending.
This commit is contained in:
parent
1f57ea72b4
commit
5011ae6ca4
1 changed files with 120 additions and 0 deletions
120
Aircraft/Generic/aar.nas
Normal file
120
Aircraft/Generic/aar.nas
Normal file
|
@ -0,0 +1,120 @@
|
|||
# Properties under /consumables/fuel/tank[n]:
|
||||
# + level-gal_us - Current fuel load. Can be set by user code.
|
||||
# + level-lbs - OUTPUT ONLY property, do not try to set
|
||||
# + selected - boolean indicating tank selection.
|
||||
# + density-ppg - Fuel density, in lbs/gallon.
|
||||
# + capacity-gal_us - Tank capacity
|
||||
#
|
||||
# Properties under /engines/engine[n]:
|
||||
# + fuel-consumed-lbs - Output from the FDM, zeroed by this script
|
||||
# + out-of-fuel - boolean, set by this code.
|
||||
|
||||
# ==================================== timer stuff ===========================================
|
||||
|
||||
# set the update period
|
||||
|
||||
UPDATE_PERIOD = 0.3;
|
||||
|
||||
# set the timer for the selected function
|
||||
|
||||
registerTimer = func {
|
||||
|
||||
settimer(arg[0], UPDATE_PERIOD);
|
||||
|
||||
} # end function
|
||||
|
||||
# =============================== end timer stuff ===========================================
|
||||
|
||||
|
||||
|
||||
initialized = 0;
|
||||
enabled = 0;
|
||||
|
||||
#print ("running aar");
|
||||
#print (" enabled " , enabled, " initialized ", initialized);
|
||||
|
||||
updateTanker = func {
|
||||
#print ("tanker update running ");
|
||||
#if (!initialized ) {
|
||||
#print("calling initialize");
|
||||
#initialize();}
|
||||
|
||||
Refueling = props.globals.getNode("/systems/refuel/contact");
|
||||
AllAircraft = props.globals.getNode("ai/models").getChildren("aircraft");
|
||||
AllMultiplayer = props.globals.getNode("ai/models").getChildren("multiplayer");
|
||||
Aircraft = props.globals.getNode("ai/models/aircraft");
|
||||
|
||||
# select all tankers which are in contact. For now we assume that it must be in
|
||||
# contact with us.
|
||||
|
||||
selectedTankers = [];
|
||||
|
||||
if ( enabled ) { # check that AI Models are enabled, otherwise don't bother
|
||||
foreach(a; AllAircraft) {
|
||||
contact_node = a.getNode("refuel/contact");
|
||||
id_node = a.getNode("id");
|
||||
tanker_node = a.getNode("tanker");
|
||||
|
||||
contact = contact_node.getValue();
|
||||
id = id_node.getValue();
|
||||
tanker = tanker_node.getValue();
|
||||
|
||||
#print ("contact ", contact , " tanker " , tanker );
|
||||
|
||||
if (tanker and contact) {
|
||||
append(selectedTankers, a);
|
||||
}
|
||||
}
|
||||
|
||||
foreach(m; AllMultiplayer) {
|
||||
contact_node = m.getNode("refuel/contact");
|
||||
id_node = m.getNode("id");
|
||||
tanker_node = m.getNode("tanker");
|
||||
|
||||
contact = contact_node.getValue();
|
||||
id = id_node.getValue();
|
||||
tanker = tanker_node.getValue();
|
||||
|
||||
# print (" mp contact ", contact , " tanker " , tanker );
|
||||
|
||||
if (tanker and contact) {
|
||||
append(selectedTankers, m);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#print ("tankers ", size(selectedTankers) );
|
||||
|
||||
if ( size(selectedTankers) >= 1 ){
|
||||
Refueling.setBoolValue(1);
|
||||
} else {
|
||||
Refueling.setBoolValue(0);
|
||||
}
|
||||
registerTimer(updateTanker);
|
||||
}
|
||||
|
||||
# Initalize: Make sure all needed properties are present and accounted
|
||||
# for, and that they have sane default values.
|
||||
|
||||
initialize = func {
|
||||
|
||||
AI_Enabled = props.globals.getNode("sim/ai/enabled");
|
||||
Refueling = props.globals.getNode("/systems/refuel/contact",1);
|
||||
|
||||
Refueling.setBoolValue(0);
|
||||
enabled = AI_Enabled.getValue();
|
||||
|
||||
initialized = 1;
|
||||
}
|
||||
|
||||
initDoubleProp = func {
|
||||
node = arg[0]; prop = arg[1]; val = arg[2];
|
||||
if(node.getNode(prop) != nil) {
|
||||
val = num(node.getNode(prop).getValue());
|
||||
}
|
||||
node.getNode(prop, 1).setDoubleValue(val);
|
||||
}
|
||||
|
||||
# Fire it up
|
||||
if (!initialized) {initialize();}
|
||||
registerTimer(updateTanker);
|
Loading…
Add table
Reference in a new issue