Skip to content

Commit 383eeb3

Browse files
authored
Merge pull request #7 from Falki-git/1.3.0
1.3.0
2 parents 494c7c9 + f4884e9 commit 383eeb3

23 files changed

+347
-116
lines changed

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ This is a mod that helps modders mod.
77
- **Yellow event** - event that was recently triggered (< 20 sec)
88
- **Gray event** - event that hasn't triggered for a while (< 60 sec)
99

10-
![screenshot](https://i.imgur.com/Cb1D1P7.png)
10+
![screenshot](https://i.imgur.com/oCfA2zs.png)
1111

1212
## Installation
1313
Extract the contents of the .zip into your KSP2 installation folder.
@@ -34,5 +34,8 @@ private void YourMethodThatWillHandleTheEvent(MessageCenterMessage obj)
3434

3535
## Other features
3636
- pin events to the top
37+
- ignore events you're not interested in
38+
- log each triggering of an event to the KSP log
39+
- get a list of all events that KSP2 can trigger
3740
- customize timings of colors and purges
3841
- export list to a JSON file inside mod folder

ShowKSP2Events.sln

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ Global
1111
Release|Any CPU = Release|Any CPU
1212
EndGlobalSection
1313
GlobalSection(ProjectConfigurationPlatforms) = postSolution
14-
{41FA02E6-F455-4B46-B838-3F5BC5A888E3}.Debug|Any CPU.ActiveCfg = Release|Any CPU
15-
{41FA02E6-F455-4B46-B838-3F5BC5A888E3}.Debug|Any CPU.Build.0 = Release|Any CPU
14+
{41FA02E6-F455-4B46-B838-3F5BC5A888E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15+
{41FA02E6-F455-4B46-B838-3F5BC5A888E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
1616
{41FA02E6-F455-4B46-B838-3F5BC5A888E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
1717
{41FA02E6-F455-4B46-B838-3F5BC5A888E3}.Release|Any CPU.Build.0 = Release|Any CPU
1818
EndGlobalSection
4.57 KB
Loading
4.56 KB
Loading

ShowKSP2Events/swinfo.json

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,23 @@
11
{
2-
"mod_id": "ShowKSP2Events",
3-
"author": "Falki",
4-
"name": "ShowKSP2Events",
5-
"description": "Shows KSP2 events being triggered",
6-
"source": "https://github.com/Falki-git/ShowKSP2Events",
7-
"version": "1.2.0",
8-
"version_check": "https://raw.githubusercontent.com/Falki-git/ShowKSP2Events/master/ShowKSP2Events/swinfo.json",
9-
"dependencies": [
10-
{
11-
"id": "SpaceWarp",
12-
"version": {
13-
"min": "1.0.1",
14-
"max": "*"
15-
}
16-
}
17-
],
18-
"ksp2_version": {
19-
"min": "0.1.0",
20-
"max": "*"
21-
}
2+
"spec": "1.3",
3+
"mod_id": "com.github.falki.showksp2events",
4+
"author": "Falki",
5+
"name": "ShowKSP2Events",
6+
"description": "Shows KSP2 events being triggered",
7+
"source": "https://github.com/Falki-git/ShowKSP2Events",
8+
"version": "1.3.0",
9+
"version_check": "https://raw.githubusercontent.com/Falki-git/ShowKSP2Events/master/ShowKSP2Events/swinfo.json",
10+
"dependencies": [
11+
{
12+
"id": "com.github.x606.spacewarp",
13+
"version": {
14+
"min": "1.0.1",
15+
"max": "*"
16+
}
17+
}
18+
],
19+
"ksp2_version": {
20+
"min": "0.1.0",
21+
"max": "*"
22+
}
2223
}

ShowKSP2EventsProject/ExportMessages.cs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,31 +5,30 @@
55
namespace ShowKSP2Events
66
{
77
[JsonObject(MemberSerialization.OptIn)]
8-
internal class ExportMessages
8+
public class ExportMessages
99
{
1010
[JsonProperty]
11-
internal string DateTimeCreated;
11+
public string DateTimeCreated;
1212
[JsonProperty]
13-
internal List<MessageInfo> Messages;
13+
public List<MessageInfo> Messages;
1414

1515
private static ManualLogSource _logger = BepInEx.Logging.Logger.CreateLogSource("ShowKSP2Events.ExportMessages");
1616
private static int _fileNumber = 0;
1717
private static string _path => Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), $"ShowKSP2Events_export({_fileNumber}).json");
1818

19-
internal ExportMessages(List<MessageInfo> messages)
19+
public ExportMessages(List<MessageInfo> messages)
2020
{
2121
Messages = messages;
2222
DateTimeCreated = DateTime.Now.ToString();
2323
}
2424

25-
internal void Export()
25+
public void Export()
2626
{
2727
try
2828
{
2929
while (File.Exists(_path))
3030
_fileNumber++;
3131

32-
var data = new SettingsData();
3332
File.WriteAllText(_path, JsonConvert.SerializeObject(this));
3433
_logger.LogInfo("Export successful.");
3534
}
@@ -38,5 +37,13 @@ internal void Export()
3837
_logger.LogError("Error trying to export data. Error description: " + ex);
3938
}
4039
}
40+
41+
public void WriteAllToLog()
42+
{
43+
_logger.LogInfo($"Writing all {Messages.Count} messages to log...");
44+
45+
foreach (var message in Messages)
46+
_logger.LogInfo($"{message.TypeName}");
47+
}
4148
}
4249
}

ShowKSP2EventsProject/MessageInfo.cs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,21 @@
33

44
namespace ShowKSP2Events
55
{
6-
internal class MessageInfo
6+
public class MessageInfo
77
{
8-
internal Type Type;
8+
public Type Type;
99
[JsonProperty]
10-
internal string TypeName => Type.Name;
10+
public string TypeName => Type.Name;
1111
[JsonProperty]
12-
internal int Hits;
13-
internal double TimeOfLastHit;
12+
public int Hits;
13+
public double TimeOfLastHit;
1414
[JsonProperty]
15-
internal string DateTimeOfLastHit;
16-
internal bool IsSticky;
17-
internal bool IsPermaSticky;
18-
internal bool IsStale;
19-
internal bool JustHit => Time.time - TimeOfLastHit < Settings.JustHit;
15+
public string DateTimeOfLastHit;
16+
public bool IsIgnored;
17+
public bool IsLogging;
18+
public bool IsSticky;
19+
public bool IsPermaSticky;
20+
public bool IsStale;
21+
public bool JustHit => Time.time - TimeOfLastHit < Settings.JustHit;
2022
}
2123
}

ShowKSP2EventsProject/MessageListener.cs

Lines changed: 65 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,25 @@
66

77
namespace ShowKSP2Events
88
{
9-
internal class MessageListener
10-
{
11-
private ManualLogSource Logger = BepInEx.Logging.Logger.CreateLogSource("ShowKSP2Events.MessageListener");
9+
public class MessageListener
10+
{
11+
private ManualLogSource _logger = BepInEx.Logging.Logger.CreateLogSource("ShowKSP2Events.MessageListener");
12+
private static MessageListener _instance;
1213

13-
internal List<MessageInfo> Messages = new();
14+
public List<MessageInfo> Messages = new();
15+
16+
public MessageListener ()
17+
{ }
18+
19+
public static MessageListener Instance
20+
{
21+
get
22+
{
23+
if (_instance == null)
24+
_instance = new MessageListener();
25+
return _instance;
26+
}
27+
}
1428

1529
internal void InitializeSubscriptions()
1630
{
@@ -41,11 +55,11 @@ internal void InitializeSubscriptions()
4155
}
4256
catch (Exception ex)
4357
{
44-
Logger.LogError(ex);
58+
_logger.LogError(ex);
4559
}
4660
}
4761

48-
Logger.LogInfo($"Subscriptions initialized. No. of subscriptions: {Messages.Count}");
62+
_logger.LogInfo($"Subscriptions initialized. No. of subscriptions: {Messages.Count}");
4963
}
5064

5165
private void AddSubscription(Type messageType)
@@ -62,6 +76,9 @@ private void MessageReceived(MessageCenterMessage messageReceived)
6276
messageInfo.IsSticky = true;
6377
messageInfo.IsStale = false;
6478

79+
if (messageInfo.IsLogging)
80+
_logger.LogInfo($"Message {messageInfo.TypeName} triggered at {messageInfo.DateTimeOfLastHit}. Hit number: {messageInfo.Hits}.");
81+
6582
if (!messageInfo.IsPermaSticky && !messageInfo.IsSticky)
6683
MoveToBelowLastSticky(messageInfo);
6784
}
@@ -73,14 +90,14 @@ private void MoveToBelowLastSticky(MessageInfo message)
7390
Messages.Insert(lastStickyIndex == -1 ? 0 : lastStickyIndex + 1, message);
7491
}
7592

76-
private void MoveToBelowLastPermaSticky(MessageInfo message)
93+
internal void MoveToBelowLastPermaSticky(MessageInfo message)
7794
{
7895
Messages.Remove(message);
7996
int lastPermaStickyIndex = Messages.FindLastIndex(m => m.IsPermaSticky);
8097
Messages.Insert(lastPermaStickyIndex == -1 ? 0 : lastPermaStickyIndex + 1, message);
8198
}
8299

83-
internal void UnSticky(MessageInfo message)
100+
public void UnSticky(MessageInfo message)
84101
{
85102
var messageInfo = Messages.Find(m => m.Type == message.Type);
86103
messageInfo.IsSticky = false;
@@ -111,29 +128,59 @@ internal void CheckStales()
111128
}
112129
}
113130

114-
internal void OnPermaStickyClicked(Type messageType)
131+
public void OnExportClicked()
115132
{
116-
var message = Messages.Find(m => m.Type == messageType);
117-
message.IsPermaSticky = !message.IsPermaSticky;
118-
MoveToBelowLastPermaSticky(message);
133+
var x = new ExportMessages(Messages.FindAll(m => m.Hits > 0));
134+
x.Export();
135+
}
136+
137+
public void OnWriteAllToLogClicked()
138+
{
139+
var x = new ExportMessages(Messages);
140+
x.WriteAllToLog();
119141
}
120142

121-
internal void OnClearClicked()
143+
public void OnClearClicked()
122144
{
123145
foreach (var message in Messages)
124146
{
125147
message.Hits = 0;
126148
message.TimeOfLastHit = 0;
127-
message.IsPermaSticky = false;
128149
message.IsSticky = false;
129150
message.IsStale = true;
130151
}
152+
153+
_logger.LogInfo($"Cleared all messages.");
131154
}
132155

133-
internal void OnExportClicked()
156+
public void OnPermaStickyClicked(Type messageType)
134157
{
135-
var x = new ExportMessages(Messages.FindAll(m => m.Hits > 0));
136-
x.Export();
158+
var message = Messages.Find(m => m.Type == messageType);
159+
message.IsPermaSticky = !message.IsPermaSticky;
160+
MoveToBelowLastPermaSticky(message);
161+
Settings.Save();
162+
_logger.LogInfo($"Toggled pinning for {message.TypeName}.");
163+
}
164+
165+
public void OnIgnoredClicked(MessageInfo message)
166+
{
167+
message.IsIgnored = true;
168+
_logger.LogInfo($"Message {message.TypeName} ignored.");
169+
Settings.Save();
170+
}
171+
172+
public void OnLoggingClicked(MessageInfo message)
173+
{
174+
message.IsLogging = !message.IsLogging;
175+
_logger.LogInfo($"Toggled logging for {message.TypeName}.");
176+
Settings.Save();
177+
}
178+
179+
public void OnUnignoreMessageClicked(MessageInfo message)
180+
{
181+
message.IsIgnored = false;
182+
_logger.LogInfo($"Message {message.TypeName} returned to active messages.");
183+
Settings.Save();
137184
}
138-
}
185+
}
139186
}

ShowKSP2EventsProject/Settings.cs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,25 @@ public static void Load()
3838
Settings.DurationTillPruned = data.DurationTillPruned;
3939
Settings.JustHit = data.JustHit;
4040

41+
// Load data for messages that have been modified (ignored, logging or stickied)
42+
if (data.SavedMessages.Count() > 0)
43+
{
44+
var savedMessages = MessageListener.Instance.Messages
45+
.FindAll(m => data.SavedMessages.Select(s => s.TypeName).Contains(m.TypeName));
46+
47+
foreach (var message in savedMessages)
48+
{
49+
var savedData = data.SavedMessages.Find(s => s.TypeName == message.TypeName);
50+
message.IsIgnored = savedData.IsIgnored;
51+
message.IsLogging = savedData.IsLogging;
52+
if(savedData.IsPermaSticky)
53+
{
54+
message.IsPermaSticky = true;
55+
MessageListener.Instance.MoveToBelowLastPermaSticky(message);
56+
}
57+
}
58+
}
59+
4160
_logger.LogInfo("Settings loaded successfully.");
4261
}
4362
catch (FileNotFoundException ex)
@@ -61,12 +80,42 @@ internal class SettingsData
6180
internal float DurationTillPruned;
6281
[JsonProperty]
6382
internal float JustHit;
83+
[JsonProperty]
84+
internal List<SettingsMessageData> SavedMessages;
6485

6586
internal SettingsData()
6687
{
6788
StickyDuration = Settings.StickyDuration;
6889
DurationTillPruned = Settings.DurationTillPruned;
6990
JustHit = Settings.JustHit;
91+
92+
var savedMessages = MessageListener.Instance.Messages
93+
.Where(m => m.IsIgnored || m.IsLogging || m.IsPermaSticky);
94+
95+
if (savedMessages.Count() > 0)
96+
{
97+
SavedMessages = new();
98+
99+
foreach (var m in savedMessages)
100+
SavedMessages.Add(new() {
101+
TypeName = m.TypeName,
102+
IsIgnored = m.IsIgnored,
103+
IsLogging = m.IsLogging,
104+
IsPermaSticky = m.IsPermaSticky
105+
});
106+
}
70107
}
71108
}
109+
110+
internal class SettingsMessageData
111+
{
112+
[JsonProperty]
113+
internal string TypeName;
114+
[JsonProperty]
115+
internal bool IsIgnored;
116+
[JsonProperty]
117+
internal bool IsLogging;
118+
[JsonProperty]
119+
internal bool IsPermaSticky;
120+
}
72121
}

0 commit comments

Comments
 (0)