package Ġorg . not ests . rx feedback example . play . catch Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . view . View Ċ import Ġcom . jak ew h art on . r xb ind ing 2 . view . Rx View Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . dis pos ables . Dis pos ables Ċ import Ġkotlinx . android . synt hetic . main . activity _ play _ catch .* Ċ import Ġorg . not ests . rx feedback .* Ċ import Ġorg . not ests . rx feedback example . R Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠJ ur aj ĠB eg ov ac Ġon Ġ 0 1 / 1 2 / 2 0 1 7 . Ċ Ġ*/ Ċ Ċ enum Ġclass ĠState Ġ{ ĊĠĠĠ ĠHuman Has It , ĠMachine Has It Ċ } Ċ Ċ enum Ġclass ĠEvent Ġ{ ĊĠĠĠ ĠThrow To Machine , ĠThrow To Human Ċ } Ċ Ċ class ĠPlay Catch Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġdis posable : ĠDis posable Ġ= ĠDis pos ables . empty () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ play _ catch ) ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. title Ġ= Ġ" Play ĠCatch " ĊĊĠĠĠĠĠĠĠ Ġ// ĠUI Ġis Ġhuman Ġfeedback ĊĠĠĠĠĠĠĠ Ġval Ġbind UI Ġ= Ġbind < State , ĠEvent > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubscriptions Ġ= ĠlistOf < Disposable >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . source . map Ġ{ Ġit . my State Of M ind Ġ}. subscribe Ġ{ Ġmy _ label . text Ġ= Ġit Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . source . map Ġ{ Ġit . machine State Of M ind Ġ}. subscribe Ġ{ Ġmachines _ label . text Ġ= Ġit Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . source . map Ġ{ Ġ! it . do I Have The Ball Ġ}. subscribe Ġ{ Ġthrow _ the _ ball _ button . is Hidden Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevents Ġ= ĠlistOf < Observable < Event >>( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRx View . click s ( throw _ the _ ball _ button ). map Ġ{ ĠEvent . Throw To Machine Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ bind ĠBind ings ( subscriptions , Ġevents ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠNo UI , Ġmachine Ġfeedback ĊĠĠĠĠĠĠĠ Ġval Ġbind Machine Ġ= Ġreact < State , ĠUnit , ĠEvent >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . machine Pitch ing ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeffects Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . timer ( 1 , ĠTimeUnit . SECONDS , ĠAndroid Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠEvent . Throw To Human Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġdis posable Ġ= ĠObservable s . system ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠinitialState Ġ= ĠState . Human Has It , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreduce Ġ= Ġ{ Ġstate , Ġevent : ĠEvent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent . Throw To Machine Ġ-> ĠState . Machine Has It ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent . Throw To Human Ġ-> ĠState . Human Has It ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscheduler Ġ= ĠAndroid Schedulers . main Thread (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscheduled Feedback Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind UI , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind Machine ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġdis posable . dispose () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} Ċ } Ċ Ċ val ĠState . my State Of M ind : ĠString ĊĠĠĠ Ġget () Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠState . Human Has It Ġ-> Ġ" I Ġhave Ġthe ĠðŁ ı Ī " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠState . Machine Has It Ġ-> Ġ" I 'm Ġready , Ġhit Ġme " ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ val ĠState . do I Have The Ball : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ ĠState . Human Has It Ġ-> Ġtrue ĊĠĠĠĠĠĠĠ ĠState . Machine Has It Ġ-> Ġfalse ĊĠĠĠ Ġ} Ċ Ċ val ĠState . machine State Of M ind : ĠString ĊĠĠĠ Ġget () Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ ĠState . Human Has It Ġ-> Ġ" I 'm Ġready , Ġhit Ġme " ĊĠĠĠĠĠĠĠ ĠState . Machine Has It Ġ-> Ġ" I Ġhave Ġthe ĠðŁ ı Ī " ĊĠĠĠ Ġ} Ċ Ċ val ĠState . machine Pitch ing : ĠUnit ? ĊĠĠĠ Ġget () Ġ= Ġif Ġ( this Ġ== ĠState . Machine Has It ) ĠUnit Ġelse Ġnull Ċ Ċ var ĠView . is Hidden : ĠBoolean ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġthis . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ! this . is Shown ĊĠĠĠ Ġ} Ċ