/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠJ aya ĠSur ya ĠTh ot ap al li Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . jay as ury at . min es w eeper engine . controller . impl . handler Ċ Ċ import Ġcom . jay as ury at . min es w eeper engine . controller . Action Handler Ċ import Ġcom . jay as ury at . min es w eeper engine . controller . model . Mine field Action Ċ import Ġcom . jay as ury at . min es w eeper engine . controller . model . Mine field Event Ċ import Ġcom . jay as ury at . min es w eeper engine . model . cell . Mine Cell Ċ import Ġcom . jay as ury at . min es w eeper engine . model . cell . Raw Cell Ċ import Ġcom . jay as ury at . min es w eeper engine . model . grid . Grid Ċ import Ġcom . jay as ury at . min es w eeper engine . util . mutate Ċ import Ġcom . jay as ury at . util . exhaustive Ċ Ċ internal Ġclass ĠCell Flag ger Ġ: ĠAction Handler < Mine field Action . On Cell Long Pressed > Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġon Action ( ĊĠĠĠĠĠĠĠ Ġaction : ĠM ine field Action . On Cell Long Pressed , ĊĠĠĠĠĠĠĠ Ġgrid : ĠGrid , ĊĠĠĠ Ġ): ĠM ine field Event Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġupdated Cell Ġ= Ġwhen Ġ( action . cell ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRaw Cell . Un re ve aled Cell . Flag ged Cell Ġ-> Ġaction . cell . as Un Flag ged () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRaw Cell . Un re ve aled Cell . Un Flag ged Cell Ġ-> Ġaction . cell . as Flag ged () ĊĠĠĠĠĠĠĠ Ġ}. exhaustive ĊĊĠĠĠĠĠĠĠ Ġval Ġis Game Complete Ġ= Ġis Game Complete ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Ġ= Ġgrid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdated Cell Ġ= Ġupdated Cell , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is Game Complete ) ĠM ine field Event . On Game Complete ( updated Cells Ġ= ĠlistOf ( updated Cell )) ĊĠĠĠĠĠĠĠ Ġelse ĠM ine field Event . On Cells Updated ( updated Cells Ġ= ĠlistOf ( updated Cell )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Game Complete ( ĊĠĠĠĠĠĠĠ Ġgrid : ĠGrid , ĊĠĠĠĠĠĠĠ Ġupdated Cell : ĠRaw Cell , ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġmod Grid Ġ= Ġgrid . mutate Ġ{ Ġthis [ updated Cell . position ] Ġ= Ġupdated Cell Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtotal Mine Count Ġ= Ġgrid . total M ines ĊĊĠĠĠĠĠĠĠ Ġvar Ġtotal Flag ged Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġcorrect Flag ged Count Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġmod Grid . cells . flatten (). forEach Ġ{ Ġcell Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cell Ġis ĠRaw Cell . Un re ve aled Cell . Flag ged Cell ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Flag ged Count ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( total Flag ged Count Ġ> Ġtotal Mine Count ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cell . as Re ve aled (). cell Ġis ĠM ine Cell . Mine ) Ġcorrect Flag ged Count ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcorrect Flag ged Count Ġ== Ġtotal Mine Count ĊĠĠĠ Ġ} Ċ } Ċ