/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠR az ew are ĠLLC Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠNot with standing Ġthe Ġfore going , Ġyou Ġmay Ġnot Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ċ Ġ* Ġdistribute , Ġsublicense , Ġcreate Ġa Ġderivative Ġwork , Ġand / or Ġsell Ġcopies Ġof Ġthe Ċ Ġ* ĠSoftware Ġin Ġany Ġwork Ġthat Ġis Ġdesigned , Ġintended , Ġor Ġmarket ed Ġfor Ġped ag og ical Ġor Ċ Ġ* Ġinstruction al Ġpurposes Ġrelated Ġto Ġprogramming , Ġcoding , Ġapplication Ġdevelopment , Ċ Ġ* Ġor Ġinformation Ġtechnology . Ġ ĠPermission Ġfor Ġsuch Ġuse , Ġcopying , Ġmodification , Ċ Ġ* Ġmer ger , Ġpublication , Ġdistribution , Ġsublic ensing , Ġcreation Ġof Ġderivative Ġworks , Ċ Ġ* Ġor Ġsale Ġis Ġexpress ly Ġwith held . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN Ċ Ġ* ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . ray w ender lich . android . cock t ails . game . factory Ċ Ċ import Ġcom . ray w ender lich . android . cock t ails . common . network . C ock tail Ċ import Ġcom . ray w ender lich . android . cock t ails . common . repository . C ock t ails Repository Ċ import Ġcom . ray w ender lich . android . cock t ails . common . repository . Repository Callback Ċ import Ġcom . ray w ender lich . android . cock t ails . game . factory . C ock t ails Game Factory . Callback Ċ import Ġcom . ray w ender lich . android . cock t ails . game . model . Game Ċ import Ġcom . ray w ender lich . android . cock t ails . game . model . Question Ċ import Ġcom . ray w ender lich . android . cock t ails . game . model . Score Ċ Ċ class ĠC ock t ails Game Factory Impl ( ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠC ock t ails Repository ) ĊĠ Ġ: ĠC ock t ails Game Factory Ġ{ ĊĊĠ Ġoverride Ġfun Ġbuild Game ( callback : ĠCallback ) Ġ{ ĊĠĠĠ Ġrepository . get Al co h olic ( ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠRepository Callback < List < C ock tail >, ĠString > Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( cock tail List : ĠList < C ock tail >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquestions Ġ= Ġbuild Questions ( cock tail List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscore Ġ= ĠScore ( repository . get High Score ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgame Ġ= ĠGame ( questions , Ġscore ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Success ( game ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . onError () ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġbuild Questions ( cock tail List : ĠList < C ock tail >) Ġ= Ġc ock tail List . map Ġ{ Ġc ock tail Ġ-> ĊĠĠĠ Ġval Ġother C ock tail Ġ= Ġc ock tail List . sh uffled (). first Ġ{ Ġit Ġ!= Ġc ock tail Ġ} ĊĠĠĠ ĠQuestion ( cock tail . str Dr ink , Ġother C ock tail . str Dr ink , Ġc ock tail . str Dr ink Thumb ) ĊĠ Ġ} Ċ }