/* Ċ Ġ* ĠThe ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ 2 0 1 5 ĠN athan ĠTemp lon . Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN Ċ Ġ* ĠTHE ĠSOFTWARE . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġcom . jupiter . eu rop a Ċ Ċ import Ġcom . badlogic . ash ley . core . Engine Ċ import Ġcom . badlogic . ash ley . core . Entity Ċ import Ġcom . badlogic . gdx .* Ċ import Ġcom . badlogic . gdx . ai . fsm . Stack StateMachine Ċ import Ġcom . badlogic . gdx . ai . fsm . State Ċ import Ġcom . badlogic . gdx . ai . msg . Telegram Ċ import Ġcom . badlogic . gdx . utils . Json Ċ import Ġcom . badlogic . gdx . utils . Json Reader Ċ import Ġcom . badlogic . gdx . utils . JsonValue . Pretty Print Settings Ċ import Ġcom . badlogic . gdx . utils . Json Writer . OutputType Ċ import Ġcom . jupiter . eu rop a . audio . Audio Service Ċ import Ġcom . jupiter . eu rop a . audio . Local Audio Service Ċ import Ġcom . jupiter . eu rop a . entity .* Ċ import Ġcom . jupiter . eu rop a . entity . messaging . Message System Ċ import Ġcom . jupiter . eu rop a . entity . messaging . Self Sub scri bing Listener Ċ import Ġcom . jupiter . eu rop a . entity . messaging . Simple Message System Ċ import Ġcom . jupiter . eu rop a . io . E mer gence Asset Manager Ċ import Ġcom . jupiter . eu rop a . io . File Locations Ċ import Ġcom . jupiter . eu rop a . io . FileUtils Ċ import Ġcom . jupiter . eu rop a . save . Save Game Ċ import Ġcom . jupiter . eu rop a . screen . Level Screen Ċ import Ġcom . jupiter . eu rop a . screen . Loading Screen Ċ import Ġcom . jupiter . eu rop a . screen . MainMenu Screen Ċ import Ġcom . jupiter . eu rop a . settings . Settings Ċ import Ġcom . jupiter . eu rop a . util . Game Timer Ċ import Ġcom . jupiter . eu rop a . util . Initial izable Ċ import Ġcom . jupiter . eu rop a . world . Level Ċ import Ġcom . jupiter . eu rop a . world . World Ċ import Ġjava . awt . Insets Ċ import Ġjava . awt . Point Ċ import Ġjava . io . IOException Ċ import Ġjava . nio . file . Files Ċ import Ġjava . util . HashMap Ċ import Ġjava . util . Tree Set Ċ import Ġjavax . swing . J Frame Ċ Ċ public Ġclass ĠE u rop a Game Ġprivate Ġconstructor () Ġ: ĠGame (), ĠInput Processor Ġ{ ĊĊĊĠĠĠ Ġ// ĠEnum er ations ĊĠĠĠ Ġpublic Ġenum Ġclass ĠGame States Ġ: ĠState < Eu rop a Game > Ġ{ ĊĊĠĠĠĠĠĠĠ ĠLO ADING Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠState ĠIm ip lement ation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġenter ( game : ĠE u rop a Game ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame . set Screen ( game . loading Screen ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate ( game : ĠE u rop a Game ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexit ( game : ĠE u rop a Game ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Message ( game : ĠE u rop a Game , Ġtele gram : ĠTelegram ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ ĠMAIN _ MENU Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġenter ( game : ĠE u rop a Game ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSave Ġthe ĠGame , Ġif Ġnecessary ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( game . save Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame . save Game () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame . set Screen ( game . main Menu Screen ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame . add Input Processor ( game . main Menu Screen !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRemove Ġold Ġparty ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( game . party Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( entity Ġin Ġgame . party !!. getActive Party Members ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame . current Level !!. entity Layer !!. remove Entity ( entity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate ( e : ĠE u rop a Game ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexit ( game : ĠE u rop a Game ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame . remove Input Processor ( game . main Menu Screen !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Message ( e : ĠE u rop a Game , Ġtl gr m : ĠTelegram ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ ĠLE VEL Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġscreen : ĠLevel Screen ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġenter ( game : ĠE u rop a Game ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscreen Ġ= ĠLevel Screen ( game . current Level !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame . set Screen ( screen ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame . add Input Processor ( screen ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . screen Ġ= Ġscreen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate ( game : ĠE u rop a Game ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexit ( game : ĠE u rop a Game ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscreen Ġ= Ġthis . screen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( screen Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame . remove Input Processor ( screen ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscreen . dispose () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Message ( game : ĠE u rop a Game , Ġtl gr m : ĠTelegram ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ ĠEXIT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġenter ( entity : ĠE u rop a Game ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexit ( entity : ĠE u rop a Game ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Message ( entity : ĠE u rop a Game ?, Ġtele gram : ĠTelegram ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate ( entity : ĠE u rop a Game ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĠFields ĊĠĠĠ Ġpublic Ġval Ġentity Engine : ĠEngine Ġ= ĠEngine () Ġ// ĠA sh ley Ġentity Ġframework Ġengine ĊĠĠĠ Ġpublic Ġval Ġlast Id Mapping : ĠMutable Map < Long , ĠEntity > Ġ= ĠHashMap () ĊĊĠĠĠ Ġprivate Ġval Ġtimer Ġ= ĠGame Timer () ĊĊĠĠĠ Ġprivate Ġvar Ġframe : ĠJ Frame ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġloading Screen : ĠScreen ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġmain Menu Screen : ĠMain Menu Screen ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġworld s : ĠMutable Map < String , ĠWorld >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġinput Multip lexer Ġ= ĠInput Multip lexer () ĊĠĠĠ Ġpublic Ġvar Ġaudio Service : ĠAudio Service ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġpublic Ġvar Ġcurrent World : ĠWorld ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġpublic Ġvar Ġcurrent Level : ĠLevel ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġprivate Ġval Ġstate Machine : ĠStack StateMachine < Eu rop a Game > ĊĊĠĠĠ Ġpublic Ġvar Ġasset Manager : ĠE mer gence Asset Manager ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġpublic Ġval Ġmessage System : ĠMessage System Ġ= ĠSimple Message System () ĊĠĠĠ Ġprivate Ġval Ġmovement System Ġ= ĠMovement System () ĊĠĠĠ Ġprivate Ġval Ġcollision System Ġ= ĠCollision System () ĊĠĠĠ Ġprivate Ġval Ġeffects System Ġ= ĠEffect s System () ĊĠĠĠ Ġprivate Ġval Ġrendering System Ġ= ĠRendering Maintenance System () ĊĊĠĠĠ Ġprivate Ġvar Ġsus pended : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġvar Ġsave : ĠSave Game ? Ġ= Ġnull ĊĠĠĠ Ġpublic Ġvar Ġsettings : ĠSettings ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġpublic Ġvar Ġcredits : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġprivate Ġval Ġsave Names Ġ= ĠTree Set < String >() ĊĠĠĠ Ġpublic Ġvar Ġparty : ĠParty ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġpublic Ġfun Ġset World ( world : ĠWorld ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . current World Ġ= Ġworld ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġset Level ( level : ĠLevel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . current Level Ġ= Ġlevel ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( entity Ġin Ġthis . party !!. getActive Party Members ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . current Level !!. entity Layer !!. add Entity ( entity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthis . current Level !!. controlled Entity Ġ= Ġthis . party !!. getActive Party Members ()[ 0 ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġis Sus pended (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . sus pended ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġget World ( name : ĠString ): ĠWorld Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . world s !!. get ( name . toUpperCase ()) !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġget Save Names (): ĠArray < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . save Names . toArray < String >( array Of Null s < String >( this . save Names . size ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġget World Names (): ĠArray < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . world s !!. keySet (). to Typed Array () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġget Containing Insets (): ĠIn sets Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . frame Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . frame !!. get Insets () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠIn sets ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġget Frame Location (): ĠPoint Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . frame Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . frame !!. getLocation On Screen () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠPoint ( 0 , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġset Containing Frame ( frame : ĠJ Frame ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . frame Ġ= Ġframe ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . state Machine Ġ= ĠStack StateMachine ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġsystems Ġto Ġthe Ġengine ĊĠĠĠĠĠĠĠ Ġthis . movement System . priority Ġ= ĠMOVE MENT _ SYSTEM _ PRIORITY ĊĠĠĠĠĠĠĠ Ġthis . collision System . priority Ġ= ĠCOL L ISION _ SYSTEM _ PRIORITY ĊĠĠĠĠĠĠĠ Ġthis . rendering System . priority Ġ= ĠR ENDER ING _ SYSTEM _ PRIORITY ĊĠĠĠĠĠĠĠ Ġthis . effects System . priority Ġ= ĠE FF ECT S _ SYSTEM _ PRIORITY ĊĊĠĠĠĠĠĠĠ Ġthis . entity Engine . add System ( this . movement System ) ĊĠĠĠĠĠĠĠ Ġthis . entity Engine . add System ( this . collision System ) ĊĠĠĠĠĠĠĠ Ġthis . entity Engine . add System ( this . rendering System ) ĊĠĠĠĠĠĠĠ Ġthis . entity Engine . add System ( this . effects System ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( system Ġin Ġthis . entity Engine . get Systems ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( system Ġis ĠSelf Sub scri bing Listener ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsystem . subscribe ( this . entity Engine , Ġthis . message System ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĠPublic ĠMethods ĊĠĠĠ Ġpublic Ġfun ĠsetState ( state : ĠGame States ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . state Machine . change State ( state ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġload World Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . world s Ġ= ĠHashMap < String , ĠWorld >() ĊĊĠĠĠĠĠĠĠ Ġval Ġworld s Dir Ġ= ĠFile Locations . WORLD _ DIRECTORY ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! Files . exists ( world s Dir ) Ġ|| Ġ! Files . isDirectory ( world s Dir )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġis Ġproblematic ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠAt Ġthis Ġpoint , Ġwe Ġknow Ġthat Ġthe Ġworld s Ġdirectory Ġexists ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . new Directory Stream ( world s Dir ). use Ġ{ Ġpaths Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaths . forEach Ġ{ Ġpath Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext World Ġ= ĠWorld . from Directory ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . world s ?. put ( next World . name !!. toUpperCase (), Ġnext World ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġstart Game ( save : ĠSave Game ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . save Ġ= Ġsave ĊĠĠĠĠĠĠĠ Ġthis . party Ġ= Ġthis . save !!. party ĊĊĠĠĠĠĠĠĠ Ġgame . set World ( this . save !!. world !! ) Ġ// ĠThe Ġfirst Ġworld Ġin Ġthe Ġlist ĊĠĠĠĠĠĠĠ Ġgame . setLevel ( game . current World !!. get Starting Level () !! ) ĊĊĠĠĠĠĠĠĠ Ġthis . entity Engine . removeAll Entities () ĊĠĠĠĠĠĠĠ Ġfor Ġ( entity Ġin Ġparty !!. getActive Party Members ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . entity Engine . add Entity ( entity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( system Ġin Ġthis . entity Engine . get Systems ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( system Ġis ĠInitial izable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsystem . initialize () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthis . setState ( Game States . LEVEL ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġstart Game ( name : ĠString , Ġworld : ĠWorld , Ġparty : ĠParty ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . start Game ( Save Game ( name , Ġworld , Ġparty )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġadd Input Processor ( processor : ĠInput Processor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . input Multip lexer . add Processor ( processor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġremove Input Processor ( processor : ĠInput Processor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . input Multip lexer . remove Processor ( processor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhen Ġa Ġpause Ġbutton Ġis Ġpressed Ġ- Ġthe Ġactual Ġpause () Ġfunction Ġis Ġused Ġfor Ġapplication Ġclose Ġin Ġdesktop Ġlib G DX ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġsuspend () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . sus pended Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġthis . timer . pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUn pause Ġ- Ġsee Ġsuspend () ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġwake () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . sus pended Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġthis . timer . resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġinspect S aves () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . save Names . clear () ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Files . exists ( File Locations . SAVE _ DIRECTORY )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . create Directories ( File Locations . SAVE _ DIRECTORY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . new Directory Stream ( File Locations . SAVE _ DIRECTORY ). use Ġ{ Ġpaths Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaths . forEach Ġ{ Ġsave File Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġext Ġ= ĠFileUtils . getExtension ( save File ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ext . equals ( Save Game . SAVE _ EXTENSION )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . save Names . add ( save File . get FileName (). toString (). replace (" ." Ġ+ Ġext , Ġ"")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġdelete Save ( save : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsave File Ġ= ĠFile Locations . SAVE _ DIRECTORY . resolve ( save Ġ+ Ġ"." Ġ+ ĠSave Game . SAVE _ EXTENSION ) ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . delete IfExists ( save File ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġthis . inspect S aves () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġsave Settings () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! Files . exists ( SETTINGS _ FILE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . create Directories ( SETTINGS _ FILE . getParent ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . new Buffered Writer ( SETTINGS _ FILE ). use Ġ{ Ġbw Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠJson () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbw . write ( json . pretty Print ( this . settings , ĠPRINT _ SETTINGS ) Ġ+ ĠSystem . line Separator ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbw . flush () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĠApplication Adapter ĠImplementation ĊĠĠĠ Ġoverride Ġfun Ġcreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠLoad ĠResources ĊĠĠĠĠĠĠĠ Ġthis . asset Manager Ġ= ĠE mer gence Asset Manager () Ġ// ĠThe Ġloading Ġscreen Ġwill Ġtake Ġcare Ġof Ġactually Ġloading Ġthe Ġresources ĊĠĠĠĠĠĠĠ Ġthis . audio Service Ġ= ĠLocal Audio Service () ĊĠĠĠĠĠĠĠ Ġthis . inspect S aves () ĊĠĠĠĠĠĠĠ Ġthis . load Credits () ĊĠĠĠĠĠĠĠ Ġthis . load Settings () ĊĊĠĠĠĠĠĠĠ Ġ// ĠConfigure ĠProperty ĠChange Ġlisteners ĊĠĠĠĠĠĠĠ Ġthis . settings !!. music Volume . add PropertyChanged Listener Ġ{ Ġargs Ġ-> Ġthis . audio Service !!. set Music Volume ( args . newValue ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġour Ġvarious Ġscreens ĊĠĠĠĠĠĠĠ Ġthis . loading Screen Ġ= ĠLoading Screen ( this ) ĊĠĠĠĠĠĠĠ Ġthis . main Menu Screen Ġ= ĠMain Menu Screen () ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġstate Ġmachine Ġ- Ġbe Ġcareful Ġto Ġnot Ġdo Ġthis Ġuntil Ġall Ġscreens ĊĠĠĠĠĠĠĠ Ġ// Ġ Ġare Ġinitialized ! ĊĠĠĠĠĠĠĠ Ġthis . setState ( Game States . LOADING ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTake ĠOver ĠInput ĊĠĠĠĠĠĠĠ ĠG dx . input . setInput Processor ( this . input Multip lexer ) ĊĠĠĠĠĠĠĠ Ġthis . add Input Processor ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠStart Ġthe Ġclock ĊĠĠĠĠĠĠĠ Ġthis . timer . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrender () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdelta T Ġ= Ġtimer . tick () ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! this . is Sus pended ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . message System . update ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . entity Engine . update ( delta T ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsuper < Game >. render () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġright Ġbefore Ġdispose () Ġwhen Ġthe Ġgame Ġis Ġclosing Ġ- ĠI Ġshould Ġsave Ġthe Ġgame , Ġetc . Ġhere ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġpause () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . save Game () ĊĠĠĠĠĠĠĠ Ġthis . save Settings () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . setState ( Game States . EXIT ) ĊĊĠĠĠĠĠĠĠ Ġthis . loading Screen ?. dispose () ĊĠĠĠĠĠĠĠ Ġthis . main Menu Screen ?. dispose () ĊĠĠĠĠĠĠĠ Ġfor Ġ( world Ġin Ġworld s ?. values () Ġ?: Ġset Of < World >()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworld . dispose () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . asset Manager ?. dispose () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĠInput Processor Implementation ĊĠĠĠ Ġoverride Ġfun Ġkey Down ( i : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġkey Up ( i : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġkey Typed ( c : ĠChar ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtouch Down ( i : ĠInt , Ġi 1 : ĠInt , Ġi 2 : ĠInt , Ġi 3 : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtouch Up ( i : ĠInt , Ġi 1 : ĠInt , Ġi 2 : ĠInt , Ġi 3 : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtouch Drag ged ( i : ĠInt , Ġi 1 : ĠInt , Ġi 2 : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmouse Moved ( i : ĠInt , Ġi 1 : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsc rolled ( i : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĠPrivate ĠMethods ĊĠĠĠ Ġprivate Ġfun Ġsave Game () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . save Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsave Path Ġ= ĠFile Locations . SAVE _ DIRECTORY . resolve ( this . save !!. name Ġ+ Ġ"." Ġ+ ĠSave Game . SAVE _ EXTENSION ) ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠJson () ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġjson . pretty Print ( this . save , ĠPRINT _ SETTINGS ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! Files . exists ( File Locations . SAVE _ DIRECTORY )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . create Directories ( File Locations . SAVE _ DIRECTORY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . new Buffered Writer ( save Path ). use Ġ{ Ġbw Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbw . write ( text Ġ+ ĠSystem . line Separator ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbw . flush () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Credits () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcredits File Ġ= ĠFile Locations . AS SET _ DIRECTORY . resolve (" credits . txt ") ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . new BufferedReader ( credits File ). use Ġ{ Ġbr Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . credits Ġ= Ġ" Credits :" Ġ+ ĠSystem . line Separator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbr . lines (). forEach Ġ{ Ġline Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . credits Ġ+= Ġline Ġ+ ĠSystem . line Separator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . credits Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Settings () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠJson () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . new BufferedReader ( SETTINGS _ FILE ). use Ġ{ Ġreader Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠJson Reader (). parse ( reader ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . settings Ġ= Ġjson . fromJson ( java Class < Settings >(), Ġvalue . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . settings Ġ= ĠSettings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . save Settings () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠLoad Ġthe Ġsettings Ġto Ġtheir Ġrespective Ġsystems ĊĠĠĠĠĠĠĠ Ġthis . audio Service !!. set Music Volume ( this . settings !!. music Volume . get ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠConstants ĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠTITLE : ĠString Ġ= Ġ" Leg ends Ġof ĠOm terra " ĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠSUB TITLE : ĠString Ġ= Ġ" N ec rom ancer ĠR ising " ĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠMA JOR _ VERSION : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠMIN OR _ VERSION : ĠInt Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠRE V ISION : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠVERSION : ĠString Ġ= ĠMA JOR _ VERSION . toString () Ġ+ Ġ"." Ġ+ ĠMIN OR _ VERSION Ġ+ Ġ"." Ġ+ ĠRE V ISION ĊĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠSC ALE : ĠFloat Ġ= Ġ 2 . 0 f Ġ// ĠThe Ġnumber Ġof Ġpixels Ġon - screen Ġfor Ġeach Ġpixel Ġin Ġthe Ġresource ĊĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠMOVE MENT _ SYSTEM _ PRIORITY : ĠInt Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠCOL L ISION _ SYSTEM _ PRIORITY : ĠInt Ġ= Ġ 9 ĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠR ENDER ING _ SYSTEM _ PRIORITY : ĠInt Ġ= Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠE FF ECT S _ SYSTEM _ PRIORITY : ĠInt Ġ= Ġ 2 0 ĊĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠMOVE _ RIGHT _ KEY : ĠChar Ġ= Ġ' d ' ĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠMOVE _ LEFT _ KEY : ĠChar Ġ= Ġ' a ' ĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠMOVE _ UP _ KEY : ĠChar Ġ= Ġ' w ' ĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠMOVE _ DOWN _ KEY : ĠChar Ġ= Ġ' s ' ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠSET T INGS _ FILE Ġ= ĠFile Locations . CONFIGURATION _ DIRECTORY . resolve (" settings . cfg ") ĊĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠDEBUG : ĠBoolean Ġ= Ġtrue ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠStatic ĠFields ĊĠĠĠĠĠĠĠ Ġpublic Ġval Ġgame : ĠE u rop a Game Ġ= ĠE u rop a Game () ĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠPRINT _ SETTINGS : ĠPretty Print Settings Ġ= ĠPretty Print Settings () ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPRINT _ SETTINGS . output Type Ġ= ĠOutput Type . json ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ