package Ġcom . b ach h uber design . deck builder gw ent . features . deck build Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Animator Listener Adapter Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Linear Gradient Ċ import Ġandroid . graphics . Shader Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . text . InputType Ċ import Ġandroid . util . Log Ċ import Ġandroid . view .* Ċ import Ġandroid . view . ViewGroup . LayoutParams . WRAP _ CONTENT Ċ import Ġandroid . view . animation . Over shoot Interpolator Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . Toast Ċ import Ġcom . af ol le st ad . material dialogs . Material Dialog Ċ import Ġcom . b ach h uber design . deck builder gw ent . MainActivity Ċ import Ġcom . b ach h uber design . deck builder gw ent . R Ċ import Ġcom . b ach h uber design . deck builder gw ent . features . card viewer . Card Filters Ċ import Ġcom . b ach h uber design . deck builder gw ent . features . card viewer . Card Viewer Controller Ċ import Ġcom . b ach h uber design . deck builder gw ent . features . deck detail . Deck Detail Controller Ċ import Ġcom . b ach h uber design . deck builder gw ent . features . faction select . Faction Select Controller Ċ import Ġcom . b ach h uber design . deck builder gw ent . features . shared . model . Card Ċ import Ġcom . b ach h uber design . deck builder gw ent . features . shared . model . Faction Ċ import Ġcom . b ach h uber design . deck builder gw ent . features . shared . model . Lane Ċ import Ġcom . b ach h uber design . deck builder gw ent . inject . module . Activity Module Ċ import Ġcom . b ach h uber design . deck builder gw ent . util . change handler . Flip Change Handler Ċ import Ġcom . b ach h uber design . deck builder gw ent . util . change handler . Slide In Change Handler Ċ import Ġcom . b ach h uber design . deck builder gw ent . util . dp To Px Ċ import Ġcom . b ach h uber design . deck builder gw ent . util . getString Resource ByName Ċ import Ġcom . b ach h uber design . deck builder gw ent . util . inflate Ċ import Ġcom . blue lin el abs . cond uctor . Controller Ċ import Ġcom . blue lin el abs . cond uctor . Router Transaction Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . load . resource . drawable . G lide Drawable Ċ import Ġcom . bump tech . glide . request . animation . G lide Animation Ċ import Ġcom . bump tech . glide . request . animation . View Animation Factory Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . functions . Bi Function Ċ import Ġkotlinx . android . synt hetic . main . controller _ deck build . view .* Ċ import Ġjava . util . concurrent . TimeUnit . MILLISECONDS Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* Ġ@ author ĠEric ĠB ach h uber Ċ Ġ* Ġ@ version Ġ 1 . 0 . 0 Ċ Ġ* Ġ@ since Ġ 1 . 0 . 0 Ċ Ġ*/ Ċ class ĠDeck build Controller Ġ: ĠController , ĠDeck build M vp Contract Ġ{ ĊĊĠĠĠ Ġconstructor ( deck Id : ĠInt ) Ġ: Ġsuper () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . deck Id Ġ= Ġdeck Id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( args : ĠBundle ) Ġ: Ġsuper () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static Ġval ĠTAG : ĠString Ġ= ĠDeck build Controller :: class . java . name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġpresenter : ĠDeck build Presenter ĊĊĠĠĠ Ġprivate Ġvar Ġanimation Disposable : ĠDis posable ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdeck Id : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġf action Id : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġreload Deck : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġdeck : ĠDeck ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġcontainer . inflate ( R . layout . controller _ deck build ) ĊĊĠĠĠĠĠĠĠ Ġactivity ?. title Ġ= Ġ" Deck build ĠController " ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). pers isted Component ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. activity Sub component ( Activity Module ( activity !! )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inject ( this ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( deck Id Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeck Id Ġ= Ġargs . getInt (" deck Id ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġview . show _ card _ viewer _ button . background Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġview . show _ card _ viewer _ button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Card Picker () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġretain View Mode Ġ= ĠRet ain View Mode . RE TAIN _ DET ACH ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( view ) ĊĠĠĠĠĠĠĠ Ġpresenter . attach ( this ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( deck Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . load User Deck ( deck Id ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . load Cards To Animate ( deck !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detach ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detach ( view ) ĊĠĠĠĠĠĠĠ Ġanimation Disposable ?. dispose () ĊĠĠĠĠĠĠĠ Ġpresenter . detach () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġout State . put Int (" deck Id ", Ġdeck Id ) ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġanimation Disposable ?. dispose () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . menu _ deck build , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ delete _ deck Ġ-> Ġconfirm Deck Deletion () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ rename _ deck Ġ-> Ġpresenter . on Rename Button Clicked ( deck Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ deck _ details Ġ-> Ġshow Deck Details ( deck Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Deck Details ( deck Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrouter . push Controller ( Router Transaction . with ( Deck Detail Controller ( deck Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. tag ( Deck Detail Controller . TAG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. push Change Handler ( Flip Change Handler ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. pop Change Handler ( Flip Change Handler ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Card Picker () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilters Ġ= ĠCard Filters ( filter By F actions Ġ= ĠPair ( true , Ġf action Id )) ĊĊĠĠĠĠĠĠĠ Ġview !!. show _ card _ viewer _ button . clear Animation () ĊĊĠĠĠĠĠĠĠ Ġval Ġcard Flip Ġ= ĠObject Animator . of Float ( view !!. show _ card _ viewer _ button , Ġ" rotation Y ", Ġ 3 6 0 . 0 f ) ĊĠĠĠĠĠĠĠ Ġcard Flip . interpol ator Ġ= ĠOver shoot Interpolator () ĊĠĠĠĠĠĠĠ Ġcard Flip . duration Ġ= Ġ 7 2 5 ĊĠĠĠĠĠĠĠ Ġcard Flip . addListener ( object Ġ: ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrouter . push Controller ( Router Transaction . with ( Card Viewer Controller ( filters , Ġdeck Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. tag ( Card Viewer Controller . TAG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. pop Change Handler ( Slide In Change Handler ( 3 0 0 , Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. push Change Handler ( Slide In Change Handler ( 3 0 0 , Ġtrue ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview !!. show _ card _ viewer _ button . rotation Y Ġ= Ġ 0 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 3 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġcard Flip . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfirm Deck Deletion () Ġ{ ĊĠĠĠĠĠĠĠ ĠMaterial Dialog . Builder ( activity !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title (" Confirm ĠDe letion ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. content (" Are Ġyou Ġsure Ġyou Ġwant Ġto Ġdelete Ġthis Ġdeck ? ĠThis Ġcannot Ġbe Ġun - done .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. positive Text ( android . R . string . ok ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Positive ({ Ġdialog , Ġaction Ġ-> Ġpresenter . delete Deck ( deck Id ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. negative Text ( android . R . string . cancel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Deck Loaded ( deck : ĠDeck ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . deck Ġ= Ġdeck ĊĠĠĠĠĠĠĠ Ġactivity ?. title Ġ= Ġdeck . name ĊĊĠĠĠĠĠĠĠ Ġf action Id Ġ= Ġdeck . faction ĊĊĠĠĠĠĠĠĠ ĠG lide . with ( activity !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( Uri . parse (" file :/// android _ asset / faction _ back _${ deck . faction }_ thumbnail . png ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fit Center () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. dont Animate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( view ?. show _ card _ viewer _ button ) ĊĊĠĠĠĠĠĠĠ Ġview !!. faction _ name _ text . text Ġ= Ġactivity !!. getString Resource ByName ( Faction . ID _ TO _ KEY . apply ( deck . faction )) ĊĠĠĠĠĠĠĠ Ġview !!. leader _ name _ text . text Ġ= Ġdeck . leader ?. name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Deck Deleted ( deck Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrouter . set Root ( Router Transaction . with ( Faction Select Controller ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. pop Change Handler ( Flip Change Handler ( Flip Change Handler . Flip Direction . LEFT )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. push Change Handler ( Flip Change Handler ( Flip Change Handler . Flip Direction . RIGHT ))) ĊĠĠĠĠĠĠĠ Ġrouter . pop To Root () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonError Loading Deck ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" onError Loading Deck : Ġ$ message ") ĊĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġmessage , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġanimate Cards ( cards To Animate : ĠList < Card >, Ġdeck : ĠDeck ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . deck Ġ= Ġdeck ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate ĠObservable < List < Card >>, Ġflatten Ġto ĠObservable < Card >, Ġand Ġzip Ġwith ĊĠĠĠĠĠĠĠ Ġ// ĠObservable . interval Ġfor Ġa Ġdelay Ġbetween Ġiterations ĊĠĠĠĠĠĠĠ Ġanimation Disposable Ġ= ĠObservable . from Array ( cards To Animate ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Iterable Ġ{ Ġcards Ġ-> Ġcards Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. zip With ( Observable . interval ( 2 2 5 , ĠMIL LI SECONDS ), ĠBi Function < Card , ĠLong , ĠCard > Ġ{ Ġcard , Ġdelay Ġ-> Ġcard Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġcard Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠSimpl ify Ġand Ġdocument ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ subscribe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout : ĠLinearLayout ? ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( card . selected Lane ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL ane . ME LE E Ġ-> Ġlayout Ġ= Ġview !!. me lee _ image _ holder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL ane . RAN GED Ġ-> Ġlayout Ġ= Ġview !!. range d _ image _ holder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL ane . SI E GE Ġ-> Ġlayout Ġ= Ġview !!. s ie ge _ image _ holder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL ane . EVENT Ġ-> Ġlayout Ġ= Ġview !!. event _ image _ holder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIndex OutOfBoundsException (" Expected Ġ${ Lane . ME LE E }, Ġ${ Lane . RAN GED }, Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Lane . SI E GE }, Ġor Ġ${ Lane . EVENT }. ĠActual Ġvalue Ġreceived : Ġ${ card . selected Lane }. ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( card . animation Type Ġ== ĠCard . ANIM ATION _ REMOVE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview To Animate Ġ= Ġlayout ?. find View With Tag ( card . card Id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview To Animate ?. tag Ġ= Ġ" re moving " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout ?. remove View ( view To Animate ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( layout . child Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageView Params Ġ= ĠLinearLayout . LayoutParams ( activity !!. dp To Px ( 7 5 ). toInt (), ĠWR AP _ CONTENT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView Params . set Margins ( activity !!. dp To Px ( 0 ). toInt (), Ġ 0 , Ġactivity !!. dp To Px ( 0 ). toInt (), Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġre e Ġ= Ġlayout ?. getChild At ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre e ?. layout Params Ġ= ĠimageView Params ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( card . animation Type Ġ== ĠCard . ANIM ATION _ ADD ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageView : ĠImageView Ġ= ĠImageView ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . id Ġ= ĠView . generate View Id () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . tag Ġ= Ġcard . card Id . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageView Params Ġ= ĠLinearLayout . LayoutParams ( activity !!. dp To Px ( 7 5 ). toInt (), ĠWR AP _ CONTENT ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( layout . child Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView Params . set Margins ( activity !!. dp To Px (- 2 8 ). toInt (), Ġ 0 , Ġactivity !!. dp To Px ( 0 ). toInt (), Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLoad Ġimage Ġand Ġanimate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout !!. addView ( imageView , ĠimageView Params ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( Uri . parse (" file :/// android _ asset / cards /${ card . icon Url } ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. animate ( object Ġ: ĠView Animation Factory < G lide Drawable >( activity !! , ĠR . anim . slide _ right ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbuild ( is From Memory Cache : ĠBoolean , Ġis First Resource : ĠBoolean ): ĠG lide Animation < G lide Drawable > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . build ( false , Ġis First Resource ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fit Center () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( imageView ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Lane Totals Updated ( totals : ĠL ane Totals ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Lane Totals Updated (): Ġ$ totals ") ĊĠĠĠĠĠĠĠ Ġview !!. me lee _ lane _ power _ text . text Ġ= Ġtotals . me lee Total . toString () ĊĠĠĠĠĠĠĠ Ġview !!. range d _ lane _ power _ text . text Ġ= Ġtotals . range d Total . toString () ĊĠĠĠĠĠĠĠ Ġview !!. s ie ge _ lane _ power _ text . text Ġ= Ġtotals . s ie ge Total . toString () ĊĊĠĠĠĠĠĠĠ Ġval Ġtotal Power : ĠInt Ġ= Ġtotals . me lee Total Ġ+ Ġtotals . range d Total Ġ+ Ġtotals . s ie ge Total ĊĠĠĠĠĠĠĠ Ġview !!. deck _ power _ total _ text . text Ġ= Ġtotal Power . toString () ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġlinear Ġgradients Ġfor Ġour Ġlane Ġpower ĠText Views ĊĠĠĠĠĠĠĠ Ġval Ġgold Shader : ĠShader Ġ= ĠLinear Gradient ( 0 f , Ġ 0 f , Ġ 0 f , Ġ 1 0 0 f , ĠColor . parse Color ("# f 1 c 2 4 8 "), ĠColor . parse Color ("# f 0 8 c 0 b "), ĠShader . Tile Mode . CLAMP ) ĊĠĠĠĠĠĠĠ Ġval Ġsilver Shader : ĠShader Ġ= ĠLinear Gradient ( 0 f , Ġ 0 f , Ġ 0 f , Ġ 1 0 0 f , ĠColor . parse Color ("# bcb cbc "), ĠColor . DK GRAY , ĠShader . Tile Mode . CLAMP ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġshader Ġ( overrides Ġany Ġother Ġshader Ġincluding Ġdrop - shadow ) ĊĠĠĠĠĠĠĠ Ġview !!. me lee _ lane _ power _ text . paint . shader Ġ= Ġsilver Shader ĊĠĠĠĠĠĠĠ Ġview !!. range d _ lane _ power _ text . paint . shader Ġ= Ġsilver Shader ĊĠĠĠĠĠĠĠ Ġview !!. s ie ge _ lane _ power _ text . paint . shader Ġ= Ġsilver Shader ĊĠĠĠĠĠĠĠ Ġview !!. deck _ power _ total _ text . paint . shader Ġ= Ġgold Shader ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Deck Rename Dialog ( current Deck Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMaterial Dialog . Builder ( activity !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title (" Rename ĠDeck ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. input Type ( InputType . TYPE _ CLASS _ TEXT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. input (" Enter Ġa Ġnew Ġname Ġfor Ġyour Ġdeck ", Ġcurrent Deck Name , Ġ{ Ġdialog , Ġinput Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. positive Text ( R . string . confirm ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Positive Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Deck Name Ġ= Ġdialog . input EditText ?. text . toString (). trim () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Deck Name Ġ!= Ġnew Deck Name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . rename Deck ( new Deck Name , Ġdeck Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. negative Text ( android . R . string . cancel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Deck Rename d ( new Deck Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. title Ġ= Ġnew Deck Name ĊĠĠĠ Ġ} Ċ Ċ }