Beispiel #1
0
        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);
        }
Beispiel #2
0
        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;
        }