コード例 #1
0
ファイル: ArchiveHeader.cs プロジェクト: zhutaorun/unitygame
		public bool readArchiveFileHeader(FileStream fileHandle, ByteBuffer pMByteBuffer)
		{
			pMByteBuffer.clear ();
			fileHandle.Read(pMByteBuffer.dynBuff.buff, 0, 4);
			pMByteBuffer.length = 4;
            string magic = "";
			pMByteBuffer.readMultiByte(ref magic, 4, Encoding.UTF8);
			if (magic != "asdf")		// 检查 magic
			{
				return false;
			}

			pMByteBuffer.clear ();
			fileHandle.Read(pMByteBuffer.dynBuff.buff, 0, (int)calcArchiveHeaderSizeNoFileHeader() - 4);
			pMByteBuffer.length = calcArchiveHeaderSizeNoFileHeader() - 4;
			// 读取 endian 
            pMByteBuffer.readUnsignedInt8(ref m_endian);
			pMByteBuffer.setEndian((Endian)m_endian);

			// 读取头部大小
            pMByteBuffer.readUnsignedInt32(ref m_headerSize);

			// 读取版本
            pMByteBuffer.readUnsignedInt32(ref m_version);
			// 读取文件数量
            pMByteBuffer.readUnsignedInt32(ref m_fileCount);

			// 读取整个头
			pMByteBuffer.clear ();
			fileHandle.Read(pMByteBuffer.dynBuff.buff, 0, (int)(m_headerSize - calcArchiveHeaderSizeNoFileHeader()));
			pMByteBuffer.length = m_headerSize - calcArchiveHeaderSizeNoFileHeader ();

			return true;
		}
コード例 #2
0
        // 读取一个表,仅仅读取表头
        private void readTable(TableID tableID, ByteBuffer bytes)
        {
            TableBase table = m_dicTable[tableID];

            table.m_byteBuffer = bytes;

            bytes.setEndian(Endian.LITTLE_ENDIAN);
            uint len = 0;

            bytes.readUnsignedInt32(ref len);
            uint          i    = 0;
            TableItemBase item = null;

            for (i = 0; i < len; i++)
            {
                //if (TableID.TABLE_OBJECT == tableID)
                //{
                //    item = new TableItemObject();
                //}
                item = new TableItemBase();
                item.parseHeaderByteBuffer(bytes);
                // 加载完整数据
                //loadOneTableOneItemAll(tableID, table, item);
                //if (TableID.TABLE_OBJECT == tableID)
                //{
                //item.parseAllByteBuffer<TableObjectItemBody>(bytes);
                //}
                table.m_List.Add(item);
            }
        }
コード例 #3
0
        public bool readArchiveFileHeader(FileStream fileHandle, ByteBuffer pMByteBuffer)
        {
            pMByteBuffer.clear();
            fileHandle.Read(pMByteBuffer.dynBuff.buff, 0, 4);
            pMByteBuffer.length = 4;
            string magic = "";

            pMByteBuffer.readMultiByte(ref magic, 4, Encoding.UTF8);
            if (magic != "asdf")                        // 检查 magic
            {
                return(false);
            }

            pMByteBuffer.clear();
            fileHandle.Read(pMByteBuffer.dynBuff.buff, 0, (int)calcArchiveHeaderSizeNoFileHeader() - 4);
            pMByteBuffer.length = calcArchiveHeaderSizeNoFileHeader() - 4;
            // 读取 endian
            pMByteBuffer.readUnsignedInt8(ref m_endian);
            pMByteBuffer.setEndian((Endian)m_endian);

            // 读取头部大小
            pMByteBuffer.readUnsignedInt32(ref m_headerSize);

            // 读取版本
            pMByteBuffer.readUnsignedInt32(ref m_version);
            // 读取文件数量
            pMByteBuffer.readUnsignedInt32(ref m_fileCount);

            // 读取整个头
            pMByteBuffer.clear();
            fileHandle.Read(pMByteBuffer.dynBuff.buff, 0, (int)(m_headerSize - calcArchiveHeaderSizeNoFileHeader()));
            pMByteBuffer.length = m_headerSize - calcArchiveHeaderSizeNoFileHeader();

            return(true);
        }
コード例 #4
0
ファイル: TableSys.cs プロジェクト: zhutaorun/unitygame
        // 读取一个表,仅仅读取表头
        private void readTable(TableID tableID, ByteBuffer bytes)
        {
            TableBase table = m_dicTable[tableID];
            table.m_byteBuffer = bytes;

            bytes.setEndian(Endian.LITTLE_ENDIAN);
            uint len = 0;
            bytes.readUnsignedInt32(ref len);
            uint i = 0;
            TableItemBase item = null;
            for (i = 0; i < len; i++)
            {
                //if (TableID.TABLE_OBJECT == tableID)
                //{
                //    item = new TableItemObject();
                //}
                item = new TableItemBase();
                item.parseHeaderByteBuffer(bytes);
                // 加载完整数据
                //loadOneTableOneItemAll(tableID, table, item);
                //if (TableID.TABLE_OBJECT == tableID)
                //{
                    //item.parseAllByteBuffer<TableObjectItemBody>(bytes);
                //}
                table.m_List.Add(item);
            }
        }