private static void ReceiveCallback(IAsyncResult result) { try { var client = result.AsyncState as UdpClient; var endpoint = new IPEndPoint(IPAddress.Any, 0); byte[] data = client.EndReceive(result, ref endpoint); if (data != null && data.Length > 0) { string text = Encoding.ASCII.GetString(data); if (text.StartsWith("!AUD:0,")) { text = text.Substring(7).Trim(); string[] parts = text.Split(','); if (parts.Length >= 2) { switch (parts[0]) { case "B": // Background music if (int.Parse(parts[1]) == 1) { backgroundPlayer.Resume(); } else { backgroundPlayer.Pause(); } break; case "BV": // Background volume int vol = int.Parse(parts[1]); if (vol >= 0 && vol <= 255) { backgroundVolume = (float)vol / 255.0f; } break; case "FX": try { effectManager.Play(parts[1] + ".wav"); } catch (Exception ex) { Console.WriteLine("Exception when playing FX: " + ex.ToString()); // Ignore } break; case "TC": // Cue track if (trackPlayer != null) { trackPlayer.Stop(); trackPlayer = null; } try { string filename = Path.Combine(Properties.Settings.Default.TracksPath, parts[1] + ".wav"); trackPlayer = new TrackPlayer(xaudio2, new string[] { filename }); trackPlayer.Prepare(); } catch (Exception ex) { Console.WriteLine("Exception when playing Track: " + ex.ToString()); // Ignore } break; case "T": // Track if (trackPlayer != null) { if (int.Parse(parts[1]) == 1) { trackPlayer.Resume(); } else { trackPlayer.Pause(); } } break; } } } } client.BeginReceive(new AsyncCallback(ReceiveCallback), client); } catch { // Ignore } }
private static void ReceiveCallback(IAsyncResult result) { try { var client = result.AsyncState as UdpClient; var endpoint = new IPEndPoint(IPAddress.Any, 0); byte[] data = client.EndReceive(result, ref endpoint); if (data != null && data.Length > 0) { string text = Encoding.ASCII.GetString(data); if (text.StartsWith("!AUD:0,")) { text = text.Substring(7).Trim(); string[] parts = text.Split(','); if (parts.Length >= 2) { switch (parts[0]) { case "B": // Background music if (int.Parse(parts[1]) == 1) backgroundPlayer.Resume(); else backgroundPlayer.Pause(); break; case "BV": // Background volume int vol = int.Parse(parts[1]); if (vol >= 0 && vol <= 255) backgroundVolume = (float)vol / 255.0f; break; case "FX": try { effectManager.Play(parts[1] + ".wav"); } catch (Exception ex) { Console.WriteLine("Exception when playing FX: " + ex.ToString()); // Ignore } break; case "TC": // Cue track if (trackPlayer != null) { trackPlayer.Stop(); trackPlayer = null; } try { string filename = Path.Combine(Properties.Settings.Default.TracksPath, parts[1] + ".wav"); trackPlayer = new TrackPlayer(xaudio2, new string[] { filename }); trackPlayer.Prepare(); } catch (Exception ex) { Console.WriteLine("Exception when playing Track: " + ex.ToString()); // Ignore } break; case "T": // Track if (trackPlayer != null) { if (int.Parse(parts[1]) == 1) trackPlayer.Resume(); else trackPlayer.Pause(); } break; } } } } client.BeginReceive(new AsyncCallback(ReceiveCallback), client); } catch { // Ignore } }