package Ġcom . example . android . un scr amble . ui . game Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġcom . example . android . un scr amble . R Ċ import Ġcom . example . android . un scr amble . databinding . Game Fragment Binding Ċ import Ġcom . google . android . material . dialog . Material AlertDialog Builder Ċ Ċ class ĠGame Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠGame Fragment Binding ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠGame ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . inflate ( in flater , ĠR . layout . game _ fragment , Ġcontainer , false ) ĊĠĠĠĠĠĠĠ ĠLog . d (" Game Fragment ", Ġ" Game Fragment Ġcreated / re - created !") ĊĠĠĠĠĠĠĠ ĠLog . d ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Game Fragment ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Word : Ġ${ viewModel . current Scr amb led Word . value } ĠScore : Ġ${ viewModel . score . value } ĠWord Count : Ġ${ viewModel . current Word Count . value }" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame ViewModel Ġ= ĠviewModel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax No Of Words Ġ= ĠGame ViewModel . MAX _ NO _ OF _ WORDS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Owner Ġ= Ġview Lifecycle Owner ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠSetup Ġa Ġclick Ġlistener Ġfor Ġthe ĠSubmit Ġand ĠSkip Ġbuttons . ĊĠĠĠĠĠĠĠ Ġbinding . submit . setOnClickListener Ġ{ ĠonSubmit Word () Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . skip . setOnClickListener Ġ{ Ġon Skip Word () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonSubmit Word () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplayer Word Ġ= Ġbinding . textInput EditText . text . toString () ĊĠĠĠĠĠĠĠ Ġif Ġ( viewModel . is User Word Correct ( player Word )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetError TextField ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! viewModel . next Word ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Final Score Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetError TextField ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠLog . d (" Game Fragment ", Ġ" Score Ġ${ viewModel . score . value }") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Skip Word () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( viewModel . next Word ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetError TextField ( false ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Final Score Dialog () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrestart Game () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . re initialize Data () ĊĠĠĠĠĠĠĠ ĠsetError TextField ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexit Game () Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. finish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetError TextField ( error : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Field . isError Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Field . error Ġ= ĠgetString ( R . string . try _ again ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Field . isError Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Input EditText . text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Final Score Dialog () Ġ{ ĊĠĠĠĠĠĠĠ ĠMaterial AlertDialog Builder ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( getString ( R . string . congr at ulations )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( getString ( R . string . you _ s cored , ĠviewModel . score . value )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cancel able ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( getString ( R . string . exit )) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexit Game () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( getString ( R . string . play _ again )) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrestart Game () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Detach () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detach () ĊĠĠĠĠĠĠĠ ĠLog . d (" Game Fragment ", Ġ" Game Fragment Ġdestroyed !") ĊĠĠĠ Ġ} Ċ } Ċ