package Ġorg . code to me . z ir con . api . resource Ċ Ċ import Ġorg . code to me . z ir con . api . font . Character Metadata Ċ import Ġorg . code to me . z ir con . api . font . Font Ċ import Ġorg . code to me . z ir con . internal . font . Font Loader Registry Ċ import Ġorg . code to me . z ir con . internal . font . Metadata Pick ing Strategy Ċ import Ġorg . code to me . z ir con . internal . util . rex . un Zip It Ċ import Ġorg . yaml . s na key aml . Yaml Ċ import Ġorg . yaml . s na key aml . constructor . Constructor Ċ import Ġjava . io . InputStream ĊĊ Ċ /** Ċ Ġ* ĠThis Ġenum Ġencaps ulates Ġthe Ġmeans Ġof Ġloading Ġgraphic Ġtile sets . Ċ Ġ* ĠYou Ġcan Ġeither Ġuse Ġa Ġbuilt - in Ġtile set Ġor Ġyou Ġcan Ġload Ġyour Ġown Ġusing Ġ[ Graphic Tile set Resource . load Graphic Tile set ] Ċ Ġ*/ Ċ enum Ġclass ĠGraph ic Tile set Resource ( private Ġval Ġtile setName : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath : ĠString Ġ= Ġ"/ graphic _ tile sets /${ tile setName }_${ size } x $ size . zip ") Ġ{ ĊĊĠĠĠ ĠNET H ACK _ 1 6 X 1 6 (" ne th ack ", Ġ 1 6 ); ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLoads Ġthis Ġbuilt - in Ġtile set Ġas Ġa Ġt iled Ġ[ Font ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġto Font ( metadata Pick ing Strategy : ĠMetadata Pick ing Strategy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache Fonts : ĠBoolean Ġ= Ġtrue ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Graphic Tile set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzip Stream Ġ= Ġthis . java Class . getResource AsStream ( path ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmetadata Pick ing Strategy Ġ= Ġmetadata Pick ing Strategy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache Fonts Ġ= Ġcache Fonts ) ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠLoads Ġa Ġtile set Ġfrom Ġthe Ġgiven Ġ` source Zip ` Ġas Ġa Ġt iled Ġ[ Font ]. ĊĠĠĠĠĠĠĠĠ Ġ* Ġ* Note Ġthat * Ġit Ġis Ġyour Ġresponsibility Ġto Ġsupply Ġthe Ġproper Ġparameters Ġfor ĊĠĠĠĠĠĠĠĠ Ġ* Ġthis Ġmethod ! ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠĠĠĠĠ Ġfun Ġload Graphic Tile set ( zip Stream : ĠInputStream , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmetadata Pick ing Strategy : ĠMetadata Pick ing Strategy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache Fonts : ĠBoolean Ġ= Ġtrue ): ĠFont Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiles Ġ= Ġun Zip It ( zip Stream , Ġcreate TempDir ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtile Info Source Ġ= Ġfiles . first Ġ{ Ġit . name Ġ== Ġ" tile info . yml " Ġ}. buffered Reader (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . read Text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġyaml Ġ= ĠYaml ( Constructor ( Tile Info :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtile Info : ĠTile Info Ġ= Ġyaml . load ( tile Info Source ) Ġas ĠTile Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġmulti - file Ġsupport ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġtile Info . files . first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmetadata Ġ= Ġfile . tiles . map Indexed Ġ{ Ġi , Ġtile Data : ĠTile Data Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( name , Ġ_, Ġchar ) Ġ= Ġtile Data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclean Name Ġ= Ġname . toLowerCase (). trim () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile Data . tags Ġ= Ġtile Data . tags ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus ( clean Name . split (" Ġ"). map Ġ{ Ġit Ġ}. toSet ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( char Ġ== Ġ' Ġ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile Data . char Ġ= Ġclean Name . first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile Data . x Ġ= Ġi . rem ( file . tiles Per Row ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile Data . y Ġ= Ġi . div ( file . tiles Per Row ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCharacter Metadata ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchar Ġ= Ġtile Data . char , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtags Ġ= Ġtile Data . tags , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġtile Data . x , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġtile Data . y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. groupBy Ġ{ Ġit . char Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġfigure Ġout Ġsomething Ġfor Ġmulti - file Ġtile sets ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFont Loader Registry . getCurrent Font Loader (). fetch T iled Font ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġtile Info . size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġtile Info . size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= Ġfiles . first Ġ{ Ġit . name Ġ== Ġfile . name Ġ}. inputStream (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache Fonts Ġ= Ġcache Fonts , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmetadata Ġ= Ġmetadata , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmetadata Pick ing Strategy Ġ= Ġmetadata Pick ing Strategy ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠTile Info ( var Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsize : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfiles : ĠList < Tile File >) Ġ{ ĊĠĠĠĠĠĠĠ Ġconstructor () Ġ: Ġthis ( name Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfiles Ġ= ĠlistOf ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠTile File ( var Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtiles Per Row : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtiles : ĠList < Tile Data >) Ġ{ ĊĠĠĠĠĠĠĠ Ġconstructor () Ġ: Ġthis ( name Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtiles Per Row Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtiles Ġ= ĠlistOf ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠTile Data ( var Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtags : ĠSet < String > Ġ= Ġset Of (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġchar : ĠChar Ġ= Ġ' Ġ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdescription : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġx : ĠInt Ġ= Ġ- 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġy : ĠInt Ġ= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconstructor () Ġ: Ġthis ( name Ġ= Ġ"") ĊĊĠĠĠ Ġ} Ċ } Ċ