package Ġcom . gg games . hour glass . presentation . end turn Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . recyclerview . widget . Default Item Animator Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager . HORIZONTAL Ċ import Ġcom . gg games . hour glass . R Ċ import Ġcom . gg games . hour glass . features . video . Video Player Ċ import Ġcom . gg games . hour glass . model . Card Ċ import Ġcom . gg games . hour glass . model . Player Ċ import Ġcom . gg games . hour glass . model . Player Turn State Ċ import Ġcom . gg games . hour glass . presentation . common . Name Badge Ċ import Ġcom . gg games . hour glass . presentation . di . create View Component Ċ import Ġcom . google . android . ex op layer 2 . ui . Player View Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Dialog Fragment Ċ import Ġkotlinx . android . synt hetic . main . fragment _ end _ turn _ dialog .* Ċ import Ġtim ber . log . Tim ber Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠEnd Turn Dialog Fragment Ġ: ĠBottom Sheet Dialog Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcards Found Adapter : ĠC ards Found Adapter ĊĊĠĠĠ Ġprivate Ġvar Ġround Number : ĠInt Ġ= Ġ 1 ĊĊĠĠĠ Ġfun Ġshow ( activity : ĠAppCompatActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow ( activity . support FragmentManager , Ġthis . java Class . simple Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTODO Ġ 1 7 . 3 . 2 1 : Ġremove Ġwhen Ġgift Ġgame Ġis Ġsupported ĊĠĠĠ Ġprivate Ġval Ġis Gift Game Ġ= Ġfalse ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġvideo Player : ĠVideo Player ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ= Ġinflater . inflate ( R . layout . fragment _ end _ turn _ dialog , Ġcontainer , Ġfalse ) ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġcreate View Component ( this ). inject ( this ) ĊĊĠĠĠĠĠĠĠ Ġclose Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . w (" close Ġclick : Ġdialog :$ dialog ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcards Found Adapter Ġ= Ġif Ġ( is Gift Game ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Player . initialize Player () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC ards Found Adapter ( onClick Ġ= Ġnull , ĠonClose Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC ards Found Adapter ( onClick Ġ= Ġon Gift Card Click (), ĠonClose Ġ= Ġon Gift Card Close ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcards RecyclerView . set Has Fixed Size ( true ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= ĠLinearLayoutManager ( this . context , ĠH ORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġcards RecyclerView . layout Manager Ġ= Ġlayout Manager ĊĠĠĠĠĠĠĠ Ġcards RecyclerView . item Animator Ġ= ĠDefault Item Animator () ĊĠĠĠĠĠĠĠ Ġcards RecyclerView . adapter Ġ= Ġcards Found Adapter ĊĊĠĠĠĠĠĠĠ Ġarguments ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġit . getString ( KEY _ PLAYER _ NAME ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Player Name Ġ= Ġit . getString ( KEY _ NEXT _ PLAYER _ NAME ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġround Number Ġ= Ġit . getInt ( KEY _ ROUND _ NUMBER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcards Names : ĠArray < Card >? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . get Parcelable Array ( KEY _ CAR DS ) Ġas ĠArray < Card > ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcards List Ġ= Ġcards Names ?. toList () Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcards Found Adapter . setData ( cards List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . text Ġ= ĠgetString ( R . string . end _ turn _ title , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( next Player Name . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Player Name Badge . state Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠName Badge . State ( next Player Name , ĠPlayer Turn State . Up Next ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Player Label . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Player Name Badge . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcards Amount Description . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . end _ turn _ cards _ description , Ġcards Names ?. size Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġif Ġ( is Gift Game ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Player . release Player () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( player : ĠPlayer , Ġnext Player : ĠPlayer ?, Ġcards : ĠList < Card >, Ġround Number : ĠInt ): ĠEnd Turn Dialog Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEnd Turn Dialog Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Cancel able Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( KEY _ PLAYER _ NAME , Ġplayer . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Player ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( KEY _ NEXT _ PLAYER _ NAME , Ġnext Player . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Parcelable Array ( KEY _ CAR DS , Ġcards . to Typed Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Int ( KEY _ ROUND _ NUMBER , Ġround Number ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ PLAYER _ NAME Ġ= Ġ" player Name " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ NEXT _ PLAYER _ NAME Ġ= Ġ" next Player Name " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ ROUND _ NUMBER Ġ= Ġ" round Number " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ CAR DS Ġ= Ġ" cards " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Gift Card Click () Ġ= Ġ{ Ġcard : ĠCard , Ġplayer View : ĠPlayer View , Ġgift Text : ĠTextView Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġwhen Ġ( round Number ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard . video Url 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard . video Url 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard . video Url 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġurl ?. let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . startsWith (" text :" )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( gift Text . tag Ġ!= Ġ" open ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgift Text . text Ġ= Ġit . remove Prefix (" text :") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgift Text . tag Ġ= Ġ" open " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgift Text . text Ġ= Ġcard . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgift Text . tag Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Player . setView ( player View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer View . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Player . play Video ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Gift Card Close () Ġ= Ġ{ Ġplayer View : ĠPlayer View Ġ-> ĊĠĠĠĠĠĠĠ Ġplayer View . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvideo Player . stop () ĊĠĠĠ Ġ} Ċ } ĊĊ