public void Render() { try { if (_coreSettings.ShowDebugLog) { unsafe { ImGui.PushFont(_graphics.Font.Atlas); } ImGui.SetNextWindowPos(new Vector2(10, 10), ImGuiCond.Appearing); ImGui.SetNextWindowSize(new Vector2(600, 1000), ImGuiCond.Appearing); var openedWindow = _coreSettings.ShowDebugLog.Value; ImGui.Begin("Debug log", ref openedWindow); _coreSettings.ShowDebugLog.Value = openedWindow; foreach (var msg in History) { if (msg == null) { continue; } if (msg.MsgType == MsgType.Debug && !_coreSettings.ShowDebugMessages.Value) { continue; } if (msg.MsgType == MsgType.Error && !_coreSettings.ShowErrorMessages.Value) { continue; } if (msg.MsgType == MsgType.Message && !_coreSettings.ShowInformationMessages.Value) { continue; } ImGui.PushStyleColor(ImGuiCol.Text, msg.ColorV4); ImGui.TextUnformatted($"{msg.Time.ToLongTimeString()}: {msg.Msg}"); ImGui.PopStyleColor(); } ImGui.PopFont(); ImGui.End(); } if (MessagesList.Count == 0) { return; } position = new Vector2(10, 35); for (var index = 0; index < MessagesList.Count; index++) { var message = MessagesList[index]; if (message == null) { continue; } if (message.Time < DateTime.UtcNow) { toDelete.Enqueue(message.Msg); continue; } if (message.MsgType == MsgType.Debug && !_coreSettings.ShowDebugMessages.Value) { continue; } var draw = message.Msg; if (message.Count > 1) { draw = $"({message.Count}){draw}"; } var currentPosition = _graphics.DrawText(draw, position, message.Color); _graphics.DrawImage("menu-background.png", new RectangleF(position.X - 5, position.Y, currentPosition.X + 20, currentPosition.Y)); position = new Vector2(position.X, position.Y + currentPosition.Y); } while (toDelete.Count > 0) { var delete = toDelete.Dequeue(); if (Messages.TryGetValue(delete, out var debugMsgDescription)) { MessagesList.Remove(debugMsgDescription); switch (debugMsgDescription.MsgType) { case MsgType.Message: Core.Logger.Information($"{debugMsgDescription.Msg}"); break; case MsgType.Error: Core.Logger.Error($"{debugMsgDescription.Msg}"); break; case MsgType.Debug: Core.Logger.Verbose($"{debugMsgDescription.Msg}"); break; default: Core.Logger.Verbose($"THIS SHOULD NOT BE LOGGED! {debugMsgDescription.Msg}"); break; } } Messages.Remove(delete); } } catch (Exception e) { LogError(e.ToString()); } }
public void Render() { try { if (settingsCoreSettings.ShowDebugLog) { unsafe { ImGui.PushFont(graphics.Font.Atlas); } ImGui.SetNextWindowPos(new Vector2(10, 10), ImGuiCond.Appearing); ImGui.SetNextWindowSize(new Vector2(600, 1000), ImGuiCond.Appearing); var openedWindow = settingsCoreSettings.ShowDebugLog.Value; ImGui.Begin("Debug log", ref openedWindow); settingsCoreSettings.ShowDebugLog.Value = openedWindow; foreach (var msg in History) { if (msg == null) { continue; } ImGui.PushStyleColor(ImGuiCol.Text, msg.ColorV4); ImGui.TextUnformatted($"{msg.Time.ToLongTimeString()}: {msg.Msg}"); ImGui.PopStyleColor(); } ImGui.PopFont(); ImGui.End(); } if (MessagesList.Count == 0) { return; } position = new Vector2(10, 35); for (var index = 0; index < MessagesList.Count; index++) { var message = MessagesList[index]; if (message == null) { continue; } if (message.Time < DateTime.UtcNow) { toDelete.Enqueue(message.Msg); continue; } var draw = message.Msg; if (message.Count > 1) { draw = $"({message.Count}){draw}"; } var currentPosition = graphics.DrawText(draw, position, message.Color); graphics.DrawImage("menu-background.png", new RectangleF(position.X - 5, position.Y, currentPosition.X + 20, currentPosition.Y)); position = new Vector2(position.X, position.Y + currentPosition.Y); } while (toDelete.Count > 0) { var delete = toDelete.Dequeue(); if (Messages.TryGetValue(delete, out var debugMsgDescription)) { MessagesList.Remove(debugMsgDescription); LogHistory.Enqueue(debugMsgDescription); History.PushBack(debugMsgDescription); if (debugMsgDescription.Color == Color.Red) { Core.Logger.Error($"{debugMsgDescription.Msg}"); } else { Core.Logger.Information($"{debugMsgDescription.Msg}"); } } Messages.Remove(delete); if (LogHistory.Count >= 1024) { for (var i = 0; i < 24; i++) { LogHistory.Dequeue(); } } } } catch (Exception e) { LogError(e.ToString()); } }