33using System . Reactive . Subjects ;
44using LucHeart . CoreOSC ;
55using Microsoft . Extensions . Logging ;
6+ using MudBlazor . Extensions ;
67using OpenShock . Desktop . ModuleBase . Api ;
78using OpenShock . Desktop . ModuleBase . Config ;
89using OpenShock . Desktop . ModuleBase . Models ;
10+ using OpenShock . MinimalEvents ;
911using OpenShock . ShockOSC . Config ;
1012using OpenShock . ShockOSC . Models ;
1113using OpenShock . ShockOSC . Utils ;
@@ -33,8 +35,8 @@ public sealed class ShockOsc
3335 private bool _isAfk ;
3436 public string AvatarId = string . Empty ;
3537 private readonly Random Random = new ( ) ;
36-
37- public event Func < Task > ? OnGroupsChanged ;
38+
39+ private readonly MinimalEvent _onGroupsChanged = new ( ) ;
3840
3941 public static readonly string [ ] ShockerParams =
4042 {
@@ -81,14 +83,10 @@ public ShockOsc(ILogger<ShockOsc> logger,
8183 _chatboxService = chatboxService ;
8284 _medalIcymiService = medalIcymiService ;
8385
84- OnGroupsChanged += ( ) =>
85- {
86- SetupGroups ( ) ;
87- return Task . CompletedTask ;
88- } ;
86+ _onGroupsChanged . Subscribe ( SetupGroups ) ;
8987
90- oscQueryServer . FoundVrcClient += FoundVrcClient ;
91- oscQueryServer . ParameterUpdate += OnAvatarChange ;
88+ oscQueryServer . FoundVrcClient . SubscribeAsync ( endPoint => SetupVrcClient ( ( oscQueryServer , endPoint ) ) ) . AsTask ( ) . Wait ( ) ;
89+ oscQueryServer . ParameterUpdate . SubscribeAsync ( OnAvatarChange ) . AsTask ( ) . Wait ( ) ;
9290
9391 SetupGroups ( ) ;
9492 }
@@ -109,19 +107,13 @@ private void SetupGroups()
109107 _dataLayer . ProgramGroups [ id ] = new ProgramGroup ( id , group . Name , _oscClient , group ) ;
110108 }
111109
112- public Task RaiseOnGroupsChanged ( ) => OnGroupsChanged . Raise ( ) ;
113-
110+ public void RaiseOnGroupsChanged ( ) => _onGroupsChanged . Invoke ( ) ;
114111
115- private Task FoundVrcClient ( OscQueryServer arg1 , IPEndPoint arg2 )
116- {
117- return SetupVrcClient ( ( arg1 , arg2 ) ) ;
118- }
119-
120112 private async Task SetupVrcClient ( ( OscQueryServer , IPEndPoint ) ? client )
121113 {
122114 // stop tasks
123115 _oscServerActive = false ;
124- await Task . Delay ( 1000 ) ; // wait for tasks to stop
116+ await Task . Delay ( 1000 ) ; // wait for tasks to stop TODO: REWORK THIS
125117
126118 if ( client != null )
127119 {
@@ -149,9 +141,10 @@ private async Task SetupVrcClient((OscQueryServer, IPEndPoint)? client)
149141 await _chatboxService . SendGenericMessage ( "Game Connected" ) ;
150142 }
151143
152- private Task OnAvatarChange ( Dictionary < string , object ? > parameters , string avatarId )
144+ private Task OnAvatarChange ( OscQueryServer . ParameterUpdateArgs parameterUpdateArgs )
153145 {
154- AvatarId = avatarId ;
146+ AvatarId = parameterUpdateArgs . AvatarId ;
147+ var parameters = parameterUpdateArgs . Parameters ;
155148 try
156149 {
157150 foreach ( var obj in _dataLayer . ProgramGroups )
@@ -252,7 +245,7 @@ private async Task ReceiveLogic()
252245 case "/avatar/change" :
253246 var avatarId = received . Arguments . ElementAtOrDefault ( 0 ) ;
254247 _logger . LogDebug ( "Avatar changed: {AvatarId}" , avatarId ) ;
255- OsTask . Run ( _oscQueryServer . GetParameters ) ;
248+ OsTask . Run ( _oscQueryServer . RefreshParameters ) ;
256249 OsTask . Run ( _underscoreConfig . SendUpdateForAll ) ;
257250 return ;
258251 case "/avatar/parameters/AFK" :
0 commit comments