66
77namespace 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}
0 commit comments