From 6840267354fe544709b929c7a00c0b280c20cb09 Mon Sep 17 00:00:00 2001 From: morkt Date: Mon, 10 Sep 2018 18:16:04 +0400 Subject: [PATCH] (OZ): detect ordinary filename lists. --- ArcFormats/Patisserie/ArcBIN.cs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) 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;