package Ġground War . views Ċ Ċ import Ġground War . Land Combat Game Ċ import Ġground War . Player Id Ċ import Ġutilities . Draw Util Ċ import Ġjava . awt .* Ċ import Ġjava . awt . geom .* Ċ import Ġjava . awt . geom . Rectangle 2 D Ċ import Ġjavax . swing . J Component Ċ import Ġkotlin . math . round ToInt Ċ import Ġjava . io . File Ċ import Ġjavax . image io . Image IO Ċ import Ġjava . awt . Color ĊĊ Ċ class ĠWorld View ( var Ġgame : ĠLand Combat Game , Ġval Ġdim : ĠDimension Ġ= ĠDimension ( 4 0 0 , Ġ 2 5 0 )) Ġ: ĠJ Component () Ġ{ ĊĊĠĠĠ Ġval Ġo live Green Ġ= ĠColor ( 8 4 , Ġ 7 9 , Ġ 6 1 ) ĊĊĠĠĠ Ġval Ġoutline Ġ= Ġwhen Ġ( game . world . image File ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnull Ġ-> ĠColor . light Gray ĊĠĠĠĠĠĠĠ Ġ"" Ġ-> ĠColor . light Gray ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠColor . dark Gray ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġtext Colour Ġ= Ġwhen Ġ( outline ) Ġ{ ĊĠĠĠĠĠĠĠ ĠColor . light Gray Ġ-> ĠColor . white ĊĠĠĠĠĠĠĠ ĠColor . dark Gray Ġ-> ĠColor . black ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠColor . red ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġplayer Cols Ġ= Ġhash Map Of < Player Id , ĠColor >( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlayer Id . Neutral Ġto ĠColor . get H SB Color ( 0 . 3 f , Ġ 0 . 8 f , Ġ 0 . 8 f ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlayer Id . Blue Ġto ĠColor . get H SB Color ( 0 . 5 7 f , Ġ 0 . 9 f , Ġ 0 . 9 f ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlayer Id . Red Ġto ĠColor . get H SB Color ( 0 . 0 f , Ġ 0 . 9 f , Ġ 0 . 9 f ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlayer Id . Fog Ġto ĠColor . gray ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġpaint Component ( old : ĠGraphics ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġworld Ġ= Ġgame . world ĊĠĠĠĠĠĠĠ Ġval Ġg Ġ= Ġold Ġas ĠGraphics 2 D ĊĠĠĠĠĠĠĠ Ġg . set Rendering Hint ( Rendering Hints . KEY _ ANTI ALIAS ING , ĠRendering Hints . VALUE _ ANTI ALIAS _ ON ) ĊĠĠĠĠĠĠĠ Ġg . stroke Ġ= ĠBasic Stroke ( 5 f ) ĊĠĠĠĠĠĠĠ Ġwith ( world ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠ Ġval Ġb Ġ= Ġ( 1 Ġ+ ĠMath . sin ( game . n Ticks (). toDouble () Ġ* Ġ 0 . 0 1 Ġ* ĠMath . PI ). toFloat ()) Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġprintln ( b ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( image File Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimg Ġ= ĠImage IO . read ( File ( image File )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . drawImage ( img , Ġ 0 , Ġ 0 , Ġthis @ World View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . color Ġ= Ġo live Green ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . fillRect ( 0 , Ġ 0 , Ġget Width (), Ġget Height ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnow Ġneed Ġto Ġwork Ġout Ġa Ġscale ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Scale Ġ= Ġget Width () Ġ/ Ġparams . width . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Scale Ġ= Ġget Height () Ġ/ Ġparams . height . toDouble () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnow Ġscale Ġthings Ġaccordingly ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( r Ġin Ġroutes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . setColor ( outline ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . draw Line (( cities [ r . from City ]. location . x Ġ* Ġx Scale ). toInt (), Ġ( cities [ r . from City ]. location . y Ġ* Ġy Scale ). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( cities [ r . to City ]. location . x Ġ* Ġx Scale ). toInt (), Ġ( cities [ r . to City ]. location . y Ġ* Ġy Scale ). toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( i , Ġc ) Ġin Ġcities . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġel lipse : ĠShape Ġ= Ġif Ġ( c . fort ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRectangle 2 D . Double ( x Scale Ġ* Ġ( c . location . x Ġ- Ġc . radius ), Ġy Scale Ġ* Ġ( c . location . y Ġ- Ġc . radius ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ* Ġc . radius Ġ* Ġx Scale , Ġ 2 Ġ* Ġc . radius Ġ* Ġy Scale ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEl lipse 2 D . Double ( x Scale Ġ* Ġ( c . location . x Ġ- Ġc . radius ), Ġy Scale Ġ* Ġ( c . location . y Ġ- Ġc . radius ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ* Ġc . radius Ġ* Ġx Scale , Ġ 2 Ġ* Ġc . radius Ġ* Ġy Scale ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . setColor ( outline ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . draw ( ellipse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . setColor ( player Cols [ c . owner ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . fill ( ellipse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlabel Ġ= Ġif Ġ( c . owner Ġ== ĠPlayer Id . Fog ) Ġ" ?" Ġelse Ġ"${ c . pop . size . round ToInt () }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDraw Util (). centre String ( g , Ġlabel , Ġx Scale Ġ* Ġc . location . x , Ġy Scale Ġ* Ġc . location . y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDraw Util (). centre String ( g , Ġc . name , Ġx Scale Ġ* Ġ( c . location . x Ġ+ Ġparams . radius Ġ+ Ġ 2 0 ), Ġy Scale Ġ* Ġ( c . location . y Ġ+ Ġparams . radius Ġ+ Ġ 2 0 ), Ġtext Colour ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( t Ġin Ġcurrent Trans its ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Location Ġ= Ġt . current Position ( game . n Ticks (), Ġcities ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġel lipse Ġ= ĠEl lipse 2 D . Double ( x Scale Ġ* Ġ( current Location . x Ġ- Ġ 3 . 0 ), Ġy Scale Ġ* Ġ( current Location . y Ġ- Ġ 3 . 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ* Ġ 3 . 0 Ġ* Ġx Scale , Ġ 2 Ġ* Ġ 3 . 0 Ġ* Ġy Scale ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . setColor ( player Cols [ t . player Id ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . draw ( ellipse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . fill ( ellipse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlabel Ġ= Ġ"${ t . force . size . round ToInt () }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg . setColor ( text Colour ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDraw Util (). centre String ( g , Ġlabel , Ġx Scale Ġ* Ġcurrent Location . x , Ġy Scale Ġ* Ġcurrent Location . y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget PreferredSize (): ĠDimension Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdim ĊĠĠĠ Ġ} Ċ } Ċ