package Ġcom . nov oda . gol . presentation Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġcom . nov oda . gol . data . Cell Matrix Ċ Ċ class ĠCell Matrix View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠView ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġcell Matrix : ĠCell Matrix ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġon Cell Clicked : Ġ( x : ĠInt , Ġy : ĠInt ) Ġ-> ĠUnit Ġ= Ġ{ Ġ_, Ġ_ Ġ-> Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdead Cell Ġ= ĠPaint (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . GRAY ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġalive Cell Ġ= ĠPaint (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . BLACK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrender ( cell Matrix : ĠCell Matrix ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . cell Matrix Ġ= Ġcell Matrix ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġval Ġcell Matrix Ġ= Ġcell Matrix Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġcell Dim en Ġ= Ġwidth . toFloat () Ġ/ Ġcell Matrix . getWidth () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( y Ġin Ġ 0 Ġuntil Ġcell Matrix . getHeight ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġ 0 Ġuntil Ġcell Matrix . getWidth ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell At Position Ġ= Ġcell Matrix . cell At Position ( x , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpaint Ġ= Ġif Ġ( cell At Position . is Alive ) Ġalive Cell Ġelse Ġdead Cell ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ* Ġcell Dim en , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ* Ġcell Dim en , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( x Ġ+ Ġ 1 ) Ġ* Ġcell Dim en , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( y Ġ+ Ġ 1 ) Ġ* Ġcell Dim en , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( event : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( event . action Mask ed Ġ== ĠMotion Event . ACTION _ DOWN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Matrix Ġ= Ġcell Matrix Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Dim en Ġ= Ġwidth . toFloat () Ġ/ Ġcell Matrix . getWidth () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġevent . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġevent . y ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Cell Clicked (( x Ġ/ Ġcell Dim en ). toInt (), Ġ( y Ġ/ Ġcell Dim en ). toInt ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Touch Event ( event ) ĊĠĠĠ Ġ} Ċ } Ċ