示例#1
0
        private string EntryToString(ALB_Entry e, int indLvl = 0)
        {
            var tag = tags[e.TagID];

            var cls = (e.Value is ALB_Object obj) ? $"({classes[obj.classID]})" : "";
            var ind = new string(' ', 4 * indLvl);

            return($"{ind}{tag}{cls}={e.Value.ToString(this, indLvl)}");
        }
示例#2
0
        public ALB1(BinaryReaderEx input)
        {
            var sig = input.ReadAscii(4);

            if (sig != "ALB1")
            {
                throw new FormatException("ALB1 signature missing");
            }

            //unknown data
            input.ReadBytes(15);

            var nTags = input.ReadInt32();

            for (int i = 0; i < nTags; i++)
            {
                var tagID = input.ReadUInt16();
                var name  = input.ReadAscii();

                tags[tagID] = name;
            }

            //unknown data
            input.ReadBytes(3);

            var nClasses = input.ReadInt32();

            for (int i = 0; i < nClasses; i++)
            {
                var classID = input.ReadUInt16();
                var name    = input.ReadAscii();

                classes[classID] = name;
            }

            //unknown data
            input.ReadBytes(6);

            int?layerVersion = null;

            while (input.Position < input.BaseStream.Length)
            {
                var e = new ALB_Entry(input, layerVersion);
                if (tags[e.TagID].Equals("mlayerversion", StringComparison.OrdinalIgnoreCase))
                {
                    layerVersion = (e.Value as ALB_SimpleValue <int>).Value;
                }

                entries.AddLast(e);
            }
        }
示例#3
0
 public ALB_Unknown(BinaryReaderEx input)
 {
     entry1 = new ALB_Entry(input);
     entry2 = new ALB_Entry(input);
 }