public static void Main(string[] args)
{
xaudio2 = new XAudio2();
xaudio2.StartEngine();
var masteringVoice = new MasteringVoice(xaudio2);
if (!string.IsNullOrEmpty(Properties.Settings.Default.BackgroundMusicPath) &&
Directory.Exists(Properties.Settings.Default.BackgroundMusicPath))
{
var musicFiles = Directory.GetFiles(Properties.Settings.Default.BackgroundMusicPath, "*.wav");
if (musicFiles.Length > 0)
{
backgroundPlayer = new TrackPlayer(xaudio2, musicFiles);
}
}
var listener = new UdpClient(10009);
listener.BeginReceive(new AsyncCallback(ReceiveCallback), listener);
effectManager = new EffectManager(xaudio2, 4, Properties.Settings.Default.FXPath);
// Wait until its done
int count = 1;
while (true)
{
Thread.Sleep(10);
if (Console.KeyAvailable)
{
var key = Console.ReadKey();
if (key.Key == ConsoleKey.Escape)
{
break;
}
switch (key.Key)
{
case ConsoleKey.A:
effectManager.Play("Scream.wav");
break;
case ConsoleKey.B:
effectManager.Play("Violin screech.wav");
break;
case ConsoleKey.N:
if (backgroundPlayer != null)
{
backgroundPlayer.NextTrack();
}
break;
case ConsoleKey.V:
if (key.Modifiers.HasFlag(ConsoleModifiers.Shift))
{
backgroundVolume -= 0.1f;
}
else
{
backgroundVolume += 0.1f;
}
if (backgroundVolume < 0f)
{
backgroundVolume = 0f;
}
if (backgroundVolume > 1f)
{
backgroundVolume = 1f;
}
break;
}
}
var muteMusic = effectManager.AreAnyPlaying && autoMuteBackground ? 0.2f : 0f;
if (backgroundPlayer != null)
{
backgroundPlayer.Volume = backgroundVolume - muteMusic;
}
if (count % 50 == 0)
{
Console.Write(".");
Console.Out.Flush();
}
Thread.Sleep(10);
count++;
}
listener.Close();
if (backgroundPlayer != null)
{
backgroundPlayer.Stop();
}
if (trackPlayer != null)
{
trackPlayer.Stop();
}
effectManager.Dispose();
Thread.Sleep(500);
masteringVoice.Dispose();
xaudio2.StopEngine();
xaudio2.Dispose();
}