/* ĊĠĠĠ ĠE scal ero Ġ- ĠAn ĠAndroid Ġdice Ġprogram . ĊĠĠĠ ĠCopyright Ġ( C ) Ġ 2 0 1 6 - 2 0 2 1 Ġ ĠKar l ĠSch re iner , Ġc 4 ak ar l @ gmail . com ĊĊĠĠĠ ĠThis Ġprogram Ġis Ġfree Ġsoftware : Ġyou Ġcan Ġredistribute Ġit Ġand / or Ġmodify ĊĠĠĠ Ġit Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ġas Ġpublished Ġby ĊĠĠĠ Ġthe ĠFree ĠSoftware ĠFoundation , Ġeither Ġversion Ġ 3 Ġof Ġthe ĠLicense , Ġor ĊĠĠĠ Ġ( at Ġyour Ġoption ) Ġany Ġlater Ġversion . ĊĊĠĠĠ ĠThis Ġprogram Ġis Ġdistributed Ġin Ġthe Ġhope Ġthat Ġit Ġwill Ġbe Ġuseful , ĊĠĠĠ Ġbut ĠWITHOUT ĠANY ĠWARRANTY ; Ġwithout Ġeven Ġthe Ġimplied Ġwarranty Ġof ĊĠĠĠ ĠMERCHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . Ġ ĠSee Ġthe ĊĠĠĠ ĠGNU ĠGeneral ĠPublic ĠLicense Ġfor Ġmore Ġdetails . ĊĊĠĠĠ ĠYou Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense ĊĠĠĠ Ġalong Ġwith Ġthis Ġprogram . Ġ ĠIf Ġnot , Ġsee Ġ< http :// www . gnu . org / licenses />. Ċ */ Ċ Ċ package Ġcom . android heads . vi enna . es cal ero Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics .* Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġjava . util .* Ċ import Ġkotlin . math . min Ċ import Ġkotlin . math . sqrt Ċ Ċ class ĠBoard View ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: ĠView ( context , Ġattrs ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġprefs Ġ= Ġcontext . get SharedPreferences (" prefs ", Ġ 0 ) ĊĠĠĠ Ġprivate Ġvar Ġdice Size Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġvar Ġis Init Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġdice Icons : ĠInt Array ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġm Board Width : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġm Board Height : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Board Border Width : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Dice Size Ġ= Ġ 5 0 ĊĠĠĠ Ġprivate Ġvar Ġm Dice Size Small Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Dice Size Medium Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Dice Size Large Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Hold Area Width Ġ= Ġ 5 Ġ* Ġm Dice Size ĊĠĠĠ Ġprivate Ġvar Ġm Hold Area Height Ġ= Ġm Dice Size ĊĠĠĠ Ġprivate Ġvar Ġm Roll Ġ= ĠInt Array ( 5 ) ĠĠĠĠĠĠ Ġ// Ġroll Ġimage Ġvalues ĊĠĠĠ Ġprivate Ġvar Ġm Hold Ġ= ĠInt Array ( 5 ) ĠĠĠĠĠĠ Ġ// Ġhold Ġimage Ġvalues ĊĠĠĠ Ġprivate Ġvar Ġm Double 1 Ġ= ĠInt Array ( 5 ) ĠĠĠ Ġ// Ġdouble Ġfirst Ġplayer Name Ġimage Ġvalues ĊĠĠĠ Ġprivate Ġvar Ġm Col Values : ĠString ? Ġ= Ġnull ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcolumn Ġvalues Ġ+ Ġbonus ĊĠĠĠ Ġprivate Ġvar Ġm Is Single : ĠBoolean Ġ= Ġfalse ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsingle / double ĊĠĠĠ Ġprivate Ġvar Ġm Player To Move : ĠChar Ġ= Ġ' Ġ' ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ' A ' Ġ' B ' Ġ' C ' ĊĠĠĠ Ġprivate Ġvar Ġm Player Info : ĠString Ġ= Ġ"" ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġinfo Ġplayer Name ĊĠĠĠ Ġprivate Ġvar Ġm Player Info Double : ĠString Ġ= Ġ"" ĠĠĠĠĠĠ Ġ// Ġinfo Ġdouble Ġfirst Ġplayer Name ĊĠĠĠ Ġvar Ġm Online Players : ĠString Ġ= Ġ"" ĠĠĠĠĠĠĠĠ Ġ// Ġonline Ġplayers ĊĠĠĠ Ġprivate Ġvar Ġm Is Selectable : ĠBoolean Ġ= Ġfalse ĠĠĠĠĠĠĠĠĠ Ġ// Ġis Ġroll / hold / double 1 Ġselect able Ġ---> ĠVALUES / state ĊĠĠĠ Ġprivate Ġvar Ġdouble State : ĠInt Ġ= Ġ 0 ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdouble Ġstate : Ġ 0 = ke ine ĠAn ze ige , Ġ 1 = ĠAn ze ige Ġmit Ġselect , Ġ 2 = nur ĠAn ze ige ĊĊĠĠĠ Ġprivate Ġval Ġdice Cnt Ġ= Ġ 5 ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmax Ġnumber Ġof Ġd ices ĊĠĠĠ Ġprivate Ġval Ġdice Values Ġ= Ġ 7 Ġ// Ġid , state , x , y , dice Width , dice Height , rotation Ġ( id Ġ: Ġres / values / ids , Ġstate Ġ: Ġ 0 = un visible , Ġ 1 = visible + click , Ġ 3 = visible ) ĊĠĠĠ Ġprivate Ġvar Ġm Hold Idx Ġ= ĠInt Array ( dice Cnt ) ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ[ index Ġfrom Ġm Hold ] ĊĠĠĠ Ġprivate Ġvar Ġm Roll Values Ġ= ĠArray ( dice Cnt ) Ġ{ ĠInt Array ( dice Values ) Ġ} ĠĠĠĠĠĠ Ġ// Ġ[ index Ġfrom Ġm Roll ][ VALUES ] ĊĠĠĠ Ġprivate Ġvar Ġm Hold Values Ġ= ĠArray ( dice Cnt ) Ġ{ ĠInt Array ( dice Values ) Ġ} ĠĠĠĠĠĠ Ġ// Ġ[ index Ġfrom Ġm Hold ][ VALUES ] ĊĠĠĠ Ġprivate Ġvar Ġm Double 1 Values Ġ= ĠArray ( dice Cnt ) Ġ{ ĠInt Array ( dice Values ) Ġ} ĠĠĠ Ġ// Ġ[ index Ġfrom Ġm Double 1 ][ VALUES ] ĊĠĠĠ Ġprivate Ġvar Ġm Control Values Ġ= ĠArray ( dice Cnt ) Ġ{ ĠInt Array ( dice Values ) Ġ} ĠĠĠ Ġ// Ġ[ 1 = double 1 Btn , Ġ 2 = player Info , Ġ 3 = player Info Double ][ VALUES ] ĊĠĠĠ Ġprivate Ġval Ġm Rand Ġ= ĠRandom () ĊĊĠĠĠ Ġprivate Ġvar Ġm Paint : ĠPaint ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġm Rect : ĠRect ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġdice Size Ġ= Ġprefs . getInt (" dice Size ", Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġm Is Single Ġ= Ġprefs . getBoolean (" is Single Game ", Ġtrue ) ĊĠĠĠĠĠĠĠ Ġif Ġ( dice Size Ġ== Ġ 3 Ġ&& Ġ! m Is Single ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdice Size Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġis Init Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġinit Values ( true ) ĊĠĠĠĠĠĠĠ Ġm Paint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠ Ġm Rect Ġ= ĠRect () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Values ( init Roll Values : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġinit Values Ġ= Ġinit Roll Values ĊĠĠĠĠĠĠĠ Ġif Ġ(! init Values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġdice Cnt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 Ġuntil Ġdice Values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Roll Values [ i ][ 2 ] Ġ<= Ġ 0 ) Ġinit Values Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Roll Values [ i ][ 3 ] Ġ<= Ġ 0 ) Ġinit Values Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Roll Values [ i ][ 4 ] Ġ<= Ġ 0 ) Ġinit Values Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Roll Values [ i ][ 5 ] Ġ<= Ġ 0 ) Ġinit Values Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġdice Cnt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 Ġuntil Ġdice Values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( j Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( i ) Ġ{ Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Roll Values [ i ][ 0 ] Ġ= ĠR . id . db Roll _ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Hold Values [ i ][ 0 ] Ġ= ĠR . id . db Hold _ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Double 1 Values [ i ][ 0 ] Ġ= ĠR . id . db Double _ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Control Values [ i ][ 0 ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Roll Values [ i ][ 0 ] Ġ= ĠR . id . db Roll _ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Hold Values [ i ][ 0 ] Ġ= ĠR . id . db Hold _ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Double 1 Values [ i ][ 0 ] Ġ= ĠR . id . db Double _ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Control Values [ i ][ 0 ] Ġ= ĠR . id . db D 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Roll Values [ i ][ 0 ] Ġ= ĠR . id . db Roll _ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Hold Values [ i ][ 0 ] Ġ= ĠR . id . db Hold _ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Double 1 Values [ i ][ 0 ] Ġ= ĠR . id . db Double _ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Control Values [ i ][ 0 ] Ġ= ĠR . id . db Player Info ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Roll Values [ i ][ 0 ] Ġ= ĠR . id . db Roll _ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Hold Values [ i ][ 0 ] Ġ= ĠR . id . db Hold _ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Double 1 Values [ i ][ 0 ] Ġ= ĠR . id . db Double _ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Control Values [ i ][ 0 ] Ġ= ĠR . id . db Player Info Double 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Roll Values [ i ][ 0 ] Ġ= ĠR . id . db Roll _ 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Hold Values [ i ][ 0 ] Ġ= ĠR . id . db Hold _ 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Double 1 Values [ i ][ 0 ] Ġ= ĠR . id . db Double _ 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Control Values [ i ][ 0 ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( init Values ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Roll Values [ i ][ j ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Hold Values [ i ][ j ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Double 1 Values [ i ][ j ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Control Values [ i ][ j ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Dice Icons ( dice Icons : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . dice Icons Ġ= Ġdice Icons ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Dice Size () Ġ{ ĊĠĠĠĠĠĠĠ Ġdice Size Ġ= Ġprefs . getInt (" dice Size ", Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( dice Size Ġ== Ġ 3 Ġ&& Ġ! m Is Single ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdice Size Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġwhen Ġ( dice Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġm Dice Size Ġ= Ġm Dice Size Small ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġm Dice Size Ġ= Ġm Dice Size Medium ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġm Dice Size Ġ= Ġm Dice Size Large ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Hold Area Width Ġ= Ġ 5 Ġ* Ġm Dice Size ĊĠĠĠĠĠĠĠ Ġm Hold Area Height Ġ= Ġm Dice Size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit Board () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Init Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Round Values ( col Values : ĠString , Ġis Single : ĠBoolean , Ġplayer To Move : ĠChar , Ġplayer Info : ĠString , Ġplayer Info Double : ĠString , Ġonline Players : ĠString ) Ġ{ Ċ Ċ // ĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" set Round Values (), Ġis Single : Ġ$ is Single , Ġplayer Info Double : Ġ$ player Info Double ") ĊĊĠĠĠĠĠĠĠ Ġm Col Values Ġ= Ġcol Values ĊĠĠĠĠĠĠĠ Ġm Is Single Ġ= Ġis Single ĊĠĠĠĠĠĠĠ Ġm Player To Move Ġ= Ġplayer To Move ĊĠĠĠĠĠĠĠ Ġm Player Info Ġ= Ġplayer Info ĊĠĠĠĠĠĠĠ Ġm Player Info Double Ġ= Ġplayer Info Double ĊĠĠĠĠĠĠĠ Ġm Online Players Ġ= Ġonline Players ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Board ( roll : ĠInt Array , Ġhold : ĠInt Array , Ġdouble 1 : ĠInt Array , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Selectable : ĠBoolean , Ġdouble State : ĠInt , Ġinit Roll Values : ĠBoolean ) Ġ{ Ċ Ċ // ĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" update Board (), Ġroll : Ġ$ roll , Ġhold : Ġ$ hold , Ġdouble 1 : Ġ$ double 1 ") Ċ // ĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" update Board (), Ġm Board Width : Ġ$ m Board Width , Ġm Board Height : Ġ$ m Board Height , Ġinit Roll Values : Ġ$ init Roll Values ") Ċ // ĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" update Board (), Ġdouble State : Ġ$ double State , Ġdouble 1 . size : Ġ${ double 1 . size }") ĊĊĠĠĠĠĠĠĠ Ġif Ġ(( m Board Width Ġ<= Ġ 0 ) Ġor Ġ( m Board Height Ġ<= Ġ 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġis Init Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġm Roll Ġ= Ġroll ĊĠĠĠĠĠĠĠ Ġm Hold Ġ= Ġhold Ċ Ċ // ĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" update Board (), Ġm Roll : Ġ${ m Roll [ 0 ]}, Ġ${ m Roll [ 1 ]}, Ġ${ m Roll [ 2 ]}, Ġ${ m Roll [ 3 ]}, Ġ${ m Roll [ 4 ]} ") Ċ // ĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" update Board (), Ġm Hold : Ġ${ m Hold [ 0 ]}, Ġ${ m Hold [ 1 ]}, Ġ${ m Hold [ 2 ]}, Ġ${ m Hold [ 3 ]}, Ġ${ m Hold [ 4 ]} ") ĊĊĠĠĠĠĠĠĠ Ġm Double 1 Ġ= Ġdouble 1 ĊĠĠĠĠĠĠĠ Ġm Is Selectable Ġ= Ġis Selectable ĊĠĠĠĠĠĠĠ Ġthis . double State Ġ= Ġdouble State ĊĠĠĠĠĠĠĠ Ġinit Values ( init Roll Values ) Ċ Ċ // ĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" update Board (), Ġm Is Single : Ġ$ m Is Single , Ġdouble State : Ġ$ double State , Ġm Player Info Double : Ġ$ m Player Info Double ") ĊĊĠĠĠĠĠĠĠ Ġset Control Values ( m Is Single , Ġdouble State , Ġm Player Info , Ġm Control Values ) ĊĠĠĠĠĠĠĠ Ġset Roll Values ( m Roll , Ġm Roll Values , Ġis Selectable , Ġinit Roll Values ) ĊĠĠĠĠĠĠĠ Ġset Hold Values ( m Hold , Ġm Hold Idx , Ġm Hold Values , Ġis Selectable ) Ċ Ċ // ĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" update Board (), Ġm Double 1 : Ġ${ m Double 1 [ 0 ]}, Ġ${ m Double 1 [ 1 ]}, Ġ${ m Double 1 [ 2 ]}, Ġ${ m Double 1 [ 3 ]}, Ġ${ m Double 1 [ 4 ]} ") Ċ // ĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" update Board (), Ġm Double 1 Values : Ġ${ m Double 1 Values [ 0 ]}, Ġ${ m Double 1 Values [ 1 ]}, Ġ${ m Double 1 Values [ 2 ]}, Ġ${ m Double 1 Values [ 3 ]}, Ġ${ m Double 1 Values [ 4 ]} ") ĊĊĠĠĠĠĠĠĠ Ġset Double Values ( m Double 1 , Ġm Double 1 Values ) ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetId From Touch Point ( touch Point : ĠPoint ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġdice Cnt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Roll Values [ i ][ 1 ] Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġstate : Ġvisible Ġ& Ġselect able ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroll Area Width Ġ= Ġsqrt (( m Roll Values [ i ][ 4 ] Ġ* Ġm Roll Values [ i ][ 4 ] Ġ+ Ġm Roll Values [ i ][ 5 ] Ġ* Ġm Roll Values [ i ][ 5 ]). toDouble ()). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx 1 Ġ= Ġm Roll Values [ i ][ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy 1 Ġ= Ġm Roll Values [ i ][ 3 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx 2 Ġ= Ġm Roll Values [ i ][ 2 ] Ġ+ Ġroll Area Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy 2 Ġ= Ġm Roll Values [ i ][ 3 ] Ġ+ Ġroll Area Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrect Ġ= ĠRect ( x 1 , Ġy 1 , Ġx 2 , Ġy 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rect . contains ( touch Point . x , Ġtouch Point . y )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm Roll Values [ i ][ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġdice Cnt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Hold Values [ i ][ 1 ] Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġstate : Ġvisible Ġ& Ġselect able ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx 1 Ġ= Ġm Hold Values [ i ][ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy 1 Ġ= Ġm Hold Values [ i ][ 3 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx 2 Ġ= Ġm Hold Values [ i ][ 2 ] Ġ+ Ġm Hold Values [ i ][ 4 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy 2 Ġ= Ġm Hold Values [ i ][ 3 ] Ġ+ Ġm Hold Values [ i ][ 5 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrect Ġ= ĠRect ( x 1 , Ġy 1 , Ġx 2 , Ġy 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rect . contains ( touch Point . x , Ġtouch Point . y )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm Hold Values [ i ][ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġdice Cnt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Control Values [ i ][ 1 ] Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġstate : Ġvisible Ġ& Ġselect able ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx 1 Ġ= Ġm Control Values [ i ][ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy 1 Ġ= Ġm Control Values [ i ][ 3 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx 2 Ġ= Ġm Control Values [ i ][ 2 ] Ġ+ Ġm Control Values [ i ][ 4 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy 2 Ġ= Ġm Control Values [ i ][ 3 ] Ġ+ Ġm Control Values [ i ][ 5 ] Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" getId From Touch Point (), Ġx 1 : Ġ$ x 1 , Ġy 1 : Ġ$ y 1 , Ġx 2 : Ġ$ x 2 , Ġy 2 : Ġ$ y 2 ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" getId From Touch Point (), Ġres Id : Ġ${ m Control Values [ i ][ 0 ]} ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrect Ġ= ĠRect ( x 1 , Ġy 1 , Ġx 2 , Ġy 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rect . contains ( touch Point . x , Ġtouch Point . y )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm Control Values [ i ][ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Hold Id From Board ( board Hold Id : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Hold Idx [ board Hold Id ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Roll Values ( roll : ĠInt Array , Ġroll Values : ĠArray < IntArray >, Ġis Selectable : ĠBoolean , Ġinit Roll Values : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġr : ĠInt ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġdice Cnt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . i ( TAG , Ġ" b Width : Ġ" Ġ+ Ġm Board Width Ġ+ Ġ", Ġb Height : Ġ" Ġ+ Ġm Board Height Ġ+ Ġ", Ġx : Ġ" Ġ+ Ġpt . x Ġ+ Ġ", Ġy : Ġ" Ġ+ Ġpt . y Ġ+ Ġ", Ġm Dice Width : Ġ" Ġ+ Ġm Dice Width ); ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġroll Values [ i ][ 1 ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( roll [ i ] Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Selectable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroll Values [ i ][ 1 ] Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroll Values [ i ][ 1 ] Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( init Roll Values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr Ġ= Ġm Rand . nextInt ( 3 6 0 ) Ġ// Ġrotation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpt Ġ= Ġget Free Roll Point ( i , Ġroll Values ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroll Values [ i ][ 2 ] Ġ= Ġpt . x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroll Values [ i ][ 3 ] Ġ= Ġpt . y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroll Values [ i ][ 4 ] Ġ= Ġm Dice Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroll Values [ i ][ 5 ] Ġ= Ġm Dice Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroll Values [ i ][ 6 ] Ġ= Ġr ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Hold Values ( hold : ĠInt Array , Ġhold Idx : ĠInt Array , Ġhold Values : ĠArray < IntArray >, Ġis Selectable : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġidx Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġhold Idx . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhold Idx [ j ] Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġsort Ġhold Ġvalues ĊĠĠĠĠĠĠĠ Ġval Ġvalues Hold Ġ= ĠInt Array ( 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġvalues Roll Ġ= ĠInt Array ( 6 ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġvalues Hold . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues Hold [ j ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues Roll [ j ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġhold . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hold [ i ] Ġ>= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues Hold [ hold [ i ]] Ġ= Ġvalues Hold [ hold [ i ]] Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġmax Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġvalues Hold . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( values Hold [ i ] Ġ+ Ġvalues Roll [ i ] Ġ> Ġmax ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= Ġvalues Hold [ i ] Ġ+ Ġvalues Roll [ i ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġis Str aight Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ(( max Ġ== Ġ 1 ) Ġand Ġ! (( values Hold [ 0 ] Ġ+ Ġvalues Roll [ 0 ] Ġ== Ġ 1 ) Ġand Ġ( values Hold [ 5 ] Ġ+ Ġvalues Roll [ 5 ] Ġ== Ġ 1 ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Str aight Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( is Str aight ) ĊĠĠĠĠĠĠĠ Ġ// Ġ 9 ... A ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġhold . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hold [ j ] Ġ== Ġi ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhold Idx [ idx ] Ġ= Ġj ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġidx ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠ Ġ// ĠA ... 9 ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 5 Ġdown To Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( h Ġin Ġvalues Hold . indices . reversed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( values Hold [ h ] Ġ== Ġi ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġhold . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hold [ j ] Ġ== Ġh ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhold Idx [ idx ] Ġ= Ġj ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġidx ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġm Board Border Width ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġm Board Height Ġ- Ġm Board Border Width Ġ- Ġm Dice Size ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġdice Cnt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhold Values [ i ][ 1 ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hold Idx [ i ] Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Selectable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhold Values [ i ][ 1 ] Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhold Values [ i ][ 1 ] Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Selectable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhold Values [ i ][ 0 ] Ġ= ĠR . id . db Hold Fast ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhold Values [ i ][ 1 ] Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhold Values [ i ][ 2 ] Ġ= Ġx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhold Values [ i ][ 3 ] Ġ= Ġy ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhold Values [ i ][ 4 ] Ġ= Ġm Dice Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhold Values [ i ][ 5 ] Ġ= Ġm Dice Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhold Values [ i ][ 6 ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġm Dice Size ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Double Values ( double 1 : ĠInt Array , Ġdouble 1 Values : ĠArray < IntArray >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsort Ġdouble Values ĊĠĠĠĠĠĠĠ Ġif Ġ( double 1 [ 0 ] Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Double 1 Ġ= ĠInt Array ( 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdouble New 1 Ġ= ĠInt Array ( 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġvalues Double 1 . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues Double 1 [ j ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġdouble 1 . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( double 1 [ i ] Ġ>= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues Double 1 [ double 1 [ i ]] Ġ= Ġvalues Double 1 [ double 1 [ i ]] Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmax Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġidx Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġvalues Double 1 . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( values Double 1 [ i ] Ġ> Ġmax ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= Ġvalues Double 1 [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis Str aight Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( max Ġ== Ġ 1 ) Ġand Ġ! (( values Double 1 [ 0 ] Ġ== Ġ 1 ) Ġand Ġ( values Double 1 [ 5 ] Ġ== Ġ 1 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Str aight Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Str aight ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 9 ... A ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġdouble 1 . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( double 1 [ j ] Ġ== Ġi ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdouble New 1 [ idx ] Ġ= Ġdouble 1 [ j ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġidx ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠA ... 9 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 5 Ġdown To Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( h Ġin Ġvalues Double 1 . indices . reversed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( values Double 1 [ h ] Ġ== Ġi ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġdouble 1 . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( double 1 [ j ] Ġ== Ġh ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdouble New 1 [ idx ] Ġ= Ġdouble 1 [ j ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġidx ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Double 1 Ġ= Ġdouble New 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġset Double Values ĊĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġm Board Width Ġ- Ġm Board Border Width Ġ- Ġm Hold Area Width ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġm Board Border Width ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġdice Cnt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdouble 1 Values [ i ][ 1 ] Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( double 1 [ 0 ] Ġ< Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdouble 1 Values [ i ][ 1 ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdouble 1 Values [ i ][ 2 ] Ġ= Ġx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdouble 1 Values [ i ][ 3 ] Ġ= Ġy ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdouble 1 Values [ i ][ 4 ] Ġ= Ġm Dice Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdouble 1 Values [ i ][ 5 ] Ġ= Ġm Dice Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdouble 1 Values [ i ][ 6 ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġm Dice Size ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Control Values ( is Single : ĠBoolean , Ġdouble State : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Info : ĠString , Ġcontrol Values : ĠArray < IntArray >) Ġ{ Ċ Ċ // ĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" set Control Values (), Ġis Single : Ġ$ is Single , Ġdouble State : Ġ$ double State , Ġplayer Info Double : Ġ$ player Info Double ") Ċ // ĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" set Control Values (), Ġb W : Ġ$ m Board Width , Ġb H : Ġ$ m Board Width , Ġbb W : Ġ$ m Board Border Width , Ġha W : Ġ$ m Hold Area Width , Ġha H : Ġ$ m Hold Area Height , Ġd S : Ġ$ m Dice Size ") ĊĊĠĠĠĠĠĠĠ Ġcontrol Values [ 0 ][ 1 ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġcontrol Values [ 1 ][ 1 ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġcontrol Values [ 2 ][ 1 ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġcontrol Values [ 3 ][ 1 ] Ġ= Ġ 0 Ġ// Ġinit Ġstate ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Single ) ĊĠĠĠĠĠĠĠ Ġ{ Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" set Control Values (), Ġ[ 1 ]") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Values [ 1 ][ 1 ] Ġ= Ġdouble State ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Values [ 1 ][ 2 ] Ġ= Ġm Board Width Ġ- Ġm Board Border Width Ġ- Ġm Hold Area Width Ġ- Ġ 2 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Values [ 1 ][ 3 ] Ġ= Ġm Board Border Width Ġ+ Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Values [ 1 ][ 4 ] Ġ= Ġm Hold Area Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Values [ 1 ][ 5 ] Ġ= Ġm Hold Area Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Values [ 1 ][ 6 ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( player Info Ġ!= Ġ"") Ġ{ Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" set Control Values (), Ġ[ 2 ]") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Values [ 2 ][ 1 ] Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Values [ 2 ][ 2 ] Ġ= Ġm Board Width Ġ- Ġ 2 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Values [ 2 ][ 3 ] Ġ= Ġm Board Height Ġ- Ġm Board Border Width Ġ- Ġm Dice Size Ġ* Ġ 2 Ġ- Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Values [ 2 ][ 4 ] Ġ= Ġ 1 8 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Values [ 2 ][ 5 ] Ġ= Ġm Dice Size Ġ* Ġ 6 0 Ġ/ Ġ 1 0 0 ĠĠ Ġ// Ġ 6 0 Ġ% Ġof Ġdice Ġtable Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Values [ 2 ][ 6 ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Single ) Ġ{ Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" set Control Values (), Ġ[ 3 ]") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Values [ 3 ][ 1 ] Ġ= Ġdouble State ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Values [ 3 ][ 2 ] Ġ= Ġm Board Width Ġ- Ġ 2 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Values [ 3 ][ 3 ] Ġ= Ġm Board Border Width Ġ+ Ġm Dice Size Ġ+ Ġ 4 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Values [ 3 ][ 4 ] Ġ= Ġ 1 8 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Values [ 3 ][ 5 ] Ġ= Ġm Dice Size Ġ* Ġ 6 0 Ġ/ Ġ 1 0 0 ĠĠ Ġ// Ġ 6 0 Ġ% Ġof Ġdice Ġtable Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Values [ 3 ][ 6 ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Free Roll Point ( roll Id : ĠInt , Ġroll Values : ĠArray < IntArray >): ĠPoint Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠnumberOf Hold Area Ġ= Ġif Ġ( m Is Single ) Ġ 1 Ġelse Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġval Ġgrid Width Ġ= Ġsqrt (( m Dice Size Ġ* Ġm Dice Size Ġ+ Ġm Dice Size Ġ* Ġm Dice Size ). toDouble ()). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġgrid X Ġ= Ġ( m Board Width Ġ- Ġ 2 Ġ* Ġm Board Border Width ) Ġ/ Ġgrid Width ĊĠĠĠĠĠĠĠ Ġval Ġgrid Y Ġ= Ġ( m Board Height Ġ- Ġ 2 Ġ* Ġm Board Border Width Ġ- ĠnumberOf Hold Area Ġ* Ġm Dice Size ) Ġ/ Ġgrid Width ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 2 0 1 9 0 2 2 3 , Ġjava . lang . Negative Array Size Exception : ĊĠĠĠĠĠĠĠ Ġval Ġgrid Points Ġ= ĠarrayOf Null s < Point >( grid X Ġ* Ġgrid Y ) ĊĠĠĠĠĠĠĠ Ġif Ġ( grid X Ġ< Ġ 0 Ġ|| Ġgrid Y Ġ< Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPoint ( m Board Border Width , Ġm Board Border Width ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġgrid Points Size Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( k Ġin Ġ 0 Ġuntil Ġgrid X ) ĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġall Ġpossible Ġgrid Ġpoints Ġif Ġfree ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 Ġuntil Ġgrid Y ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Grid Point Ġ= Ġm Board Border Width Ġ+ Ġk Ġ* Ġgrid Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Grid Point Ġ= Ġm Board Border Width Ġ+ Ġ( numberOf Hold Area Ġ- Ġ 1 ) Ġ* Ġm Dice Size Ġ+ Ġj Ġ* Ġgrid Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis Free Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġroll Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcheck Ġprevious Ġroll Ġd ices ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( roll Values [ i ][ 2 ] Ġ== Ġx Grid Point Ġ&& Ġroll Values [ i ][ 3 ] Ġ== Ġy Grid Point ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Free Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Free ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Points [ grid Points Size ++] Ġ= ĠPoint ( x Grid Point , Ġy Grid Point ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( grid Points Size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn Ġ= Ġm Rand . nextInt ( grid Points Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Points [ n ]?. let Ġ{ Ġvalue Ġ-> Ġreturn Ġvalue } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPoint ( m Board Border Width , Ġm Board Border Width Ġ+ Ġ( numberOf Hold Area Ġ- Ġ 1 ) Ġ* Ġm Dice Size ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPoint ( m Board Border Width , Ġm Board Border Width Ġ+ Ġ( numberOf Hold Area Ġ- Ġ 1 ) Ġ* Ġm Dice Size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) Ċ Ċ // ĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" on Draw (), Ġdice Size : Ġ$ dice Size , Ġm Dice Size : Ġ$ m Dice Size , Ġm Roll Values [ 0 ][ 4 ]: Ġ${ m Roll Values [ 0 ][ 4 ]} ") ĊĊĠĠĠĠĠĠĠ Ġdraw Board ( canvas ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Init Ġ&& Ġm Roll Values [ 0 ][ 4 ] Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Images ( canvas ) ĊĠĠĠĠĠĠĠ Ġis Init Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Board ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Paint !!. style Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠ Ġm Paint !!. color Ġ= ĠContext Compat . getColor ( context , ĠR . color . color Board ) ĊĠĠĠĠĠĠĠ Ġm Rect . set ( 0 , Ġ 0 , Ġm Board Width Ġ- Ġ 1 , Ġm Board Height Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( m Rect , Ġm Paint !! ) ĊĊĠĠĠĠĠĠĠ Ġm Paint !!. style Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠ Ġm Paint !!. color Ġ= ĠContext Compat . getColor ( context , ĠR . color . color Board Border ) ĊĠĠĠĠĠĠĠ Ġm Paint !!. stroke Width Ġ= Ġ( m Board Border Width Ġ* Ġ 2 ). toFloat () ĊĠĠĠĠĠĠĠ Ġm Rect . set ( 0 , Ġ 0 , Ġm Board Width Ġ- Ġ 1 , Ġm Board Height Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( m Rect , Ġm Paint !! ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Col Values Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint !!. reset () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint !!. color Ġ= ĠContext Compat . getColor ( context , ĠR . color . color Label ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtext Size Ġ= Ġm Dice Size ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dice Size Ġ== Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Size Ġ= Ġ( text Size Ġ* Ġ 0 . 6 f ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint !!. text Size Ġ= Ġtext Size . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbounds Ġ= ĠRect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext E scal ero Ġ= Ġresources . getString ( R . string . es cal ero ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtext Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġtext E scal ero . length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġl ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġtext Ġ+ Ġtext E scal ero [ i ] Ġ+ Ġ" Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint !!. getText Bounds ( text , Ġ 0 , Ġtext . length , Ġbounds ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġm Board Width Ġ/ Ġ 2 Ġ- Ġbounds . width () Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġy Ġ= Ġm Board Height Ġ/ Ġ 2 Ġ- Ġbounds . height () Ġ/ Ġ 2 Ġ+ Ġ( m Dice Size Ġ* Ġ 0 . 6 f ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ( text , Ġx . toFloat (), Ġy . toFloat (), Ġm Paint !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint !!. text Size Ġ= Ġtext Size Ġ* Ġ 0 . 6 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbounds Ġ= ĠRect () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġgame Type Ġ= Ġresources . getString ( R . string . type Single ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! m Is Single ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Type Ġ= Ġresources . getString ( R . string . type Double ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġ"$ game Type Ġ($ m Col Values )" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint !!. getText Bounds ( game , Ġ 0 , Ġgame . length , Ġbounds ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġm Board Width Ġ/ Ġ 2 Ġ- Ġbounds . width () Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġm Board Height Ġ/ Ġ 2 Ġ- Ġbounds . height () Ġ/ Ġ 2 Ġ+ Ġ( m Dice Size Ġ* Ġ 0 . 6 f ). toInt () Ġ+ Ġ( m Dice Size Ġ* Ġ 0 . 6 f ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ( game , Ġx . toFloat (), Ġy . toFloat (), Ġm Paint !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Online Players . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint !!. text Size Ġ= Ġtext Size Ġ* Ġ 0 . 6 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbounds Ġ= ĠRect () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstr Result Ġ= Ġm Online Players . split ("\ n ". to Regex ()). drop Last While Ġ{ Ġit . isEmpty () Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġstr Result . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint !!. getText Bounds ( str Result [ i ], Ġ 0 , Ġstr Result [ i ]. length , Ġbounds ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġm Board Width Ġ/ Ġ 2 Ġ- Ġbounds . width () Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġm Board Height Ġ/ Ġ 2 Ġ- Ġbounds . height () Ġ/ Ġ 2 Ġ+ Ġ( m Dice Size Ġ* Ġ 0 . 6 f ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( str Result . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ-= Ġtext Size Ġ+ Ġ( m Dice Size Ġ* Ġ 0 . 2 f ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ-= ĠĠĠ Ġif Ġ( i Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Size Ġ+ Ġ( m Dice Size Ġ* Ġ 0 . 8 f ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Size Ġ+ Ġ( m Dice Size Ġ* Ġ 0 . 2 f ). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ( str Result [ i ], Ġx . toFloat (), Ġy . toFloat (), Ġm Paint !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Images ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Paint !!. is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ// Ġhold Ġarea Ġborder Ġbutton ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġdice Cnt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Hold Values [ i ][ 4 ] Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbm Ġ= ĠBitmap Factory . decode Resource ( resources , ĠR . drawable . button _ border ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbm Ġ= ĠBitmap . create Scaled Bitmap ( bm , Ġm Hold Values [ i ][ 4 ], Ġm Hold Values [ i ][ 5 ], Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( bm , Ġm Hold Values [ i ][ 2 ]. toFloat (), Ġm Hold Values [ i ][ 3 ]. toFloat (), Ġm Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġdouble Ġarea Ġborder Ġbutton ĊĠĠĠĠĠĠĠ Ġif Ġ(! m Is Single ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġdice Cnt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Double 1 Values [ i ][ 4 ] Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbm Ġ= ĠBitmap Factory . decode Resource ( resources , ĠR . drawable . button _ border ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbm Ġ= ĠBitmap . create Scaled Bitmap ( bm , Ġm Double 1 Values [ i ][ 4 ], Ġm Double 1 Values [ i ][ 5 ], Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( bm , Ġm Double 1 Values [ i ][ 2 ]. toFloat (), Ġm Double 1 Values [ i ][ 3 ]. toFloat (), Ġm Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġroll ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġdice Cnt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( m Roll Values [ i ][ 1 ] Ġ!= Ġ 0 ) Ġand Ġ( m Roll [ i ] Ġ>= Ġ 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġstate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbm Ġ= ĠBitmap Factory . decode Resource ( resources , Ġdice Icons ! ![ m Roll [ i ]]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbm Ġ= ĠBitmap . create Scaled Bitmap ( bm , Ġm Roll Values [ i ][ 4 ], Ġm Roll Values [ i ][ 5 ], Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatrix Ġ= ĠMatrix () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatrix . pre Rotate ( m Roll Values [ i ][ 6 ]. toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap . create Bitmap ( bm , Ġ 0 , Ġ 0 , Ġm Roll Values [ i ][ 4 ], Ġm Roll Values [ i ][ 5 ], Ġmatrix , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( bitmap , Ġm Roll Values [ i ][ 2 ]. toFloat (), Ġm Roll Values [ i ][ 3 ]. toFloat (), Ġm Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġhold ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġdice Cnt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( m Hold Values [ i ][ 1 ] Ġ!= Ġ 0 ) Ġand Ġ( m Hold Idx [ i ] Ġ>= Ġ 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Hold [ m Hold Idx [ i ]] Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbm Ġ= ĠBitmap Factory . decode Resource ( resources , Ġdice Icons ! ![ m Hold [ m Hold Idx [ i ]] ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbm Ġ= ĠBitmap . create Scaled Bitmap ( bm , Ġm Hold Values [ i ][ 4 ], Ġm Hold Values [ i ][ 5 ], Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( bm , Ġm Hold Values [ i ][ 2 ]. toFloat (), Ġm Hold Values [ i ][ 3 ]. toFloat (), Ġm Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġdouble ĊĠĠĠĠĠĠĠ Ġif Ġ(! m Is Single Ġand Ġ( m Control Values [ 1 ][ 1 ] Ġ!= Ġ 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġdice Cnt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( m Double 1 Values [ i ][ 1 ] Ġ!= Ġ 0 ) Ġand Ġ( m Double 1 [ i ] Ġ>= Ġ 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġstate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbm Ġ= ĠBitmap Factory . decode Resource ( resources , Ġdice Icons ! ![ m Double 1 [ i ]]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbm Ġ= ĠBitmap . create Scaled Bitmap ( bm , Ġm Double 1 Values [ i ][ 4 ], Ġm Double 1 Values [ i ][ 5 ], Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( bm , Ġm Double 1 Values [ i ][ 2 ]. toFloat (), Ġm Double 1 Values [ i ][ 3 ]. toFloat (), Ġm Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġcontrols ĊĠĠĠĠĠĠĠ Ġ// Ġbtn Ġinfo Ġplayer Name ĊĠĠĠĠĠĠĠ Ġif Ġ( m Control Values [ 2 ][ 1 ] Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint !!. color Ġ= ĠColor . BLACK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint !!. text Size Ġ= Ġm Control Values [ 2 ][ 5 ]. toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbounds Ġ= ĠRect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint !!. getText Bounds ( m Player Info , Ġ 0 , Ġm Player Info . length , Ġbounds ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġm Board Width Ġ- Ġm Board Border Width Ġ* Ġ 2 Ġ- Ġbounds . width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġm Board Height Ġ- Ġm Board Border Width Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcolor Ġ= ĠContext Compat . getColor ( context , ĠR . color . color Player A ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Player To Move Ġ== Ġ' B ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠContext Compat . getColor ( context , ĠR . color . color Player B ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Player To Move Ġ== Ġ' C ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠContext Compat . getColor ( context , ĠR . color . color Player C ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpaint Rect Ġ= ĠPaint () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint Rect . style Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint Rect . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Rect . set ( x Ġ- Ġb , Ġy Ġ- Ġbounds . height () Ġ- Ġb , Ġx Ġ+ Ġbounds . width () Ġ+ Ġb , Ġy Ġ+ Ġb ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( m Rect , Ġpaint Rect ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ( m Player Info , Ġx . toFloat (), Ġy . toFloat (), Ġm Paint !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġinfo Ġdouble Ġfirst Ġplayer Name ĊĠĠĠĠĠĠĠ Ġif Ġ( m Control Values [ 3 ][ 1 ] Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint !!. color Ġ= ĠColor . BLACK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint !!. text Size Ġ= Ġm Control Values [ 3 ][ 5 ]. toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbounds Ġ= ĠRect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint !!. getText Bounds ( m Player Info Double , Ġ 0 , Ġm Player Info Double . length , Ġbounds ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġm Board Width Ġ- Ġm Board Border Width Ġ* Ġ 2 Ġ- Ġbounds . width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġm Board Border Width Ġ+ Ġm Dice Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcolor Ġ= ĠContext Compat . getColor ( context , ĠR . color . color Player A ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Player To Move Ġ== Ġ' B ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠContext Compat . getColor ( context , ĠR . color . color Player B ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Player To Move Ġ== Ġ' C ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠContext Compat . getColor ( context , ĠR . color . color Player C ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpaint Rect Ġ= ĠPaint () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint Rect . style Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint Rect . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Rect . set ( x Ġ- Ġb , Ġy Ġ- Ġbounds . height () Ġ- Ġb , Ġx Ġ+ Ġbounds . width () Ġ+ Ġb , Ġy Ġ+ Ġb ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( m Rect , Ġpaint Rect ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ( m Player Info Double , Ġx . toFloat (), Ġy . toFloat (), Ġm Paint !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwidth Mode Ġ= ĠMeasure Spec . get Mode ( width Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġwidth Size Ġ= ĠMeasure Spec . getSize ( width Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġheight Mode Ġ= ĠMeasure Spec . get Mode ( height Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġheight Size Ġ= ĠMeasure Spec . getSize ( height Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġdesired Width Ġ= Ġif Ġ( width Size Ġ< Ġheight Size ) Ġwidth Size Ġelse Ġheight Size Ġ/ Ġ 3 Ġ* Ġ 4 Ġ// Ġaspect Ġratio Ġ 4 : 3 ĊĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( width Mode Ġ== ĠMeasure Spec . EX ACT LY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġwidth Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( width Mode Ġ== ĠMeasure Spec . AT _ MO ST ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġmin ( desired Width , Ġwidth Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġdesired Width ĊĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Measure ĠHeight ĊĠĠĠĠĠĠĠ Ġval Ġdesired Height Ġ= Ġif Ġ( width Size Ġ< Ġheight Size ) Ġheight Size Ġelse Ġwidth Size Ġ/ Ġ 4 Ġ* Ġ 3 Ġ// Ġaspect Ġratio Ġ 4 : 3 ĊĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( height Mode Ġ== ĠMeasure Spec . EX ACT LY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġheight Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( height Mode Ġ== ĠMeasure Spec . AT _ MO ST ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġmin ( desired Height , Ġheight Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġdesired Height ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Log . i ( TAG , Ġ" on Measure (), Ġwidth : Ġ" Ġ+ Ġwidth Ġ+ Ġ", Ġheight : Ġ" Ġ+ Ġheight ); ĊĠĠĠĠĠĠĠ Ġ// MUST ĠCALL ĠTHIS ĊĠĠĠĠĠĠĠ Ġset Measured Dimension ( width , Ġheight ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Size Changed ( w : ĠInt , Ġh : ĠInt , Ġold w : ĠInt , Ġold h : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(( w Ġ> Ġ 0 ) Ġand Ġ( h Ġ> Ġ 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Board Width Ġ= Ġw ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Board Height Ġ= Ġh ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Board Border Width Ġ= Ġw Ġ/ Ġ 4 0 Ġ// Ġ 2 , 5 % Ġborder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġm Dice Width Width Ġ= Ġ( m Board Width Ġ- Ġ 2 Ġ* Ġm Board Border Width ) Ġ/ ĠSIZE 1 _ SMALL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġm Dice Width Height Ġ= Ġ(( m Board Height Ġ- Ġ 2 Ġ* Ġm Board Border Width ). toDouble () Ġ/ ĠSIZE 2 _ SMALL ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Dice Size Small Ġ= Ġmin ( m Dice Width Width , Ġm Dice Width Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Dice Width Width Ġ= Ġ( m Board Width Ġ- Ġ 2 Ġ* Ġm Board Border Width ) Ġ/ ĠSIZE 1 _ MEDIUM ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Dice Width Height Ġ= Ġ(( m Board Height Ġ- Ġ 2 Ġ* Ġm Board Border Width ). toDouble () Ġ/ ĠSIZE 2 _ MEDIUM ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Dice Size Medium Ġ= Ġmin ( m Dice Width Width , Ġm Dice Width Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Dice Width Width Ġ= Ġ( m Board Width Ġ- Ġ 2 Ġ* Ġm Board Border Width ) Ġ/ ĠSIZE 1 _ LARGE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Dice Width Height Ġ= Ġ(( m Board Height Ġ- Ġ 2 Ġ* Ġm Board Border Width ). toDouble () Ġ/ ĠSIZE 2 _ LARGE ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Dice Size Large Ġ= Ġmin ( m Dice Width Width , Ġm Dice Width Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( dice Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġm Dice Size Ġ= Ġm Dice Size Small ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġm Dice Size Ġ= Ġm Dice Size Medium ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġm Dice Size Ġ= Ġm Dice Size Large ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Hold Area Width Ġ= Ġ 5 Ġ* Ġm Dice Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Hold Area Height Ġ= Ġm Dice Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . i ( TAG , Ġ" on Size Changed (), Ġm Bo ar / d Width : Ġ" Ġ+ Ġm Board Width Ġ+ Ġ", Ġm Board Height : Ġ" Ġ+ Ġm Board Height Ġ+ Ġ", Ġm Dice Size : Ġ" Ġ+ Ġm Dice Size ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Board View " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSIZE 1 _ SMALL Ġ= Ġ 8 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSIZE 1 _ MEDIUM Ġ= Ġ 7 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSIZE 1 _ LARGE Ġ= Ġ 6 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSIZE 2 _ SMALL Ġ= Ġ 5 . 5 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSIZE 2 _ MEDIUM Ġ= Ġ 4 . 5 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSIZE 2 _ LARGE Ġ= Ġ 3 . 5 ĊĠĠĠ Ġ} Ċ Ċ } Ċ