package Ġnet . ev end anan . cac ado . ui Ċ Ċ import Ġandroid . media . MediaPlayer Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . annotation . Raw Res Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . support . v 7 . widget . GridLayout Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . View Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġnet . ev end anan . cac ado . Dealer Ċ import Ġnet . ev end anan . cac ado . English Cards Ċ import Ġnet . ev end anan . cac ado . Game Ċ import Ġnet . ev end anan . cac ado . H eb rew Cards Ċ import Ġnet . ev end anan . cac ado . Memory Card Ċ import Ġnet . ev end anan . cac ado . No Dealer Ċ import Ġnet . ev end anan . cac ado . R Ċ import Ġnet . ev end anan . cac ado . View Binder Ċ import Ġnet . ev end anan . cac ado . prefs . Game Settings ĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġgame Owner : ĠSettings Presenter . Game Owner Ġ= Ġobject Ġ: ĠSettings Presenter . Game Owner Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġreset Game () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame Ġ= ĠGame ( create Dealer (), Ġview Connector ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame . start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġview Connector : ĠView Binder Ġ= Ġobject Ġ: ĠView Binder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġkeep Screen Aw ake ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( enabled ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . add Flags ( WindowManager . LayoutParams . FLAG _ KEEP _ SCREEN _ ON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . clear Flags ( WindowManager . LayoutParams . FLAG _ KEEP _ SCREEN _ ON ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrender Cards ( cards : ĠList < Memory Card >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Layout . removeAll Views () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumn Count Ġ= ĠMath . ceil ( Math . max ( 1 . toDouble (), ĠMath . sqrt (( cards . size Ġ/ Ġ 2 ). toDouble ()))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Layout . column Count Ġ= Ġcolumn Count . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Layout . rowCount Ġ= Ġ( 2 Ġ* Ġcolumn Count ). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcards . forEach Indexed Ġ{ Ġindex , Ġmemory Card Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Inflater . inflate ( R . layout . memory _ card , Ġgrid Layout , Ġfalse ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < TextView >( R . id . letter ). text Ġ= Ġmemory Card . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ Ġgame . on Player Clicked ( index ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Layout . addView ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag Ġ= ĠRe veal Hide Card Handler ( application Context , Ġthis , Ġmemory Card ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshow Card ( index : ĠInt , Ġwith Letter : ĠBoolean , Ġwith Audio : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Layout . getChild At ( index ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= Ġthis . tag Ġas ĠRe veal Hide Card Handler ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . show Card ( with Letter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( with Audio ) Ġplay Audio ( handler . memory Card . audio ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhide Card ( index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Layout . getChild At ( index ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( this . tag Ġas ĠRe veal Hide Card Handler ). hide Card () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Player . release () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhighlight Card ( index : ĠInt , Ġtype : ĠView Binder . Highlight Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Layout . getChild At ( index ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( this . tag Ġas ĠRe veal Hide Card Handler ). highlight Card ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshow Win Message () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" ðŁ İ ī ĠWIN ĠðŁİ ī ", ĠToast . LENGTH _ LONG ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Gravity ( Gravity . CENTER , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( child Index Ġin Ġ 0 Ġuntil Ġgrid Layout . child Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( grid Layout . getChild At ( child Index ). tag Ġas ĠRe veal Hide Card Handler ). highlight Card ( View Binder . Highlight Type . Match ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġgrid Layout Ġby Ġlazy Ġ{ ĠfindViewById < GridLayout >( R . id . cards _ grid ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġprefs Ġby Ġlazy Ġ{ ĠGame Settings ( application Context ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġsettings Pane Ġby Ġlazy Ġ{ ĠfindViewById < View >( R . id . game _ settings _ layout ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġsettings Presenter Ġby Ġlazy Ġ{ ĠSettings Presenter ( game Owner , Ġsettings Pane , Ġgrid Layout , ĠfindViewById < View >( R . id . settings _ button ), Ġprefs ) Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġgame Ġ= ĠGame ( No Dealer , Ġview Connector ) ĊĊĠĠĠ Ġprivate Ġvar Ġmedia Player Ġ= ĠMedia Player () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . start _ button ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame Owner . reset Game () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . settings _ button ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsettings Presenter . flip Pane Visibility () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġgame Owner . reset Game () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Dealer (): ĠDe aler Ġ= Ġprefs . letters Count . letters . let Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( prefs . language ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGame Settings . Language . H eb rew Ġ-> ĠH eb rew Cards ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGame Settings . Language . English Ġ-> ĠEnglish Cards ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġplay Audio (@ Raw Res Ġaudio : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmedia Player . release () ĊĠĠĠĠĠĠĠ Ġmedia Player Ġ= ĠMedia Player . create ( application Context , Ġaudio ) ĊĠĠĠĠĠĠĠ Ġmedia Player . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġmedia Player . release () ĊĠĠĠ Ġ} Ċ } Ċ