package Ġnet . tor val d . ter rar um . module base game Ċ Ċ import Ġcom . badlogic . gdx . G dx Ċ import Ġcom . badlogic . gdx . Input Adapter Ċ import Ġcom . badlogic . gdx . graphics . Color Ċ import Ġcom . badlogic . gdx . graphics . g 2 d . Sprite Batch Ċ import Ġcom . badlogic . gdx . graphics . g 2 d . Texture Region Ċ import Ġnet . tor val d . gdx . graphics . C vec Ċ import Ġnet . tor val d . ter rar um .* Ċ import Ġnet . tor val d . ter rar um . T err ar um App Configuration . TILE _ SIZE Ċ import Ġnet . tor val d . ter rar um . block properties . Block Ċ import Ġnet . tor val d . ter rar um . block properties . Block Prop Util Ċ import Ġnet . tor val d . ter rar um . game actors .* Ċ import Ġnet . tor val d . ter rar um . game controller . T err ar um Keyboard Event Ċ import Ġnet . tor val d . ter rar um . game items . Item ID Ċ import Ġnet . tor val d . ter rar um . game world . Game World Ċ import Ġnet . tor val d . ter rar um . module base game . game actors . Actor Human oid Ċ import Ġnet . tor val d . ter rar um . game world . World Time Ċ import Ġnet . tor val d . ter rar um . module base game . ui . UI Building Maker Block Chooser Ċ import Ġnet . tor val d . ter rar um . module base game . ui . UI Building Maker Pen Menu Ċ import Ġnet . tor val d . ter rar um . module base game . ui . U IP a lette Selector Ċ import Ġnet . tor val d . ter rar um . weather . Weather Mixer Ċ import Ġnet . tor val d . ter rar um . ui . U INS Menu Ċ import Ġnet . tor val d . ter rar um . wor l dd raw er . World Camera Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġmin ja es ong Ġon Ġ 2 0 1 8 - 0 7 - 0 6 . Ċ Ġ*/ Ċ class ĠBuilding Maker ( batch : ĠSprite Batch ) Ġ: ĠIn game Instance ( batch ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmenu Yaml Ġ= ĠYaml (""" Ċ - ĠFile Ċ Ġ- ĠNew Ġflat Ġter . Ċ Ġ- ĠNew Ġrand . Ġter . Ċ Ġ- ĠExport âĢ¦ Ċ Ġ- ĠExport Ġsel âĢ¦ Ċ Ġ- ĠImport âĢ¦ Ċ Ġ- ĠSave Ġterrain âĢ¦ Ċ Ġ- ĠLoad Ġterrain âĢ¦ Ċ Ġ- Ċ Ġ- ĠExit Ġto ĠTitle Ġ: Ġnet . tor val d . ter rar um . module base game . Yaml Command Exit Ċ - ĠTool Ċ Ġ- ĠP encil Ġ: Ġnet . tor val d . ter rar um . module base game . Yaml Command Tool P encil Ċ Ġ- ĠE ras er Ġ: Ġnet . tor val d . ter rar um . module base game . Yaml Command Tool P encil Erase Ċ Ġ- ĠWall ĠH ammer Ġ: Ġnet . tor val d . ter rar um . module base game . Yaml Command Tool P encil Erase Wall Ċ Ġ- ĠE y ed rop per Ġ: Ġnet . tor val d . ter rar um . module base game . Yaml Command Tool Ey ed rop per Ċ Ġ- ĠAdd ĠSelection Ġ: Ġnet . tor val d . ter rar um . module base game . Yaml Command Tool Mar quee Ċ Ġ- ĠRemove ĠSel . Ġ: Ġnet . tor val d . ter rar um . module base game . Yaml Command Tool Mar quee Erase Ċ Ġ- ĠClear ĠSel . Ġ: Ġnet . tor val d . ter rar um . module base game . Yaml Command Tool Mar quee Clear Ċ Ġ- ĠMove ĠSelected Ċ Ġ- Ċ Ġ- ĠHide / Show ĠSel . Ġ: Ġnet . tor val d . ter rar um . module base game . Yaml Command Tool Toggle Mar quee Overlay Ċ Ġ- Ċ Ġ- ĠUndo Ċ Ġ- ĠRed o Ċ - ĠTime Ċ Ġ- ĠMor ning Ġ: Ġnet . tor val d . ter rar um . module base game . Yaml Command Set Time Mor ning Ċ Ġ- ĠNo on Ġ: Ġnet . tor val d . ter rar um . module base game . Yaml Command Set Time No on Ċ Ġ- ĠD us k Ġ: Ġnet . tor val d . ter rar um . module base game . Yaml Command Set Time D us k Ċ Ġ- ĠNight Ġ: Ġnet . tor val d . ter rar um . module base game . Yaml Command Set Time Night Ċ Ġ- ĠSet âĢ¦ Ċ - ĠWeather Ċ Ġ- ĠSun ny Ċ Ġ- ĠR aining ĊĠĠĠ Ġ""" . trim Indent ()) ĊĊĠĠĠ Ġprivate Ġval Ġtime Now Ġ= ĠSystem . currentTimeMillis () Ġ/ Ġ 1 0 0 0 ĊĊĠĠĠ Ġval Ġgame World Ġ= ĠGame World ( 9 0 * 1 2 , Ġ 9 0 * 4 , Ġtime Now , Ġtime Now ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġg het to Ġworld Ġfor Ġbuilding ĊĊĠĠĠĠĠĠĠ Ġprintln ("[ Building Maker ] ĠGenerating Ġbuilder Ġworld ...") ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( y Ġin Ġ 0 Ġuntil Ġgame World . height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame World . set Tile Wall ( 0 , Ġy , ĠBlock . ILL UMIN ATOR _ RED , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame World . set Tile Wall ( game World . width Ġ- Ġ 1 , Ġy , ĠBlock . ILL UMIN ATOR _ RED , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame World . set Tile Terrain ( 0 , Ġy , ĠBlock . ILL UMIN ATOR _ RED _ OFF , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame World . set Tile Terrain ( game World . width Ġ- Ġ 1 , Ġy , ĠBlock . ILL UMIN ATOR _ RED _ OFF , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( y Ġin Ġ 1 5 0 Ġuntil Ġgame World . height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġ 1 Ġuntil Ġgame World . width Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwall Ġlayer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame World . set Tile Wall ( x , Ġy , ĠBlock . DIR T , Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġterrain Ġlayer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame World . set Tile Terrain ( x , Ġy , Ġif Ġ( y Ġ== Ġ 1 5 0 ) ĠBlock . GR ASS Ġelse ĠBlock . DIR T , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġset Ġtime Ġto Ġsummer ĊĠĠĠĠĠĠĠ Ġgame World . world Time . add Time ( World Time . DAY _ LENGTH Ġ* Ġ 3 2 ) ĊĊĠĠĠĠĠĠĠ Ġworld Ġ= Ġgame World ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġvar Ġactor Now Playing : ĠActor Human oid ? Ġ= ĠMov able World Camera ( this ) ĊĊĠĠĠ Ġval Ġui Toolbox Ġ= ĠU INS Menu (" Menu ", Ġ 1 0 0 , Ġmenu Yaml ) ĊĠĠĠ Ġval Ġui Palette Selector Ġ= ĠU IP a lette Selector ( this ) ĊĠĠĠ Ġval Ġui Palette Ġ= ĠUI Building Maker Block Chooser ( this ) ĊĠĠĠ Ġval Ġui Pen Menu Ġ= ĠUI Building Maker Pen Menu ( this ) ĊĊĊĠĠĠ Ġval Ġui Container Ġ= ĠUI Container () ĊĊĠĠĠ Ġprivate Ġval Ġp ens Must Show Selection Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPEN MODE _ MAR QUE E , ĠPEN MODE _ MAR QUE E _ ER ASE ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġvar Ġcurrent Pen Mode Ġ= ĠPEN MODE _ P ENCIL ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġin Ġp ens Must Show Selection ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Selection Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġcurrent Pen Target Ġ= ĠP ENT ARGET _ T ERR AIN ĊĊĠĠĠ Ġval Ġselection Ġ= ĠArrayList < Point 2 i >() ĊĊĠĠĠ Ġval Ġblock Mark ings Ġ= ĠCommon Resource Pool . getAs Texture Region Pack (" block mark ings _ common ") ĊĠĠĠ Ġinternal Ġvar Ġshow Selection Ġ= Ġtrue ĊĠĠĠ Ġval Ġblock Point ing Cursor Ġ= Ġobject Ġ: ĠActor With Body ( Actor . Render Order . OVER LAY , Ġphys Prop Ġ= ĠPh ys Properties . MOB ILE _ OBJECT ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġvar Ġreference ID : ĠActor ID Ġ= Ġ 1 0 4 8 5 7 5 Ġ// Ġcustom Ġref ID ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġhit box Ġ= ĠHit box ( 0 . 0 , Ġ 0 . 0 , Ġ 1 6 . 0 , Ġ 1 6 . 0 ) ĊĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . actor Value [ AV Key . L UM R ] Ġ= Ġ 1 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . actor Value [ AV Key . L UM G ] Ġ= Ġ 1 . 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdraw Body ( batch : ĠSprite Batch ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbatch . color Ġ= Ġtool Cursor Colour [ current Pen Mode ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbatch . draw ( block Mark ings . get ( current Pen Mode , Ġ 0 ), Ġhit box . start X . toFloat (), Ġhit box . start Y . toFloat ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdraw G low ( batch : ĠSprite Batch ) Ġ{ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate ( delta : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhit box . setPosition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT err ar um . mouse Tile X Ġ* Ġ 1 6 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT err ar um . mouse Tile Y Ġ* Ġ 1 6 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Actor Value Change ( key : ĠString , Ġvalue : ĠAny ?) Ġ{ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") Ġ// To Ġchange Ġbody Ġof Ġcreated Ġfunctions Ġuse ĠFile Ġ| ĠSettings Ġ| ĠFile ĠTemplates . ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġblock Marker Colour Ġ= ĠColor ( 0 xe 0 e 0 e 0 ff . toInt ()) ĊĊĠĠĠ Ġinternal Ġfun Ġblock Pos To Ref ID ( x : ĠInt , Ġy : ĠInt ) Ġ= Ġ 1 0 4 8 5 7 6 Ġ+ Ġ( y Ġ* Ġgame World . width Ġ+ Ġx ) ĊĊĠĠĠ Ġprivate Ġvar Ġ_ test Marker Draw Calls Ġ= Ġ 0 L ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate New Block Marker Visible ( x : ĠInt , Ġy : ĠInt ) Ġ= Ġobject Ġ: ĠActor With Body ( Actor . Render Order . OVER LAY , Ġphys Prop Ġ= ĠPh ys Properties . MOB ILE _ OBJECT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġvar Ġreference ID : ĠActor ID Ġ= Ġblock Pos To Ref ID ( x , Ġy ) Ġ// Ġcustom Ġref ID ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġhit box Ġ= ĠHit box ( x Ġ* Ġ 1 6 . 0 , Ġy Ġ* Ġ 1 6 . 0 , Ġ 1 6 . 0 , Ġ 1 6 . 0 ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdraw Body ( batch : ĠSprite Batch ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbatch . color Ġ= Ġblock Marker Colour ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Sprite In Good Position ( block Mark ings . get ( 2 , 0 ), Ġbatch ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġdraw Sprite In Good Position ( sprite : ĠTexture Region , Ġbatch : ĠSprite Batch ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft side Padding Ġ= Ġworld !!. width . times ( TILE _ SIZE ) Ġ- ĠWorld Camera . width . ush r ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright side Padding Ġ= ĠWorld Camera . width . ush r ( 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hit box . start X Ġin ĠWorld Camera . x Ġ- Ġhit box . width .. World Camera . x Ġ+ ĠWorld Camera . width . toDouble () Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhit box . start Y Ġin ĠWorld Camera . y Ġ- Ġhit box . height .. World Camera . y Ġ+ ĠWorld Camera . height . toDouble ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( World Camera . xC ent re Ġ> Ġleft side Padding Ġ&& Ġhit box . centered X Ġ<= Ġright side Padding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcamera Ġcenter Ġneg , Ġactor Ġcenter Ġpos ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbatch . draw ( sprite , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhit box . start X . toFloat () Ġ+ Ġworld !!. width Ġ* ĠT ILE _ SIZE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhit box . start Y . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( World Camera . xC ent re Ġ< Ġright side Padding Ġ&& Ġhit box . centered Y Ġ>= Ġleft side Padding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcamera Ġcenter Ġpos , Ġactor Ġcenter Ġneg ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbatch . draw ( sprite , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhit box . start X . toFloat () Ġ- Ġworld !!. width Ġ* ĠT ILE _ SIZE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhit box . start Y . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbatch . draw ( sprite , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhit box . start X . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhit box . start Y . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ test Marker Draw Calls Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdraw G low ( batch : ĠSprite Batch ) Ġ{ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate ( delta : ĠFloat ) Ġ{ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Actor Value Change ( key : ĠString , Ġvalue : ĠAny ?) Ġ{ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġadd Block Marker ( x : ĠInt , Ġy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġgenerate New Block Marker Visible ( x , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd New Actor ( a ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactors Render Overlay . add ( a ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection . add ( Point 2 i ( x , Ġy )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠError ) Ġ{ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġremove Block Marker ( x : ĠInt , Ġy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġget Actor ByID ( block Pos To Ref ID ( x , Ġy )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Actor ( a ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactors Render Overlay . remove ( a ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection . remove ( Point 2 i ( x , Ġy )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġno Ġactor Ġto Ġerase , Ġdo Ġnothing ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPEN MODE _ P ENCIL Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPEN MODE _ P ENCIL _ ER ASE Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPEN MODE _ MAR QUE E Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPEN MODE _ MAR QUE E _ ER ASE Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPEN MODE _ EY ED ROP PER Ġ= Ġ 4 ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠP ENT ARGET _ T ERR AIN Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠP ENT ARGET _ WALL Ġ= Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġval Ġtool Cursor Colour Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . YELLOW , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . YELLOW , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . MAG ENT A , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . MAG ENT A , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . WHITE ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEFAULT _ PO I _ NAME Ġ= Ġ" The ĠY uck y ĠPan opt icon " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġactors Render Overlay Ġ= ĠArrayList < Actor With Body >() Ġ// Ġcan Ġbe Ġhidden Ġ( e . g . Ġhide Ġsel .) ĊĠĠĠ Ġprivate Ġval Ġessential Overlay s Ġ= ĠArrayList < Actor With Body >() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġgame World . world Time . setTime Of Today ( World Time . HOUR _ SEC Ġ* Ġ 1 0 ) ĊĠĠĠĠĠĠĠ Ġgame World . global Light Ġ= ĠC vec (. 8 f , Ġ. 8 f , Ġ. 8 f , Ġ. 8 f ) ĊĊĠĠĠĠĠĠĠ Ġessential Overlay s . add ( block Point ing Cursor ) ĊĊĠĠĠĠĠĠĠ Ġui Container . add ( ui Toolbox ) ĊĠĠĠĠĠĠĠ Ġui Container . add ( ui Palette Selector ) ĊĠĠĠĠĠĠĠ Ġui Container . add ( notifier ) ĊĠĠĠĠĠĠĠ Ġui Container . add ( ui Palette ) ĊĠĠĠĠĠĠĠ Ġui Container . add ( ui Pen Menu ) ĊĊĊĊĠĠĠĠĠĠĠ Ġui Toolbox . setPosition ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġui Toolbox . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġui Toolbox . invocation Argument Ġ= ĠarrayOf ( this ) ĊĊĠĠĠĠĠĠĠ Ġui Palette Selector . setPosition ( App . scr . width Ġ- Ġui Palette Selector . width , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġui Palette Selector . isVisible Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġnot ifier . setPosition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( App . scr . width Ġ- Ġnot ifier . width ) Ġ/ Ġ 2 , ĠApp . scr . height Ġ- Ġnot ifier . height ) ĊĊĊĠĠĠĠĠĠĠ Ġactor Now Playing ?. setPosition ( 5 1 2 Ġ* Ġ 1 6 . 0 , Ġ 1 4 9 Ġ* Ġ 1 6 . 0 ) ĊĊĊĠĠĠĠĠĠĠ Ġui Palette . setPosition ( 2 0 0 , Ġ 1 0 0 ) ĊĊĊĠĠĠĠĠĠĠ ĠIn game Renderer . set Rendered World ( game World ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow () Ġ{ ĊĠĠĠĠĠĠĠ ĠG dx . input . input Processor Ġ= ĠBuilding Maker Controller ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġupdate Ak ku Ġ= Ġ 0 f ĊĊĠĠĠ Ġoverride Ġfun Ġrender ( update Rate : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ ĠG dx . graphics . setTitle ( T err ar um In game . getCanonical Title ()) ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠAS YN CH RON O US ĠUPDATE ĠAND ĠR ENDER Ġ// ĊĊĠĠĠĠĠĠĠ Ġval Ġdt Ġ= ĠG dx . graphics . deltaTime ĊĠĠĠĠĠĠĠ Ġupdate Ak ku Ġ+= Ġdt ĊĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġwhile Ġ( update Ak ku Ġ>= Ġupdate Rate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp . measure Debug Time (" In game . Update ") Ġ{ Ġupdate Game ( update Rate ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Ak ku Ġ-= Ġupdate Rate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠApp . set Debug Time (" In game . Update Counter ", Ġi ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġrender ? Ġjust Ġdo Ġit Ġanyway ĊĠĠĠĠĠĠĠ ĠApp . measure Debug Time (" In game . Render ") Ġ{ Ġrender Game () Ġ} ĊĠĠĠĠĠĠĠ ĠApp . set Debug Time (" In game . Render Ġ- Ġ( Light Ġ+ ĠT iling )", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( App . debug Timers [" In game . Render "] Ġas ? ĠLong ) Ġ?: Ġ 0 ) Ġ- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( App . debug Timers [" Renderer . Lan tern s "] Ġas ? ĠLong ) Ġ?: Ġ 0 ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( App . debug Timers [" Renderer . Light Pre calc "] Ġas ? ĠLong ) Ġ?: Ġ 0 ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( App . debug Timers [" Renderer . Light Runs "] Ġas ? ĠLong ) Ġ?: Ġ 0 ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( App . debug Timers [" Renderer . Light To Screen "] Ġas ? ĠLong ) Ġ?: Ġ 0 ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( App . debug Timers [" Renderer . T iling "] Ġas ? ĠLong ) Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġmouse On UI Ġ= Ġfalse ĊĠĠĠ Ġinternal Ġvar Ġt apped On UI Ġ= Ġfalse Ġ// Ġwhen Ġtrue , Ġeven Ġif Ġthe ĠUI Ġis Ġclosed , Ġpen Ġwon 't Ġwork Ġunless Ġyour Ġpen Ġis Ġlift ed ĊĠĠĠ Ġ// Ġmust Ġbe Ġset Ġto ĠTRUE Ġby ĠU Is ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Game ( delta : ĠFloat ) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠWeather Mixer . update ( delta , Ġactor Now Playing , Ġgame World ) ĊĠĠĠĠĠĠĠ Ġblock Point ing Cursor . update ( delta ) ĊĠĠĠĠĠĠĠ Ġactor Now Playing ?. update ( delta ) ĊĠĠĠĠĠĠĠ Ġvar Ġoverwrite Mouse On UI Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġui Container . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. update ( delta ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it ?. isVisible Ġ== Ġtrue Ġ&& Ġit ?. mouse Up Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverwrite Mouse On UI Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmouse On UI Ġ= Ġ( overwrite Mouse On UI Ġ|| Ġui Pen Menu . isVisible ) ĊĊĊĠĠĠĠĠĠĠ ĠWorld Camera . update ( world , Ġactor Now Playing ) ĊĊĊĠĠĠĠĠĠĠ Ġ// Ġmake Ġpen Ġwork ĠHERE ĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĠLEFT Ġmouse Ġis Ġdown ĊĠĠĠĠĠĠĠ Ġif Ġ(! t apped On UI Ġ&& ĠT err ar um . mouse Down Ġ&& Ġ! mouse On UI ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmake Pen Work ( T err ar um . mouse Tile X , ĠT err ar um . mouse Tile Y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġdrag Ġsupport Ġusing Ġb res en ham 's Ġalgo ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠ Ġfor Ġsome Ġreason Ġit Ġjust Ġdoesn 't Ġwork ... ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ(! ui Pen Menu . isVisible Ġ&& ĠG dx . input . is Button Pressed ( App . getConfig Int (" config _ mouse secondary "))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġopen Ġpen Ġmenu ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġposition Ġthe Ġmenu Ġto Ġwhere Ġthe Ġcursor Ġis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Pen Menu . pos X Ġ= ĠT err ar um . mouse Screen X Ġ- Ġui Pen Menu . width Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Pen Menu . pos Y Ġ= ĠT err ar um . mouse Screen Y Ġ- Ġui Pen Menu . height Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Pen Menu . pos X Ġ= Ġui Pen Menu . pos X . coerce In ( 0 , ĠApp . scr . width Ġ- Ġui Pen Menu . width ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Pen Menu . pos Y Ġ= Ġui Pen Menu . pos Y . coerce In ( 0 , ĠApp . scr . height Ġ- Ġui Pen Menu . height ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġactually Ġopen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Pen Menu . set As Open () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠBlock Prop Util . dynamic L um Func Tick Clock () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender Game () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ test Marker Draw Calls Ġ= Ġ 0 L ĊĊĠĠĠĠĠĠĠ ĠIn game Renderer . invoke ( false , Ġactors Render Overlay Ġ= Ġif Ġ( show Selection ) Ġactors Render Overlay Ġ+ Ġessential Overlay s Ġelse Ġessential Overlay s , Ġui Container Ġ= Ġui Container ) ĊĊĠĠĠĠĠĠĠ ĠApp . set Debug Time (" Test . Marker Draw Calls ", Ġ_ test Marker Draw Calls ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresize ( width : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠIn game Renderer . resize ( App . scr . width , ĠApp . scr . height ) ĊĠĠĠĠĠĠĠ Ġui Toolbox . setPosition ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġnot ifier . setPosition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( App . scr . width Ġ- Ġnot ifier . width ) Ġ/ Ġ 2 , ĠApp . scr . height Ġ- Ġnot ifier . height ) ĊĊĠĠĠĠĠĠĠ Ġprintln ("[ Building Maker ] ĠResize Ġevent ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset P encil Colour ( item ID : ĠItem ID ) Ġ{ ĊĠĠĠĠĠĠĠ Ġui Palette Selector . fore Ġ= Ġitem ID ĊĠĠĠĠĠĠĠ Ġcurrent Pen Mode Ġ= ĠPEN MODE _ P ENCIL ĊĠĠĠĠĠĠĠ Ġcurrent Pen Target Ġ= ĠP ENT ARGET _ T ERR AIN Ġ// ĠT ERR AIN Ġis Ġarbitrary Ġchosen Ġto Ġprevent Ġpossible Ġconflict ; Ġfor Ġthe Ġp encil Ġitself Ġthis Ġproperty Ġdoes Ġnothing ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġblock Mark ings . dispose () ĊĠĠĠĠĠĠĠ Ġui Pen Menu . dispose () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinput St ro bed ( e : ĠT err ar um Keyboard Event ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmake Pen Work ( x : ĠInt , Ġy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġworld Ġ= Ġgame World ĊĠĠĠĠĠĠĠ Ġval Ġpal Selection Ġ= Ġui Palette Selector . fore ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( current Pen Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtest Ġpaint Ġterrain Ġlayer ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPEN MODE _ P ENCIL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pal Selection . startsWith (" wall @ ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworld . set Tile Wall ( x , Ġy , Ġpal Selection . substring ( 5 ), Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworld . set Tile Terrain ( x , Ġy , Ġpal Selection , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPEN MODE _ P ENCIL _ ER ASE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Pen Target Ġand ĠP ENT ARGET _ WALL Ġ!= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworld . set Tile Wall ( x , Ġy , ĠBlock . AIR , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworld . set Tile Terrain ( x , Ġy , ĠBlock . AIR , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPEN MODE _ EY ED ROP PER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui Palette Selector . fore Ġ= Ġif Ġ( world . get Tile From Terrain ( x , Ġy ) Ġ== ĠBlock . AIR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" wall @ "+ world . get Tile From Wall ( x , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworld . get Tile From Terrain ( x , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPEN MODE _ MAR QUE E Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Block Marker ( x , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPEN MODE _ MAR QUE E _ ER ASE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Block Marker ( x , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Selection Total Dimension (): ĠPoint 2 i Ġ{ ĊĠĠĠĠĠĠĠ Ġselection . sortBy Ġ{ Ġit . y Ġ* Ġworld . width Ġ+ Ġit . x Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġselection . last () Ġ- Ġselection . first () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* private Ġfun Ġserial ise Selection ( outfile : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsave Ġformat : Ġsparse Ġlist Ġencoded Ġin Ġfollowing Ġbinary Ġformat : ĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ ĠHeader : ĠTE a T 0 b LD Ġ-- Ġmagic : ĠT err ar um ĠAttachment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInt 8 Ġversion Ġnumber Ġ-- Ġalways Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInt 8 Ġnumber Ġof Ġlayers Ġ-- Ġalways Ġ 2 Ġor Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInt 8 Ġnumber Ġof Ġpayload s Ġ-- Ġalways Ġ 2 Ġor Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint 8 Ġcompression Ġalgorithm Ġ-- Ġalways Ġ 1 Ġ( DE FL ATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInt 1 6 Ġwidth ĊĊĠĠĠĠĠĠĠ ĠThe Ġrest : Ġpayload s Ġdefined Ġin Ġthe Ġmap Ġdata Ġformat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPayload s : Ġarray Ġof Ġ( Int 4 8 Ġtile Address , ĠUInt 1 6 Ġblock ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPayload Ġnames : ĠTer L , ĠW al L , ĠW ir L Ġfor ĠT errain , ĠWall Ġand ĠWire Ġrespectively ĊĊĠĠĠĠĠĠĠ ĠFooter : ĠEnd TE M Ġ\ xFF \ xFE Ġ-- Ġmagic : Ġend Ġof Ġattachment Ġwith ĠB OM ĊĊĠĠĠĠĠĠĠ ĠEn dian : ĠL IT TLE ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ// Ġproc : ĊĠĠĠĠĠĠĠ Ġ// ĠĠ Ġtranslate Ġboxes Ġso Ġthat Ġleft most Ġpoint Ġis Ġ( 0 , 0 ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠ Ġwrite Ġto Ġthe Ġlist Ġusing Ġtranslated Ġcoords ĊĊĠĠĠĠĠĠĠ Ġval Ġpayload s Ġ= ĠarrayOf (" W al L ", Ġ" Ter L ", Ġ" W ir L ") ĊĊĠĠĠĠĠĠĠ Ġval Ġselection Dim Ġ= Ġget Selection Total Dimension () ĊĠĠĠĠĠĠĠ Ġval Ġf os Ġ= ĠFileOutputStream ( outfile ) ĊĠĠĠĠĠĠĠ Ġ// Ġwrite Ġheader ĊĠĠĠĠĠĠĠ Ġf os . write (" TE a T 0 b LD ". toByteArray ()) ĊĠĠĠĠĠĠĠ Ġf os . write ( byte ArrayOf ( 1 , 3 , 3 , 1 )) ĊĠĠĠĠĠĠĠ Ġf os . write ( selection Dim . x . to Little Short ()) ĊĠĠĠĠĠĠĠ Ġ// Ġwrite Ġwall Ġ-> Ġterrain Ġ-> Ġwire Ġ( order Ġdefined Ġin ĠGame World . T ERR AIN / WALL / WI RE ) ĊĠĠĠĠĠĠĠ Ġpayload s . forEach Indexed Ġ{ Ġindex , Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf os . write ( PAYLOAD _ HEADER ); Ġf os . write ( it . toByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtile Ġ= Ġworld . get Tile From ( index , Ġit . x , Ġit . y ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddr Ġ= ĠLand Util . getBlock Addr ( world , Ġit . x Ġ- Ġselection Dim . x , Ġit . y Ġ- Ġselection Dim . y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf os . write ( addr . to UL ittle 4 8 ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf os . write ( tile . to Little ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf os . write ( PAYLOAD _ FO OTER ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġf os . write ( FILE _ FO OTER ) ĊĠĠĠĠĠĠĠ Ġf os . close () ĊĠĠĠ Ġ}*/ Ċ } Ċ Ċ class ĠBuilding Maker Controller ( val Ġscreen : ĠBuilding Maker ) Ġ: ĠInput Adapter () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġtouch Up ( screen X : ĠInt , Ġscreen Y : ĠInt , Ġpointer : ĠInt , Ġbutton : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġscreen . ui Container . forEach Ġ{ Ġit ?. touch Up ( screen X , Ġscreen Y , Ġpointer , Ġbutton ) Ġ} ĊĠĠĠĠĠĠĠ Ġscreen . t apped On UI Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġkey Typed ( character : ĠChar ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġscreen . ui Container . forEach Ġ{ Ġit ?. key Typed ( character ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsc rolled ( amount X : ĠFloat , Ġamount Y : ĠFloat ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġscreen . ui Container . forEach Ġ{ Ġit ?. sc rolled ( amount X , Ġamount Y ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġkey Up ( key code : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġscreen . ui Container . forEach Ġ{ Ġit ?. key Up ( key code ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtouch Drag ged ( screen X : ĠInt , Ġscreen Y : ĠInt , Ġpointer : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġscreen . ui Container . forEach Ġ{ Ġit ?. touch Drag ged ( screen X , Ġscreen Y , Ġpointer ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġkey Down ( key code : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġscreen . ui Container . forEach Ġ{ Ġit ?. key Down ( key code ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtouch Down ( screen X : ĠInt , Ġscreen Y : ĠInt , Ġpointer : ĠInt , Ġbutton : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġscreen . ui Container . forEach Ġ{ Ġit ?. touch Down ( screen X , Ġscreen Y , Ġpointer , Ġbutton ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠMov able World Camera ( val Ġparent : ĠBuilding Maker ) Ġ: ĠActor Human oid ( 0 , Ġphys Prop Ġ= ĠPh ys Properties . MOB ILE _ OBJECT ) Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġreference ID Ġ= ĠT err ar um . PLAYER _ REF _ ID ĊĠĠĠĠĠĠĠ Ġis No Clip Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġset Hit box Dimension ( 1 , Ġ 1 , Ġ 0 , Ġ 0 ) ĊĊĊĠĠĠĠĠĠĠ Ġactor Value [ AV Key . SPEED ] Ġ= Ġ 8 . 0 ĊĠĠĠĠĠĠĠ Ġactor Value [ AV Key . SPEED BU FF ] Ġ= Ġ 1 . 0 ĊĠĠĠĠĠĠĠ Ġactor Value [ AV Key . AC CEL ] Ġ= ĠActor Human oid . WAL K _ AC CEL _ BASE ĊĠĠĠĠĠĠĠ Ġactor Value [ AV Key . AC CEL BU FF ] Ġ= Ġ 4 . 0 ĊĠĠĠĠĠĠĠ Ġactor Value [ AV Key . JUMP POWER ] Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġactor Value [ AV Key . FR I CTION MULT ] Ġ= Ġ 4 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTODO Ġresize - aware ĊĠĠĠ Ġprivate Ġvar Ġco erce In Start Ġ= ĠPoint 2 d ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( App . scr . width Ġ- Ġhit box . width ) Ġ/ Ġ 2 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( App . scr . height Ġ- Ġhit box . height ) Ġ/ Ġ 2 . 0 ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġvar Ġco erce In End Ġ= ĠPoint 2 d ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . world . width Ġ* ĠT ILE _ SIZE Ġ- Ġ( App . scr . width Ġ- Ġhit box . width ) Ġ/ Ġ 2 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . world . height Ġ* ĠT ILE _ SIZE Ġ- Ġ( App . scr . height Ġ- Ġhit box . height ) Ġ/ Ġ 2 . 0 ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( delta : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . update ( delta ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġconf ine Ġthe Ġcamera Ġso Ġit Ġwon 't Ġwrap ĊĠĠĠĠĠĠĠ Ġthis . hit box . hit box Start . set Co erce In ( coerce In Start , Ġco erce In End ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw Body ( batch : ĠSprite Batch ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw G low ( batch : ĠSprite Batch ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Actor Value Change ( key : ĠString , Ġvalue : ĠAny ?) Ġ{ ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ class ĠYaml Command Exit Ġ: ĠYaml Inv ok able Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( args : ĠArray < Any >) Ġ{ ĊĠĠĠĠĠĠĠ ĠApp . set Screen ( Title Screen ( App . batch )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠYaml Command Set Time Mor ning Ġ: ĠYaml Inv ok able Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( args : ĠArray < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( args [ 0 ] Ġas ĠBuilding Maker ). game World . world Time . setTime Of Today ( World Time . parse Time (" 7 h 0 0 ")) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠYaml Command Set Time No on Ġ: ĠYaml Inv ok able Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( args : ĠArray < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( args [ 0 ] Ġas ĠBuilding Maker ). game World . world Time . setTime Of Today ( World Time . parse Time (" 1 2 h 3 0 ")) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠYaml Command Set Time D us k Ġ: ĠYaml Inv ok able Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( args : ĠArray < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( args [ 0 ] Ġas ĠBuilding Maker ). game World . world Time . setTime Of Today ( World Time . parse Time (" 1 8 h 4 0 ")) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠYaml Command Set Time Night Ġ: ĠYaml Inv ok able Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( args : ĠArray < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( args [ 0 ] Ġas ĠBuilding Maker ). game World . world Time . setTime Of Today ( World Time . parse Time (" 0 h 3 0 ")) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠYaml Command Tool P encil Ġ: ĠYaml Inv ok able Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( args : ĠArray < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( args [ 0 ] Ġas ĠBuilding Maker ). current Pen Mode Ġ= ĠBuilding Maker . PEN MODE _ P ENCIL ĊĠĠĠĠĠĠĠ Ġ( args [ 0 ] Ġas ĠBuilding Maker ). current Pen Target Ġ= ĠBuilding Maker . P ENT ARGET _ T ERR AIN ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠYaml Command Tool P encil Erase Ġ: ĠYaml Inv ok able Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( args : ĠArray < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( args [ 0 ] Ġas ĠBuilding Maker ). current Pen Mode Ġ= ĠBuilding Maker . PEN MODE _ P ENCIL _ ER ASE ĊĠĠĠĠĠĠĠ Ġ( args [ 0 ] Ġas ĠBuilding Maker ). current Pen Target Ġ= ĠBuilding Maker . P ENT ARGET _ T ERR AIN ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠYaml Command Tool P encil Erase Wall Ġ: ĠYaml Inv ok able Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( args : ĠArray < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( args [ 0 ] Ġas ĠBuilding Maker ). current Pen Mode Ġ= ĠBuilding Maker . PEN MODE _ P ENCIL _ ER ASE ĊĠĠĠĠĠĠĠ Ġ( args [ 0 ] Ġas ĠBuilding Maker ). current Pen Target Ġ= ĠBuilding Maker . P ENT ARGET _ WALL ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠYaml Command Tool Ey ed rop per Ġ: ĠYaml Inv ok able Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( args : ĠArray < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( args [ 0 ] Ġas ĠBuilding Maker ). current Pen Mode Ġ= ĠBuilding Maker . PEN MODE _ EY ED ROP PER ĊĠĠĠĠĠĠĠ Ġ( args [ 0 ] Ġas ĠBuilding Maker ). current Pen Target Ġ= ĠBuilding Maker . P ENT ARGET _ T ERR AIN Ġ+ ĠBuilding Maker . P ENT ARGET _ WALL ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠYaml Command Tool Mar quee Ġ: ĠYaml Inv ok able Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( args : ĠArray < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( args [ 0 ] Ġas ĠBuilding Maker ). current Pen Mode Ġ= ĠBuilding Maker . PEN MODE _ MAR QUE E ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠYaml Command Tool Mar quee Erase Ġ: ĠYaml Inv ok able Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( args : ĠArray < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( args [ 0 ] Ġas ĠBuilding Maker ). current Pen Mode Ġ= ĠBuilding Maker . PEN MODE _ MAR QUE E _ ER ASE ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠYaml Command Tool Mar quee Clear Ġ: ĠYaml Inv ok able Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( args : ĠArray < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( args [ 0 ] Ġas ĠBuilding Maker ). selection . toList (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( args [ 0 ] Ġas ĠBuilding Maker ). remove Block Marker ( it . x , Ġit . y ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠYaml Command Tool Toggle Mar quee Overlay Ġ: ĠYaml Inv ok able Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( args : ĠArray < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( args [ 0 ] Ġas ĠBuilding Maker ). show Selection Ġ= Ġ!( args [ 0 ] Ġas ĠBuilding Maker ). show Selection ĊĠĠĠ Ġ} Ċ } Ċ