public (string Path, SkinIdentifier Identifier)? FindNormal(string filePath, SkinIdentifier sourceIdentifier) { var reader = new AssetReader(filePath, null, null); var normal = reader.GetHeaderIndexList() .FirstOrDefault(hi => hi.Contains($"{sourceIdentifier.Aircraft}_{sourceIdentifier.Slot}") && hi.Contains("_N.") && hi.Contains("/Game/")); var parsed = _parserService.ParseMatch(normal); if (parsed is SkinIdentifier { Type : "N" } skinIdentifier) { return(normal, skinIdentifier); } return(null); }
public IEnumerable <(string Path, SkinIdentifier Identifier)> FindMREC(string filePath, bool fullPath = false) { var opts = new SearchOptions { Window = 48, MaxBytes = int.MaxValue, RewindOnMatch = true }; foreach (var match in FindIdents(filePath, opts)) { var ident = _parser.ParseMatch(match, false); // var fIdent = FancyParseMatch(match); if (ident != null && ident is SkinIdentifier sIdent && sIdent.Type == "MREC") { var pathIdx = match.IndexOf(ident.RawValue); var path = fullPath ? opts.Key + match.Substring(0, pathIdx) + ident.RawValue : match.Substring(0, pathIdx); yield return(path, sIdent); } } yield break; }