Beispiel #1
0
        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;
                }
            }
        }
Beispiel #2
0
        private GeoBlock readBlock(int blockX, int blockY, GeoReader reader, bool l2j)
        {
            int geoX = GeoEngine.getGeoXY(_regionX, blockX);
            int geoY = GeoEngine.getGeoXY(_regionY, blockY);
            int type = getType(reader, l2j);

            switch (type)
            {
            case GeoEngine.GEO_BLOCK_TYPE_FLAT:
                return(new GeoBlockFlat(reader, geoX, geoY, l2j).setRegion(this));

            case GeoEngine.GEO_BLOCK_TYPE_COMPLEX:
                return(new GeoBlockComplex(reader, geoX, geoY, l2j).setRegion(this));

            case GeoEngine.GEO_BLOCK_TYPE_MULTILAYER:
                return(new GeoBlockMultiLayer(reader, geoX, geoY, l2j).setRegion(this));

            default:
                throw new ArgumentException("Unknown type: " + type);
            }
        }
Beispiel #3
0
 public int getGeoY(int blockY)
 {
     return(GeoEngine.getGeoXY(getRegionY(), blockY));
 }
Beispiel #4
0
 public int getGeoX(int blockX)
 {
     return(GeoEngine.getGeoXY(getRegionX(), blockX));
 }