#region License
#endregion
#region Using Statements
using
System;
using
System.IO;
using
Microsoft.Xna.Framework.Media;
using
Microsoft.Xna.Framework.Utilities;
#endregion
namespace
Microsoft.Xna.Framework.Content
{
internal
class
SongReader : ContentTypeReader<Song>
{
#region Private Supported File Extensions Variable
static
string
[] supportedExtensions =
new
string
[] {
".flac"
,
".ogg"
};
#endregion
#region Internal Filename Normalizer Method
internal
static
string
Normalize(
string
fileName)
{
return
Normalize(fileName, supportedExtensions);
}
#endregion
#region Protected Read Method
protected
internal
override
Song Read(ContentReader input, Song existingInstance)
{
string
path = FileHelpers.ResolveRelativePath(
Path.Combine(
input.ContentManager.RootDirectoryFullPath,
input.AssetName
),
input.ReadString()
);
path = Normalize(path.Substring(0, path.Length - 4));
if
(String.IsNullOrEmpty(path))
{
throw
new
ContentLoadException();
}
int
durationMs = input.ReadInt32();
return
new
Song(path, durationMs);
}
#endregion
}
}