-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDebugLogger.cs
More file actions
124 lines (109 loc) · 3.23 KB
/
DebugLogger.cs
File metadata and controls
124 lines (109 loc) · 3.23 KB
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
using MelonLoader;
namespace BlippoAccess
{
/// <summary>
/// Central debug logger for accessibility mod diagnostics.
/// </summary>
public static class DebugLogger
{
/// <summary>
/// Logs a categorized message when debug mode is enabled.
/// </summary>
/// <param name="category">Log category tag.</param>
/// <param name="message">Message text.</param>
public static void Log(LogCategory category, string message)
{
if (!Main.DebugMode)
{
return;
}
MelonLogger.Msg($"{GetPrefix(category)} {message}");
}
/// <summary>
/// Logs a key input event when debug mode is enabled.
/// </summary>
/// <param name="keyName">Pressed key name.</param>
/// <param name="action">Optional mapped action name.</param>
public static void LogInput(string keyName, string action = null)
{
if (!Main.DebugMode)
{
return;
}
if (string.IsNullOrWhiteSpace(action))
{
MelonLogger.Msg($"[INPUT] {keyName}");
return;
}
MelonLogger.Msg($"[INPUT] {keyName} -> {action}");
}
/// <summary>
/// Logs a state transition when debug mode is enabled.
/// </summary>
/// <param name="description">State transition description.</param>
public static void LogState(string description)
{
if (!Main.DebugMode)
{
return;
}
MelonLogger.Msg($"[STATE] {description}");
}
/// <summary>
/// Logs outgoing screen reader speech when debug mode is enabled.
/// </summary>
/// <param name="text">Speech text.</param>
public static void LogScreenReader(string text)
{
if (!Main.DebugMode)
{
return;
}
MelonLogger.Msg($"[SR] {text}");
}
private static string GetPrefix(LogCategory category)
{
switch (category)
{
case LogCategory.ScreenReader:
return "[SR]";
case LogCategory.Input:
return "[INPUT]";
case LogCategory.State:
return "[STATE]";
case LogCategory.Handler:
return "[HANDLER]";
case LogCategory.Game:
return "[GAME]";
default:
return "[DEBUG]";
}
}
}
/// <summary>
/// Debug log categories.
/// </summary>
public enum LogCategory
{
/// <summary>
/// Screen reader speech messages.
/// </summary>
ScreenReader,
/// <summary>
/// Input-related messages.
/// </summary>
Input,
/// <summary>
/// State transition messages.
/// </summary>
State,
/// <summary>
/// Handler execution messages.
/// </summary>
Handler,
/// <summary>
/// Raw game-value messages.
/// </summary>
Game
}
}