From 6bbe785019e5021c90249bfec9282472f439030b Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sat, 12 Mar 2016 12:55:17 +0000 Subject: [PATCH] Remove hardcoded wav/aud music assumption. --- OpenRA.Game/GameRules/MusicInfo.cs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/OpenRA.Game/GameRules/MusicInfo.cs b/OpenRA.Game/GameRules/MusicInfo.cs index f0d424b97c..e14297a2d6 100644 --- a/OpenRA.Game/GameRules/MusicInfo.cs +++ b/OpenRA.Game/GameRules/MusicInfo.cs @@ -9,6 +9,7 @@ */ #endregion +using System.IO; using OpenRA.FileFormats; using OpenRA.FileSystem; @@ -35,19 +36,24 @@ namespace OpenRA.GameRules Filename = (nd.ContainsKey("Filename") ? nd["Filename"].Value : key) + "." + ext; } - public void Load(IReadOnlyFileSystem filesystem) + public void Load(IReadOnlyFileSystem fileSystem) { - if (!filesystem.Exists(Filename)) + Stream stream; + if (!fileSystem.TryOpen(Filename, out stream)) return; Exists = true; - using (var s = filesystem.Open(Filename)) + ISoundFormat soundFormat; + foreach (var loader in Game.ModData.SoundLoaders) { - if (Filename.ToLowerInvariant().EndsWith("wav")) - Length = (int)WavReader.WaveLength(s); - else - Length = (int)AudReader.SoundLength(s); + if (loader.TryParseSound(stream, out soundFormat)) + { + Length = (int)soundFormat.LengthInSeconds; + break; + } } + + stream.Dispose(); } } }