Example #1
0
        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());
            }
        }
Example #2
0
        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());
            }
        }