readBytes(4); if($magic !== 'IpaM') { throw new MapException('Invalid MapInfo magic header'); } $this->version = $parser->readUInt32(); if ($this->version >= 0x18) { $this->unknown1 = $parser->readUInt32(); $this->unknown2 = $parser->readUInt32(); } $this->width = $parser->readUInt32(); $this->height = $parser->readUInt32(); $this->smallPreviewType = $parser->readUInt32(); if ($this->smallPreviewType == 2) { $this->smallPreviewPath = $parser->readCString(); } $this->largePreviewType = $parser->readUInt32(); if ($this->largePreviewType == 2) { $this->largePreviewPath = $parser->readCString(); } if ($this->version >= 0x1f) { $this->unknown3 = $parser->readCString(); } if ($this->version >= 0x26) { $this->unknown4 = $parser->readCString(); } if ($this->version >= 0x1f) { $this->unknown5 = $parser->readUInt32(); } $this->unknown6 = $parser->readUInt32(); $this->fogType = $parser->readCString(); $this->tileSet = $parser->readCString(); $this->cameraLeft = $parser->readUInt32(); $this->cameraBottom = $parser->readUInt32(); $this->cameraRight = $parser->readUInt32(); $this->cameraTop = $parser->readUInt32(); $this->baseHeight = $parser->readUInt32() / 4096; // ------------------------------------------------------------------------------------------------------------- $this->loadScreenType = $parser->readUInt32(); $this->loadScreenPath = $parser->readCString(); $this->unknown7 = $parser->readBytes($parser->readUInt16()); $this->loadScreenScaling = $parser->readUInt32(); $this->textPosition = $parser->readUInt32(); $this->textPositionOffsetX = $parser->readUInt32(); $this->textPositionOffsetY = $parser->readUInt32(); $this->textPositionSizeX = $parser->readUInt32(); $this->textPositionSizeY = $parser->readUInt32(); $this->dataFlags = $parser->readUInt32(); $this->unknown8 = $parser->readUInt32(); if ($this->version >= 0x19) { $this->unknown9 = $parser->readBytes(8); } if ($this->version >= 0x1f) { $this->unknown10 = $parser->readBytes(9); } if ($this->version >= 0x20) { $this->unknown11 = $parser->readBytes(4); } // there are more fields, but the implementation of them have been ommited } // ----------------------------------------------------------------------------------------------------------------- /** * @return int */ public function getVersion() { return $this->version; } /** * @return mixed */ public function getUnknown1() { return $this->unknown1; } /** * @return mixed */ public function getUnknown2() { return $this->unknown2; } /** * @return int */ public function getWidth() { return $this->width; } /** * @return int */ public function getHeight() { return $this->height; } /** * @return int */ public function getSmallPreviewType() { return $this->smallPreviewType; } /** * @return string */ public function getSmallPreviewPath() { return $this->smallPreviewPath; } /** * @return int */ public function getLargePreviewType() { return $this->largePreviewType; } /** * @return string */ public function getLargePreviewPath() { return $this->largePreviewPath; } /** * @return string */ public function getUnknown3() { return $this->unknown3; } /** * @return string */ public function getUnknown4() { return $this->unknown4; } /** * @return mixed */ public function getUnknown5() { return $this->unknown5; } /** * @return mixed */ public function getUnknown6() { return $this->unknown6; } /** * @return string */ public function getFogType() { return $this->fogType; } /** * @return string */ public function getTileSet() { return $this->tileSet; } /** * @return int */ public function getCameraLeft() { return $this->cameraLeft; } /** * @return int */ public function getCameraBottom() { return $this->cameraBottom; } /** * @return int */ public function getCameraRight() { return $this->cameraRight; } /** * @return int */ public function getCameraTop() { return $this->cameraTop; } /** * @return int */ public function getBaseHeight() { return $this->baseHeight; } /** * @return int */ public function getLoadScreenType() { return $this->loadScreenType; } /** * @return string */ public function getLoadScreenPath() { return $this->loadScreenPath; } /** * @return string */ public function getUnknown7() { return $this->unknown7; } /** * @return int */ public function getLoadScreenScaling() { return $this->loadScreenScaling; } /** * @return int */ public function getTextPosition() { return $this->textPosition; } /** * @return int */ public function getTextPositionOffsetX() { return $this->textPositionOffsetX; } /** * @return int */ public function getTextPositionOffsetY() { return $this->textPositionOffsetY; } /** * @return int */ public function getTextPositionSizeX() { return $this->textPositionSizeX; } /** * @return int */ public function getTextPositionSizeY() { return $this->textPositionSizeY; } /** * @return int */ public function getDataFlags() { return $this->dataFlags; } /** * @return mixed */ public function getUnknown8() { return $this->unknown8; } /** * @return string */ public function getUnknown9() { return $this->unknown9; } /** * @return string */ public function getUnknown10() { return $this->unknown10; } /** * @return string */ public function getUnknown11() { return $this->unknown11; } }