package Ġme . anno . engine Ċ Ċ import Ġme . anno . ecs . pref ab . Prefab Ċ import Ġme . anno . ecs . pref ab . Prefab Cache Ċ import Ġme . anno . engine . ui . render . Play Mode Ċ import Ġme . anno . engine . ui . sc enet abs . EC SS c ene Tabs Ċ import Ġme . anno . io . Named Save able Ċ import Ġme . anno . io . base . Base Writer Ċ import Ġme . anno . io . files . File Reference Ċ import Ġme . anno . io . files . Invalid Ref Ċ import Ġme . anno . io . text . Text Reader Ċ import Ġme . anno . io . text . Text Writer Ċ import Ġme . anno . studio . Studio Base Ċ import Ġme . anno . studio . Studio Base . Companion . add Event Ċ import Ġme . anno . utils . files . Local File . to Global File Ċ import Ġorg . apache . logging . log 4 j . Log Manager Ċ Ċ class ĠGame Engine Project () Ġ: ĠNamed Save able () Ġ{ ĊĊĠĠĠ Ġ// Ġtodo Ġsave Ġthe Ġconfig , Ġif Ġsomething Ġchanges ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOGGER Ġ= ĠLog Manager . getLogger ( Game Engine Project :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġread OrCreate ( location : ĠFile Reference ?): ĠGame Engine Project ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location Ġ== ĠInvalid Ref ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( location . exists ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig File Ġ= Ġlocation . getChild (" config . json ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( configFile . exists ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= ĠText Reader . read First OrNull < Game Engine Project >( configFile , Ġlocation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance ?. location Ġ= Ġlocation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠGame Engine Project ( location ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig File . write Text ( Text Writer . to Text ( project , Ġlocation )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġprobably Ġthe Ġconfig Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread OrCreate ( location . getParent ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠGame Engine Project ( location ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( location : ĠFile Reference ) Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . location Ġ= Ġlocation ĊĠĠĠĠĠĠĠ Ġlocation . try Mk dirs () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġlocation : ĠFile Reference Ġ= ĠInvalid Ref Ġ// Ġa Ġfolder ĊĠĠĠ Ġvar Ġlast Scene : ĠFile Reference Ġ= ĠInvalid Ref ĊĠĠĠ Ġval Ġopen Tabs Ġ= ĠHashSet < File Reference >() ĊĊĠĠĠ Ġval Ġconfig File Ġget () Ġ= Ġlocation . getChild (" config . json ") ĊĊĠĠĠ Ġprivate Ġvar ĠisValid Ġ= Ġtrue ĊĠĠĠ Ġfun Ġinvalidate () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsave Ġproject Ġconfig Ġafter Ġa Ġsmall Ġdelay ĊĠĠĠĠĠĠĠ Ġif Ġ( isValid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisValid Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Event Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! isValid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisValid Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig File . write Text ( Text Writer . to Text ( this , Ġlocation )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfor All Pref abs ( run : Ġ( File Reference , ĠPref ab ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor All Files Ġ{ Ġfile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref ab Ġ= ĠPref ab Cache [ file ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pref ab Ġ!= Ġnull ) Ġrun ( file , Ġpref ab ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfor All Files ( run : Ġ( File Reference ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor All Files ( location , Ġ 1 0 , Ġrun ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfor All Files ( folder : ĠFile Reference , Ġmax Depth : ĠInt , Ġrun : Ġ( File Reference ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġto Ġdo Ġgo Ġinto Ġthings Ġas Ġwell ??? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( child Ġin Ġfolder . list Children () Ġ?: Ġreturn ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( child . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( max Depth Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor All Files ( child , Ġmax Depth Ġ- Ġ 1 , Ġrun ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( child ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ ĠStudio Base . workspace Ġ= Ġlocation ĊĠĠĠĠĠĠĠ Ġ// Ġif Ġlast Ġscene Ġis Ġinvalid , Ġcreate Ġa Ġvalid Ġscene ĊĠĠĠĠĠĠĠ Ġif Ġ( last Scene Ġ== ĠInvalid Ref ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Scene Ġ= Ġlocation . getChild (" Scene . json ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġmay Ġbe Ġchanged Ġby ĠE CSS c ene Tabs Ġotherwise ĊĠĠĠĠĠĠĠ Ġval Ġlast Scene Ġ= Ġlast Scene ĊĠĠĠĠĠĠĠ Ġ// Ġopen Ġall Ġtabs ĊĠĠĠĠĠĠĠ Ġfor Ġ( tab Ġin Ġopen Tabs . clone () Ġas ĠSet <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtab Ġas ĠFile Reference ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE CSS c ene Tabs . open ( tab , Ġ" Entity ", ĠPlay Mode . EDIT ING ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . warn (" Could Ġnot Ġopen Ġ$ tab ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġmake Ġlast Ġscene Ġcurrent ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠE CSS c ene Tabs . open ( last Scene , Ġ" Entity ", ĠPlay Mode . EDIT ING ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . warn (" Could Ġnot Ġopen Ġ$ last Scene ", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave ( writer : ĠBase Writer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . save ( writer ) ĊĠĠĠĠĠĠĠ Ġwriter . writeFile (" last Scene ", Ġlast Scene ) ĊĠĠĠĠĠĠĠ Ġwriter . writeFile Array (" open Tabs ", Ġopen Tabs . to Typed Array ()) ĊĠĠĠĠĠĠĠ Ġ// Ġlocation Ġdoesn 't Ġreally Ġneed Ġto Ġbe Ġsaved ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġread String ( name : ĠString , Ġvalue : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" last Scene " Ġ-> Ġlast Scene Ġ= Ġvalue ?. to Global File () Ġ?: ĠInvalid Ref ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . readString ( name , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠreadFile ( name : ĠString , Ġvalue : ĠFile Reference ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" last Scene " Ġ-> Ġlast Scene Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . readFile ( name , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠreadFile Array ( name : ĠString , Ġvalues : ĠArray < File Reference >) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" open Tabs " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Tabs . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Tabs . addAll ( values . filter Ġ{ Ġit . exists Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . readFile Array ( name , Ġvalues ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval ĠclassName : ĠString Ġ= Ġ" Game Engine Project " ĊĠĠĠ Ġoverride Ġval Ġapprox Size : ĠInt Ġ= Ġ 1 _ 0 0 0 _ 0 0 0 Ċ Ċ }