コード例 #1
0
ファイル: NbtTree.cs プロジェクト: wledfor2/Substrate
        private TagNode ReadShortArray()
        {
            byte[] lenBytes = new byte[4];
            _stream.Read(lenBytes, 0, 4);

            if (BitConverter.IsLittleEndian)
            {
                Array.Reverse(lenBytes);
            }

            int length = BitConverter.ToInt32(lenBytes, 0);

            if (length < 0)
            {
                throw new NBTException(NBTException.MSG_READ_NEG);
            }

            short[] data   = new short[length];
            byte[]  buffer = new byte[2];
            for (int i = 0; i < length; i++)
            {
                _stream.Read(buffer, 0, 2);
                if (BitConverter.IsLittleEndian)
                {
                    Array.Reverse(buffer);
                }
                data[i] = BitConverter.ToInt16(buffer, 0);
            }

            TagNodeShortArray val = new TagNodeShortArray(data);

            return(val);
        }
コード例 #2
0
        private void WriteShortArray(TagNodeShortArray val)
        {
            var lenBytes = BitConverter.GetBytes(val.Length);

            if (BitConverter.IsLittleEndian)
            {
                Array.Reverse(lenBytes);
            }

            _stream.Write(lenBytes, 0, 4);

            var data = new byte[val.Length * 2];

            for (var i = 0; i < val.Length; i++)
            {
                var buffer = BitConverter.GetBytes(val.Data[i]);
                if (BitConverter.IsLittleEndian)
                {
                    Array.Reverse(buffer);
                }
                Array.Copy(buffer, 0, data, i * 2, 2);
            }

            _stream.Write(data, 0, data.Length);
        }
コード例 #3
0
        private bool VerifyShortArray(TagNode tag, SchemaNodeShortArray schema)
        {
            TagNodeShortArray atag = tag as TagNodeShortArray;

            if (atag == null)
            {
                if (!OnInvalidTagType(new TagEventArgs(schema, tag)))
                {
                    return(false);
                }
            }
            if (schema.Length > 0 && atag.Length != schema.Length)
            {
                if (!OnInvalidTagValue(new TagEventArgs(schema, tag)))
                {
                    return(false);
                }
            }

            return(true);
        }
コード例 #4
0
        public override bool Verify(NbtVerifier verifier, TagNode tag)
        {
            TagNodeShortArray atag = tag as TagNodeShortArray;

            if (atag == null)
            {
                if (!verifier.OnInvalidTagType(new TagEventArgs(this, tag)))
                {
                    return(false);
                }
            }
            if (Length > 0 && atag.Length != Length)
            {
                if (!verifier.OnInvalidTagValue(new TagEventArgs(this, tag)))
                {
                    return(false);
                }
            }

            return(true);
        }
コード例 #5
0
 public TagShortArrayDataNode (TagNodeShortArray tag)
     : base(tag)
 { }