2006-01-09 14:39:33 +00:00
|
|
|
#############################################################################
|
|
|
|
#
|
|
|
|
# Simple sequenced ATC background chatter function
|
|
|
|
#
|
|
|
|
# Written by Curtis Olson
|
|
|
|
# Started 8 Jan 2006.
|
|
|
|
#
|
|
|
|
#############################################################################
|
|
|
|
|
|
|
|
#############################################################################
|
|
|
|
# Global shared variables
|
|
|
|
#############################################################################
|
|
|
|
|
|
|
|
fg_root = "";
|
|
|
|
chatter = "UK";
|
|
|
|
chatter_dir = "";
|
|
|
|
|
2006-01-09 19:11:04 +00:00
|
|
|
chatter_min_interval = 20.0;
|
|
|
|
chatter_max_interval = 40.0;
|
|
|
|
|
2006-01-09 15:18:16 +00:00
|
|
|
chatter_index = 0;
|
2006-01-09 14:39:33 +00:00
|
|
|
chatter_size = 0;
|
|
|
|
chatter_list = 0;
|
|
|
|
|
|
|
|
|
|
|
|
#############################################################################
|
|
|
|
# Use tha nasal timer to call the initialization function once the sim is
|
|
|
|
# up and running
|
|
|
|
#############################################################################
|
|
|
|
|
|
|
|
CHATTER_INIT = func {
|
|
|
|
# default values
|
|
|
|
fg_root = getprop("/sim/fg-root");
|
|
|
|
chatter_dir = sprintf("%s/ATC/Chatter/%s", fg_root, chatter);
|
|
|
|
chatter_list = directory( chatter_dir );
|
|
|
|
chatter_size = size(chatter_list);
|
2006-01-09 15:18:16 +00:00
|
|
|
# seed the random number generator (with time) so we don't start in
|
|
|
|
# same place in the sequence each run.
|
|
|
|
srand();
|
2006-01-09 14:39:33 +00:00
|
|
|
chatter_index = int( chatter_size * rand() );
|
|
|
|
}
|
|
|
|
settimer(CHATTER_INIT, 0);
|
|
|
|
|
|
|
|
|
|
|
|
#############################################################################
|
|
|
|
# main update function to be called each frame
|
|
|
|
#############################################################################
|
|
|
|
|
|
|
|
chatter_update = func {
|
|
|
|
if ( chatter_index >= chatter_size ) {
|
2006-01-09 15:18:16 +00:00
|
|
|
chatter_index = 0;
|
2006-01-09 14:39:33 +00:00
|
|
|
}
|
|
|
|
|
2006-01-10 02:57:32 +00:00
|
|
|
if ( substr(chatter_list[chatter_index],
|
|
|
|
size(chatter_list[chatter_index]) - 4) == ".wav" )
|
2006-01-09 15:18:16 +00:00
|
|
|
{
|
|
|
|
tmpl = { path : chatter_dir, file : chatter_list[chatter_index] };
|
|
|
|
if ( getprop("/sim/sound/atc-chatter") ) {
|
|
|
|
# go through the motions, but only schedule the message to play
|
|
|
|
# if atc-chatter is enabled.
|
2006-02-17 22:20:15 +00:00
|
|
|
printlog("info", "update atc chatter ", chatter_list[chatter_index] );
|
2006-01-09 15:18:16 +00:00
|
|
|
fgcommand("play-audio-message", props.Node.new(tmpl) );
|
|
|
|
}
|
2006-01-10 02:57:32 +00:00
|
|
|
} else {
|
2006-01-14 17:30:55 +00:00
|
|
|
# skip non-wav file found in directory
|
2006-01-09 14:39:33 +00:00
|
|
|
}
|
|
|
|
|
2006-01-09 15:18:16 +00:00
|
|
|
chatter_index = chatter_index + 1;
|
2006-01-09 14:39:33 +00:00
|
|
|
nextChatter();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#############################################################################
|
|
|
|
# Use tha nasal timer to update every 10 seconds
|
|
|
|
#############################################################################
|
|
|
|
|
|
|
|
nextChatter = func {
|
2006-01-09 19:11:04 +00:00
|
|
|
# schedule next message in next min-max interval seconds so we have a bit
|
2006-01-09 14:39:33 +00:00
|
|
|
# of a random pacing
|
2006-01-09 19:11:04 +00:00
|
|
|
next_interval = chatter_min_interval
|
|
|
|
+ int(rand() * (chatter_max_interval - chatter_min_interval));
|
2006-02-17 22:20:15 +00:00
|
|
|
# printlog("info", "next chatter in ", next_interval, " seconds");
|
2006-01-09 19:11:04 +00:00
|
|
|
settimer(chatter_update, next_interval );
|
2006-01-09 14:39:33 +00:00
|
|
|
}
|
|
|
|
nextChatter();
|