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

View File

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