package Ġcom . ly ee ed ar . Components Ċ Ċ import Ġcom . badlogic . ash ley . core . Entity Ċ import Ġcom . ly ee ed ar . Direction Ċ import Ġcom . ly ee ed ar . Game . Tile Ċ import Ġcom . ly ee ed ar . Space Slot Ċ import Ġcom . ly ee ed ar . Util . Point Ċ Ċ var ĠPosition Component . tile : ĠTile ? Ċ ĉ get () Ġ= Ġposition Ġas ? ĠTile Ċ ĉ set ( value ) Ċ ĉ { Ċĉ ĉ if Ġ( value Ġ!= Ġnull ) Ġposition Ġ= Ġvalue Ċ ĉ } Ċ Ċ fun ĠPosition Component . is On Tile ( point : ĠPoint ): ĠBoolean Ċ { Ċ ĉ val Ġtile Ġ= Ġthis . tile Ġ?: Ġreturn Ġfalse ĊĊ ĉ for Ġ( x Ġin Ġ 0 Ġuntil Ġsize ) Ċ ĉ { Ċĉ ĉ for Ġ( y Ġin Ġ 0 Ġuntil Ġsize ) Ċĉ ĉ { Ċĉĉ ĉ val Ġt Ġ= Ġtile . level . get Tile ( tile , Ġx , Ġy ) Ġ?: Ġcontinue Ċĉĉ ĉ if Ġ( t Ġ== Ġpoint ) Ġreturn Ġtrue Ċĉ ĉ } Ċ ĉ } Ċ ĉ return Ġfalse Ċ } Ċ Ċ fun ĠPosition Component . get Edge Tiles ( dir : ĠDirection ): Ġcom . badlogic . gdx . utils . Array < Tile > Ċ { Ċ ĉ val Ġtile Ġ= Ġposition Ġas ? ĠTile ĊĉĉĉĠĠ Ġ?: Ġthrow ĠException (" Position Ġmust Ġbe Ġa Ġtile !") ĊĊ ĉ var Ġx step Ġ= Ġ 0 Ċ ĉ var Ġy step Ġ= Ġ 0 ĊĊ ĉ var Ġsx Ġ= Ġ 0 Ċ ĉ var Ġsy Ġ= Ġ 0 ĊĊ ĉ if Ġ( Ġdir Ġ== ĠDirection . NORTH Ġ) Ċ ĉ { Ċĉ ĉ sx Ġ= Ġ 0 Ċĉ ĉ sy Ġ= Ġsize Ġ- Ġ 1 ĊĊĉ ĉ x step Ġ= Ġ 1 Ċĉ ĉ yst ep Ġ= Ġ 0 Ċ ĉ } Ċ ĉ else Ġif Ġ( Ġdir Ġ== ĠDirection . SO UTH Ġ) Ċ ĉ { Ċĉ ĉ sx Ġ= Ġ 0 Ċĉ ĉ sy Ġ= Ġ 0 ĊĊĉ ĉ x step Ġ= Ġ 1 Ċĉ ĉ yst ep Ġ= Ġ 0 Ċ ĉ } Ċ ĉ else Ġif Ġ( Ġdir Ġ== ĠDirection . EAST Ġ) Ċ ĉ { Ċĉ ĉ sx Ġ= Ġsize Ġ- Ġ 1 Ċĉ ĉ sy Ġ= Ġ 0 ĊĊĉ ĉ x step Ġ= Ġ 0 Ċĉ ĉ yst ep Ġ= Ġ 1 Ċ ĉ } Ċ ĉ else Ġif Ġ( Ġdir Ġ== ĠDirection . WEST Ġ) Ċ ĉ { Ċĉ ĉ sx Ġ= Ġ 0 Ċĉ ĉ sy Ġ= Ġ 0 ĊĊĉ ĉ x step Ġ= Ġ 0 Ċĉ ĉ yst ep Ġ= Ġ 1 Ċ ĉ } ĊĊ ĉ val Ġtiles Ġ= Ġcom . badlogic . gdx . utils . Array < Tile >( 1 ) Ċ ĉ for Ġ( i Ġin Ġ 0 Ġuntil Ġsize ) Ċ ĉ { Ċĉ ĉ val Ġt Ġ= Ġtile . level . get Tile ( tile , Ġsx Ġ+ Ġx step Ġ* Ġi , Ġsy Ġ+ Ġy step Ġ* Ġi ) Ġ?: Ġcontinue Ċĉ ĉ tiles . add ( t ) Ċ ĉ } ĊĊ ĉ return Ġtiles Ċ } Ċ Ċ fun ĠPosition Component . isValid Tile ( t : ĠTile , Ġentity : ĠEntity ): ĠBoolean Ċ { Ċ ĉ for Ġ( x Ġin Ġ 0 Ġuntil Ġsize ) Ċ ĉ { Ċĉ ĉ for Ġ( y Ġin Ġ 0 Ġuntil Ġsize ) Ċĉ ĉ { Ċĉĉ ĉ val Ġtile Ġ= Ġt . level . get Tile ( t , Ġx , Ġy ) Ċĉĉ ĉ if Ġ( tile Ġ== Ġnull Ġ|| Ġ( tile . contents . get ( slot ) Ġ!= Ġnull Ġ&& Ġtile . contents . get ( slot ) Ġ!= Ġentity ) Ġ|| Ġtile . contents . get ( Space Slot . WALL ) Ġ!= Ġnull ) Ċĉĉ ĉ { Ċĉĉĉ ĉ return Ġfalse Ċĉĉ ĉ } Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ return Ġtrue Ċ } Ċ Ċ fun ĠPosition Component . remove From Tile ( entity : ĠEntity ) Ċ { Ċ ĉ if Ġ( tile Ġ== Ġnull ) Ġreturn ĊĊ ĉ for Ġ( x Ġin Ġ 0 Ġuntil Ġsize ) Ċ ĉ { Ċĉ ĉ for Ġ( y Ġin Ġ 0 Ġuntil Ġsize ) Ċĉ ĉ { Ċĉĉ ĉ val Ġtile Ġ= Ġtile !!. level . get Tile ( tile !! , Ġx , Ġy ) Ġ?: Ġcontinue Ċĉĉ ĉ if Ġ( tile . contents [ slot ] Ġ== Ġentity ) Ġtile . contents . remove ( slot ) Ċĉ ĉ } Ċ ĉ } Ċ } Ċ Ċ fun ĠPosition Component . addTo Tile ( entity : ĠEntity ) Ċ { Ċ ĉ val Ġt Ġ= Ġtile !! Ċ ĉ for Ġ( x Ġin Ġ 0 Ġuntil Ġsize ) Ċ ĉ { Ċĉ ĉ for Ġ( y Ġin Ġ 0 Ġuntil Ġsize ) Ċĉ ĉ { Ċĉĉ ĉ val Ġtile Ġ= Ġt . level . get Tile ( t , Ġx , Ġy ) Ġ?: Ġcontinue Ċĉĉ ĉ tile . contents [ slot ] Ġ= Ġentity Ċĉ ĉ } Ċ ĉ } Ċ } Ċ Ċ fun ĠPosition Component . do Move ( t : ĠTile , Ġentity : ĠEntity ) Ċ { Ċ ĉ remove From Tile ( entity ) ĊĊ ĉ position Ġ= Ġt ĊĊ ĉ addTo Tile ( entity ) Ċ } Ċ