mirror of
https://git.alee14.me/shiftos-archive/ShiftOS_TheReturn.git
synced 2025-01-22 18:02:16 +00:00
Scripting changes and background music!
This commit is contained in:
parent
b5d5178411
commit
abfd774638
9 changed files with 185 additions and 0 deletions
17
ShiftOS.WinForms/AudioManager.cs
Normal file
17
ShiftOS.WinForms/AudioManager.cs
Normal file
|
@ -0,0 +1,17 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ShiftOS.WinForms
|
||||
{
|
||||
public static class AudioManager
|
||||
{
|
||||
|
||||
public static void Test()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -47,6 +47,7 @@ namespace ShiftOS.WinForms
|
|||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
//if ANYONE puts code before those two winforms config lines they will be declared a drunky. - Michael
|
||||
ShiftOS.Engine.AudioManager.Init(new ShiftOSAudioProvider());
|
||||
Localization.RegisterProvider(new WFLanguageProvider());
|
||||
Shiftorium.RegisterProvider(new WinformsShiftoriumProvider());
|
||||
AppearanceManager.OnExit += () =>
|
||||
|
|
|
@ -47,6 +47,10 @@
|
|||
<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed">
|
||||
<HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Vlc.DotNet.Core.Interops, Version=2.1.130.0, Culture=neutral, PublicKeyToken=84529da31f4eb963, processorArchitecture=x86">
|
||||
<HintPath>..\packages\Vlc.DotNet.Core.Interops.2.1.130\lib\net45\x86\Vlc.DotNet.Core.Interops.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Applications\Artpad.cs">
|
||||
|
@ -169,6 +173,7 @@
|
|||
<Compile Include="Applications\Terminal.Designer.cs">
|
||||
<DependentUpon>Terminal.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="AudioManager.cs" />
|
||||
<Compile Include="Commands.cs" />
|
||||
<Compile Include="Controls\ColorControl.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
|
@ -198,6 +203,7 @@
|
|||
<Compile Include="Oobe.Designer.cs">
|
||||
<DependentUpon>Oobe.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ShiftOSAudioProvider.cs" />
|
||||
<Compile Include="Tools\ColorPickerDataBackend.cs" />
|
||||
<Compile Include="Tools\ControlManager.cs" />
|
||||
<Compile Include="Tools\DitheringEngine.cs" />
|
||||
|
|
47
ShiftOS.WinForms/ShiftOSAudioProvider.cs
Normal file
47
ShiftOS.WinForms/ShiftOSAudioProvider.cs
Normal file
|
@ -0,0 +1,47 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Newtonsoft.Json;
|
||||
using ShiftOS.Engine;
|
||||
|
||||
namespace ShiftOS.WinForms
|
||||
{
|
||||
class ShiftOSAudioProvider : IAudioProvider
|
||||
{
|
||||
public int Count
|
||||
{
|
||||
get
|
||||
{
|
||||
var wc = new System.Net.WebClient();
|
||||
return JsonConvert.DeserializeObject<List<string>>(wc.DownloadString("http://getshiftos.ml/api.php?q=soundtrack")).Count;
|
||||
}
|
||||
}
|
||||
|
||||
private float _vol = 1.0f;
|
||||
|
||||
public float Volume
|
||||
{
|
||||
get
|
||||
{
|
||||
return _vol;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
_vol = value;
|
||||
}
|
||||
}
|
||||
|
||||
public byte[] GetTrack(int index)
|
||||
{
|
||||
var wc = new System.Net.WebClient();
|
||||
var st = JsonConvert.DeserializeObject<List<string>>(wc.DownloadString("http://getshiftos.ml/api.php?q=soundtrack"));
|
||||
|
||||
return wc.DownloadData(st[index]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net452" />
|
||||
<package id="Vlc.DotNet.Core.Interops" version="2.1.130" targetFramework="net451" />
|
||||
</packages>
|
76
ShiftOS_TheReturn/AudioManager.cs
Normal file
76
ShiftOS_TheReturn/AudioManager.cs
Normal file
|
@ -0,0 +1,76 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using NAudio;
|
||||
using NAudio.Wave;
|
||||
|
||||
namespace ShiftOS.Engine
|
||||
{
|
||||
public static class AudioManager
|
||||
{
|
||||
private static WaveOut _out = null;
|
||||
private static AudioFileReader _reader = null;
|
||||
private static IAudioProvider _provider = null;
|
||||
private static bool _running = true;
|
||||
|
||||
public static void Init(IAudioProvider _p)
|
||||
{
|
||||
_provider = _p;
|
||||
AppearanceManager.OnExit += () =>
|
||||
{
|
||||
_running = false;
|
||||
_out?.Stop();
|
||||
_reader?.Dispose();
|
||||
_out?.Dispose();
|
||||
System.IO.File.Delete("temp.mp3");
|
||||
};
|
||||
var t = new Thread(() =>
|
||||
{
|
||||
Random rnd = new Random();
|
||||
while(_running == true)
|
||||
{
|
||||
int track = rnd.Next(0, _provider.Count);
|
||||
byte[] mp3 = _provider.GetTrack(track);
|
||||
System.IO.File.WriteAllBytes("temp.mp3", mp3);
|
||||
_reader = new AudioFileReader("temp.mp3");
|
||||
_out = new WaveOut();
|
||||
_out.Init(_reader);
|
||||
_out.Volume = _provider.Volume;
|
||||
|
||||
_out.Play();
|
||||
while(_out.PlaybackState == PlaybackState.Playing)
|
||||
{
|
||||
Thread.Sleep(5000); //even when the player isn't playing, this will give a good delay between songs.
|
||||
}
|
||||
}
|
||||
});
|
||||
t.IsBackground = true;
|
||||
t.Start();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public interface IAudioProvider
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets a byte[] array corresponding to an MP3 track given an index.
|
||||
/// </summary>
|
||||
/// <param name="index">A track index to use when finding the right track.</param>
|
||||
/// <returns>The MP3 byte[] array.</returns>
|
||||
byte[] GetTrack(int index);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the 1-based count of all available tracks.
|
||||
/// </summary>
|
||||
int Count { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the track player's volume.
|
||||
/// </summary>
|
||||
float Volume { get; set; }
|
||||
}
|
||||
}
|
|
@ -148,6 +148,37 @@ namespace ShiftOS.Engine.Scripting
|
|||
}
|
||||
}
|
||||
|
||||
[Exposed("console")]
|
||||
public class ConsoleFunctions
|
||||
{
|
||||
public void write(dynamic text)
|
||||
{
|
||||
Console.Write(text.ToString());
|
||||
}
|
||||
|
||||
public void writeLine(dynamic text)
|
||||
{
|
||||
Console.WriteLine(text.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
[Exposed("sos")]
|
||||
public class SystemFunctions
|
||||
{
|
||||
public int getCodepoints() { return SaveSystem.CurrentSave.Codepoints; }
|
||||
|
||||
|
||||
public bool runCommand(string cmd)
|
||||
{
|
||||
var args = TerminalBackend.GetArgs(ref cmd);
|
||||
|
||||
return TerminalBackend.RunClient(cmd, args);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public class ExposedAttribute : Attribute
|
||||
{
|
||||
/// <summary>
|
||||
|
|
|
@ -61,6 +61,10 @@
|
|||
<Reference Include="Discoursistency.Util">
|
||||
<HintPath>..\Libraries\Discoursistency.Util.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NAudio, Version=1.8.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NAudio.1.8.0\lib\net35\NAudio.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="NetSockets">
|
||||
<HintPath>..\Libraries\NetSockets.dll</HintPath>
|
||||
</Reference>
|
||||
|
@ -115,6 +119,7 @@
|
|||
<ItemGroup>
|
||||
<Compile Include="AppearanceManager.cs" />
|
||||
<Compile Include="AppLauncherDaemon.cs" />
|
||||
<Compile Include="AudioManager.cs" />
|
||||
<Compile Include="Commands.cs" />
|
||||
<Compile Include="Command.cs" />
|
||||
<Compile Include="CrashHandler.cs" />
|
||||
|
|
|
@ -3,5 +3,6 @@
|
|||
<package id="DynamicLua" version="1.1.2.0" targetFramework="net452" />
|
||||
<package id="IronPython" version="2.7.5" targetFramework="net452" />
|
||||
<package id="IronPython.Interpreter" version="2.7.4" targetFramework="net452" />
|
||||
<package id="NAudio" version="1.8.0" targetFramework="net451" />
|
||||
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net452" />
|
||||
</packages>
|
Loading…
Reference in a new issue