package Ġrs . em ulate . legacy . map Ċ Ċ import Ġio . netty . buffer . Byte Buf Ċ import Ġrs . em ulate . legacy . Indexed FileSystem Ċ import Ġrs . em ulate . legacy . map . Map Constants . HEIGHT _ MULTI PL IC AND Ċ import Ġrs . em ulate . legacy . map . Map Constants . LOW EST _ CONT IN U ED _ TYPE Ċ import Ġrs . em ulate . legacy . map . Map Constants . MAP _ INDEX Ċ import Ġrs . em ulate . legacy . map . Map Constants . MIN IMUM _ ATTRIBUTES _ TYPE Ċ import Ġrs . em ulate . legacy . map . Map Constants . MIN IMUM _ OVER LAY _ TYPE Ċ import Ġrs . em ulate . legacy . map . Map Constants . OR IENTATION _ COUNT Ċ import Ġrs . em ulate . legacy . map . Map Constants . PL ANE _ HEIGHT _ DI FFER ENCE Ċ import Ġrs . em ulate . legacy . map . Tile . Builder Ċ import Ġrs . em ulate . util . compression . gun zip Ċ import Ġrs . em ulate . util . world . Position Ċ Ċ /** Ċ Ġ* ĠA Ġdecoder Ġfor Ġa Ġ[ Map File ]. Ċ Ġ* Ċ Ġ* Ġ@ param Ġbuffer ĠThe ĠByte Buf Ġcontaining Ġthe ĠMap File Ġdata . ĠShould Ġnot Ġbe Ġcompressed . Ċ Ġ*/ Ċ class ĠMap File Decoder ( buffer : ĠByte Buf ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbuffer : ĠByte Buf Ġ= Ġbuffer . copy () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDe codes Ġthe Ġdata Ġinto Ġa Ġ[ Map File ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdecode (): ĠMap File Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplanes Ġ= ĠarrayOf Null s < Map Plane >( Map File . PLAN ES ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( level Ġin Ġ 0 Ġuntil ĠMap File . PLAN ES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplanes [ level ] Ġ= Ġdecode Plane ( planes , Ġlevel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠMap File ( planes . require No Null s ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDe codes Ġa Ġ[ Map Plane ] Ġwith Ġthe Ġspecified Ġlevel . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġplanes ĠThe Ġpreviously - decoded Ġ[ Map Plane ] s , Ġfor Ġcalculating Ġthe Ġheight Ġof Ġthe Ġtiles . ĊĠĠĠĠ Ġ* Ġ@ param Ġlevel ĠThe Ġheight Ġlevel . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe ĠMap Plane . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdecode Plane ( planes : ĠArray < Map Plane ? >, Ġlevel : ĠInt ): ĠMap Plane Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtiles Ġ= ĠArray ( Map File . WIDTH ) Ġ{ Ġx Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArray ( Map File . WIDTH ) Ġ{ Ġz Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecode Tile ( planes , Ġlevel , Ġx , Ġz ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠMap Plane ( level , Ġtiles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDe codes Ġthe Ġdata Ġinto Ġa Ġ[ Tile ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġplanes ĠThe Ġpreviously - decoded Ġ[ Map Plane ] s , Ġfor Ġcalculating Ġthe Ġheight Ġof Ġthe ĠTile . ĊĠĠĠĠ Ġ* Ġ@ param Ġlevel ĠThe Ġheight Ġlevel Ġthe ĠTile Ġis Ġon . ĊĠĠĠĠ Ġ* Ġ@ param Ġx ĠThe Ġx Ġcoordinate Ġof Ġthe ĠTile . ĊĠĠĠĠ Ġ* Ġ@ param Ġz ĠThe Ġz Ġcoordinate Ġof Ġthe ĠTile . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdecode Tile ( planes : ĠArray < Map Plane ? >, Ġlevel : ĠInt , Ġx : ĠInt , Ġz : ĠInt ): ĠTile Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠBuilder ( Position ( x , Ġz , Ġlevel )) ĊĊĠĠĠĠĠĠĠ Ġvar Ġtype : ĠInt ĊĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġbuffer . read Unsigned Byte (). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( level Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . height Ġ= ĠTile Utils . calculate Height ( x , Ġz ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbelow Ġ= Ġplanes [ level Ġ- Ġ 1 ] !!. get Tile ( x , Ġz ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . height Ġ= Ġbelow . height Ġ+ ĠPL ANE _ HEIGHT _ DI FFER ENCE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġbuffer . read Unsigned Byte (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbelow Ġ= Ġif Ġ( level Ġ== Ġ 0 ) Ġ 0 Ġelse Ġplanes [ level Ġ- Ġ 1 ] !!. get Tile ( x , Ġz ). height ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . height Ġ= Ġ( if Ġ( height Ġ== Ġ 1 ) Ġ 0 Ġelse Ġheight ) Ġ* ĠHEIGHT _ MULTI PL IC AND Ġ+ Ġbelow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Ġ<= ĠMIN IMUM _ OVER LAY _ TYPE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . overlay Ġ= Ġbuffer . read Byte (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . overlay Type Ġ= Ġ( type Ġ- ĠLOW EST _ CONT IN U ED _ TYPE ) Ġ/ ĠOR IENTATION _ COUNT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . overlay Orientation Ġ= Ġtype Ġ- ĠLOW EST _ CONT IN U ED _ TYPE Ġ% ĠOR IENTATION _ COUNT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Ġ<= ĠMIN IMUM _ ATTRIBUTES _ TYPE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . attributes Ġ= Ġtype Ġ- ĠMIN IMUM _ OVER LAY _ TYPE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . under lay Ġ= Ġtype Ġ- ĠMIN IMUM _ ATTRIBUTES _ TYPE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( type Ġ>= ĠLOW EST _ CONT IN U ED _ TYPE ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreates Ġa ĠMap File Decoder Ġfor Ġthe Ġspecified Ġmap Ġfile . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( fs : ĠIndexed FileSystem , Ġmap : ĠInt ): ĠMap File Decoder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġde compressed Ġ= Ġfs [ MAP _ INDEX , Ġmap ]. gun zip () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMap File Decoder ( de compressed ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ