package Ġsc riv ener . cl ue wizard Ċ Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroid . widget .* Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġjava . io .* Ċ import Ġjava . lang . Integer . max ĊĊ Ċ // Todo : ĠChange Ġall Ġhard Ġcoded Ġstrings Ġto Ġresources ! Ċ // Todo : ĠSet Ġup Ġdifferent Ġlanguages Ġ( different Ġcountries Ġhave Ġdifferent Ġnames Ġfor Ġthe Ġcharacters ) Ċ // Todo : ĠHave Ġa Ġconfig Ġactivity Ġto Ġcreate Ġcustom Ġprofiles Ġwith Ġnames Ġfor Ġall Ġthe Ġitems Ġand Ġcolo urs Ġetc . Ċ // Todo : ĠAdd Ġa Ġdialog Ġto Ġinput Ġhow Ġmany Ġcards Ġeach Ġplayer Ġhas . Ċ // Todo : ĠLook Ġinto Ġimage Ġbuttons Ġand Ġpotentially Ġreplace Ġthe Ġimage Ġviews Ġwith Ġimage Ġbuttons . Ċ // Todo : ĠSw ipe Ġacross Ġto Ġmake Ġthe Ġcomments Ġtake Ġup Ġthe Ġspace Ġwhere Ġthe Ġboxes Ġare Ġand Ġthen Ġsw ip Ġback Ġto Ġmake Ġit Ġnormal Ġagain . Ċ Ċ // Todo : ĠFIX ĠTHE ĠLA UNCH ĠICON !!!! ! Ċ class ĠGame Activity Ġ: ĠAppCompatActivity (), ĠPopup Menu . On MenuItem ClickListener { ĊĊĠĠĠ Ġprivate Ġval Ġplayer Boxes Ġ= ĠArrayList < ArrayList < Index Image >>() ĊĠĠĠ Ġprivate Ġval Ġcomments Ġ= ĠArrayList < Index TextView >() ĊĠĠĠ Ġprivate Ġval Ġlabels Ġ= ĠArrayList < Index TextView >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ game ) ĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġintent . get Serializable Extra (" game ") Ġas ĠGame ĊĊĠĠĠĠĠĠĠ Ġbuild Game Layout ( game ) ĊĠĠĠĠĠĠĠ Ġfor (( index , Ġcat ) Ġin Ġgame . items . with Index ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor (( item ) Ġin Ġcat . with Index ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame . items [ index ][ item ]=" Pur ple ĠP ony " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate Box Images ( game ) ĊĠĠĠĠĠĠĠ Ġupdate Comments ( game ) ĊĠĠĠĠĠĠĠ Ġupdate Labels ( game ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( game . num Players Ġ== Ġ 1 ) ĠfindViewById < Button >( R . id . game _ btn ). visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġelse Ġ{ build Question Dialog ( game ); Ġinput Player Names ( game )} ĊĊĠĠĠĠĠĠĠ Ġsave ( game ) ĊĠĠĠĠĠĠĠ Ġval Ġtest Ġ= Ġload () ĊĠĠĠĠĠĠĠ Ġif ( test Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( category Ġin Ġtest . categories ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( category ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġwindow . decor View . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsystem Ui Visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION Ġor ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Window Focus Changed ( has Focus : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Window Focus Changed ( has Focus ) ĊĠĠĠĠĠĠĠ Ġif Ġ( has Focus ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . decor View . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsystem Ui Visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION Ġor ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Game Layout ( game : ĠGame ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// add Ġthe Ġcheck - box Ġcontainer Ġarrays Ġfor Ġeach Ġplayer ĊĠĠĠĠĠĠĠ Ġfor ( player Ġin Ġ 0 Ġuntil Ġgame . num Players ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Boxes . add ( ArrayList ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// The Ġviews Ġare Ġinfl ated Ġin Ġa Ġloop Ġand Ġthen Ġadded Ġto Ġthe Ġrows Ġarray Ġthen Ġafter Ġthey Ġhave Ġall Ġbeen Ġinfl ated Ġthey Ġare Ġadded Ġto Ġmain Ġgame Ġlayout ĊĠĠĠĠĠĠĠ Ġval Ġrows Ġ= ĠArrayList < View >() ĊĠĠĠĠĠĠĠ Ġval Ġgame Layout Ġ= ĠfindViewById < LinearLayout >( R . id . game _ layout ) ĊĊĠĠĠĠĠĠĠ Ġ// the Ġmax Ġwidth Ġof Ġthe Ġitem Ġlabels . ĠUsed Ġto Ġmake Ġall Ġthe Ġitem ĠText Views Ġthe Ġsame Ġsize Ġas Ġthe Ġlongest Ġlabel . ĊĠĠĠĠĠĠĠ Ġvar ĠmaxWidth Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġvar Ġitem Index Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ// For Ġeach Ġcategory Ġin Ġthe Ġgame Ġ( Sus pect s , ĠWe apons Ġand ĠRoom s ). ĊĠĠĠĠĠĠĠ Ġfor Ġ(( cat Index , Ġcategory ) Ġin Ġgame . categories . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Row Ġ= ĠLayoutInflater . from ( this ). inflate ( R . layout . row _ title , Ġgame Layout , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġtitle Row . findViewById < TextView >( R . id . title ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Set ĠonClick Listener Ġto Ġchange Ġthe Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . is Single Line Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . is Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . setOnClickListener Ġ{ Ġchange ItemName ( title ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . text Ġ= Ġcategory ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// for Ġthe Ġfirst Ġcategory Ġadd Ġa Ġmenu Ġbutton ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( cat Index == 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmenu Button Ġ= Ġtitle Row . findViewById < ImageView >( R . id . menu _ button ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Button . setImage Resource ( R . drawable . ic _ menu _ light ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Button . is Clickable = true ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Button . setOnClickListener Ġ{ Ġshow Menu ( menu Button ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrows . add ( title Row ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Title Ġ= ĠIndex TextView ( title , Ġ- 1 *( cat Index + 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabels . add ( index Title ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// For Ġeach Ġitem Ġin Ġthe Ġcategory ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġgame . items [ cat Index ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Row Ġ= ĠLayoutInflater . from ( this ). inflate ( R . layout . row _ item , Ġgame Layout , Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomment Ġ= Ġitem Row . findViewById < TextView >( R . id . comment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment . is Single Line Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment . is Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment . setOnClickListener Ġ{ Ġadd Comment ( comment ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Comment Ġ= ĠIndex TextView ( comment , item Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomments . add ( index Comment ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlabel Ġ= Ġitem Row . findViewById < TextView >( R . id . label ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . is Single Line Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . is Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . setOnClickListener Ġ{ Ġchange ItemName ( label ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . text Ġ= Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . measure ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmaxWidth Ġ= Ġmax ( label . meas ured Width , ĠmaxWidth ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Label Ġ= ĠIndex TextView ( label , item Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabels . add ( index Label ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġboxes Layout Ġ= Ġitem Row . findViewById < LinearLayout >( R . id . boxes _ layout ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( player Ġin Ġ 0 Ġuntil Ġgame . num Players ) Ġ{ Ġ// add Ġa Ġcheckbox Ġfor Ġeach Ġplayer ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Ġ= ĠImageView ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbox Ġ= ĠIndex Image ( image , item Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . WRAP _ CONTENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( player Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage . is Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage . setOnClickListener Ġ{ Ġclick Box ( game , Ġbox ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġboxes Layout . addView ( image , Ġparams ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Boxes [ player ]. add ( box ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrows . add ( item Row ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Index ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( row Ġin Ġrows ) Ġ{ Ġ// add Ġthe Ġrows Ġto Ġthe Ġlayout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlabel Ġ= Ġrow . findViewById < TextView >( R . id . label ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( label Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . width Ġ= ĠmaxWidth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame Layout . addView ( row ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Comment ( comment : ĠTextView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠEditText ( this ) ĊĠĠĠĠĠĠĠ Ġinput . request Focus () ĊĠĠĠĠĠĠĠ Ġinput . setText ( comment . text ) ĊĠĠĠĠĠĠĠ Ġval Ġdialog : ĠAlertDialog Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" Comment ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Set " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment . text Ġ= Ġinput . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button (" Cancel ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠ Ġdialog . window ?. set Soft Input Mode ( WindowManager . LayoutParams . SOFT _ INPUT _ STATE _ VISIBLE ) ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange ItemName ( item : ĠTextView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠEditText ( this ) ĊĠĠĠĠĠĠĠ Ġinput . request Focus () ĊĠĠĠĠĠĠĠ Ġinput . setText ( item . text ) ĊĠĠĠĠĠĠĠ Ġval Ġdialog : ĠAlertDialog Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" Change Ġname ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Set " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . text Ġ= Ġinput . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button (" Cancel ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠ Ġdialog . window ?. set Soft Input Mode ( WindowManager . LayoutParams . SOFT _ INPUT _ STATE _ VISIBLE ) ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Question Dialog ( game : ĠGame ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġgame Btn Ġ= ĠfindViewById < Button >( R . id . game _ btn ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlayout Ġ= ĠLayoutInflater . from ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . dialog _ question , ĠfindViewById ( R . id . activity _ game ), Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġval Ġplayer Adapter : ĠArray Adapter < String > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArray Adapter ( this , Ġandroid . R . layout . simple _ spinner _ dropdown _ item , Ġgame . player Names ) ĊĠĠĠĠĠĠĠ Ġval Ġas ker Spin Ġ= Ġlayout . findViewById < Spinner >( R . id . question _ ask er _ spin ) ĊĠĠĠĠĠĠĠ Ġas ker Spin . adapter Ġ= Ġplayer Adapter ĊĠĠĠĠĠĠĠ Ġval Ġanswer er Spin Ġ= Ġlayout . findViewById < Spinner >( R . id . question _ answer er _ spin ) ĊĠĠĠĠĠĠĠ Ġanswer er Spin . adapter Ġ= Ġplayer Adapter ĊĊĠĠĠĠĠĠĠ Ġval Ġitem Sp ins Ġ= ĠArrayList < Spinner >() ĊĠĠĠĠĠĠĠ Ġitem Sp ins . add ( layout . findViewById ( R . id . question _ sus pect _ spin )) ĊĠĠĠĠĠĠĠ Ġitem Sp ins . add ( layout . findViewById ( R . id . question _ weapon _ spin )) ĊĠĠĠĠĠĠĠ Ġitem Sp ins . add ( layout . findViewById ( R . id . question _ room _ spin )) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ(( index , Ġspin ) Ġin Ġitem Sp ins . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter : ĠArray Adapter < String > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArray Adapter ( this , Ġandroid . R . layout . simple _ spinner _ dropdown _ item , Ġgame . items [ index ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspin . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdialog : ĠAlertDialog Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" Question ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( layout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Set " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġas ker Ġ= Ġas ker Spin . selected ItemId . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanswer er Ġ= Ġanswer er Spin . selected ItemId . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Item Ids Ġ= ĠArrayList < Int >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Items Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( index , Ġspin ) Ġin Ġitem Sp ins . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġid Ġ= Ġspin . selected ItemId . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( category Ġin Ġ 0 Ġuntil Ġindex ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ+= Ġgame . items [ category ]. size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Item Ids . add ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Items . add ( spin . selected Item . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Answer ( game , Ġas ker , Ġanswer er , Ġselected Item Ids , Ġselected Items ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button (" Cancel ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠ Ġgame Btn . setOnClickListener Ġ{ Ġdialog . show () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Answer ( game : ĠGame , Ġas ker : ĠInt , Ġanswer er : ĠInt , Ġselected Item Ids : ĠArrayList < Int >, Ġselected Items : ĠArrayList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ask er Ġ== Ġ 0 Ġ&& Ġanswer er Ġ!= Ġgame . num Players ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠSp inner ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Adapter : ĠArray Adapter < String > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArray Adapter ( this , Ġandroid . R . layout . simple _ spinner _ dropdown _ item , Ġselected Items ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput . adapter Ġ= Ġinput Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog : ĠAlertDialog Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" What Ġwas Ġthe Ġanswer ?") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Set " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġans Ġ= Ġselected Item Ids [ input . selected ItemId . toInt ()] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame . add Question ( ask er , Ġanswer er , Ġselected Item Ids , Ġans ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Box Images ( game ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button (" Cancel ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġans Ġ= Ġwhen Ġ( answer er ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame . num Players Ġ-> Ġ- 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame . add Question ( ask er , Ġanswer er , Ġselected Item Ids , Ġans ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Box Images ( game ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinput Player Names ( game : ĠGame ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ( game . num Players Ġ- Ġ 1 ) Ġdown To Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠEditText ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput . hint Ġ= Ġgame . player Names [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog : ĠAlertDialog Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" What Ġis Ġthe Ġplayer 's Ġname ?") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Set " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame . player Names [ index ] Ġ= Ġinput . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button (" Skip ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . window ?. set Soft Input Mode ( WindowManager . LayoutParams . SOFT _ INPUT _ STATE _ VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclick Box ( game : ĠGame , Ġindex Image : ĠIndex Image ){ ĊĠĠĠĠĠĠĠ Ġgame . toggle Main Player Row State ( index Image . index ) ĊĠĠĠĠĠĠĠ Ġfor (( player Index , Ġplayer ) Ġin Ġplayer Boxes . with Index ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Box Image ( game , Ġplayer , Ġplayer Index , Ġindex Image . index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Box Images ( game : ĠGame ){ ĊĠĠĠĠĠĠĠ Ġ// For Ġeach Ġplayer Ġin Ġthe Ġgame ĊĠĠĠĠĠĠĠ Ġfor (( player Index , player ) Ġin Ġplayer Boxes . with Index ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// For Ġeach Ġitem Ġof Ġthat Ġplayer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor (( item Index ) Ġin Ġplayer . with Index ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Set Ġthe Ġimage Ġbased Ġon Ġthe Ġstate Ġof Ġthat Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Box Image ( game , Ġplayer , Ġplayer Index , Ġitem Index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Labels ( game : ĠGame ){ ĊĠĠĠĠĠĠĠ Ġ// Todo : ĠThis Ġseems Ġpretty Ġdirty , Ġthink Ġof Ġa Ġne ater Ġway Ġto Ġdo Ġthis ĊĠĠĠĠĠĠĠ Ġ// Todo : ĠDo ĠI Ġreally Ġneed Ġthe Ġindexed Ġitem Ġclass ? ĠIs n 't Ġan ĠArrayList Ġexactly Ġthe Ġsame ? ĊĠĠĠĠĠĠĠ Ġ// Todo : ĠI Ġwould Ġneed Ġa Ġcategories ĠArrayList Ġas Ġwell Ġas Ġa Ġlabels Ġone ĊĠĠĠĠĠĠĠ Ġval Ġflat Items Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠ Ġfor ( cat Ġin Ġgame . items ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( item Ġin Ġcat ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflat Items . add ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor ( label Ġin Ġlabels ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġa Ġcategory Ġlabel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( label . index < 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . text . text Ġ= Ġgame . categories [- 1 *( label . index + 1 )] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// else Ġit 's Ġan Ġitem Ġlabel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . text . text Ġ= Ġflat Items [ label . index ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Comments ( game : ĠGame ){ ĊĠĠĠĠĠĠĠ Ġfor ( comment Ġin Ġcomments ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomment . text . text Ġ= Ġgame . player Comments [ comment . index ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Box Image ( game : ĠGame , Ġplayer : ĠArrayList < Index Image >, Ġplayer Index : ĠInt , Ġitem Index : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġwhen ( game . player States [ player Index ][ item Index ]){ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġplayer [ item Index ]. image . setImage Resource ( R . drawable . ic _ no box ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġplayer [ item Index ]. image . setImage Resource ( R . drawable . ic _ yes box ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġplayer [ item Index ]. image . setImage Resource ( R . drawable . ic _ un sure box ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Menu ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ ĠPopup Menu ( this , Ġv ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On MenuItem ClickListener ( this @ Game Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinf late ( R . menu . actions ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon MenuItem Click ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . save Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġ" You Ġpressed ĠSave . ĠGood Ġfor Ġyou ! ĠUnfortunately Ġthat Ġfeature Ġisn 't Ġready Ġyet Ġso Ġyou Ġbetter Ġhope Ġthe Ġapp Ġdoesn 't Ġcrash Ġbecause Ġyou 'll Ġlose Ġall Ġyour Ġprogress ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast Ġ= ĠToast . makeText ( application Context , Ġtext , Ġduration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . load Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġ" You Ġpressed ĠLoad . ĠI 'm Ġso Ġhappy Ġfor Ġyou ! ĠUnfortunately Ġthat Ġfeature Ġisn 't Ġready Ġyet Ġso Ġyou 'll Ġjust Ġhave Ġto Ġkeep Ġplaying Ġthis Ġgame ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast Ġ= ĠToast . makeText ( application Context , Ġtext , Ġduration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . edit _ questions Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġ" You Ġpressed ĠEdit ĠQuestions . ĠI Ġhope Ġyou Ġdidn 't Ġenter Ġa Ġquestion Ġwrong Ġbecause Ġunfortunately Ġthat Ġfeature Ġisn 't Ġready Ġyet ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast Ġ= ĠToast . makeText ( application Context , Ġtext , Ġduration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . properties Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġ" You Ġpressed ĠProperties . ĠI Ġguess Ġyou Ġwant Ġto Ġchange Ġthem ! ĠUnfortunately Ġthat Ġfeature Ġisn 't Ġready Ġyet Ġbut Ġluck ily Ġthe Ġapp Ġis Ġperfect Ġso Ġyou Ġactually Ġdon 't Ġhave Ġto Ġchange Ġanything ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast Ġ= ĠToast . makeText ( application Context , Ġtext , Ġduration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . about Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġ" You Ġpressed ĠAbout . ĠI 'm Ġglad Ġyou 're Ġinterested Ġin Ġthe Ġapp ! ĠUnfortunately Ġthat Ġfeature Ġisn 't Ġready Ġyet Ġso ĠI Ġguess Ġyou 'll Ġnever Ġknow Ġabout Ġthis Ġapp ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast Ġ= ĠToast . makeText ( application Context , Ġtext , Ġduration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġsave ( game : ĠGame ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Out Ġ= ĠFileOutputStream ( files Dir . absolute Path +"/ test . ser ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Ġ= ĠObject OutputStream ( file Out ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . write Object ( game ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Out . close () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( i : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload (): Game ? Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile In Ġ= ĠFileInputStream ( files Dir . absolute Path +"/ test . ser ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ` in ` Ġ= ĠObject InputStream ( file In ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġret Ġ= Ġ` in `. read Object () Ġas ĠGame ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` in `. close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile In . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ( ret ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( i : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( c : ĠClass NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ( null ) ĊĠĠĠ Ġ} Ċ Ċ }