private async void ScanButton_Click(object aSender, RoutedEventArgs aEvent) { // Disable button until we're done here ScanButton.Click -= ScanButton_Click; if ((string)ScanButton.Content == "Start Scanning") { StartScanning?.Invoke(this, new EventArgs()); if (_bpServer != null) { await _bpServer.SendMessage(new StartScanning()); } ScanButton.Content = "Stop Scanning"; } else { StopScanning?.Invoke(this, new EventArgs()); if (_bpServer != null) { await _bpServer?.SendMessage(new StopScanning()); } ScanButton.Content = "Start Scanning"; } ScanButton.Click += ScanButton_Click; }
internal static Task <ServerMessage> SendStartScanning(ButtplugFFIMessageSorter aSorter, ButtplugFFIClientHandle aHandle) { var builder = new FlatBufferBuilder(1024); StartScanning.StartStartScanning(builder); var msg = StartScanning.EndStartScanning(builder); return(SendClientMessage(aSorter, aHandle, builder, ClientMessageType.StartScanning, msg.Value)); }
public StartScanning ProcessSection(int Start, int Scanning, string SerialiseData) { bool ProcessSection = true; int InitialStart = Start; Scanning = GoToIndexOfCharacter(SerialiseData, '@', Start); uint NetID = uint.Parse(SerialiseData.Substring(Start, Scanning - Start)); if (NetworkIdentity.spawned.ContainsKey(NetID) == false || NetworkIdentity.spawned[NetID] == null) { ProcessSection = false; } Start = Scanning + 1; Scanning = GoToIndexOfCharacter(SerialiseData, '{', Scanning); string Name = SerialiseData.Substring(Start, Scanning - Start); if (ProcessSection == false || NetworkIdentity.spawned.ContainsKey(NetID) == false || SpriteHandlerManager.Instance.PresentSprites.ContainsKey(NetworkIdentity.spawned[NetID]) == false || SpriteHandlerManager.Instance.PresentSprites[NetworkIdentity.spawned[NetID]].ContainsKey(Name) == false) { ProcessSection = false; } SpriteHandler SP = null; if (ProcessSection) { SP = SpriteHandlerManager.Instance.PresentSprites[NetworkIdentity.spawned[NetID]][Name]; } Scanning++; if (SerialiseData.Length > Scanning && SerialiseData[Scanning] == '>') { Scanning += 1; Start = Scanning; Scanning = GotoIndexOfNextControlCharacter(SerialiseData, Scanning); if (ProcessSection) { int SpriteID = int.Parse(SerialiseData.Substring(Start, Scanning - Start)); SP.SetSpriteSO(SpriteCatalogue.Instance.Catalogue[SpriteID], Network: false); } } if (SerialiseData.Length > Scanning && SerialiseData[Scanning] == '<') { Scanning += 1; Start = Scanning; Scanning = GotoIndexOfNextControlCharacter(SerialiseData, Scanning); if (ProcessSection) { SP.ChangeSpriteVariant(int.Parse(SerialiseData.Substring(Start, Scanning - Start)), NetWork: false); } } if (SerialiseData.Length > Scanning && SerialiseData[Scanning] == '&') { Scanning += 1; Start = Scanning; Scanning = GotoIndexOfNextControlCharacter(SerialiseData, Scanning); if (ProcessSection) { SP.ChangeSprite(int.Parse(SerialiseData.Substring(Start, Scanning - Start)), false); } } if (SerialiseData.Length > Scanning && SerialiseData[Scanning] == '#') { Scanning += 1; Start = Scanning; Scanning = GotoIndexOfNextControlCharacter(SerialiseData, Scanning); if (ProcessSection) { SP.AnimateOnce(int.Parse(SerialiseData.Substring(Start, Scanning - Start)), false); } } if (SerialiseData.Length > Scanning && SerialiseData[Scanning] == ',') { Scanning++; if (ProcessSection) { SP.PushTexture(false); } } if (SerialiseData.Length > Scanning && SerialiseData[Scanning] == '?') { Scanning++; if (ProcessSection) { SP.Empty(false); } } if (SerialiseData.Length > Scanning && SerialiseData[Scanning] == '~') { Scanning++; if (ProcessSection) { SP.PushClear(false); } } if (SerialiseData.Length > Scanning && SerialiseData[Scanning] == '^') { Scanning++; if (ProcessSection) { SP.ClearPallet(false); } } if (SerialiseData.Length > Scanning && SerialiseData[Scanning] == '`') { Color TheColour = Color.white; TheColour.r = ((int)SerialiseData[Scanning + 1] / 255f); TheColour.g = ((int)SerialiseData[Scanning + 2] / 255f); TheColour.b = ((int)SerialiseData[Scanning + 3] / 255f); TheColour.a = ((int)SerialiseData[Scanning + 4] / 255f); Scanning = Scanning + 4; if (ProcessSection) { SP.SetColor(TheColour, false); } Scanning++; } if (SerialiseData.Length > Scanning && SerialiseData[Scanning] == '%') { Scanning = Scanning + 1; int paletteCount = SerialiseData[Scanning]; List <Color> Colours = new List <Color>(); for (int i = 0; i < paletteCount; i++) { Colours.Add(GetColourFromStringIndex(SerialiseData, Scanning + (i * 4))); } Scanning = Scanning + 1; Scanning = Scanning + 4 * paletteCount; if (ProcessSection) { SP.SetPaletteOfCurrentSprite(Colours, false); } } Scanning++; Start = Scanning; if (ProcessSection == false) { UnprocessedData.Add(SerialiseData.Substring(InitialStart, Start - InitialStart)); } StartScanning StartScanning = new StartScanning() { INStart = Start, INScanning = Scanning, }; return(StartScanning); }