package Ġorg . lux ons . se ven w ond ers . ui . components . game Ċ Ċ import Ġblueprint js . core .* Ċ import Ġblueprint js . icons . Icon Names Ċ import Ġkotlinx . css .* Ċ import Ġkotlinx . css . Position Ċ import Ġkotlinx . css . properties . transform Ċ import Ġkotlinx . css . properties . translate Ċ import Ġorg . lux ons . se ven w ond ers . client . GameState Ċ import Ġorg . lux ons . se ven w ond ers . client . get Board Ċ import Ġorg . lux ons . se ven w ond ers . client . get Non Ne ighbour Board s Ċ import Ġorg . lux ons . se ven w ond ers . client . get Own Board Ċ import Ġorg . lux ons . se ven w ond ers . model . Move Type Ċ import Ġorg . lux ons . se ven w ond ers . model . Player Move Ċ import Ġorg . lux ons . se ven w ond ers . model . Turn Action Ċ import Ġorg . lux ons . se ven w ond ers . model . api . Player DTO Ċ import Ġorg . lux ons . se ven w ond ers . model . boards . Board Ċ import Ġorg . lux ons . se ven w ond ers . model . boards . Relative Board Position Ċ import Ġorg . lux ons . se ven w ond ers . model . cards . Hand Card Ċ import Ġorg . lux ons . se ven w ond ers . model . resources . Resource Transaction Options Ċ import Ġorg . lux ons . se ven w ond ers . ui . components . Global Styles Ċ import Ġorg . lux ons . se ven w ond ers . ui . redux .* Ċ import Ġreact .* Ċ import Ġstyled . css Ċ import Ġstyled . get ClassName Ċ import Ġstyled . styled Div Ċ Ċ interface ĠGame Scene State Props Ġ: ĠProps With Children Ġ{ ĊĠĠĠ Ġvar Ġcurrent Player : ĠPlayer DTO ? ĊĠĠĠ Ġvar Ġplayers : ĠList < Player DTO > ĊĠĠĠ Ġvar Ġgame : ĠGameState ? ĊĠĠĠ Ġvar Ġprepared Move : ĠPlayer Move ? ĊĠĠĠ Ġvar Ġprepared Card : ĠHand Card ? Ċ } Ċ Ċ interface ĠGame Scene Dispatch Props Ġ: ĠProps With Children Ġ{ ĊĠĠĠ Ġvar Ġsay Ready : Ġ() Ġ-> ĠUnit ĊĠĠĠ Ġvar Ġprepare Move : Ġ( move : ĠPlayer Move ) Ġ-> ĠUnit ĊĠĠĠ Ġvar Ġun prepare Move : Ġ() Ġ-> ĠUnit ĊĠĠĠ Ġvar Ġleave Game : Ġ() Ġ-> ĠUnit Ċ } Ċ Ċ interface ĠGame Scene Props Ġ: ĠGame Scene State Props , ĠGame Scene Dispatch Props Ċ Ċ data Ġclass ĠGame Scene State ( ĊĠĠĠ Ġvar Ġtransaction Selector : ĠTransaction Selector State ? Ċ ) Ġ: ĠState Ċ Ċ data Ġclass ĠTransaction Selector State ( ĊĠĠĠ Ġval Ġmove Type : ĠMove Type , ĊĠĠĠ Ġval Ġcard : ĠHand Card , ĊĠĠĠ Ġval Ġtransactions Options : ĠResource Transaction Options , Ċ ) Ċ Ċ private Ġclass ĠGame Scene ( props : ĠGame Scene Props ) Ġ: ĠR Component < Game Scene Props , ĠGame Scene State >( props ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠGame Scene State . init () Ġ{ ĊĠĠĠĠĠĠĠ Ġtransaction Selector Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠR Builder . render () Ġ{ ĊĠĠĠĠĠĠĠ Ġstyled Div Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Global Styles . pap yr us Background ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Global Styles . fullscreen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġprops . game ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( game Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbp Non Ide al State ( icon Ġ= ĠIcon Names . ERROR , Ġtitle Ġ= Ġ" Error : Ġno Ġgame Ġdata ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġboard Scene ( game ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠR Builder . board Scene ( game : ĠGameState ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġboard Ġ= Ġgame . get Own Board () ĊĠĠĠĠĠĠĠ Ġstyled Div Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 1 0 0 . pct ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( every one Is Waiting For Me ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Game Styles . pul s ating Red ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġgame . action ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Ġis ĠTurn Action . Watch Score ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscore Table Overlay ( action . score Board , Ġprops . players , Ġprops . leave Game ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Info ( game . action . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboard Component ( board Ġ= Ġboard ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding ( all Ġ= Ġ 7 . rem ) Ġ// Ġto Ġfit Ġthe Ġaction Ġinfo Ġmessage Ġ& Ġboard Ġsummar ies ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 1 0 0 . pct ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 1 0 0 . pct ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransactions Selector Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġstate . transaction Selector , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġne ighbours Ġ= Ġplayer Ne ighbours (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprepare Move Ġ= Ġ:: prepare Move And Close Transactions , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Transaction Selection Ġ= Ġ:: reset Transaction Selector , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboard Sum maries ( game ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhand Rotation Indicator ( game . hand Rotation Direction ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhand Cards ( game , Ġprops . prepare Move , Ġ:: start Transaction Selection ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcard Ġ= Ġprops . prepared Card ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmove Ġ= Ġprops . prepared Move ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( card Ġ!= Ġnull Ġ&& Ġmove Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprepared Move ( card , Ġmove ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( game . action Ġis ĠTurn Action . Say Ready ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsay Ready Button () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprepare Move And Close Transactions ( move : ĠPlayer Move ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprops . prepare Move ( move ) ĊĠĠĠĠĠĠĠ ĠsetState Ġ{ Ġtransaction Selector Ġ= Ġnull Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Transaction Selection ( selector State : ĠTransaction Selector State ) Ġ{ ĊĠĠĠĠĠĠĠ ĠsetState Ġ{ Ġtransaction Selector Ġ= Ġselector State Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset Transaction Selector () Ġ{ ĊĠĠĠĠĠĠĠ ĠsetState Ġ{ Ġtransaction Selector Ġ= Ġnull Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġeveryone Is Waiting For Me (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġonly Me InThe Game Ġ= Ġprops . players . count Ġ{ Ġit . is Human Ġ} Ġ== Ġ 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( only Me InThe Game Ġ|| Ġprops . prepared Move Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġgame State Ġ= Ġprops . game Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġgame State . prepared Card sBy Username . values . count Ġ{ Ġit Ġ!= Ġnull Ġ} Ġ== Ġprops . players . size Ġ- Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġplayer Ne ighbours (): ĠPair < Player DTO , ĠPlayer DTO > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġme Ġ= Ġprops . current Player ?. username Ġ?: Ġerror (" we Ġshouldn 't Ġbe Ġtrying Ġto Ġdisplay Ġthis Ġif Ġthere Ġis Ġno Ġplayer ") ĊĠĠĠĠĠĠĠ Ġval Ġplayers Ġ= Ġprops . players ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġplayers . size ĊĠĠĠĠĠĠĠ Ġval Ġmy Index Ġ= Ġplayers . indexOf First Ġ{ Ġit . username Ġ== Ġme Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġplayers [( my Index Ġ- Ġ 1 Ġ+ Ġsize ) Ġ% Ġsize ] Ġto Ġplayers [( my Index Ġ+ Ġ 1 ) Ġ% Ġsize ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠR Builder . action Info ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstyled Div Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasses . add (" bp 3 - dark ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= ĠPosition . fixed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Ġ= Ġ 0 . pct ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= Ġ 0 . pct ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmargin ( all Ġ= Ġ 0 . 4 . rem ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmaxWidth Ġ= Ġ 2 5 . pct Ġ// Ġleave Ġspace Ġfor Ġ 4 Ġboard Ġsummar ies Ġwhen Ġthere Ġare Ġ 7 Ġplayers ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbp Card ( elevation Ġ= ĠE levation . TWO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . className Ġ= ĠGlobal Styles . get ClassName Ġ{ Ġit :: no Padding Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbp Cal lout ( intent Ġ= ĠIntent . PRIMARY , Ġicon Ġ= ĠIcon Names . INFO _ SIGN ) Ġ{ Ġ+ message Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠR Builder . board Sum maries ( game : ĠGameState ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġleft Board Ġ= Ġgame . get Board ( Relative Board Position . LEFT ) ĊĠĠĠĠĠĠĠ Ġval Ġright Board Ġ= Ġgame . get Board ( Relative Board Position . RIGHT ) ĊĠĠĠĠĠĠĠ Ġval Ġtop Board s Ġ= Ġgame . get Non Ne ighbour Board s (). reversed () ĊĠĠĠĠĠĠĠ Ġself Board Summary ( game . get Own Board ()) ĊĠĠĠĠĠĠĠ Ġleft Player Board Summary ( left Board ) ĊĠĠĠĠĠĠĠ Ġright Player Board Summary ( right Board ) ĊĠĠĠĠĠĠĠ Ġif Ġ( top Board s . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop Player Board s Sum maries ( top Board s ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠR Builder . left Player Board Summary ( board : ĠBoard ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstyled Div Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= ĠPosition . absolute ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= Ġ 0 . px ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Ġ= Ġ 4 0 . pct ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboard Summary With Popover ( props . players [ board . player Index ], Ġboard , ĠBoard Summary Side . LEFT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder Top Right Radius Ġ= Ġ 0 . 4 . rem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder Bottom Right Radius Ġ= Ġ 0 . 4 . rem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠR Builder . right Player Board Summary ( board : ĠBoard ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstyled Div Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= ĠPosition . absolute ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġ 0 . px ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Ġ= Ġ 4 0 . pct ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboard Summary With Popover ( props . players [ board . player Index ], Ġboard , ĠBoard Summary Side . RIGHT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder Top Left Radius Ġ= Ġ 0 . 4 . rem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder Bottom Left Radius Ġ= Ġ 0 . 4 . rem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠR Builder . top Player Board s Sum maries ( boards : ĠList < Board >) Ġ{ ĊĠĠĠĠĠĠĠ Ġstyled Div Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= ĠPosition . absolute ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Ġ= Ġ 0 . px ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= Ġ 5 0 . pct ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransform Ġ{ Ġtranslate ((- 5 0 ). pct ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Ġ= ĠDisplay . flex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠflexDirection Ġ= ĠFlex Direction . row ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboards . forEach Ġ{ Ġboard Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġboard Summary With Popover ( props . players [ board . player Index ], Ġboard , ĠBoard Summary Side . TOP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder Bottom Left Radius Ġ= Ġ 0 . 4 . rem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder Bottom Right Radius Ġ= Ġ 0 . 4 . rem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmargin ( horizontal Ġ= Ġ 2 . rem ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠR Builder . self Board Summary ( board : ĠBoard ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstyled Div Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= ĠPosition . absolute ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Ġ= Ġ 0 . px ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= Ġ 0 . px ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboard Summary ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Ġ= Ġprops . players [ board . player Index ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġboard Ġ= Ġboard , ĠBoard Summary Side . BOTTOM , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Pre paration Status Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder Top Left Radius Ġ= Ġ 0 . 4 . rem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder Top Right Radius Ġ= Ġ 0 . 4 . rem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmargin ( horizontal Ġ= Ġ 2 . rem ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠR Builder . prepared Move ( card : ĠHand Card , Ġmove : ĠPlayer Move ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbp Overlay ( isOpen Ġ= Ġtrue , ĠonClose Ġ= Ġprops . un prepare Move ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprepared Move ( card , Ġmove , Ġprops . un prepare Move ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ Ġ+ Global Styles . fixed Center Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠR Builder . say Ready Button () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Ready Ġ= Ġprops . current Player ?. is Ready Ġ== Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= Ġif Ġ( is Ready ) ĠIntent . SUCCESS Ġelse ĠIntent . PRIMARY ĊĠĠĠĠĠĠĠ Ġstyled Div Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcss Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= ĠPosition . absolute ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Ġ= Ġ 6 . rem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= Ġ 5 0 . pct ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransform Ġ{ Ġtranslate ( tx Ġ= Ġ(- 5 0 ). pct ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġz Index Ġ= Ġ 2 Ġ// Ġgo Ġabove Ġthe Ġwonder Ġ( 1 ) Ġand Ġwonder - upgrade Ġcards Ġ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbp Button Group Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbp Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlarge Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisabled Ġ= Ġis Ready , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent Ġ= Ġintent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= Ġif Ġ( is Ready ) ĠIcon Names . TICK _ CIR CLE Ġelse ĠIcon Names . PLAY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġprops . say Ready () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" READY " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnot Ġreally Ġa Ġbutton , Ġbut Ġnice Ġfor Ġstyle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbp Button ( large Ġ= Ġtrue , Ġicon Ġ= ĠIcon Names . PE OP LE , Ġdisabled Ġ= Ġis Ready , Ġintent Ġ= Ġintent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" ${ props . players . count Ġ{ Ġit . is Ready Ġ}} /${ props . players . size }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠR Builder . game Scene () Ġ= Ġgame Scene Ġ{} Ċ Ċ private Ġval Ġgame Scene : ĠComponent Class < Game Scene Props > Ġ= ĊĠĠĠ Ġconnect State And Dispatch < Game Scene State Props , ĠGame Scene Dispatch Props , ĠGame Scene Props >( ĊĠĠĠĠĠĠĠ Ġclazz Ġ= ĠGame Scene :: class , ĊĠĠĠĠĠĠĠ ĠmapDispatchToProps Ġ= Ġ{ Ġdispatch , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprepare Move Ġ= Ġ{ Ġmove Ġ-> Ġdispatch ( Request Prepare Move ( move )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġun prepare Move Ġ= Ġ{ Ġdispatch ( Request Un prepare Move ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsay Ready Ġ= Ġ{ Ġdispatch ( Request Say Ready ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleave Game Ġ= Ġ{ Ġdispatch ( Request Leave Game ()) Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ ĠmapStateToProps Ġ= Ġ{ Ġstate , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Player Ġ= Ġstate . current Player ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayers Ġ= Ġstate . game State ?. players Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame Ġ= Ġstate . game State ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprepared Move Ġ= Ġstate . game State ?. current Prepared Move ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprepared Card Ġ= Ġstate . game State ?. current Prepared Card ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠ Ġ) Ċ