private void TickMessage(object sender, ElapsedEventArgs elapsedEventArgs)
{
lock (this)
{
if (chatTimer2.Enabled == false) return;
chatTimer2.Enabled = false;
}
try
{
var newMessages = Program.GameMess.Messages.OrderBy(x => x.Id).Where(x => x.Id > lastId).ToArray();
if (newMessages.Length == 0)
{
return;
}
lastId = newMessages.Last().Id;
var gotone = false;
Dispatcher.Invoke(new Action(() =>
{
foreach (var m in newMessages)
{
if (m is NotifyBarMessage)
{
continue;
}
if (m is WarningMessage)
{
if (this.HideErrors)
continue;
}
if (m is DebugMessage)
{
if (Program.DeveloperMode == false || this.HideDebug)
continue;
}
if (NewMessage != null)
NewMessage(m);
var b = GameMessageToBlock(m);
if (b != null)
{
gotone = true;
this.output.Document.Blocks.Add(b);
}
}
if (gotone && AutoScroll)
{
X.Instance.Try(this.output.ScrollToEnd);
}
}));
}
finally
{
try
{
chatTimer2.Enabled = true;
}
catch
{
}
}
}