1 // NasalDisplay.hxx - class to manage the graphical display of Nasal messages.
2 // - mainly copied from ATCDisplay.hxx
4 // Written by David Luff, started October 2001.
6 // Copyright (C) 2001 David C Luff - david.luff@nottingham.ac.uk
8 // This program is free software; you can redistribute it and/or
9 // modify it under the terms of the GNU General Public License as
10 // published by the Free Software Foundation; either version 2 of the
11 // License, or (at your option) any later version.
13 // This program is distributed in the hope that it will be useful, but
14 // WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // General Public License for more details.
18 // You should have received a copy of the GNU General Public License
19 // along with this program; if not, write to the Free Software
20 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22 #ifndef _FG_NASAL_DISPLAY_HXX
23 #define _FG_NASAL_DISPLAY_HXX
29 #include <simgear/structure/subsystem_mgr.hxx>
40 double counter; // count of how many seconds since the message was registered
41 double start_count; // value of counter at which display should start (seconds)
42 double stop_count; // value of counter at which display should stop (seconds)
47 // ASSUMPTION - with two radios the list won't be long so we don't need to map the id's
48 typedef vector<nasalMessage> nasalMessageList;
49 typedef nasalMessageList::iterator nasalMessageListIterator;
51 class FGNasalDisplay : public SGSubsystem
55 bool rep_msg; // Flag to indicate there is a repeating transmission to display
56 bool change_msg_flag; // Flag to indicate that the repeating message has changed
57 double dsp_offset1; // Used to set the correct position of scrolling display
59 string rep_msg_str; // The repeating transmission to play
60 nasalMessageList msgList;
61 nasalMessageListIterator msgList_itr;
73 // Display any registered messages
74 void update(double dt);
76 // Register a single message for display after a delay of delay seconds
77 // Will automatically stop displaying after a suitable interval.
78 void RegisterSingleMessage(const string& msg, double delay = 0.0);
80 // For now we will assume only one repeating message at once
81 // This is not really robust
83 // Register a continuously repeating message
84 void RegisterRepeatingMessage(const string& msg);
86 // Change a repeating message - assume that the message changes after the string has finished for now
87 void ChangeRepeatingMessage(const string& newmsg);
89 // Cancel the current repeating message
90 void CancelRepeatingMessage();
93 #endif // _FG_ATC_DISPLAY_HXX