public MonoExpanderInstance Connect(LogicalDevice.AudioPlayer logicalDevice)
{
this.AudioTrackDone += (o, e) =>
{
logicalDevice.RaiseAudioTrackDone();
};
this.AudioTrackStart.Subscribe(x =>
{
if (x.Item1 == AudioTypes.Track)
logicalDevice.RaiseAudioTrackStart(x.Item2);
});
logicalDevice.AudioChanged += (sender, e) =>
{
switch (e.Command)
{
case LogicalDevice.Event.AudioChangedEventArgs.Commands.PlayNewFX:
case LogicalDevice.Event.AudioChangedEventArgs.Commands.PlayFX:
if (e.LeftVolume.HasValue && e.RightVolume.HasValue)
SendMessage(new AudioEffectPlay
{
FileName = e.AudioFile,
VolumeLeft = e.LeftVolume.Value,
VolumeRight = e.RightVolume.Value,
Simultaneous = e.Command == LogicalDevice.Event.AudioChangedEventArgs.Commands.PlayNewFX
});
else
SendMessage(new AudioEffectPlay
{
FileName = e.AudioFile,
Simultaneous = e.Command == LogicalDevice.Event.AudioChangedEventArgs.Commands.PlayNewFX
});
break;
case LogicalDevice.Event.AudioChangedEventArgs.Commands.CueFX:
SendMessage(new AudioEffectCue
{
FileName = e.AudioFile
});
break;
case LogicalDevice.Event.AudioChangedEventArgs.Commands.CueTrack:
SendMessage(new AudioTrackCue
{
FileName = e.AudioFile
});
break;
case LogicalDevice.Event.AudioChangedEventArgs.Commands.PlayTrack:
SendMessage(new AudioTrackPlay
{
FileName = e.AudioFile
});
break;
}
};
logicalDevice.ExecuteCommand += (sender, e) =>
{
switch (e.Command)
{
case LogicalDevice.Event.AudioCommandEventArgs.Commands.PlayBackground:
SendMessage(new AudioBackgroundResume(), "play-bg");
break;
case LogicalDevice.Event.AudioCommandEventArgs.Commands.PauseBackground:
SendMessage(new AudioBackgroundPause(), "pause-bg");
break;
case LogicalDevice.Event.AudioCommandEventArgs.Commands.ResumeFX:
SendMessage(new AudioEffectResume());
break;
case LogicalDevice.Event.AudioCommandEventArgs.Commands.PauseFX:
SendMessage(new AudioEffectPause());
break;
case LogicalDevice.Event.AudioCommandEventArgs.Commands.NextBackground:
SendMessage(new AudioBackgroundNext());
break;
case LogicalDevice.Event.AudioCommandEventArgs.Commands.BackgroundVolume:
SendMessage(new AudioBackgroundSetVolume
{
Volume = ((LogicalDevice.Event.AudioCommandValueEventArgs)e).Value
}, "mv-bg");
break;
case LogicalDevice.Event.AudioCommandEventArgs.Commands.ResumeTrack:
SendMessage(new AudioTrackResume());
break;
case LogicalDevice.Event.AudioCommandEventArgs.Commands.PauseTrack:
SendMessage(new AudioTrackPause());
break;
case LogicalDevice.Event.AudioCommandEventArgs.Commands.EffectVolume:
SendMessage(new AudioEffectSetVolume
{
Volume = ((LogicalDevice.Event.AudioCommandValueEventArgs)e).Value
}, "mv-fx");
break;
case LogicalDevice.Event.AudioCommandEventArgs.Commands.TrackVolume:
SendMessage(new AudioTrackSetVolume
{
Volume = ((LogicalDevice.Event.AudioCommandValueEventArgs)e).Value
}, "mv-trk");
break;
}
};
return this;
}