コード例 #1
0
ファイル: MidiDriver.cs プロジェクト: scemino/nscumm
        /// <summary>
        /// Returns the device handle based on the present devices and the flags parameter.
        /// </summary>
        /// <returns>The device handle based on the present devices and the flags parameter.</returns>
        /// <param name="flags">Flags.</param>
        /// <param name = "selectedDevice">The selected device</param>
        public static DeviceHandle DetectDevice(MusicDriverTypes flags, string selectedDevice)
        {
            var result = new DeviceHandle();
            var handle = GetDeviceHandle(selectedDevice);
            var musicType = GetMusicType(handle);
            switch (musicType)
            {
                case MusicType.PCSpeaker:
                    if (flags.HasFlag(MusicDriverTypes.PCSpeaker))
                    {
                        result = handle;
                    }
                    break;
                case MusicType.PCjr:
                    if (flags.HasFlag(MusicDriverTypes.PCjr))
                    {
                        result = handle;
                    }
                    break;
                case MusicType.AdLib:
                    if (flags.HasFlag(MusicDriverTypes.AdLib))
                    {
                        result = handle;
                    }
                    break;
                case MusicType.CMS:
                    if (flags.HasFlag(MusicDriverTypes.CMS))
                    {
                        result = handle;
                    }
                    break;
                case MusicType.FMTowns:
                    if (flags.HasFlag(MusicDriverTypes.FMTowns))
                    {
                        result = handle;
                    }
                    break;
                case MusicType.Null:
                    result = handle;
                    break;
            }

            if (!result.IsValid)
            {
                MusicType mt = MusicType.Null;
                if (flags.HasFlag(MusicDriverTypes.FMTowns))
                {
                    mt = MusicType.FMTowns;
                }
                else if (flags.HasFlag(MusicDriverTypes.AdLib))
                {
                    mt = MusicType.AdLib;
                }
                else if (flags.HasFlag(MusicDriverTypes.PCjr))
                {
                    mt = MusicType.PCjr;
                }
                else if (flags.HasFlag(MusicDriverTypes.PCSpeaker))
                {
                    mt = MusicType.PCSpeaker;
                }
                var device = MusicManager.GetPlugins().SelectMany(p => p.GetDevices()).FirstOrDefault(d => d.MusicType == mt);
                if (device != null)
                {
                    result = device.Handle;
                }
            }

            return result;
        }
コード例 #2
0
        /// <summary>
        /// Returns the device handle based on the present devices and the flags parameter.
        /// </summary>
        /// <returns>The device handle based on the present devices and the flags parameter.</returns>
        /// <param name="flags">Flags.</param>
        /// <param name = "selectedDevice">The selected device</param>
        public static DeviceHandle DetectDevice(MusicDriverTypes flags, string selectedDevice)
        {
            var result    = new DeviceHandle();
            var handle    = GetDeviceHandle(selectedDevice);
            var musicType = GetMusicType(handle);

            switch (musicType)
            {
            case MusicType.PCSpeaker:
                if (flags.HasFlag(MusicDriverTypes.PCSpeaker))
                {
                    result = handle;
                }
                break;

            case MusicType.PCjr:
                if (flags.HasFlag(MusicDriverTypes.PCjr))
                {
                    result = handle;
                }
                break;

            case MusicType.AdLib:
                if (flags.HasFlag(MusicDriverTypes.AdLib))
                {
                    result = handle;
                }
                break;

            case MusicType.CMS:
                if (flags.HasFlag(MusicDriverTypes.CMS))
                {
                    result = handle;
                }
                break;

            case MusicType.FMTowns:
                if (flags.HasFlag(MusicDriverTypes.FMTowns))
                {
                    result = handle;
                }
                break;

            case MusicType.Null:
                result = handle;
                break;
            }

            if (!result.IsValid)
            {
                MusicType mt = MusicType.Null;
                if (flags.HasFlag(MusicDriverTypes.FMTowns))
                {
                    mt = MusicType.FMTowns;
                }
                else if (flags.HasFlag(MusicDriverTypes.AdLib))
                {
                    mt = MusicType.AdLib;
                }
                else if (flags.HasFlag(MusicDriverTypes.PCjr))
                {
                    mt = MusicType.PCjr;
                }
                else if (flags.HasFlag(MusicDriverTypes.PCSpeaker))
                {
                    mt = MusicType.PCSpeaker;
                }
                var device = MusicManager.GetPlugins().SelectMany(p => p.GetDevices()).FirstOrDefault(d => d.MusicType == mt);
                if (device != null)
                {
                    result = device.Handle;
                }
            }

            return(result);
        }