package Ġcom . ort . last w olf . domain . service . creator Ċ Ċ import Ġcom . ort . last w olf . domain . model . my self . participant . V illage Creator Sit uation Ċ import Ġcom . ort . last w olf . domain . model . player . Player Ċ import Ġcom . ort . last w olf . domain . model . v illage . V illage Ċ import Ġcom . ort . last w olf . domain . service . day change . Roll Calling Domain Service Ċ import Ġcom . ort . last w olf . fw . exception . Last w olf Business Exception Ċ import Ġorg . springframework . stereotype . Service Ċ Ċ @ Service Ċ class ĠCreator Domain Service ( ĊĠĠĠ Ġprivate Ġval Ġroll Calling Domain Service : ĠRoll Calling Domain Service Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġconvert ToS it uation ( ĊĠĠĠĠĠĠĠ Ġv illage : ĠV illage , ĊĠĠĠĠĠĠĠ Ġplayer : ĠPlayer ? ĊĠĠĠ Ġ): ĠV illage Creator Sit uation Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠV illage Creator Sit uation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Available Creator Setting Ġ= Ġis Available Creator Setting ( v illage , Ġplayer ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Available Creator Say Ġ= Ġis Available Creator Say ( v illage , Ġplayer ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Available Start V illage Ġ= Ġis Available Start V illage ( v illage , Ġplayer ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Available Cancel V illage Ġ= Ġis Available Cancel V illage ( v illage , Ġplayer ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Available Kick Ġ= Ġis Available Kick ( v illage , Ġplayer ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Available Modify Setting Ġ= Ġis Available Modify Setting ( v illage , Ġplayer ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Available Start Roll Call Ġ= Ġroll Calling Domain Service . can Start Roll Call ( v illage , Ġplayer ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Available Cancel Roll Call Ġ= Ġroll Calling Domain Service . can Cancel Roll Call ( v illage , Ġplayer ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġassert Start V illage ( v illage : ĠV illage , Ġplayer : ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Available Start V illage ( v illage , Ġplayer )) Ġthrow ĠLast w olf Business Exception (" æĿ ĳ ãĤĴ éĸĭå§ĭ ãģ§ãģį ãģ¾ãģĽãĤĵ ") ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// Ġ================================================================= ================== ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAss ist ĠLogic ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ============ ĊĠĠĠ Ġprivate Ġfun Ġis Available Creator Setting ( ĊĠĠĠĠĠĠĠ Ġv illage : ĠV illage , ĊĠĠĠĠĠĠĠ Ġplayer : ĠPlayer ? ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġplayer Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( v illage . status . is Finished ()) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ// Ġ ç®¡çĲĨ èĢħ ãģĭ æĿ ĳ å»º ãģ¦ ãģª ãĤī ok ĊĠĠĠĠĠĠĠ Ġif Ġ( v illage . creator Player . id Ġ== Ġplayer . id ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( v illage . dummy Participant () !!. player . id Ġ== Ġplayer . id ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Available Creator Say ( ĊĠĠĠĠĠĠĠ Ġv illage : ĠV illage , ĊĠĠĠĠĠĠĠ Ġplayer : ĠPlayer ? ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! this . is Available Creator Setting ( v illage , Ġplayer )) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Available Start V illage ( ĊĠĠĠĠĠĠĠ Ġv illage : ĠV illage , ĊĠĠĠĠĠĠĠ Ġplayer : ĠPlayer ? ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! this . is Available Creator Setting ( v illage , Ġplayer )) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġv illage . is Available Start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Available Cancel V illage ( ĊĠĠĠĠĠĠĠ Ġv illage : ĠV illage , ĊĠĠĠĠĠĠĠ Ġplayer : ĠPlayer ? ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! this . is Available Creator Setting ( v illage , Ġplayer )) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġv illage . status . is Re cruit ing () Ġ// Ġ ãĥĹãĥŃ ãĥŃ ãĥ¼ãĤ ° ä¸Ń ãģ® ãģ¿ åı¯èĥ½ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Available Kick ( ĊĠĠĠĠĠĠĠ Ġv illage : ĠV illage , ĊĠĠĠĠĠĠĠ Ġplayer : ĠPlayer ? ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! this . is Available Creator Setting ( v illage , Ġplayer )) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġv illage . status . is Re cruit ing () Ġ// Ġ ãĥĹãĥŃ ãĥŃ ãĥ¼ãĤ ° ä¸Ń ãģ® ãģ¿ åı¯èĥ½ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Available Modify Setting ( ĊĠĠĠĠĠĠĠ Ġv illage : ĠV illage , ĊĠĠĠĠĠĠĠ Ġplayer : ĠPlayer ? ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! this . is Available Creator Setting ( v illage , Ġplayer )) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġv illage . status . is Re cruit ing () Ġ// Ġ ãĥĹãĥŃ ãĥŃ ãĥ¼ãĤ ° ä¸Ń ãģ® ãģ¿ åı¯èĥ½ ĊĠĠĠ Ġ} Ċ }