private unsafe int PatchLand(TileMatrix matrix, string dataPath, string indexPath) { using (FileStream fsData = new FileStream(dataPath, FileMode.Open, FileAccess.Read, FileShare.Read)) { using (FileStream fsIndex = new FileStream(indexPath, FileMode.Open, FileAccess.Read, FileShare.Read)) { BinaryReader indexReader = new BinaryReader(fsIndex); int count = (int)(indexReader.BaseStream.Length / 4); for (int i = 0; i < count; ++i) { int blockID = indexReader.ReadInt32(); int x = blockID / matrix.BlockHeight; int y = blockID % matrix.BlockHeight; fsData.Seek(4, SeekOrigin.Current); Tile[] tiles = new Tile[64]; fixed(Tile *pTiles = tiles) { _lread(fsData.Handle, pTiles, 192); } matrix.SetLandBlock(x, y, tiles); } return(count); } } }
private unsafe int PatchLand( TileMatrix matrix, string dataPath, string indexPath ) { using ( FileStream fsData = new FileStream( dataPath, FileMode.Open, FileAccess.Read, FileShare.Read ) ) { using ( FileStream fsIndex = new FileStream( indexPath, FileMode.Open, FileAccess.Read, FileShare.Read ) ) { BinaryReader indexReader = new BinaryReader( fsIndex ); int count = (int)(indexReader.BaseStream.Length / 4); for ( int i = 0; i < count; ++i ) { int blockID = indexReader.ReadInt32(); int x = blockID / matrix.BlockHeight; int y = blockID % matrix.BlockHeight; fsData.Seek( 4, SeekOrigin.Current ); Tile[] tiles = new Tile[64]; fixed ( Tile *pTiles = tiles ) { _lread( fsData.Handle, pTiles, 192 ); } matrix.SetLandBlock( x, y, tiles ); } return count; } } }