1010using OpenShock . ShockOSC . Services ;
1111using OpenShock . ShockOSC . Ui . Pages . Dash . Tabs ;
1212using OscQueryLibrary ;
13+
1314// ReSharper disable InconsistentNaming
1415
15- [ assembly: DesktopModule ( typeof ( ShockOSCModule ) , "openshock.shockosc" , "ShockOSC" ) ]
16+ [ assembly: DesktopModule ( typeof ( ShockOSCModule ) , "openshock.shockosc" , "ShockOSC" ) ]
17+
1618namespace OpenShock . ShockOSC ;
1719
1820public sealed class ShockOSCModule : DesktopModuleBase , IAsyncDisposable
@@ -50,16 +52,14 @@ public sealed class ShockOSCModule : DesktopModuleBase, IAsyncDisposable
5052
5153 public override async Task Setup ( )
5254 {
53-
5455 var config = await ModuleInstanceManager . GetModuleConfig < ShockOscConfig > ( ) ;
5556 ModuleServiceProvider = BuildServices ( config ) ;
56-
5757 }
5858
5959 private IServiceProvider BuildServices ( IModuleConfig < ShockOscConfig > config )
6060 {
6161 var loggerFactory = ModuleInstanceManager . AppServiceProvider . GetRequiredService < ILoggerFactory > ( ) ;
62-
62+
6363 var services = new ServiceCollection ( ) ;
6464
6565 services . AddSingleton ( loggerFactory ) ;
@@ -71,45 +71,58 @@ private IServiceProvider BuildServices(IModuleConfig<ShockOscConfig> config)
7171 services . AddSingleton < OscClient > ( ) ;
7272 services . AddSingleton < OscHandler > ( ) ;
7373 services . AddSingleton < ChatboxService > ( ) ;
74-
74+
7575 services . AddSingleton ( _ =>
7676 {
7777 var listenAddress = config . Config . Osc . QuestSupport ? IPAddress . Any : IPAddress . Loopback ;
7878 return new OscQueryServer ( "ShockOSC" , listenAddress ) ;
7979 } ) ;
80-
80+
8181 services . AddSingleton < ShockOsc > ( ) ;
8282 services . AddSingleton < UnderscoreConfig > ( ) ;
83-
84-
83+
84+
8585 return services . BuildServiceProvider ( ) ;
86- }
86+ }
8787
8888 public override async Task Start ( )
8989 {
9090 var config = ModuleServiceProvider . GetRequiredService < IModuleConfig < ShockOscConfig > > ( ) ;
9191
9292 await ModuleServiceProvider . GetRequiredService < ShockOsc > ( ) . Start ( ) ;
93-
93+
9494 if ( config . Config . Osc . OscQuery ) ModuleServiceProvider . GetRequiredService < OscQueryServer > ( ) . Start ( ) ;
95-
95+
9696 var chatboxService = ModuleServiceProvider . GetRequiredService < ChatboxService > ( ) ;
97+ var oscHandler = ModuleServiceProvider . GetRequiredService < OscHandler > ( ) ;
9798
98- _onRemoteControlSubscription = await ModuleInstanceManager . OpenShock . Control . OnRemoteControlledShocker . SubscribeAsync ( async args =>
99- {
100- foreach ( var controlLog in args . Logs )
99+ _onRemoteControlSubscription =
100+ await ModuleInstanceManager . OpenShock . Control . OnRemoteControlledShocker . SubscribeAsync ( async args =>
101101 {
102- await chatboxService . SendRemoteControlMessage ( controlLog . Shocker . Name , args . Sender . Name ,
103- args . Sender . CustomName , controlLog . Intensity , controlLog . Duration , controlLog . Type ) ;
104- }
105- } ) ;
102+ // Dont do anything if there are no logs
103+ if ( args . Logs . Count <= 0 ) return ;
104+
105+ foreach ( var controlLog in args . Logs )
106+ {
107+ await chatboxService . SendRemoteControlMessage ( controlLog . Shocker . Name , args . Sender . Name ,
108+ args . Sender . CustomName , controlLog . Intensity , controlLog . Duration , controlLog . Type ) ;
109+
110+ var now = DateTimeOffset . UtcNow ;
111+
112+ oscHandler . SetLastControlCommand ( new OscHandler . LastControlLogEntry ( )
113+ {
114+ ControlLog = controlLog ,
115+ Timestamp = now ,
116+ } ) ;
117+ }
118+ } ) ;
106119 }
107-
120+
108121 private bool _disposed ;
109122
110123 public async ValueTask DisposeAsync ( )
111124 {
112- if ( _disposed ) return ;
125+ if ( _disposed ) return ;
113126 _disposed = true ;
114127
115128 if ( _onRemoteControlSubscription != null ) await _onRemoteControlSubscription . DisposeAsync ( ) ;
0 commit comments