package Ġcom . pump kin . editor . project Ċ Ċ import Ġcom . pump kin . editor . editor Logger Ċ import Ġjava . io . File Ċ import Ġjava . io . FileWriter Ċ Ċ object ĠProject Structure Ġ{ ĊĊĠĠĠ Ġ/* ĊĠĠĠ ĠRoot ĊĠĠĠ Ġ|- My Project . pe proj ĊĠĠĠ Ġ|- Assets ĊĠĠĠĠĠ Ġ|- My Scene . pump kin ĊĠĠĠĠĠ Ġ|- ... ĊĠĠĠ Ġ|- Sources ĊĠĠĠĠĠ Ġ|- generated ĊĠĠĠĠĠĠĠ Ġ|- com / company ĊĠĠĠĠĠĠĠĠĠ Ġ|- My Project . kt Ġ<-- Application ĊĠĠĠĠĠĠĠĠĠ Ġ|- ... ĊĠĠĠĠĠĠĠ Ġ|- com / pump kin ĊĠĠĠĠĠĠĠĠĠ Ġ|- EntryPoint . kt ĊĠĠĠĠĠ Ġ// |- engine ĊĠĠĠĠĠĠĠ Ġ// |- com / pump kin ĊĠĠĠĠĠĠĠĠĠ Ġ// |- // Library Ġsources ĊĠĠĠ Ġ|- Gradle ĊĠĠĠĠĠ Ġ|- build . gradle ĊĠĠĠĠĠ Ġ|- settings . gradle ĊĠĠĠĠĠ Ġ|- gradle . properties ĊĠĠĠĠĠ Ġ|- gradle w ĊĠĠĠĠĠ Ġ|- gradle w . bat ĊĠĠĠĠĠ Ġ|- wrapper ĊĠĠĠĠĠĠĠ Ġ|- gradle - wrapper . jar ĊĠĠĠĠĠĠĠ Ġ|- gradle - wrapper . properties ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġfun Ġgenerate Structure ( name : ĠString , Ġcompany ID : ĠString , Ġpath : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdirectory Ġ= ĠFile ( path ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! directory . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor Logger . info (" The Ġspecified Ġproject Ġdirectory Ġdoes Ġnot Ġexist , Ġso Ġit Ġwill Ġbe Ġcreated ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory . mkdir () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! directory . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor Logger . warn (" The Ġspecified Ġpath Ġdoes Ġnot Ġpoint Ġto Ġa Ġdirectory ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( directory . list Files ()?. isNotEmpty () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor Logger . warn (" The Ġspecified Ġproject Ġdirectory Ġis Ġnot Ġempty ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġgenerate Folders And Files ( name , Ġcompany ID , Ġdirectory ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Folders And Files ( projectName : ĠString , Ġcompany ID : ĠString , Ġroot Dir : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġr dp Ġ= Ġroot Dir . path ĊĊĠĠĠĠĠĠĠ ĠFile Writer ( File ("$ rdp /$ projectName . pe proj "). also Ġ{ Ġit . createNew File () Ġ}). use Ġ{ Ġw Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . append (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Project ": Ġ"$ projectName ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Sc enes ": Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Settings ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Editor Camera ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġassets Ġ= ĠFile ("$ rdp / Assets "). also Ġ{ Ġit . mkdir () Ġ} ĊĊĠĠĠĠĠĠĠ ĠFile Writer ( File ("${ assets . path }/ Unt itled Scene . pump kin "). also Ġ{ Ġit . createNew File () Ġ}). use Ġ{ Ġw Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . append (" {\ r \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠ Ġ\" Scene \": Ġ\" Unt itled Scene \",\ r \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠ Ġ\" Entities \": Ġ[\ r \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠ Ġ] \ r \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" }") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsources Ġ= ĠFile ("$ rdp / Sources "). also Ġ{ Ġit . mkdir () Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġgen Sources Ġ= ĠFile ("${ sources . path }/ generated "). also Ġ{ Ġit . mkdir s () Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġentry Point Dir Ġ= ĠFile ("${ gen Sources . path }/ com / pump kin "). also Ġ{ Ġit . mkdir s () Ġ} ĊĠĠĠĠĠĠĠ ĠFile Writer ( File ("$ entry Point Dir / EntryPoint . kt "). also Ġ{ Ġit . createNew File () Ġ}). use Ġ{ Ġw Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . append (" package Ġcom . pump kin \ r \ n \ r \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fun Ġrun Application () Ġ{\ r \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . append ( company ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . append (". main ()\ r \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" }") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġproject Src Dir Ġ= ĠFile ("${ gen Sources . path }/${ company ID . replace ('.', Ġ'/ ')} "). also Ġ{ Ġit . mkdir s () Ġ} ĊĠĠĠĠĠĠĠ ĠFile Writer ( File ("$ project Src Dir /$ projectName . kt "). also Ġ{ Ġit . createNew File () Ġ}). use Ġ{ Ġw Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . append (" package Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . append ( company ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . append ("\ r \ n \ r \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fun Ġmain () Ġ{\ r \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t com . pump kin . core . Application . set (" ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . append ( projectName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . append (" ()) \ r \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" }\ r \ n \ r \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" class Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . append ( projectName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . append (" Ġ: Ġcom . pump kin . core . Application () Ġ{\ r \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ to verride Ġfun Ġinit () Ġ{\ r \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ tp ush Layer ( Project Layer ()) \ r \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t }\ r \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" }\ r \ n \ r \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" class ĠProject Layer Ġ: Ġcom . pump kin . core . layer . Layer () Ġ{\ r \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }