/* Ċ Ġ* Ġ ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠNet E ase , ĠInc . Ġ ĠAll Ġrights Ġreserved . Ċ Ġ* Ġ ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġa ĠMIT Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile Ċ Ġ*/ Ċ Ċ package Ġcom . net ease . biz _ live . yun xin . live . ui . widget Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Count Down Timer Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . constraint layout . widget . Group Ċ import Ġandroidx . constraint layout . widget . Guide line Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . net ease . biz _ live . R Ċ import Ġcom . net ease . biz _ live . yun xin . live . audience . adapter . Live Base Adapter Ċ import Ġcom . net ease . yun xin . android . lib . picture . Image Loader Ċ import Ġcom . net ease . yun xin . lib _ live _ room _ service . bean . reward . Reward Audience Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġl uc Ġon Ġ 2 0 2 0 / 1 1 / 2 3 . Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġ çĶ¨äºİ æİ§åĪ¶ Ġpk Ġæµ ® å±Ĥ UI å±ķç¤º Ċ Ġ*/ Ċ class ĠPK Control View Ġ: ĠFrame Layout Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġgl Pk Ratio : ĠGuide line ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġtv Score : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġtv Other Score : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġtv Count Time : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġfl Video Container : ĠFrame Layout ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġpk Ranking Adapter : ĠInner Adapter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġother Pk Ranking Adapter : ĠInner Adapter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġpk Result Flag : ĠImageView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġother Pk Result Flag : ĠImageView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġtv Other Anchor Name : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġiv Other Anchor Por trait : ĠImageView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġgp Other Anchor Info : ĠGroup ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġiv Mute Other : ĠImageView ? Ġ= Ġnull ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( ĊĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠ Ġdef Style Attr ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ ĠLayoutInflater . from ( context ). inflate ( R . layout . view _ pk _ whole _ layout , Ġthis , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġpk Ġ åĢ¼ å¯¹ æ¯Ķ çĻ¾ åĪĨ æ¯Ķ æİ§åĪ¶ ĊĠĠĠĠĠĠĠ Ġgl Pk Ratio Ġ= ĠfindViewById ( R . id . gl _ pk _ ration ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġpk Ġ åĢ¼ æ¯Ķ åĪĨ ĊĠĠĠĠĠĠĠ Ġtv Score Ġ= ĠfindViewById ( R . id . tv _ pk _ score ) ĊĠĠĠĠĠĠĠ Ġtv Other Score Ġ= ĠfindViewById ( R . id . tv _ other _ pk _ score ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ åĢĴ è®¡ æĹ¶ view ĊĠĠĠĠĠĠĠ Ġtv Count Time Ġ= ĠfindViewById ( R . id . tv _ countdown _ time ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ éĿĻ éŁ³ å¯¹ æĸ¹ ä¸» æĴŃ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġiv Mute Other Ġ= ĠfindViewById ( R . id . iv _ pk _ mute ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ æİĴ è¡Į æ ¦ ľ UI ĊĠĠĠĠĠĠĠ Ġval Ġrv Ranking : ĠRecyclerView Ġ= ĠfindViewById ( R . id . rv _ pk _ ranking ) ĊĠĠĠĠĠĠĠ Ġrv Ranking . layout Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager ( context , ĠLinearLayoutManager . HORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġpk Ranking Adapter Ġ= ĠInner Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġrv Ranking . adapter Ġ= Ġpk Ranking Adapter ĊĠĠĠĠĠĠĠ Ġval Ġrv Other Ranking : ĠRecyclerView Ġ= ĠfindViewById ( R . id . rv _ other _ pk _ ranking ) ĊĠĠĠĠĠĠĠ Ġrv Other Ranking . layout Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager ( context , ĠLinearLayoutManager . HORIZONTAL , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġother Pk Ranking Adapter Ġ= ĠInner Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġrv Other Ranking . adapter Ġ= Ġother Pk Ranking Adapter ĊĊĠĠĠĠĠĠĠ Ġ// Ġpk Ġ ç»ĵæŀľ åĽ¾ æłĩ ĊĠĠĠĠĠĠĠ Ġpk Result Flag Ġ= ĠfindViewById ( R . id . iv _ pk _ result ) ĊĠĠĠĠĠĠĠ Ġother Pk Result Flag Ġ= ĠfindViewById ( R . id . iv _ other _ pk _ result ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ è§Ĩé¢ĳ æĴŃæĶ¾ å®¹åĻ¨ ĊĠĠĠĠĠĠĠ Ġfl Video Container Ġ= ĠfindViewById ( R . id . fl _ group ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġpk Ġ ä¸» æĴŃ ä¿¡æģ¯ ĊĠĠĠĠĠĠĠ Ġtv Other Anchor Name Ġ= ĠfindViewById ( R . id . tv _ other _ anchor _ name ) ĊĠĠĠĠĠĠĠ Ġiv Other Anchor Por trait Ġ= ĠfindViewById ( R . id . iv _ other _ anchor _ portrait ) ĊĠĠĠĠĠĠĠ Ġgp Other Anchor Info Ġ= ĠfindViewById ( R . id . gp _ other _ anchor _ info ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ è§Ĩé¢ĳ åĮºåŁŁ å±ķç¤º å®¹åĻ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Video Container (): ĠFrame Layout ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfl Video Container ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠæĽ´æĸ° ä¸» æĴŃ ä¿¡æģ¯ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname ĠĠ Ġ ä¸» æĴŃ åĲįç§° ĊĠĠĠĠ Ġ* Ġ@ param Ġavatar Ġ ä¸» æĴŃ å¤´ åĥı ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupdate Pk Anchor Info ( name : ĠString ?, Ġavatar : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġgp Other Anchor Info ?. visibility Ġ= ĠVIS IBLE ĊĠĠĠĠĠĠĠ Ġtv Other Anchor Name ?. text Ġ= Ġname ĊĠĠĠĠĠĠĠ ĠImage Loader . with ( context . application Context ). circle Load ( avatar , Ġiv Other Anchor Por trait ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® åĪĨ æķ° åıĺåĮĸ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġscore ĠĠĠĠĠ Ġå½ĵåīį ä¸» æĴŃ åĪĨ æķ° ĊĠĠĠĠ Ġ* Ġ@ param Ġother Score Ġå¯¹ æĸ¹ ä¸» æĴŃ åĪĨ æķ° ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupdate Score ( score : ĠLong , Ġother Score : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtv Score ?. text Ġ= Ġscore . toString () ĊĠĠĠĠĠĠĠ Ġtv Other Score ?. text Ġ= Ġother Score . toString () ĊĠĠĠĠĠĠĠ Ġ// Ġå¦Ĥæŀľ æľī ä¸¤ æĸ¹ æ¯Ķ åĪĨ éĥ½ ä¸º Ġ 0 Ġ åĪĻ è®¾ç½® çĻ¾ åĪĨ æ¯Ķ ä¸º Ġ 0 . 5 ĊĠĠĠĠĠĠĠ Ġif Ġ( score Ġ== Ġ 0 L Ġ&& Ġother Score Ġ== Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgl Pk Ratio ?. set Guide line Percent ( 0 . 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpercent Ġ= Ġscore Ġ/ Ġ( score Ġ+ Ġother Score Ġ+ Ġ 0 f ) ĊĠĠĠĠĠĠĠ Ġgl Pk Ratio ?. set Guide line Percent ( percent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ pk Ġ ç»ĵæŀľ åĽ¾ æłĩ å±ķç¤º ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġshow ĠĠĠĠĠĠĠĠĠ Ġæĺ¯åĲ¦ å±ķç¤º ĊĠĠĠĠ Ġ* Ġ@ param Ġanchor Success Ġå½ĵåīį ä¸» æĴŃ æĺ¯åĲ¦ èĥ ľ åĪ© ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhandle Result Flag ( show : ĠBoolean , Ġanchor Success : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpk Result Flag ?. visibility Ġ= Ġif Ġ( show ) ĠVIS IBLE Ġelse ĠIN VISIBLE ĊĠĠĠĠĠĠĠ Ġother Pk Result Flag ?. visibility Ġ= Ġif Ġ( show ) ĠVIS IBLE Ġelse ĠIN VISIBLE ĊĠĠĠĠĠĠĠ Ġif Ġ(! show ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhen Ġ( anchor Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPK _ RESULT _ FAILED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Loader . with ( context . application Context ). load ( R . drawable . icon _ pk _ success ). into ( other Pk Result Flag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Loader . with ( context . application Context ). load ( R . drawable . icon _ pk _ fail ). into ( pk Result Flag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPK _ RESULT _ SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Loader . with ( context . application Context ). load ( R . drawable . icon _ pk _ success ). into ( pk Result Flag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Loader . with ( context . application Context ). load ( R . drawable . icon _ pk _ fail ). into ( other Pk Result Flag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPK _ RESULT _ DRAW Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Loader . with ( context . application Context ). load ( R . drawable . icon _ pk _ draw ). into ( other Pk Result Flag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Loader . with ( context . application Context ). load ( R . drawable . icon _ pk _ draw ). into ( pk Result Flag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĢĴ è®¡ æĹ¶ æİ§åĪ¶åĻ¨ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtype Ġ ç±»åŀĭ ĊĠĠĠĠ Ġ* Ġ@ param Ġleft Millis Ġ åĢĴ è®¡ æĹ¶ æĹ¶éĹ´ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcreate Count Down Timer ( type : ĠString ?, Ġleft Millis : ĠLong ): ĠWrapper Count Down Timer ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWrapper Count Down Timer ( left Millis , Ġobject Ġ: ĠTimer Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart ( startTime : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Count Time ?. text Ġ= Ġformat Time ( type , ĠstartTime ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tick ( millis Until Finished : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Count Time ?. text Ġ= Ġformat Time ( type , Ġmillis Until Finished ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Count Time ?. text Ġ= Ġformat Time ( type , Ġ 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æł¼å¼ı åĮĸ åĢĴ è®¡ æĹ¶ æł¼å¼ı ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtype Ġ åĢĴ è®¡ æĹ¶ ç±»åŀĭ ĊĠĠĠĠ Ġ* Ġ@ param Ġtime Millis Ġ æĹ¶éĹ´ ï¼Į åįķä½į æ¯ « ç§Ĵ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġformat Time ( type : ĠString ?, Ġtime Millis : ĠLong ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtime Seconds Ġ= Ġtime Millis Ġ/ Ġ 1 0 0 0 L ĊĠĠĠĠĠĠĠ Ġval Ġtime Minute Ġ= Ġtime Seconds Ġ/ Ġ 6 0 L ĊĠĠĠĠĠĠĠ Ġval Ġleft Seconds Ġ= Ġtime Seconds Ġ% Ġ 6 0 L ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ type Ġ$ time Minute :$ left Seconds " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠæĽ´æĸ° æİĴ è¡Į æ ¦ ľ æķ°æį® ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġaudience List ĠĠĠĠĠ Ġå½ĵåīį ä¸» æĴŃ æİĴ è¡Į æ ¦ ľ ĊĠĠĠĠ Ġ* Ġ@ param Ġother Audience List Ġå¯¹ æĸ¹ ä¸» æĴŃ æİĴ è¡Į æ ¦ ľ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupdate Ranking ( ĊĠĠĠĠĠĠĠ Ġaudience List : ĠList < Reward Audience ?> ?, ĊĠĠĠĠĠĠĠ Ġother Audience List : ĠList < Reward Audience ?> ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpk Ranking Adapter ?. update DataSource ( audience List ) ĊĠĠĠĠĠĠĠ Ġother Pk Ranking Adapter ?. update DataSource ( other Audience List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ éĩį ç½® pk Ġ æİ§åĪ¶ view ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Ranking ( null , Ġnull ) ĊĠĠĠĠĠĠĠ Ġhandle Result Flag ( false , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġupdate Score ( 0 , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĨħéĥ¨ æİĴ è¡Į æ ¦ ľ Ġadapter ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġclass ĠInner Adapter ( context : ĠContext ?, Ġprivate Ġval Ġother : ĠBoolean ) Ġ: ĊĠĠĠĠĠĠĠ ĠLive Base Adapter < Reward Audience ? >( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Layout Id ( view Type : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠR . layout . view _ item _ pk _ ranking _ audience ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( item View : ĠView ): ĠLive ViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLive ViewHolder ( item View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder : ĠLive ViewHolder , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Data : ĠRew ard Audience ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠInt ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiv Por trait Ġ= Ġholder . getView < ImageView ? >( R . id . iv _ item _ audience _ portrait ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage Loader . with ( context ?. application Context ). circle Load ( item Data ?. avatar , Ġiv Por trait ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv Por trait ?. isEnabled Ġ= Ġ! other ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv Order Ġ= Ġholder . getView < TextView ? >( R . id . tv _ item _ audience _ order ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Order ?. text Ġ= Ġ( position Ġ+ Ġ 1 ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Order ?. isEnabled Ġ= Ġ! other ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMath . min ( super . getItem Count (), ĠMAX _ AU DI ENCE _ COUNT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMAX _ AU DI ENCE _ COUNT Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å®ļæĹ¶ åĻ¨ å°ģè£ħ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠWrapper Count Down Timer ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġleft Time Millis : ĠLong , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtimer Listener : ĠTimer Listener ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcount Down Timer : ĠCount Down Timer ? ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ å®ļæĹ¶ åĻ¨ åģľæŃ¢ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġstop () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount Down Timer ?. cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimer Listener ?. on Stop () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ å®ļæĹ¶ åĻ¨ å¼Ģå§ĭ åĢĴ è®¡ æĹ¶ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimer Listener ?. onStart ( left Time Millis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount Down Timer ?. start () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount Down Timer Ġ= Ġobject Ġ: ĠCount Down Timer ( left Time Millis , Ġ 1 0 0 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tick ( millis Until Finished : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer Listener ?. on Tick ( millis Until Finished ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Finish () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer Listener ?. on Stop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĨħéĥ¨ å®ļæĹ¶ åĻ¨ åĽŀè°ĥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinterface ĠTimer Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġopen Ġfun ĠonStart ( startTime : ĠLong ) ĊĠĠĠĠĠĠĠ Ġopen Ġfun Ġon Tick ( millis Until Finished : ĠLong ) ĊĠĠĠĠĠĠĠ Ġopen Ġfun Ġon Stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPK _ RESULT _ FAILED Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPK _ RESULT _ SUCCESS Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPK _ RESULT _ DRAW Ġ= Ġ 0 ĊĠĠĠ Ġ} Ċ }