public bool dataEqualFor(GeoBlock block) { GeoByteBuffer geoBlockData = _geoBlocksData[block.getBlockX(), block.getBlockY()]; geoBlockData.clear(); return(block.dataEquals(geoBlockData)); }
public GeoRegion(int regionX, int regionY, GeoReader reader, bool l2j, string file) { _file = file; _regionX = regionX; _regionY = regionY; _minGeoX = GeoEngine.getGeoXY(regionX, 0); _maxGeoX = GeoEngine.getGeoXY(regionX, GeoEngine.GEO_REGION_SIZE - 1); _minGeoY = GeoEngine.getGeoXY(regionY, 0); _maxGeoY = GeoEngine.getGeoXY(regionY, GeoEngine.GEO_REGION_SIZE - 1); _geoBlocks = new GeoBlock[GeoEngine.GEO_REGION_SIZE, GeoEngine.GEO_REGION_SIZE]; _geoBlocksData = new GeoByteBuffer[GeoEngine.GEO_REGION_SIZE, GeoEngine.GEO_REGION_SIZE]; // GeoBlock block; GeoByteBuffer writer; for (int blockX = 0, blockY; blockX < GeoEngine.GEO_REGION_SIZE; blockX++) { for (blockY = 0; blockY < GeoEngine.GEO_REGION_SIZE; blockY++) { block = readBlock(blockX, blockY, reader, l2j); _geoBlocks[blockX, blockY] = block; writer = GeoByteBuffer.allocate(block.getRequiredCapacity(true)); block.writeTo(writer, true); _geoBlocksData[blockX, blockY] = writer; } } }
public void restoreBlock(GeoBlock block) { int blockX = block.getBlockX(); int blockY = block.getBlockY(); GeoByteBuffer reader = _geoBlocksData[blockX, blockY]; reader.clear(); block.unload(); _geoBlocks[blockX, blockY] = readBlock(blockX, blockY, reader, true); }