package Ġio . n sh usa . app . os dc . task Ċ Ċ import Ġio . n sh usa . app . os dc . util . Dialog ue Ċ import Ġjavafx . application . Platform Ċ import Ġjavafx . concurrent . Task Ċ import Ġnet . open rs . cache . Cache Ċ import Ġnet . open rs . cache . Container Ċ import Ġnet . open rs . cache . File Store Ċ import Ġnet . open rs . cache . region . Region Ċ import Ġnet . open rs . cache . sprite . Sprites Ċ import Ġnet . open rs . cache . sprite . Textures Ċ import Ġnet . open rs . cache . type . TypeList Manager Ċ import Ġnet . open rs . cache . util . X TE A Manager Ċ import Ġjava . awt . Color Ċ import Ġjava . awt . Image Ċ import Ġjava . awt . image . Buffered Image Ċ import Ġjava . nio . file . Path Ċ import Ġjava . util . ArrayList Ċ import Ġjava . util . HashMap Ċ import Ġjavax . image io . Image IO Ċ Ċ class ĠMap Image Task ( val Ġcache Path : ĠPath , Ġval Ġx tea Path : ĠPath , Ġval Ġoutput : ĠPath ) Ġ: ĠTask < Boolean >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcall (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCache ( File Store . open ( cache Path . to File ())). use Ġ{ Ġcache Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit ( cache ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform . run Later Ġ{ ĠDialog ue . show Exception (" Error ", Ġex ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit ( cache : ĠCache ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! X TE A Manager . load ( x tea Path . to File ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠType List Manager . initialize ( cache ) ĊĠĠĠĠĠĠĠ ĠText ures . initialize ( cache ) ĊĠĠĠĠĠĠĠ ĠSpr ites . initialize ( cache ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġlowest X : ĠRegion ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġlowest Y : ĠRegion ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġhighest X : ĠRegion ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġhighest Y : ĠRegion ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠMAX _ REGION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregion Ġ= ĠRegion ( i ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġcache . getFile Id ( 5 , Ġregion . terrain Identifier ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġloc Ġ= Ġcache . getFile Id ( 5 , Ġregion . locations Identifier ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= Ġ( i Ġ+ Ġ 1 ). toDouble () Ġ/ ĠMAX _ REGION Ġ* Ġ 1 0 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Message ( String . format (" Initializing ... Ġ%. 2 f % s ", Ġprogress , Ġ"% ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Progress (( i Ġ+ Ġ 1 ). toDouble (), ĠMAX _ REGION . toDouble ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( map Ġ== Ġ- 1 Ġ&& Ġloc Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( map Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregion . load Terrain ( cache . read ( 5 , Ġmap ). data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( loc Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= Ġcache . store . read ( 5 , Ġloc ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregion . load Locations ( Container . decode ( buffer , ĠX TE A Manager . lookup ( i )). data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( buffer . limit () Ġ!= Ġ 3 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflags . add ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġregions . add ( region ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lowest X Ġ== Ġnull Ġ|| Ġregion . base X Ġ< Ġlowest X . base X ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlowest X Ġ= Ġregion ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( highest X Ġ== Ġnull Ġ|| Ġregion . base X Ġ> Ġhighest X . base X ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhighest X Ġ= Ġregion ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lowest Y Ġ== Ġnull Ġ|| Ġregion . base Y Ġ< Ġlowest Y . base Y ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlowest Y Ġ= Ġregion ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( highest Y Ġ== Ġnull Ġ|| Ġregion . base Y Ġ> Ġhighest Y . base Y ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhighest Y Ġ= Ġregion ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmap scene Ġ= ĠSpr ites . get Sprite (" map scene ") ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġmap scene . size ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Icons . put ( i , Ġmap scene . get Frame ( i ). getS ca led Instance ( 4 , Ġ 5 , Ġ 0 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( lowest X Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap Image Task . lowest X Ġ= Ġlowest X ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( lowest Y Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap Image Task . lowest Y Ġ= Ġlowest Y ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( highest X Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap Image Task . highest X Ġ= Ġhighest X ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( highest Y Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap Image Task . highest Y Ġ= Ġhighest Y ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmin X Ġ= Ġlowest X . base X ĊĠĠĠĠĠĠĠ Ġval Ġmin Y Ġ= Ġlowest Y . base Y ĊĊĠĠĠĠĠĠĠ Ġval Ġmax X Ġ= Ġhighest X . base X Ġ+ Ġ 6 4 ĊĠĠĠĠĠĠĠ Ġval Ġmax Y Ġ= Ġhighest Y . base Y Ġ+ Ġ 6 4 ĊĊĠĠĠĠĠĠĠ Ġvar Ġdim X Ġ= Ġmax X Ġ- Ġmin X ĊĠĠĠĠĠĠĠ Ġvar Ġdim Y Ġ= Ġmax Y Ġ- Ġmin Y ĊĊĠĠĠĠĠĠĠ Ġval Ġbound X Ġ= Ġdim X Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġbound Y Ġ= Ġdim Y Ġ- Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġdim X Ġ*= ĠMAP _ SCALE ĊĠĠĠĠĠĠĠ Ġdim Y Ġ*= ĠMAP _ SCALE ĊĊĠĠĠĠĠĠĠ Ġval Ġbase Image Ġ= ĠBufferedImage ( dim X , Ġdim Y , ĠBufferedImage . TYPE _ INT _ RGB ) ĊĠĠĠĠĠĠĠ Ġval Ġfull Image Ġ= ĠBufferedImage ( dim X , Ġdim Y , ĠBufferedImage . TYPE _ INT _ RGB ) ĊĊĠĠĠĠĠĠĠ Ġval Ġgraphics Ġ= Ġfull Image . create Graphics () ĊĊĠĠĠĠĠĠĠ Ġ// Draw ĠUnder lay ĠMap Ġ- ĠPass Ġ 1 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġregions . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregion Ġ= Ġregions [ i ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase X Ġ= Ġregion . base X ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase Y Ġ= Ġregion . base Y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw Base X Ġ= Ġbase X Ġ- Ġlowest X . base X ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw Base Y Ġ= Ġhighest Y . base Y Ġ- Ġbase Y ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġ 0 .. 6 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw X Ġ= Ġdraw Base X Ġ+ Ġx ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( y Ġin Ġ 0 .. 6 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw Y Ġ= Ġdraw Base Y Ġ+ Ġ( 6 3 Ġ- Ġy ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoverlay Id Ġ= Ġregion . get Overlay Id ( 0 , Ġx , Ġy ) Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunder lay Id Ġ= Ġregion . get Under lay Id ( 0 , Ġx , Ġy ) Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrgb Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( overlay Id Ġ> Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoverlay Ġ= ĠType List Manager . lookup Over ( overlay Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! overlay . is Hide Under lay Ġ&& Ġunder lay Id Ġ> Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunder lay Ġ= ĠType List Manager . lookup Under ( under lay Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrgb Ġ= Ġunder lay . rgb ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrgb Ġ= ĠColor . CY AN . rgb ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( under lay Id Ġ> Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunder lay Ġ= ĠType List Manager . lookup Under ( under lay Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrgb Ġ= Ġunder lay . rgb ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrgb Ġ= ĠColor . CY AN . rgb ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Map Square ( base Image , Ġdraw X , Ġdraw Y , Ġrgb ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= Ġ( i Ġ+ Ġ 1 ). toDouble () Ġ/ Ġregions . size Ġ* Ġ 1 0 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Message ( String . format (" Drawing Ġ[ 1 / 6 ] Ġ%. 2 f % s ", Ġprogress , Ġ"% ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Progress (( i Ġ+ Ġ 1 ). toDouble (), Ġregions . size . toDouble ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Blend ĠUnder lay ĠMap Ġ- ĠPass Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġregions . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregion Ġ= Ġregions [ i ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase X Ġ= Ġregion . base X ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase Y Ġ= Ġregion . base Y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw Base X Ġ= Ġbase X Ġ- Ġlowest X . base X ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw Base Y Ġ= Ġhighest Y . base Y Ġ- Ġbase Y ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġ 0 .. 6 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw X Ġ= Ġdraw Base X Ġ+ Ġx ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( y Ġin Ġ 0 .. 6 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw Y Ġ= Ġdraw Base Y Ġ+ Ġ( 6 3 Ġ- Ġy ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġc Ġ= Ġget Map Square ( base Image , Ġdraw X , Ġdraw Y ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c Ġ== ĠColor . CY AN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġt Red Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġt Green Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġt Blue Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax DY Ġ= ĠMath . min ( bound Y , Ġdraw Y Ġ+ Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax DX Ġ= ĠMath . min ( bound X , Ġdraw X Ġ+ Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin DY Ġ= ĠMath . max ( 0 , Ġdraw Y Ġ- Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin DX Ġ= ĠMath . max ( 0 , Ġdraw X Ġ- Ġ 3 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( dy Ġin Ġmin DY Ġuntil Ġmax DY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( dx Ġin Ġmin DX Ġuntil Ġmax DX ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc Ġ= Ġget Map Square ( base Image , Ġdx , Ġdy ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c Ġ== ĠColor . CY AN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt Red Ġ+= Ġc . red ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt Green Ġ+= Ġc . green ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt Blue Ġ+= Ġc . blue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc Ġ= ĠColor ( t Red Ġ/ Ġcount , Ġt Green Ġ/ Ġcount , Ġt Blue Ġ/ Ġcount ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Map Square ( full Image , Ġdraw X , Ġdraw Y , Ġc . rgb ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= Ġ( i Ġ+ Ġ 1 ). toDouble () Ġ/ Ġregions . size Ġ* Ġ 1 0 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Message ( String . format (" Drawing Ġ[ 2 / 6 ] Ġ%. 2 f % s ", Ġprogress , Ġ"% ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Progress (( i Ġ+ Ġ 1 ). toDouble (), Ġregions . size . toDouble ()) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Draw ĠOverlay ĠMap Ġ- ĠPass Ġ 3 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġregions . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregion Ġ= Ġregions [ i ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase X Ġ= Ġregion . base X ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase Y Ġ= Ġregion . base Y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw Base X Ġ= Ġbase X Ġ- Ġlowest X . base X ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw Base Y Ġ= Ġhighest Y . base Y Ġ- Ġbase Y ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġ 0 .. 6 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw X Ġ= Ġdraw Base X Ġ+ Ġx ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( y Ġin Ġ 0 .. 6 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw Y Ġ= Ġdraw Base Y Ġ+ Ġ( 6 3 Ġ- Ġy ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoverlay Id Ġ= Ġregion . get Overlay Id ( 0 , Ġx , Ġy ) Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrgb Ġ= Ġ- 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( overlay Id Ġ> Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoverlay Ġ= ĠType List Manager . lookup Over ( overlay Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( overlay . is Hide Under lay ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrgb Ġ= Ġoverlay . rgb ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( overlay . secondary Rgb Ġ> Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrgb Ġ= Ġoverlay . secondary Rgb ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( overlay . texture Ġ> Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrgb Ġ= ĠText ures . get Colors ( overlay . texture ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rgb Ġ> Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Map Square ( full Image , Ġdraw X , Ġdraw Y , Ġrgb ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= Ġ( i Ġ+ Ġ 1 ). toDouble () Ġ/ Ġregions . size Ġ* Ġ 1 0 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Message ( String . format (" Drawing Ġ[ 3 / 6 ] Ġ%. 2 f % s ", Ġprogress , Ġ"% ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Progress (( i Ġ+ Ġ 1 ). toDouble (), Ġregions . size . toDouble ()) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Draw ĠLoc ations ĠMap Ġ- ĠPass Ġ 4 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġregions . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregion Ġ= Ġregions [ i ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase X Ġ= Ġregion . base X ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase Y Ġ= Ġregion . base Y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw Base X Ġ= Ġbase X Ġ- Ġlowest X . base X ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw Base Y Ġ= Ġhighest Y . base Y Ġ- Ġbase Y ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( location Ġin Ġregion . locations ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . position . height Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĉ continue ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Type Ġ= ĠType List Manager . lookup Object ( location . id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal X Ġ= Ġlocation . position . x Ġ- Ġregion . base X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal Y Ġ= Ġlocation . position . y Ġ- Ġregion . base Y ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw X Ġ= Ġdraw Base X Ġ+ Ġlocal X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw Y Ġ= Ġdraw Base Y Ġ+ Ġ( 6 3 Ġ- Ġlocal Y ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( obj Type . map scene Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsprite Image Ġ= Ġmap Icons [ obj Type . map scene ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraphics . drawImage ( sprite Image , Ġdraw X Ġ* ĠMAP _ SCALE , Ġdraw Y Ġ* ĠMAP _ SCALE , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= Ġ( i Ġ+ Ġ 1 ). toDouble () Ġ/ Ġregions . size Ġ* Ġ 1 0 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Message ( String . format (" Drawing Ġ[ 4 / 6 ] Ġ%. 2 f % s ", Ġprogress , Ġ"% ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Progress (( i Ġ+ Ġ 1 ). toDouble (), Ġregions . size . toDouble ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Draw ĠIcons ĠMap Ġ- ĠPass Ġ 5 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġregions . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregion Ġ= Ġregions [ i ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase X Ġ= Ġregion . base X ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase Y Ġ= Ġregion . base Y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw Base X Ġ= Ġbase X Ġ- Ġlowest X . base X ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw Base Y Ġ= Ġhighest Y . base Y Ġ- Ġbase Y ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( location Ġin Ġregion . locations ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . position . height Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĉ continue ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Type Ġ= ĠType List Manager . lookup Object ( location . id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal X Ġ= Ġlocation . position . x Ġ- Ġregion . base X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal Y Ġ= Ġlocation . position . y Ġ- Ġregion . base Y ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw X Ġ= Ġdraw Base X Ġ+ Ġlocal X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw Y Ġ= Ġdraw Base Y Ġ+ Ġ( 6 3 Ġ- Ġlocal Y ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( obj Type . map Icon Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarea Type Ġ= ĠType List Manager . lookup Area ( obj Type . map Icon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsprite Image Ġ= ĠSpr ites . get Sprite ( area Type . sprite Id ). get Frame ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraphics . drawImage ( sprite Image , Ġ( draw X Ġ- Ġ 1 ) Ġ* ĠMAP _ SCALE , Ġ( draw Y Ġ- Ġ 1 ) Ġ* ĠMAP _ SCALE , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= Ġ( i Ġ+ Ġ 1 ). toDouble () Ġ/ Ġregions . size Ġ* Ġ 1 0 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Message ( String . format (" Drawing Ġ[ 5 / 6 ] Ġ%. 2 f % s ", Ġprogress , Ġ"% ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Progress (( i Ġ+ Ġ 1 ). toDouble (), Ġregions . size . toDouble ()) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ// Label / Outline / Fill Ġregions Ġ- ĠPass Ġ 6 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġregions . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregion Ġ= Ġregions [ i ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase X Ġ= Ġregion . base X ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase Y Ġ= Ġregion . base Y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw Base X Ġ= Ġbase X Ġ- Ġlowest X . base X ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdraw Base Y Ġ= Ġhighest Y . base Y Ġ- Ġbase Y ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( LABEL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraphics . color Ġ= ĠColor . RED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraphics . draw String ( region . region ID . toString (), Ġdraw Base X Ġ* ĠMAP _ SCALE , Ġdraw Base Y Ġ* ĠMAP _ SCALE Ġ+ Ġgraphics . font Metrics . height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( OUT LINE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraphics . color Ġ= ĠColor . RED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraphics . draw Rect ( draw Base X Ġ* ĠMAP _ SCALE , Ġdraw Base Y Ġ* ĠMAP _ SCALE , Ġ 6 4 Ġ* ĠMAP _ SCALE , Ġ 6 4 Ġ* ĠMAP _ SCALE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( FILL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( flags . contains ( region . region ID )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraphics . color Ġ= ĠColor ( 2 5 5 , Ġ 0 , Ġ 0 , Ġ 8 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraphics . fillRect ( draw Base X Ġ* ĠMAP _ SCALE , Ġdraw Base Y Ġ* ĠMAP _ SCALE , Ġ 6 4 Ġ* ĠMAP _ SCALE , Ġ 6 4 Ġ* ĠMAP _ SCALE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= Ġ( i Ġ+ Ġ 1 ). toDouble () Ġ/ Ġregions . size Ġ* Ġ 1 0 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Message ( String . format (" Drawing Ġ[ 6 / 6 ] Ġ%. 2 f % s ", Ġprogress , Ġ"% ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Progress (( i Ġ+ Ġ 1 ). toDouble (), Ġregions . size . toDouble ()) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate Message (" Writing Ġfull _ image . png Ġfile ") ĊĊĠĠĠĠĠĠĠ Ġgraphics . dispose () ĊĊĠĠĠĠĠĠĠ ĠImage IO . write ( full Image , Ġ" png ", Ġoutput . resolve (" full _ image . png "). to File ()) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Map Square ( image : Buffered Image , Ġx : ĠInt , Ġy : ĠInt , Ġrgb : Int ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġx Scale Ġ= Ġx Ġ* ĠMAP _ SCALE ĊĠĠĠĠĠĠĠ Ġval Ġy Scale Ġ= Ġy Ġ* ĠMAP _ SCALE ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( dx Ġin Ġ 0 Ġuntil ĠMAP _ SCALE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( dy Ġin Ġ 0 Ġuntil ĠMAP _ SCALE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage . set RGB ( x Scale Ġ+ Ġdx , Ġy Scale Ġ+ Ġdy , Ġrgb ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Map Square ( image : Buffered Image , Ġx : Int , Ġy : Int ) Ġ: ĠColor Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠColor ( image . get RGB ( x Ġ* ĠMAP _ SCALE , Ġy Ġ* ĠMAP _ SCALE )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġlowest X : ĠRegion ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġlowest Y : ĠRegion ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġhighest X : ĠRegion ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġhighest Y : ĠRegion ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġregions Ġ= ĠArrayList < Region >() ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġflags Ġ= ĠArrayList < Int >() ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmap Icons Ġ= ĠHashMap < Int , ĠImage >() ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠMAX _ REGION Ġ= Ġ 3 2 7 6 8 ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠMAP _ SCALE Ġ= Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLABEL Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠOUT LINE Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠF ILL Ġ= Ġtrue ĊĠĠĠ Ġ} Ċ Ċ }