@@ -139,8 +139,7 @@ public override void PrepareFrame(ElapsedTime elapsedTime, bool updateFull)
139139 }
140140
141141 foreach ( var message in Messages )
142- if ( message . LabelShadow != null && message . LabelText != null ) // It seems LabelShadow and LabelText aren't guaranteed to be initialized, causing rare crashes
143- message . LabelShadow . Color . A = message . LabelText . Color . A = ( byte ) MathHelper . Lerp ( 255 , 0 , MathHelper . Clamp ( ( float ) ( ( Owner . Viewer . RealTime - message . EndTime ) / FadeTime ) , 0 , 1 ) ) ;
142+ message . LabelShadow . Color . A = message . LabelText . Color . A = ( byte ) MathHelper . Lerp ( 255 , 0 , MathHelper . Clamp ( ( float ) ( ( Owner . Viewer . Simulator . GameTime - message . EndTime ) / FadeTime ) , 0 , 1 ) ) ;
144143 }
145144
146145 class Message
@@ -185,7 +184,7 @@ public void AddMessage(string text, double duration)
185184 public void AddMessage ( string key , string text , double duration )
186185 {
187186 var clockTime = Owner . Viewer . Simulator . ClockTime ;
188- var realTime = Owner . Viewer . RealTime ;
187+ var gameTime = Owner . Viewer . Simulator . GameTime ;
189188 while ( true )
190189 {
191190 // Store the original list and make a clone for replacing it thread-safely.
@@ -197,18 +196,18 @@ public void AddMessage(string key, string text, double duration)
197196
198197 // Clean out any existing duplicate key and expired messages.
199198 newMessages = ( from m in newMessages
200- where ( String . IsNullOrEmpty ( key ) || m . Key != key ) && m . EndTime + FadeTime > realTime
199+ where ( String . IsNullOrEmpty ( key ) || m . Key != key ) && m . EndTime + FadeTime > Owner . Viewer . Simulator . GameTime
201200 select m ) . ToList ( ) ;
202201
203202 // Add the new message.
204- newMessages . Add ( new Message ( key , String . Format ( "{0} {1}" , FormatStrings . FormatTime ( clockTime ) , text ) , existingMessage != null ? existingMessage . StartTime : realTime , realTime + duration ) ) ;
203+ newMessages . Add ( new Message ( key , String . Format ( "{0} {1}" , FormatStrings . FormatTime ( clockTime ) , text ) , existingMessage != null ? existingMessage . StartTime : gameTime , gameTime + duration ) ) ;
205204
206205 // Sort the messages.
207206 newMessages = ( from m in newMessages
208207 orderby m . StartTime descending
209208 select m ) . ToList ( ) ;
210209
211- // Thread-safely switch from the old list to the new list; we've only succeeded if the previous (return) value is the old list.
210+ // Thread-safely switch from the old list to the new list; we've only suceeded if the previous (return) value is the old list.
212211 if ( Interlocked . CompareExchange ( ref Messages , newMessages , oldMessages ) == oldMessages )
213212 break ;
214213 }
0 commit comments