package Ġcom . dev ise works . m cc Backend . controller Ċ Ċ import Ġcom . dev ise works . m cc Backend . domain . Player Ċ import Ġcom . dev ise works . m cc Backend . domain . Player Connection Ċ import Ġcom . dev ise works . m cc Backend . domain . Player Service Ċ import Ġkotlinx . serialization . encode ToString Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . http . Response Entity Ċ import Ġorg . springframework . web . bind . annotation . Cross Origin Ċ import Ġorg . springframework . web . bind . annotation . GetMapping Ċ import Ġorg . springframework . web . bind . annotation . PathVariable Ċ import Ġorg . springframework . web . bind . annotation . PostMapping Ċ import Ġorg . springframework . web . bind . annotation . RequestBody Ċ import Ġorg . springframework . web . bind . annotation . RequestParam Ċ import Ġorg . springframework . web . bind . annotation . ResponseBody Ċ import Ġorg . springframework . web . bind . annotation . RestController Ċ Ċ @ RestController Ċ @ Cross Origin Ċ class ĠPlayer Controller ( ĊĠĠĠ Ġprivate Ġval Ġplayer Service : ĠPlayer Service Ċ ) Ġ{ ĊĊĠĠĠ Ġval Ġonline List Ġ= Ġmutable ListOf < Player >() ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ãĥĹ ãĥ¬ ãĤ¤ ãĥ ¤ ãĥ¼ãģ® ä¸Ģ è¦§ ãĤĴ è¿Ķ ãģĹãģ¾ãģĻ ãĢĤ ĊĠĠĠĠ Ġ* Ġãĥĳ ãĥ©ãĥ¡ãĥ¼ãĤ¿ ãģ« ä½ķ ãĤĤ æĮĩå®ļ ãģĹãģªãģĦ åł´åĲĪãģ¯ ãĢģ ãĤª ãĥ³ ãĥ© ãĤ¤ãĥ³ ãģ® ãĥ¦ãĥ¼ãĤ¶ãĥ¼ ãģ® ãģ¿ ãĤĴ ĊĠĠĠĠ Ġ* Ġ è¿Ķ åį´ ãģĹãģ¾ãģĻ ãĢĤ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġoffline ĠãĤ ª ãĥķ ãĥ© ãĤ¤ãĥ³ ãģ® ãĥ ¦ãĥ¼ãĤ¶ ãĤĤ åĲ« ãĤģ ãĤĭ ĊĠĠĠĠ Ġ* Ġ@ return Ġ ãĥĹ ãĥ¬ ãĤ¤ ãĥ ¤ ãĥ¼ãĥ ª ãĤ¹ãĥĪ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ GetMapping ("/ api / player / list ") ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun Ġget Player List (@ RequestParam ( required = false ) Ġoffline : ĠBoolean Ġ= Ġfalse ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif ( offline ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson . encode ToString ( player Service . findAll (). to Mutable List ()) ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson . encode ToString ( online List ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ãĥĹ ãĥ¬ ãĤ¤ ãĥ ¤ ãĥ¼ ãģĮ æİ¥ç¶ļ ãģĹãģŁ ãģ¨ ãģį ãģ® åĩ¦çĲĨ ãĢĤ ĊĠĠĠĠ Ġ* Ġbody ãĤĴ Player ãģ« ãĥĩ ãĤ· ãĥª ãĤ¢ ãĥ©ãĤ¤ ãĤº ãģĹãģ¦ ãĢģ DB ãģ« æł¼ ç´ į ãģĻãĤĭ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġbody ĠPlayer ãģ« ãĥĩ ãĤ· ãĥª ãĤ¢ ãĥ©ãĤ¤ ãĤº åı¯èĥ½ ãģª JSON ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ PostMapping ("/ api / player / join ") ĊĠĠĠ Ġfun Ġplayer Join Event (@ RequestBody Ġbody : ĠString ){ ĊĠĠĠĠĠĠĠ Ġ// Ġbody ãĤĴ Player ãģ« ãĥĩ ãĤ· ãĥª ãĤ¢ ãĥ©ãĤ¤ ãĤº ĊĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= ĠPlayer (). parse ( body ) ?: return ĊĊĠĠĠĠĠĠĠ Ġ// ĠãĤ ª ãĥ³ ãĥ© ãĤ¤ãĥ³ ãģ« ãģĻãĤĭ ĊĠĠĠĠĠĠĠ Ġplayer . status Ġ= ĠPlayer Connection . ON LINE . status ĊĊĠĠĠĠĠĠĠ Ġ// ĠDB ãģ« ãĥĹ ãĥ¬ ãĤ¤ ãĥ ¤ ãĥ¼ãĤĴ è¿½åĬł ĊĠĠĠĠĠĠĠ Ġonline List . add ( player ) ĊĠĠĠĠĠĠĠ Ġplayer Service . save ( player ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ãĥĹ ãĥ¬ ãĤ¤ ãĥ ¤ ãĥ¼ ãģĮ åĪĩ æĸŃ ãģĹãģŁ ãģ¨ ãģį ãģ® åĩ¦çĲĨ ãĢĤ ĊĠĠĠĠ Ġ* Ġãĥĳ ãĥ©ãĥ¡ãĥ¼ãĤ¿ ãģ® uuid ãĤĴ ãĤĤ ãģ¨ ãģ« ãĢģ ãĤ¹ãĥĨ ãĥ¼ãĤ¿ ãĤ¹ ãĤĴ å¤īæĽ´ ãģĹãģ¦ DB ãģ« æł¼ ç´ į ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġuuid Ġ ãĥĹ ãĥ¬ ãĤ¤ ãĥ ¤ ãĥ¼ãģ® UUID ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ PostMapping ("/ api / player / quit ") ĊĠĠĠ Ġfun Ġplayer Quit Event ( ĊĠĠĠĠĠĠĠ Ġ@ RequestParam Ġuuid : ĠString ĊĠĠĠ Ġ){ ĊĠĠĠĠĠĠĠ Ġ// ĠãĤ ª ãĥ³ ãĥ© ãĤ¤ãĥ³ ãĥªãĤ¹ãĥĪ ãģĭãĤī åīĬéĻ¤ ĊĠĠĠĠĠĠĠ Ġonline List . map Indexed Ġ{ Ġi , Ġp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( p . uuid Ġ== Ġuuid ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġonline List . remove At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠDB ãģĭãĤī ãĥ ¦ãĥ¼ãĤ¶ ãĤĴåıĸå¾Ĺ ĊĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= Ġplayer Service . getBy UUID ( uuid ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġãĥ ¦ãĥ¼ãĤ¶ ãģ® æİ¥ç¶ļ æĥħåł± ãĤĴ ä¸Ĭ æĽ¸ ãģį ĊĠĠĠĠĠĠĠ Ġplayer . status Ġ= ĠPlayer Connection . OFF LINE . status ĊĊĠĠĠĠĠĠĠ Ġ// ĠæĽ ¸ ãģį è¾¼ ãģ¿ ĊĠĠĠĠĠĠĠ Ġplayer Service . save ( player ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUUID ãĤĴæĮĩå®ļ ãģĹãģ¦ ãĥ ¦ãĥ¼ãĤ¶ æĥħåł± ãĤĴåıĸå¾Ĺ ãģĻãĤĭ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġuuid ĠUUID ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ GetMapping ("/ api / player /{ uuid }") ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun Ġget Player By UUID ( ĊĠĠĠĠĠĠĠ Ġ@ PathVariable Ġuuid : ĠString ĊĠĠĠ Ġ): ĠResponseEntity < String >{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResponseEntity ( Json . encode ToString ( Player . serializer (), Ġplayer Service . getBy UUID ( uuid )), ĠHttpStatus . OK ) ĊĠĠĠĠĠĠĠ Ġ} catch ( e : ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResponseEntity ( HttpStatus . NOT _ FOUND ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }