mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2026-05-17 21:15:21 +08:00
R26_dev8 - First public commit
This commit is contained in:
@@ -0,0 +1,196 @@
|
||||
using CodeWalker.GameFiles;
|
||||
using SharpDX.Multimedia;
|
||||
using SharpDX.XAudio2;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace CodeWalker.Forms
|
||||
{
|
||||
public partial class AwcForm : Form
|
||||
{
|
||||
public AwcFile Awc { get; set; }
|
||||
|
||||
private string fileName;
|
||||
public string FileName
|
||||
{
|
||||
get { return fileName; }
|
||||
set
|
||||
{
|
||||
fileName = value;
|
||||
UpdateFormTitle();
|
||||
}
|
||||
}
|
||||
public string FilePath { get; set; }
|
||||
|
||||
private bool Playing = false;
|
||||
|
||||
|
||||
public AwcForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void UpdateFormTitle()
|
||||
{
|
||||
Text = fileName + " - AWC Player - CodeWalker by dexyfex";
|
||||
}
|
||||
|
||||
|
||||
public void LoadAwc(AwcFile awc)
|
||||
{
|
||||
Awc = awc;
|
||||
DetailsPropertyGrid.SelectedObject = awc;
|
||||
|
||||
//MainTabControl.SelectedTab = DetailsTabPage;//remove this
|
||||
|
||||
fileName = awc?.Name;
|
||||
if (string.IsNullOrEmpty(fileName))
|
||||
{
|
||||
fileName = awc?.FileEntry?.Name;
|
||||
}
|
||||
|
||||
|
||||
PlayListView.Items.Clear();
|
||||
if (awc.Audios != null)
|
||||
{
|
||||
foreach (var audio in awc.Audios)
|
||||
{
|
||||
var item = PlayListView.Items.Add(audio.Name);
|
||||
item.SubItems.Add(audio.Type);
|
||||
item.SubItems.Add(audio.LengthStr);
|
||||
item.Tag = audio;
|
||||
}
|
||||
}
|
||||
|
||||
UpdateFormTitle();
|
||||
}
|
||||
|
||||
|
||||
private void Play()
|
||||
{
|
||||
if (PlayListView.SelectedItems.Count != 1) return;
|
||||
|
||||
var item = PlayListView.SelectedItems[0];
|
||||
var audio = item.Tag as AwcAudio;
|
||||
|
||||
if (audio == null) return;
|
||||
|
||||
|
||||
|
||||
//see https://github.com/sharpdx/SharpDX-Samples/blob/master/Desktop/XAudio2/PlaySound/Program.cs
|
||||
//see https://github.com/sharpdx/SharpDX-Samples/blob/master/Desktop/XAudio2/AudioPlayerApp/AudioPlayer.cs
|
||||
|
||||
//var mstrm = new MemoryStream(audio.Data);
|
||||
//var sstrm = new SoundStream(mstrm);
|
||||
//SourceVoice sv=new SourceVoice()
|
||||
var mstrm = audio.GetWavStream();
|
||||
|
||||
////var mdata = ((MemoryStream)mstrm).GetBuffer();
|
||||
////File.WriteAllBytes("C:\\test2.wav", mdata);
|
||||
////return;
|
||||
|
||||
//var sstrm = new SoundStream(mstrm);
|
||||
//var waveFormat = sstrm.Format;
|
||||
//var buffer = new AudioBuffer
|
||||
//{
|
||||
// Stream = sstrm.ToDataStream(),
|
||||
// AudioBytes = (int)sstrm.Length,
|
||||
// Flags = BufferFlags.EndOfStream
|
||||
//};
|
||||
//sstrm.Close();
|
||||
|
||||
|
||||
//var xaudio2 = new XAudio2();//cache this...
|
||||
//var masteringVoice = new MasteringVoice(xaudio2);//cache this...
|
||||
//var sourceVoice = new SourceVoice(xaudio2, waveFormat, true);
|
||||
////sourceVoice.BufferEnd += (context) => Console.WriteLine(" => event received: end of buffer");
|
||||
//sourceVoice.SubmitSourceBuffer(buffer, sstrm.DecodedPacketsInfo);
|
||||
//sourceVoice.Start();
|
||||
//while (sourceVoice.State.BuffersQueued > 0) // && !IsKeyPressed(ConsoleKey.Escape))
|
||||
//{
|
||||
// Thread.Sleep(10);
|
||||
//}
|
||||
//sourceVoice.DestroyVoice();
|
||||
//sourceVoice.Dispose();
|
||||
//buffer.Stream.Dispose();
|
||||
|
||||
//masteringVoice.Dispose();//on form exit?
|
||||
//xaudio2.Dispose();//on form exit?
|
||||
|
||||
|
||||
|
||||
Playing = true;
|
||||
}
|
||||
|
||||
private void Pause()
|
||||
{
|
||||
|
||||
Playing = false;
|
||||
}
|
||||
|
||||
private void Prev()
|
||||
{
|
||||
}
|
||||
|
||||
private void Next()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void PositionTrackBar_Scroll(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void PlayButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Playing) Pause();
|
||||
else Play();
|
||||
}
|
||||
|
||||
private void PrevButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
Prev();
|
||||
}
|
||||
|
||||
private void NextButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
Next();
|
||||
}
|
||||
|
||||
private void VolumeButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void VolumeTrackBar_Scroll(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public class AudioPlayer
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user