1 // ATCdisplay.hxx - class to manage the graphical display of ATC messages.
2 // - The idea is to separate the display of ATC messages from their
3 // - generation so that the generation may come from any source.
5 // Written by David Luff, started October 2001.
7 // Copyright (C) 2001 David C Luff - david.luff@nottingham.ac.uk
9 // This program is free software; you can redistribute it and/or
10 // modify it under the terms of the GNU General Public License as
11 // published by the Free Software Foundation; either version 2 of the
12 // License, or (at your option) any later version.
14 // This program is distributed in the hope that it will be useful, but
15 // WITHOUT ANY WARRANTY; without even the implied warranty of
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 // General Public License for more details.
19 // You should have received a copy of the GNU General Public License
20 // along with this program; if not, write to the Free Software
21 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 #ifndef _FG_ATC_DISPLAY_HXX
24 #define _FG_ATC_DISPLAY_HXX
30 #include <Main/fgfs.hxx>
41 double counter; // count of how many seconds since the message was registered
42 double start_count; // value of counter at which display should start (seconds)
43 double stop_count; // value of counter at which display should stop (seconds)
48 // ASSUMPTION - with two radios the list won't be long so we don't need to map the id's
49 typedef vector<atcMessage> atcMessageList;
50 typedef atcMessageList::iterator atcMessageListIterator;
52 class FGATCDisplay : public FGSubsystem
56 bool rep_msg; // Flag to indicate there is a repeating transmission to display
57 bool change_msg_flag; // Flag to indicate that the repeating message has changed
58 double dsp_offset1; // Used to set the correct position of scrolling display
60 string rep_msg_str; // The repeating transmission to play
61 atcMessageList msgList;
62 atcMessageListIterator msgList_itr;
74 // Display any registered messages
75 void update(double dt);
77 // Register a single message for display after a delay of delay seconds
78 // Will automatically stop displaying after a suitable interval.
79 void RegisterSingleMessage(string msg, double delay); // OK - I know passing a string in and out is probably not good but it will have to do for now.
81 // For now we will assume only one repeating message at once
82 // This is not really robust
84 // Register a continuously repeating message
85 void RegisterRepeatingMessage(string msg);
87 // Change a repeating message - assume that the message changes after the string has finished for now
88 void ChangeRepeatingMessage(string newmsg);
90 // Cancel the current repeating message
91 void CancelRepeatingMessage();
94 #endif // _FG_ATC_DISPLAY_HXX