public SkinPack GetFiles(string rootPath, bool allowMultiple = false) { var reader = new SkinReader(); var files = new SkinPack(); var pakFiles = GetAllPakFiles(rootPath); foreach (var file in pakFiles) { var relPath = Path.GetRelativePath(rootPath, file.FullName); var useMultiple = allowMultiple || file.Name.Contains("MULTI") || file.Length < 8192; if (useMultiple) { var idents = reader.ReadAllSkinSlots(file.FullName); if (idents == null || !idents.Any()) { files.ExtraFiles.Add(relPath); } else if (idents.Count() > 1) { files.MultiSkinFiles.Add(relPath, idents); } else { files.Skins.Add(relPath, idents.First()); } } else { var ident = reader.ReadSkinSlot(file.FullName); if (ident != null) { files.Skins.Add(relPath, ident); } else { files.ExtraFiles.Add(relPath); } } } var textFiles = Directory.EnumerateFiles(rootPath, "*.txt", SearchOption.TopDirectoryOnly); files.ReadmeFiles = textFiles.Count() > 0 ? textFiles.Select(f => Path.GetRelativePath(rootPath, f)).ToList() : new List <string>(); return(files); }
public SkinPack GetFiles(string rootPath, bool allowMultiple = false) { var reader = _reader; var files = new SkinPack(); var pakFiles = GetAllPakFiles(rootPath); foreach (var file in pakFiles) { var relPath = Path.GetRelativePath(rootPath, file.FullName); // _logger.LogTrace($"FileService reading {relPath}"); var useMultiple = allowMultiple || file.Name.Contains("MULTI"); var readOpts = new PakReaderOptions { ReadWholeFile = useMultiple, TreatAsLightweight = System.Text.RegularExpressions.Regex.IsMatch(file.Name, @"[_[(](?:LW|LIGHT)[_\]\)]") }; var idents = reader.ReadFile(file.FullName); files.Add(idents.ToList(), relPath); } var textFiles = Directory.EnumerateFiles(rootPath, "*.txt", SearchOption.TopDirectoryOnly); files.ReadmeFiles = textFiles.Count() > 0 ? textFiles.Select(f => Path.GetRelativePath(rootPath, f)).ToList() : new List <string>(); return(files); }