Ryan 70fa89de8c Added threading support and fixed bugs
Internal functions fixed!
now empty args on internal functions will not bug out!

Added some new methods
2017-08-26 20:53:49 -04:00

95 lines
2.3 KiB
C#

/*
* Created by SharpDevelop.
* User: Ryan
* Date: 8/17/2017
* Time: 11:53 AM
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Threading;
using CSCore;
using CSCore.Codecs;
using CSCore.SoundOut;
using parseManagerCS;
public class define : standardDefine // If you want the standard methods you must include this, Also this class cannot be static!
{
double count;
ISoundOut GetSoundOut()
{
if (WasapiOut.IsSupportedOnCurrentPlatform)
return new WasapiOut();
else
return new DirectSoundOut();
}
IWaveSource GetSoundSource(string path)
{
return CodecFactory.Instance.GetCodec(path);
}
public void _play()
{
string path = (string)GLOBALS.GetData("__MUSIC");
double id = (double)GLOBALS.GetData("__MUSICH");
using (IWaveSource soundSource = GetSoundSource(path)) {
using (ISoundOut soundOut = GetSoundOut()) {
soundOut.Initialize(soundSource);
GLOBALS.AddData("__MUSICH" + id, soundOut);
soundOut.Play();
soundOut.WaitForStopped();
}
}
}
public void STOP(parseManager PM, double id)
{
var sound = (ISoundOut)GLOBALS.GetData("__MUSICH" + id);
sound.Stop();
}
public void RESUME(parseManager PM, double id)
{
var sound = (ISoundOut)GLOBALS.GetData("__MUSICH" + id);
sound.Resume();
}
public void SETV(parseManager PM, double id, double vol)
{
var sound = (ISoundOut)GLOBALS.GetData("__MUSICH" + id);
sound.Volume = (float)vol;
}
public void PAUSE(parseManager PM, double id)
{
var sound = (ISoundOut)GLOBALS.GetData("__MUSICH" + id);
sound.Pause();
}
public double PLAY(parseManager PM, string filepath)
{
GLOBALS.AddData("__MUSIC", filepath);
GLOBALS.AddData("__MUSICH", count++);
var oThread = new Thread(new ThreadStart(_play));
oThread.Start();
return count - 1;
}
}
namespace parseManagerCS
{
class Program
{
public static void Main(string[] args)
{
if (args.Length == 0) {
Console.Write("Please Include a file path!");
Console.ReadLine();
Environment.Exit(0);
}
parseManager PM = new parseManager(args[0], "define");
nextType next = PM.Next();
string type;
while (next.GetCMDType() != "EOF") {
type = next.GetCMDType();
if (type == "line") {
Console.Write(next.GetText());
Console.ReadLine();
}
next = PM.Next();
}
}
}
}