示例#1
0
        public TableItem(BinaryReaderWriter br, int iItemlength)
            : this()
        {
            rawtype = br.Read2AsUShort();
            switch (iItemlength)
            {
            case 3: Offset = br.ReadByte(); break;

            case 4: Offset = br.Read2AsUShort(); break;

            case 5: Offset = (int)br.Read3AsUInt(); break;
            }
        }
示例#2
0
        /// <summary>
        /// liest einen Tabelleneintrag ein
        /// </summary>
        /// <param name="br"></param>
        /// <param name="offset_len">Länge des Speicherbereichs für den Offset in Byte</param>
        /// <param name="baseheight_len">Länge des Speicherbereichs für die Basishöhe in Byte</param>
        /// <param name="diff_len">Länge des Speicherbereichs in Byte</param>
        /// <param name="extraBytes">wenn größer 0, dann 1 zusätzliches Byte</param>
        public void Read(BinaryReaderWriter br, int offset_len = 3, int baseheight_len = 2, int diff_len = 2, int type_len = 1)
        {
            switch (offset_len)
            {
            case 1:
                Offset = br.ReadByte();
                break;

            case 2:
                Offset = br.Read2AsUShort();
                break;

            case 3:
                Offset = br.Read3AsUInt();
                break;

            case 4:
                Offset = br.Read4UInt();
                break;
            }

            switch (baseheight_len)
            {
            case 1:
                Baseheight = br.ReadByte();
                break;

            case 2:
                Baseheight = br.Read2AsShort();
                break;
            }

            switch (diff_len)
            {
            case 1:
                Diff = br.ReadByte();
                break;

            case 2:
                Diff = br.Read2AsUShort();
                break;
            }

            if (type_len > 0)
            {
                Type = br.ReadByte();
            }
        }