refactor and fix map chunk bulk parsing

This commit is contained in:
Andrew Kelley 2013-01-01 05:52:34 -05:00
parent c51cb26769
commit 3804c5cea6
2 changed files with 20 additions and 12 deletions

View File

@ -82,17 +82,15 @@ var readers = {
}; };
function readMapChunkBulk (buffer, offset) { function readMapChunkBulk (buffer, offset) {
var cursor = offset + 6; var cursor = offset + 7;
if (cursor > buffer.length) return null; if (cursor > buffer.length) return null;
var chunkCount = buffer.readInt16BE(buffer, offset); var chunkCount = buffer.readInt16BE(offset);
var dataSize = buffer.readInt32BE(buffer, offset + 2); var dataSize = buffer.readInt32BE(offset + 2);
var skyLightSent = !!buffer.readInt8(offset + 6);
var endCursor = cursor + 1 + dataSize + 12 * chunkCount; var endCursor = cursor + dataSize + 12 * chunkCount;
if (endCursor > buffer.length) return null; if (endCursor > buffer.length) return null;
var skyLightSent = !!buffer.readInt8(buffer, cursor);
cursor += 1;
var compressedChunkDataEnd = cursor + dataSize; var compressedChunkDataEnd = cursor + dataSize;
var compressedChunkData = buffer.slice(cursor, compressedChunkDataEnd); var compressedChunkData = buffer.slice(cursor, compressedChunkDataEnd);
cursor = compressedChunkDataEnd; cursor = compressedChunkDataEnd;
@ -100,13 +98,13 @@ function readMapChunkBulk (buffer, offset) {
var meta = []; var meta = [];
var i, chunkX, chunkZ, primaryBitMap, addBitMap; var i, chunkX, chunkZ, primaryBitMap, addBitMap;
for (i = 0; i < chunkCount; ++i) { for (i = 0; i < chunkCount; ++i) {
chunkX = buffer.readInt32BE(buffer, cursor); chunkX = buffer.readInt32BE(cursor);
cursor += 4; cursor += 4;
chunkZ = buffer.readInt32BE(buffer, cursor); chunkZ = buffer.readInt32BE(cursor);
cursor += 4; cursor += 4;
primaryBitMap = buffer.readUInt16BE(buffer, cursor); primaryBitMap = buffer.readUInt16BE(cursor);
cursor += 2; cursor += 2;
addBitMap = buffer.readUInt16BE(buffer, cursor); addBitMap = buffer.readUInt16BE(cursor);
cursor += 2; cursor += 2;
meta.push({ meta.push({

View File

@ -135,10 +135,20 @@
], ],
"56": [ "56": [
{ {
"name": "dummy", "name": "data",
"type": "mapChunkBulk" "type": "mapChunkBulk"
} }
], ],
"70": [
{
"name": "reason",
"type": "byte"
},
{
"name": "gameMode",
"type": "byte"
}
],
"103": [ "103": [
{ {
"name": "windowId", "name": "windowId",