private void Remove_Execute(CwavKind obj)
 {
     Import_PostExecute(new ImportResults()
     {
         CWAV   = CwavFile.Empty(),
         Target = obj,
         Loaded = true
     });
 }
        private Task <ExportResults> Export_Execute(CwavKind arg)
        {
            var cWav = ViewModel.Sounds[arg];

            return(Task <ExportResults> .Factory.StartNew(() =>
            {
                var results = new ExportResults
                {
                    Saved = false,
                    Target = arg
                };
                var svfd = new SaveFileDialog
                {
                    Filter = ThirdPartyTools.VgmStream.Present
                                 ? "DSP ADPCM Audio|*.bcwav|PCM Audio|*.wav"
                                 : "DSP ADPCM Audio|*.bcwav",
                    FileName = arg.ToString().ToLower()
                };

                var dlg = svfd.ShowDialog();
                if (dlg.HasValue && dlg.Value)
                {
                    try
                    {
                        switch (svfd.FilterIndex)
                        {
                        case 1:
                            File.WriteAllBytes(svfd.FileName, cWav.CwavData);
                            results.Path = svfd.FileName;
                            results.Saved = true;
                            break;

                        case 2:
                            File.WriteAllBytes(svfd.FileName, cWav.WavData);
                            results.Path = svfd.FileName;
                            results.Saved = true;
                            break;
                        }
                    }
                    catch
                    {
                        // Ignore
                    }
                }
                return results;
            }));
        }
        public void PlayAudio_Execute(CwavKind cwavKind)
        {
            var wavData = ViewModel.Sounds[cwavKind].WavData;
            if (wavData.Length == 0)
                return;

            _sfxPlayer.Stop();

            _sfxProvider?.Dispose();
            _sfxStream?.Dispose();

            _sfxStream = new MemoryStream(wavData);
            _sfxProvider = new WaveFileReader(_sfxStream);

            _sfxPlayer.Init(_sfxProvider);
            _sfxPlayer.Play();
        }
        public void PlayAudio_Execute(CwavKind cwavKind)
        {
            var wavData = ViewModel.Sounds[cwavKind].WavData;

            if (wavData.Length == 0)
            {
                return;
            }

            _sfxPlayer.Stop();

            _sfxProvider?.Dispose();
            _sfxStream?.Dispose();

            _sfxStream   = new MemoryStream(wavData);
            _sfxProvider = new WaveFileReader(_sfxStream);

            _sfxPlayer.Init(_sfxProvider);
            _sfxPlayer.Play();
        }
        private Task<ExportResults> Export_Execute(CwavKind arg)
        {
            var cWav = ViewModel.Sounds[arg];
            return Task<ExportResults>.Factory.StartNew(() =>
            {
                var results = new ExportResults
                {
                    Saved = false,
                    Target =  arg
                };
                var svfd = new SaveFileDialog
                {
                    Filter = ThirdPartyTools.VgmStream.Present
                                 ? "DSP ADPCM Audio|*.bcwav|PCM Audio|*.wav"
                                 : "DSP ADPCM Audio|*.bcwav",
                    FileName = arg.ToString().ToLower()
                };

                var dlg = svfd.ShowDialog();
                if (dlg.HasValue && dlg.Value)
                {
                    try
                    {
                        switch (svfd.FilterIndex)
                        {
                            case 1:
                                File.WriteAllBytes(svfd.FileName, cWav.CwavData);
                                results.Path = svfd.FileName;
                                results.Saved = true;
                                break;
                            case 2:
                                File.WriteAllBytes(svfd.FileName, cWav.WavData);
                                results.Path = svfd.FileName;
                                results.Saved = true;
                                break;
                        }
                    }
                    catch
                    {
                        // Ignore
                    }
                }
                return results;
            });
        }
 public bool CanExecute_HasAudio(CwavKind cwavKind)
 {
     return ViewModel.Sounds[cwavKind].WavData.Length > 0;
 }
 private void Remove_Execute(CwavKind obj)
 {
     Import_PostExecute(new ImportResults()
     {
         CWAV = CwavFile.Empty(),
         Target = obj,
         Loaded = true
     });
 }
 private Task<ImportResults> Import_Execute(CwavKind cwavKind)
 {
     return Task<ImportResults>.Factory.StartNew(() =>
     {
         var result = new ImportResults
         {
             Loaded = false,
             Target = cwavKind
         };
         OpenFileDialog opfd = new OpenFileDialog
         {
             Filter = ThirdPartyTools.CtrWaveConveter.Present
                          ? "Supported Files|*.wav;*.bcwav|DSP ADCPM Audio|*.bcwav|PCM Audio|*.wav"
                          : "Supported Files|*.bcwav|DSP ADCPM Audio|*.bcwav"
         };
         var dlg = opfd.ShowDialog();
         if (dlg.HasValue && dlg.Value)
         {
             try
             {
                 switch (opfd.FilterIndex)
                 {
                     case 1:
                     {
                         if (opfd.FileName.EndsWith(".bcwav", StringComparison.OrdinalIgnoreCase))
                             goto case 2;
                         if (opfd.FileName.EndsWith(".wav", StringComparison.OrdinalIgnoreCase))
                             goto case 3;
                         break;
                     }
                     case 2:
                     {
                         // Read CWAV
                         var cwavData = File.ReadAllBytes(opfd.FileName);
                         result.Loaded = true;
                         result.CWAV = new CwavFile(cwavData);
                         break;
                     }
                     case 3:
                     {
                         // Convert Wav
                         var wavData = File.ReadAllBytes(opfd.FileName);
                         byte[] cwavData = CwavFile.EncodeCwav(wavData);
                         if (cwavData.Length == 3)
                         {
                             return result;
                         }
                         result.Loaded = true;
                         result.CWAV = new CwavFile(cwavData);
                         break;
                     }
                 }
             }
             catch
             {
                 // Ignore
             }
         }
         return result;
     });
 }
 public bool CanExecute_HasAudio(CwavKind cwavKind)
 {
     return(ViewModel.Sounds[cwavKind].WavData.Length > 0);
 }
        private Task <ImportResults> Import_Execute(CwavKind cwavKind)
        {
            return(Task <ImportResults> .Factory.StartNew(() =>
            {
                var result = new ImportResults
                {
                    Loaded = false,
                    Target = cwavKind
                };
                OpenFileDialog opfd = new OpenFileDialog
                {
                    Filter = ThirdPartyTools.CtrWaveConveter.Present
                                 ? "Supported Files|*.wav;*.bcwav|DSP ADCPM Audio|*.bcwav|PCM Audio|*.wav"
                                 : "Supported Files|*.bcwav|DSP ADCPM Audio|*.bcwav"
                };
                var dlg = opfd.ShowDialog();
                if (dlg.HasValue && dlg.Value)
                {
                    try
                    {
                        switch (opfd.FilterIndex)
                        {
                        case 1:
                            {
                                if (opfd.FileName.EndsWith(".bcwav", StringComparison.OrdinalIgnoreCase))
                                {
                                    goto case 2;
                                }
                                if (opfd.FileName.EndsWith(".wav", StringComparison.OrdinalIgnoreCase))
                                {
                                    goto case 3;
                                }
                                break;
                            }

                        case 2:
                            {
                                // Read CWAV
                                var cwavData = File.ReadAllBytes(opfd.FileName);
                                result.Loaded = true;
                                result.CWAV = new CwavFile(cwavData);
                                break;
                            }

                        case 3:
                            {
                                // Convert Wav
                                var wavData = File.ReadAllBytes(opfd.FileName);
                                byte[] cwavData = CwavFile.EncodeCwav(wavData);
                                if (cwavData.Length == 3)
                                {
                                    return result;
                                }
                                result.Loaded = true;
                                result.CWAV = new CwavFile(cwavData);
                                break;
                            }
                        }
                    }
                    catch
                    {
                        // Ignore
                    }
                }
                return result;
            }));
        }