From 3364b6f19d5ee39a8e0c45ccb4dea3c30061f04e Mon Sep 17 00:00:00 2001 From: daveluff Date: Thu, 20 Mar 2003 11:22:08 +0000 Subject: [PATCH] Base length of time messages are displayed for on dt rather than iterations in order to de-couple it from frame rate --- src/ATC/ATCdisplay.cxx | 16 ++++++++-------- src/ATC/ATCdisplay.hxx | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/ATC/ATCdisplay.cxx b/src/ATC/ATCdisplay.cxx index de77e9b89..85bb9245e 100644 --- a/src/ATC/ATCdisplay.cxx +++ b/src/ATC/ATCdisplay.cxx @@ -145,14 +145,14 @@ void FGATCDisplay::update(double dt) { guiFnt.drawString( m.msg.c_str(), int(iwidth - 10 - m.dsp_offset), (iheight - 40) ); - ++m.counter; + m.counter += dt; m.dsp_offset += (80.0/fps); msgList[i] = m; ++msgList_itr; ++i; } else { //cout << "Not yet started single message\n"; - ++m.counter; + m.counter += dt; msgList[i] = m; ++msgList_itr; ++i; @@ -172,12 +172,12 @@ void FGATCDisplay::update(double dt) { (iwidth - (m.msg.size() * 8))/2, //iwidth/2, (iheight - 40) ); // TODO - relate the distance in that the string is rendered to the string length. - ++m.counter; + m.counter += dt; msgList[i] = m; ++msgList_itr; ++i; } else { - ++m.counter; + m.counter += dt; msgList[i] = m; ++msgList_itr; ++i; @@ -194,13 +194,13 @@ void FGATCDisplay::update(double dt) { } } -void FGATCDisplay::RegisterSingleMessage(string msg, int delay) { +void FGATCDisplay::RegisterSingleMessage(string msg, double delay) { atcMessage m; m.msg = msg; m.repeating = false; - m.counter = 0; - m.start_count = delay * 30; // Fixme - need to use actual FPS - m.stop_count = m.start_count + 400; // Display for 3 - 5 seconds for now - this might have to change eg. be related to length of message in future + m.counter = 0.0; + m.start_count = delay; + m.stop_count = m.start_count + 5.0; // Display for 5ish seconds for now - this might have to change eg. be related to length of message in future //cout << "m.stop_count = " << m.stop_count << '\n'; m.id = 0; m.dsp_offset = 0.0; diff --git a/src/ATC/ATCdisplay.hxx b/src/ATC/ATCdisplay.hxx index d3c9e1fca..ba50fd6c5 100644 --- a/src/ATC/ATCdisplay.hxx +++ b/src/ATC/ATCdisplay.hxx @@ -38,9 +38,9 @@ SG_USING_STD(string); struct atcMessage { string msg; bool repeating; - int counter; // count of how many iterations since posting - int start_count; // value of counter at which display should start - int stop_count; // value of counter at which display should stop + double counter; // count of how many seconds since the message was registered + double start_count; // value of counter at which display should start (seconds) + double stop_count; // value of counter at which display should stop (seconds) int id; double dsp_offset; }; @@ -76,7 +76,7 @@ public: // Register a single message for display after a delay of delay seconds // Will automatically stop displaying after a suitable interval. - void RegisterSingleMessage(string msg, int delay); // OK - I know passing a string in and out is probably not good but it will have to do for now. + 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. // For now we will assume only one repeating message at once // This is not really robust