import Ġcom . so y wiz . k lock .* Ċ import Ġcom . so y wiz . k ore v .* Ċ import Ġcom . so y wiz . k orge .* Ċ import Ġcom . so y wiz . k orge . component . dock ing .* Ċ import Ġcom . so y wiz . k orge . scene .* Ċ import Ġcom . so y wiz . k orge . t iled .* Ċ import Ġcom . so y wiz . k orge . t ween .* Ċ import Ġcom . so y wiz . k orge . view .* Ċ import Ġcom . so y wiz . k orge . view . animation .* Ċ import Ġcom . so y wiz . k orge . view . camera .* Ċ import Ġcom . so y wiz . k orge . view . filter .* Ċ import Ġcom . so y wiz . k orge . view . t ween .* Ċ import Ġcom . so y wiz . kor im . atlas .* Ċ import Ġcom . so y wiz . kor im . color .* Ċ import Ġcom . so y wiz . kor im . format .* Ċ import Ġcom . so y wiz . kor io . file . std .* Ċ import Ġcom . so y wiz . k orm a . geom .* Ċ import Ġcom . so y wiz . k orm a . interpolation .* Ċ Ċ suspend Ġfun Ġmain () Ġ= ĠK orge ( width Ġ= Ġ 5 1 2 , Ġheight Ġ= Ġ 5 1 2 , Ġbgcolor Ġ= ĠColors [" # 2 b 2 b 2 b "]) Ġ{ ĊĠĠĠ Ġinjector . map Prototype Ġ{ ĠR pg In game Scene () Ġ} ĊĊĠĠĠ Ġval Ġroot Scene Container Ġ= Ġscene Container () ĊĊĠĠĠ Ġroot Scene Container . change To < R pg In game Scene >( ĊĠĠĠĠĠĠĠ Ġ// transition Ġ= ĠMask Transition ( transition Ġ= ĠTransition Filter . Transition . C IRC ULAR , Ġreversed Ġ= Ġfalse , Ġsmooth Ġ= Ġtrue ), Ċĉ ĉ transition Ġ= ĠAlpha Transition , ĊĠĠĠĠĠĠĠ Ġtime Ġ= Ġ 0 . 5 . seconds ĊĠĠĠ Ġ) Ċ } Ċ Ċ class ĠR pg In game Scene Ġ: ĠScene () Ġ{ ĊĠĠĠ Ġval Ġatlas Ġ= ĠMutable Atlas Unit ( 2 0 4 8 , Ġ 2 0 4 8 ) ĊĠĠĠ Ġlateinit Ġvar Ġtile map : ĠT iled Map ĊĠĠĠ Ġlateinit Ġvar Ġcharacters : ĠImage Data Container ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun ĠContainer . scene Init () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġsw Ġ= ĠStop watch (). start () ĊĊĉ ĉ println (" start Ġresources Ġloading ...") ĊĊĠĠĠĠĠĠĠ Ġtile map Ġ= Ġresources V fs [" Basic Tile map / unt itled . tm x "]. read T iled Map ( atlas Ġ= Ġatlas ) ĊĠĠĠĠĠĠĠ Ġcharacters Ġ= Ġresources V fs [" v amp ire . ase "]. read ImageData Container ( ASE , Ġatlas Ġ= Ġatlas ) ĊĊĠĠĠĠĠĠĠ Ġprintln (" loaded Ġresources Ġin Ġ${ sw . elapsed }") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun ĠContainer . scene Main () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontainer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale ( 2 . 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġcharacter : ĠImage Data View ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġt iled MapView : ĠT iled MapView ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcamera Container Ġ= Ġcamera Container ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 5 6 . 0 , Ġ 2 5 6 . 0 , Ġclip Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclamp To Bounds Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt iled MapView Ġ= Ġt iled MapView ( tile map , Ġsmoothing Ġ= Ġfalse , Ġshow Shapes Ġ= Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" t iled MapView [\" start \"] =${ t iled MapView [" start "]. first OrNull }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnp cs Ġ= Ġt iled MapView . t iled Map . data . getObject ByType (" npc ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( obj Ġin Ġt iled MapView . t iled Map . data . object Layers . objects ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("- Ġobj Ġ= Ġ$ obj ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" NPC S =$ np cs ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( t iled MapView . first Desc endant With Ġ{ Ġit . get Prop String (" type ") Ġ== Ġ" start " Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Pos Ġ= Ġt iled MapView [" start "]. first OrNull ?. pos Ġ?: ĠPoint ( 5 0 , Ġ 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcharacters Layer Ġ= Ġt iled MapView [" characters "]. first Ġas ĠContainer ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" characters Layer =$ characters Layer ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcharacters Layer . keep Children Sorted By Y () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( obj Ġin Ġt iled MapView . t iled Map . data . getObject ByType (" npc ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnpc Ġ= Ġcharacters Layer . image Data View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcharacters [ obj . str (" skin ") ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" down ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaying Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsmoothing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxy ( obj . x , Ġobj . y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcharacters Layer . image Data View ( characters [" v amp ire "], Ġ" right ", Ġplaying Ġ= Ġfalse , Ġsmoothing Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxy ( start Pos ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Container . camera Viewport Bounds . copyFrom ( t iled MapView . getLocal Bounds Optim ized ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstage !!. control With Keyboard ( character , Ġt iled MapView ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Container . follow ( character , Ġset Immediate ly Ġ= Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// camera Container . t ween Camera ( camera Container . get Camera Rect ( Rectangle ( 2 0 0 , Ġ 2 0 0 , Ġ 1 0 0 , Ġ 1 0 0 ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠStage . control With Keyboard ( Ċ ĉ char : ĠImage Data View , Ċ ĉ collider : ĠHit Test able , Ċ ĉ up : ĠKey Ġ= ĠKey . UP , Ċ ĉ right : ĠKey Ġ= ĠKey . RIGHT , Ċ ĉ down : ĠKey Ġ= ĠKey . DOWN , Ċ ĉ left : ĠKey Ġ= ĠKey . LEFT , Ċ ) Ġ{ Ċ ĉ add Updater Ġ{ Ġdt Ġ-> Ċĉ ĉ val Ġspeed Ġ= Ġ 2 . 0 Ġ* Ġ( dt Ġ/ Ġ 1 6 . 0 . milliseconds ) Ċĉ ĉ var Ġdx Ġ= Ġ 0 . 0 Ċĉ ĉ var Ġdy Ġ= Ġ 0 . 0 Ċĉ ĉ val Ġpressing Left Ġ= Ġkeys [ left ] Ċĉ ĉ val Ġpressing Right Ġ= Ġkeys [ right ] Ċĉ ĉ val Ġpressing Up Ġ= Ġkeys [ up ] Ċĉ ĉ val Ġpressing Down Ġ= Ġkeys [ down ] Ċĉ ĉ if Ġ( press ing Left ) Ġdx Ġ= Ġ- 1 . 0 Ċĉ ĉ if Ġ( press ing Right ) Ġdx Ġ= Ġ+ 1 . 0 Ċĉ ĉ if Ġ( press ing Up ) Ġdy Ġ= Ġ- 1 . 0 Ċĉ ĉ if Ġ( press ing Down ) Ġdy Ġ= Ġ+ 1 . 0 Ċĉ ĉ if Ġ( dx Ġ!= Ġ 0 . 0 Ġ|| Ġdy Ġ!= Ġ 0 . 0 ) Ġ{ Ċĉĉ ĉ val Ġd pos Ġ= ĠPoint ( dx , Ġdy ). normalized Ġ* Ġspeed Ċĉĉ ĉ char . move With Hit Test able ( collider , Ġd pos . x , Ġd pos . y ) Ċĉ ĉ } Ċĉ ĉ char . animation Ġ= Ġwhen Ġ{ Ċĉĉ ĉ press ing Left Ġ-> Ġ" left " Ċĉĉ ĉ press ing Right Ġ-> Ġ" right " Ċĉĉ ĉ press ing Up Ġ-> Ġ" up " Ċĉĉ ĉ press ing Down Ġ-> Ġ" down " Ċĉĉ ĉ else Ġ-> Ġchar . animation Ċĉ ĉ } Ċĉ ĉ if Ġ( press ing Left Ġ|| Ġpressing Right Ġ|| Ġpressing Up Ġ|| Ġpressing Down ) Ġ{ Ċĉĉ ĉ char . play () Ċĉ ĉ } Ġelse Ġ{ Ċĉĉ ĉ char . stop () Ċĉĉ ĉ char . rewind () Ċĉ ĉ } Ċ ĉ } Ċ } Ċ