diff --git a/ArcFormats/Patisserie/ArcBIN.cs b/ArcFormats/Patisserie/ArcBIN.cs index c2f36080..0b5514bc 100644 --- a/ArcFormats/Patisserie/ArcBIN.cs +++ b/ArcFormats/Patisserie/ArcBIN.cs @@ -56,20 +56,20 @@ namespace GameRes.Formats.Patisserie return null; var base_name = Path.GetFileNameWithoutExtension (file.Name); string content_ext = "", content_type = ""; - if (base_name.EndsWith ("flac", StringComparison.InvariantCultureIgnoreCase)) + if (base_name.EndsWith ("flac", StringComparison.OrdinalIgnoreCase)) { content_ext = "flac"; content_type = "audio"; base_name = base_name.Substring (0, base_name.Length-4); } - else if (base_name.EndsWith ("ogg", StringComparison.InvariantCultureIgnoreCase)) + else if (base_name.EndsWith ("ogg", StringComparison.OrdinalIgnoreCase)) { content_ext = "ogg"; content_type = "audio"; base_name = base_name.Substring (0, base_name.Length-3); } - var filenames = GetFileNames (VFS.GetDirectoryName (file.Name), base_name); + var filenames = GetFileNames (file.Name); if (null == filenames) filenames = new List (count); for (int i = filenames.Count; i < count; ++i) @@ -137,17 +137,23 @@ namespace GameRes.Formats.Patisserie return new ZLibStream (input, CompressionMode.Decompress); } - IList GetArcNames (string lst_name) + IList ReadListFile (string lst_name) { return File.ReadAllLines (lst_name, Encodings.cp932); } - IList GetFileNames (string dir_name, string base_name) + IList GetFileNames (string arc_name) { + var dir_name = VFS.GetDirectoryName (arc_name); + var lst_name = Path.ChangeExtension (arc_name, ".lst"); + if (VFS.FileExists (lst_name)) + return ReadListFile (lst_name); + var lists_lst_name = VFS.CombinePath (dir_name, "lists.lst"); if (!VFS.FileExists (lists_lst_name)) return null; - var arcs = GetArcNames (lists_lst_name); + var base_name = Path.GetFileNameWithoutExtension (arc_name); + var arcs = ReadListFile (lists_lst_name); var arc_no = arcs.IndexOf (base_name); if (-1 == arc_no) return null;