-
Notifications
You must be signed in to change notification settings - Fork 0
/
Console.cs
87 lines (81 loc) · 3.13 KB
/
Console.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
using System;
using System.Numerics;
using System.Collections.Generic;
using Raylib_cs;
using ImGuiNET;
namespace MasterSpark
{
static class Console
{
public static bool IsWindowClosed = false;
private static List<(float Time, string Source, string LogType, string Content)> LogContents =
new List<(float Time, string Source, string LogType, string Content)>();
public static void RaylibLog(TraceLogType logType, string text, IntPtr args)
{
if (!IsWindowClosed)
{
string logMessage = RaylibInterop.GetLogMessage(RaylibInterop.ToUtf8(text), args);
float time = (float)Raylib.GetTime();
LogContents.Add(
(time, "Raylib", logType.ToString(), logMessage)
);
}
}
public static void Log(string logType, string logMessage)
{
if (!IsWindowClosed)
{
float time = (float)Raylib.GetTime();
LogContents.Add(
(time, "Game", logType, logMessage)
);
}
}
private static bool AutoScroll = true;
public static void SubmitUI()
{
Vector4 textColour;
ImGui.Checkbox("AutoScroll", ref AutoScroll);
ImGui.Separator();
ImGui.BeginChild("scrolling", new Vector2(0, 0), false, ImGuiWindowFlags.HorizontalScrollbar);
for (int i = 0; i < LogContents.Count; i++)
{
switch (LogContents[i].LogType)
{
case "LOG_INFO":
{
textColour = Raylib.ColorNormalize(Color.BLUE);
break;
}
case "LOG_WARNING":
{
textColour = Raylib.ColorNormalize(Color.YELLOW);
break;
}
default:
{
textColour = new Vector4(1f, 1f, 1f, 1f);
break;
}
}
ImGui.Columns(4);
ImGui.SetColumnWidth(0, 100f);
ImGui.SetColumnWidth(1, 100f);
ImGui.SetColumnWidth(2, 100f);
ImGui.Text($"{LogContents[i].Time:0000.0000}");
ImGui.NextColumn();
ImGui.Text(LogContents[i].Source);
ImGui.NextColumn();
ImGui.TextColored(textColour, LogContents[i].LogType);
ImGui.NextColumn();
ImGui.TextColored(textColour, LogContents[i].Content);
ImGui.Columns(1);
}
if (AutoScroll && ImGui.GetScrollY() <= ImGui.GetScrollMaxY())
{
ImGui.SetScrollHereY(1f);
}
ImGui.EndChild();
}
}
}