package Ġcom . luc id software . code ker f uffle . kotlin Ċ Ċ import Ġcom . luc id software . code ker f uffle . bot . Direction Ġas ĠJava Direction Ċ import Ġcom . luc id software . code ker f uffle . bot . Coordinate Ġas ĠJava Coordinate Ċ import Ġcom . luc id software . code ker f uffle . bot . Board State Ġas ĠJava Board State Ċ import Ġcom . luc id software . code ker f uffle . bot . Location Data Ġas ĠJava Location Data Ċ import Ġcom . luc id software . code ker f uffle . bot . Player Ġas ĠJava Player ĊĊ Ċ data Ġclass ĠBoard State ( ĊĠĠĠ Ġval Ġboard Width : ĠInt , ĊĠĠĠ Ġval Ġboard Height : ĠInt , ĊĠĠĠ Ġval Ġview Origin : ĠCoordinate , ĊĠĠĠ Ġval Ġboard : ĠArray < Array < Location Data >>, ĊĠĠĠ Ġval Ġplayers : ĠArray < Player > Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom Java ( j : ĠJava Board State ): ĠBoard State Ġ= ĠBoard State ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj . board Width , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj . board Height , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCoordinate . from Java ( j . view Origin ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj . board . map Ġ{ Ġit . map Ġ{ ĠLocation Data . from Java ( it ) Ġ}. to Typed Array ()}. to Typed Array (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj . players . map Ġ{ ĠPlayer . from Java ( it ) Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠCoordinate Ġ( val Ġx : ĠInt , Ġval Ġy : ĠInt ){ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom Java ( j : ĠJava Coordinate ): ĠCoordinate Ġ= ĠCoordinate ( j . x , Ġj . y ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠDirection Ġprivate Ġconstructor ( val Ġx : ĠInt , Ġval Ġy : ĠInt , Ġval Ġjava Dir : ĠJava Direction ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠLeft Ġ= ĠDirection (- 1 , Ġ 0 , ĠJava Direction . LEFT ) ĊĠĠĠĠĠĠĠ Ġval ĠRight Ġ= ĠDirection ( 1 , Ġ 0 , ĠJava Direction . RIGHT ) ĊĠĠĠĠĠĠĠ Ġval ĠUp Ġ= ĠDirection ( 0 , Ġ- 1 , ĠJava Direction . UP ) ĊĠĠĠĠĠĠĠ Ġval ĠDown Ġ= ĠDirection ( 0 , Ġ 1 , ĠJava Direction . DOWN ) ĊĠĠĠĠĠĠĠ Ġfun Ġfrom Java ( java Dir : ĠJava Direction ): ĠDirection Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( java Dir Ġ== ĠJava Direction . LEFT ) ĠLeft ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( java Dir Ġ== ĠJava Direction . RIGHT ) ĠRight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( java Dir Ġ== ĠJava Direction . UP ) ĠUp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠDown ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġto Coordinate () Ġ= ĠCoordinate ( x , Ġy ) Ċ } Ċ Ċ data Ġclass ĠLocation Data ( val Ġowner : ĠInt ?, Ġval Ġtail : ĠInt ?) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom Java ( j : ĠJava Location Data ): ĠLocation Data Ġ= ĠLocation Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( j . owner Ġ== Ġ- 1 ) Ġnull Ġelse Ġj . owner , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( j . tail Ġ== Ġ- 1 ) Ġnull Ġelse Ġj . tail ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠPlayer ( ĊĠĠĠ Ġval Ġid : ĠInt , ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġscore : ĠInt , ĊĠĠĠ Ġval Ġlocation : ĠCoordinate ?, ĊĠĠĠ Ġval Ġdirection : ĠDirection ? Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom Java ( j : ĠJava Player ): ĠPlayer Ġ= ĠPlayer ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj . id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj . name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj . score , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj . location . map { Coordinate . from Java ( it )}. orElse ( null ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj . direction . map { Direction . from Java ( it )}. orElse ( null ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ