Alexandria.Engines.Sciagi.ResourceMap.DetectVersionSci1 C# (CSharp) Метод

DetectVersionSci1() статический приватный Метод

static private DetectVersionSci1 ( AssetLoader loader ) : bool
loader Glare.Assets.AssetLoader
Результат bool
        static bool DetectVersionSci1(AssetLoader loader)
        {
            var reader = loader.Reader;
            var length = loader.Length;

            // File starts with three-byte resource type headers; each (u1 type; u2 offset), where type ends in 255.
            int firstOffset = -1, lastOffset = 0;

            while (true) {
                if (reader.BaseStream.Position + 3 >= length)
                    return false;
                ResourceType type = (ResourceType)reader.ReadByte();
                int offset = reader.ReadUInt16();
                if (firstOffset < 0)
                    firstOffset = offset;
                else if (offset < lastOffset || (offset - lastOffset) % 6 != 0)
                    return false;

                lastOffset = offset;
                if (type == ResourceType.End)
                    break;
            }

            // The remainder are sorted resource lists for each type, but this is enough for positive detection.
            return reader.BaseStream.Position == firstOffset && lastOffset == length;
        }