From 5dbd1fe4b2567ad1f59a607d6a1aea4493197c10 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr>
Date: Fri, 3 Jun 2022 23:40:00 +0200
Subject: [PATCH] Split level setting into board size and colors counts
 settings

---
 android/gradle.properties    |   4 +-
 assets/icons/colors_5.png    | Bin 0 -> 1098 bytes
 assets/icons/colors_6.png    | Bin 0 -> 1516 bytes
 assets/icons/colors_7.png    | Bin 0 -> 990 bytes
 assets/icons/colors_8.png    | Bin 0 -> 1559 bytes
 assets/icons/size_extra.png  | Bin 0 -> 962 bytes
 assets/icons/size_large.png  | Bin 0 -> 774 bytes
 assets/icons/size_medium.png | Bin 0 -> 661 bytes
 assets/icons/size_small.png  | Bin 0 -> 480 bytes
 icons/build_game_icons.sh    |   8 +++
 icons/colors_5.svg           |   2 +
 icons/colors_6.svg           |   2 +
 icons/colors_7.svg           |   2 +
 icons/colors_8.svg           |   2 +
 icons/size_extra.svg         |   3 +
 icons/size_large.svg         |   3 +
 icons/size_medium.svg        |   3 +
 icons/size_small.svg         |   3 +
 lib/entities/cell.dart       |   2 +-
 lib/layout/parameters.dart   |   6 +-
 lib/provider/data.dart       | 120 ++++++++++++++++++++++-------------
 lib/utils/board_utils.dart   |   2 +-
 lib/utils/game_utils.dart    |   2 +-
 23 files changed, 114 insertions(+), 50 deletions(-)
 create mode 100644 assets/icons/colors_5.png
 create mode 100644 assets/icons/colors_6.png
 create mode 100644 assets/icons/colors_7.png
 create mode 100644 assets/icons/colors_8.png
 create mode 100644 assets/icons/size_extra.png
 create mode 100644 assets/icons/size_large.png
 create mode 100644 assets/icons/size_medium.png
 create mode 100644 assets/icons/size_small.png
 create mode 100644 icons/colors_5.svg
 create mode 100644 icons/colors_6.svg
 create mode 100644 icons/colors_7.svg
 create mode 100644 icons/colors_8.svg
 create mode 100644 icons/size_extra.svg
 create mode 100644 icons/size_large.svg
 create mode 100644 icons/size_medium.svg
 create mode 100644 icons/size_small.svg

diff --git a/android/gradle.properties b/android/gradle.properties
index 85b94f8..65eed64 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,5 +1,5 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
-app.versionName=0.0.7
-app.versionCode=7
+app.versionName=0.0.8
+app.versionCode=8
diff --git a/assets/icons/colors_5.png b/assets/icons/colors_5.png
new file mode 100644
index 0000000000000000000000000000000000000000..24d2901517b7665bbbf0b7e65540f670fd9ac661
GIT binary patch
literal 1098
zcmeAS@N?(olHy`uVBq!ia0y~yU^oE69Lx+145>_WOc@v$I14-?iy0WCPk}I_+{y{!
z3=9mCC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)lHV62GxH2#>FfuYQ
zGBGkSF|x2Sv$8X@aj<Z3v2t*;a`Ccp^Re*=aPSIp@CkD8332iZbMlLD3W{<GiE|4}
z@Q6t9h)VH_%koLc@kuKQ$S4cSstU=e2`OrcC~1o->4+-ph^pv{spyHR>WixzNoW{J
zXqifBn@Q<dNb6b4=-bE|*vcB&%NaSyn>fjvI4PL9Dw?|~S$HT}dMexasMz?b+WM*5
z`Kj3lsyha2IE839hibZnX}U&exkYJv#OQb@==rA@_@^2KrWpoh7zJe-1!o!uXBmfN
z8;9nYgyovVlv>1=S;kdZCRSS~*V!c3*`_wyr8U{5H``~l*k`snWOq2`bUNjBJLPpd
z=k++}_d4hIxfD)tEuQRFI>o(os(bl#&x)Czm9xC6=Xlr7_o-XpTffk^evx0pV!y^E
z{>{q*nwJN(t_*Bj71X{asAElV*ZPp|4I$kdLwh!b_HGXA-x@w)d&Gnt5tDXCPTCbY
zd3WUG-BDBaL`~fnJ#Am~wEZ#D55y>~DE-R7z~tfS;uunK>+S96;L8pY4G*_!E$LVg
z;HWFaXvh(Iz*%t13Wbgno)Z^qxU&Xs(3+RK+y1WBot&Jua~G_B_r9;5dFPF>XPKFG
zXOIi~xx&_GZx~~AO+aaZfmHC}Jfru+J-c#rAGp@l_f$Z%H!vJn>*Ap7#1LPy5tRBE
z7|fWf*2VW8-Q)fC<B`8Jb2}LpZ<_XSNruC=3$5v!7;m1l73T|B=;CGOu<}~|A;wj@
zx-tvid9lk>YRW8#%4H8RFX!#`J9FN@?^~(q)Mqog%yL+DTKy}^m)(;-9<=)7;<|&j
z(Tt3$w(<}57&Q3B8!|4HOl0`G^OQ)AC-VzO;SEZB8`7A>jxgHIY=|su;8#lslu5YD
zvZkAvNBXh-pSxZM((XTA@YD9OR6|s*YC_b?&A~hUd1sUd+=*%k`uf=ZpWSDT6sCDm
zJOQt6<la~Qwe9kD5v~83rV7!%-*3FW%l$EL;eNX(@jc(NZZp=4{e3zySX6cAz4ST#
zN(={WuWVxMz4p%Q3Hu7KtcwkkrK3z9e390bEO>D&Jl8N`Y0><T^EKbxD|r~cc;(H$
zf)5{Ft6jcTbRhq5(SKL<<6&W2zE9PwajlX+kz-d`V0`V4K(7pcxZ9$8TMzD(jh*u2
ogD51(Ng{vLGxTYjxC_eei03VA-O^OplK|51>FVdQ&MBb@0H)1vWB>pF

literal 0
HcmV?d00001

diff --git a/assets/icons/colors_6.png b/assets/icons/colors_6.png
new file mode 100644
index 0000000000000000000000000000000000000000..d63b706a2b06e1204e1bff85a0035595953ae8e0
GIT binary patch
literal 1516
zcmeAS@N?(olHy`uVBq!ia0y~yU^oE69Lx+145>_WOc@v$I14-?iy0WCPk}I_+{y{!
z3=9mCC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)l{tNI4ab;j&U}R)q
zW@2PvVq|4zWMg4uXJO)CW#VLG;$~;&;b7+FWES9J5#(kO;$acyVG-eF73F0W<6{-)
zXO$FSlM-Z;7G#qVVv`YKmlt7I6y;D7<4_joP?g|Rli*aB<kXbn)RE!RljYWz=Qfb%
zHc{d+RpK#I=Cx4awN&M`R^zi#=d)Gkv(w;n(Bya2;&;{-aMcxX(-m;n6Y$Uz^wbyh
zG7$7J6!J9^@;4R=Fcu0n6%H{I2{ji9w-AZ26p6GFjkXqzvlWZC6-%@eOR^VFb`Vc>
z6i;`S$Z(d(c9qO^lg#&!D)f{p^_H&im8tZTsSc2B43=vOk!uc-YYCNa4U=yRlWz}~
z?+BOgj8N!`ROpFP=!sV7i&5;4QJfH~I5AFXQk>G{c%`WcO4AaRrza}UNK&4eq&z!C
zWloC9+*Fl$X)5#6RTreIF3eC}lBKpZOKn-U+VULr6*=lFbJbVnsjtb`Sevi0u0UgB
zk>-{Xt*xb6+e)=|lxy#*(B56Cy{A%pZ<WseYMlc$ItOcXkJRfPt=Bu&pm)4M??j{C
z>1O@2E&AtL4bHb3Txc`6)NXjK%jib8(XC$N+r7qj`i$>SFnKV+<l#h<N0Uq*PcnHj
z+4SjT(`QpmpHDS?G1ctlG_zOJ&0fzido#oQ?M(A`v&`SmGXF5!;^S<KPjf7e>%9wR
zU|`Poba4!+xb^nV&v2ha3HA@=Q;sMs)o@ikJz>cN)l+_xf~IXcvcOR_bF1nW0oA2b
zlCDgdS^3X<zsl!3k+X_tSw63v`~LUi8tdnE_IHb)>wVrAuF2Em%D>t5a^gJZ2#?E&
zj0|LghW{)EcmF>+S(|;7_x0iQ_xrQhW>m#Z+dXaV)`)4lwg-tHC^`HvBmT8(*(=5w
zd*t4yAM6%uxY_lzF8s|4hKlJ@2`4AAF}x01YJ8y7=))rYmki$}mzpn#c*&dbA<#1I
z`a<EO%ln_GWH3m4`St6}mfCs#`%UNeiu0W?yJCMM{ReY;dVh+8?fU(T+74Mc@f9rl
z5W2~BiR6N5U;E!F++~<8xnNESb4}9U%V}GgV^SL2F7ZuxcGLdbeLjibMmg6R4YEG5
z%u!b=+M{*4%TRM^h|8~!uLK`5)QMj7xe~smt9DC@|LhEg{XNokv!6cRr15)kf&-s5
z=bP`fx>BX#dJ2X+wnt3yVm&jXsfOQuYQTYj4f;ZzHOj&lM0FfgtzDRIHM6bon%Ll$
zeD=nkN!r&wO{(1(*YI_}D$}co<5Q>aiY;#3tbAD`V<N|jMA7ZlZtqUB9nkD-VE+?0
zuYIY^21lg_hO2kXZs)7pocT*t;DSsB|Ao+f+*PbhahuvC+qTSSzQxK^aa6?lRbNVB
zvqQsN(;nkvf3_RVc3?PKVb(LlY{^NU0DZv&^4evRmrQkXCv)sLpcN+F*T^xgZURTe
zDJ`*21r77r-v}{&(<t+|Ja_0e&jddq#<u1KU8%Pt!c>GmbWHX6@lbH<r_VRCXELz=
zRto+3?q`ZhpQ>lxOa`sT|DPY4x!?VRo7^3xg$&mAcUOtr)|j~ZcZ|q?i$X80hMc(a
z{?(KBEMH?XF@oVKd!cu{LlfiU*<x?@mwFjBw24(6*pb@g!kl5DobdmSrx4$Q`N#iU
z@89=K=_A7;vwHSJjg1%bG;)l$&Dm;Q^T#OQg6yleEyb7aKRCOmbl&;m{%f`Tf87q*
z=9jElel#k!?s;7HdzT8chLy+3Oveli0wxD?E|$y?WjnU$xct+vYgXO==%xWO&C}J-
JWt~$(695p_FkJuu

literal 0
HcmV?d00001

diff --git a/assets/icons/colors_7.png b/assets/icons/colors_7.png
new file mode 100644
index 0000000000000000000000000000000000000000..3ba87aece63cb2ae9589e04100081bd6fd225c2b
GIT binary patch
literal 990
zcmeAS@N?(olHy`uVBq!ia0y~yU^oE69Lx+145>_WOc@v$I14-?iy0WCPk}I_+{y{!
z3=9mCC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)lx(E1#xH2#>FfuSO
zF)}hUGO{o+vNAETF)^_-GjT98bFwgVu`qM9vhcF9@UgK9u(Jwtu!(ZAi*d3`a&bs=
zbIS8_De!VB@^LHkajWw4s0;9@3-D?S@#zTh=?U}e3-jxX@EeH=n2HISi3ysE3t34B
z+e(T!NsBtmh`P&)d&r4<%S-skO9UuNg(yphDoaPH%EqY4#j4B2tIMZoDx_*DrfDf=
zYAfaHD(C4b7wD-J>Z=s#tCkz8RT!yP8*9`UYt)%&)|+ZJm})kfYPOndcUtOnS?cy#
z>rJxJpJb~)&CX!Dz2OXd!`Ti-^PG$qIh!nTF<s_ry28zDrJLC*ck?yw=IcEzHhNla
z^0M6OZMDtEdY7-wZeN?-em494ZTI`z9SpEL6kvBa(EdoE{jng2<3SF`gB?x;JDd!5
zJQd=2I>hlzsMFa{r#W)GO$-c75}q!OAr-gY-oEK4k|^T(kjb&t$x$j$Fjv5pP2I&+
zFm;~b1WB0y#@2P8|6RXVvDwpPZbIpelehdg?3=UX@=xhWEgOyXb!X}QW!7kW*~LHx
zXy9VLc5nLLt;L)YdjIR)?!k=sXa3;!x%<~wH*75C{BhhYd&&L}mw5}~`3;2A8Y18B
zpFNYYZmUQARj(P0ZC@DvCbIpQ<Mn@OthvK}xd*8;7{gXC{eP=bQX%^~vrn63g46HY
zUTF>TzFa>9(i)!M`fqTC;kNkF{bi?lKRECk2&6TzzTN-nDo;U?GvoV1JRib-NB5s)
zh?f#EkWXuHzg4e)hC%+Tcfi+Ok_xXcFx&7MADHs(dc6^|jG6X>(ix0wTlW{Fu-(|Z
zrs1Ulb4m99xo3DbOnLHUQjns<%VkWz4)GXFdh&HrkmP}Xp{#p2j1LIE&9^dO&WQ;)
z;4*`8*OvcbCwUBtUwvP4^aGQO=$8G~XBgH`vWXA+#Qx^0=7Y!?j8&g%Jx|JRh*{b&
z@dMM8yzKv9lZ_9&SlNGJ=Le>m{44*?88F-Ueya04DL$e1b$s}_HpvB-Kp74eltj~0
ics;t8c?%yqx99$ZM;=--dA6V&%;4$j=d#Wzp$Py%Ejca#

literal 0
HcmV?d00001

diff --git a/assets/icons/colors_8.png b/assets/icons/colors_8.png
new file mode 100644
index 0000000000000000000000000000000000000000..534373e179076daa289a71e20dff9580310b38a9
GIT binary patch
literal 1559
zcmeAS@N?(olHy`uVBq!ia0y~yU^oE69Lx+145>_WOc@v$I14-?iy0WCPk}I_+{y{!
z3=9mCC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)lJ`V5+ab*AjMlfJv
zVq|7!Vr6DxV_{}zVdh|E=455zVgn&=HWnUsRvva%UJf>XPBsBfHbE|SVQzL2ZVpi%
z5EA3z5a;C-=i`*(=aS~<k`dsR72uW=<dzrYQ4j(lMPXiL5ndHhJ~c6Z4KaRAaRDs}
z0c{BZ9SK2QNkKg+L47G918E^cX(1zNVIvt~6Il^cIT3R?Q44udO9fFY1u<(SaXTe(
zdu0g+WeG<W2`5!aXH`iTHAz=BDK~W~cXeqG4QWpeX)jF~Z!KA0ZCO8US$`e503EqN
zUAZ7#`Cxs8a07)11H}kK#YjWNC?lm9W2IOV<#<z-L{pU{GnHg>)f98pR138<3$=7h
zwG1ouENhJ%YmHnR%{*Jpd|S-|Tde{+ts)2QQU{$fN1bvfoeF2&YG=I~SN%Fy{dzb3
z1~-F7cY`JmgJuuI77xQ#Ps27(qjoQ&4sYX5Z{sc><8B|59$%AQKhu6c(+U2j6a394
z`kPG(Fq<4`J|)n6YLLaWAdBh27BfODXNFkL3bC9WYB@X9YEG!t+%OQD7j8X2+<HNT
z^}-07MNzg(qHLE&*)EH=T^4P(A_jz3#@ernwO<`)zb4LMZM?(!1jqFWjvIDa2=Xy7
zFmLsAaSW-r_4dwh^N>Ih_7952B~$k(Iq_#!RjQbD&6pGy%q85sXwer3uPl{CL0MA$
zZW6}F=HI%Mwf3Cd_gOo$XGUh<-@5Pl@!j<^{ua(H{(iIg{0tuniQ95rR~I<{WZ#e{
zQ4+xjN=@Y80}mSF-&a{j%S?ZBefFI1?E9p7KKw4sT~~5q(Ta~d?`t${f37o2-F4Dy
z^<D-E{hPlwc*i{DDR($9QQ+I2zNNZHq#o#YRXka7>b%4UUH9V)S6)(xZqWC?zHz<V
zwuY?Q=hq(HGhp2lv@}akN85hdqFptUG##Ss%WtqT*RS`FnHIimy$)mXN0pOT1Rvg<
z;K&%O!&s|w{70bSH_eGG`kPqps94ThdQe&=;-pZ3d(j^4tL`clZK?~}p1hc(#=&`Q
z6N||tnb#Qw(^#S-nW8-Ute<;c@NLSQ*5J4+MC@GGK|aGN@=2T#leQV|u5MZNc85ge
zkuRP(lfB#Sv}Z?^FSj@%Vj#7ARn@ncpF1QY@9D?fex4fLduvP9`90B-m-w9Ry0^~g
zRYR-K+h37;YO*GNo>rt|c_=I){JGV8-@g@6JHAX_cXo6B>OVTXmnTY?IVEdfnY{CB
z+@>F`f>y=<P8s}nU2b2@zUI3;uXXR)yL%Xw+m*{hul-~S)92t%?oQ=C7`m-tCiA0N
z#!p_`39i@Naa`oVNukX(n<`(rZw}iW_;CXZ3ty(GoYP^muelcIg$mlI*suQ2eA%=p
z`ShLx0uQ`}g5NBdyx2!*i!sX%kG7(VmwgyTc^IGc?+F)Or_@l=#^CDnq2m{)`|3ps
z)(4C{H#msKFV4QGWZlqSrgG(X*{<s!H!<s6inLNY-u#7c%?4(cmr?f>j;niE^gdKs
z7XLwY&-6oIRbmbaIP8AC?2Eq2E$?c#Tpq^1mkyh`W+<@DdcouI!GMJ&=;@@j2TZr_
zEa&vI-n`Vq^mNiX-^B%fXEe_Qh%ffstizbi{`H@e_I2K~Qx@shTi@1w`r5_z=XHa7
zS9V`k+OKg@WUqKz(uJ^@+WiyizX^Olc5QQ0!T$Ak_G~&RyFpNDg+cc6`S;&-=Ls99
zt&i3Fdh_#=tM*Ixlxp3Q7rreX|5tuq+1;`mZ@;m%e?I7)uVcrwUJg`5lamt|8tNL7
fOkV_mvsOLBzja4_c4$xh2{Ovl)z4*}Q$iB}nOP)I

literal 0
HcmV?d00001

diff --git a/assets/icons/size_extra.png b/assets/icons/size_extra.png
new file mode 100644
index 0000000000000000000000000000000000000000..d3401d9dd4df7a871eb7ac88592707f63480d0dc
GIT binary patch
literal 962
zcmeAS@N?(olHy`uVBq!ia0y~yU^oE69Lx+145>_WOc@v$I14-?iy0VXB0!k&?2PAU
z7#J8NOI#yLg7ec#$`gxH8OqDc^)mCai<1)zQuXqS(r3T3kz!zA<O}c#ab*AjMs`+S
z4G_@O)X>({(ACn^)zZ|{($dn_)YsND(AG56*4Eb1GStyB*3r??)iTl5)z#P6H!v_T
z)Uh=*G&C|YGB!3gF)=YSGcz|gx3I9Vw6wIcva+_ewzajjx3_n2aBy;Ra&d8Sb#--f
zb8~lh_wexW@$vEV^Yi!j4+sbd3=9kp508wDjEahij*gCriHVDgi+5ZfA0MBTl$4yD
zoRX4~mX?;4m6e~LUr<m`US3{NQBhM<Q&(5l($do2-rn2W+t=4OVZwxo6DLlYGG*Gd
zX|rd~o-=38ym|B1tXZ>R!-kzZckbD<=g5&G$BrGlaN)w`%a`xmx%1$`gC|d(ynXxj
z<HwKx|NpltwK>kfz+~#_;uunK>+PN6K_ZC~tQQ)Y`}n+s1Y8B$71EA2%qTw4ar1k<
zp!nuLDW)O3y5IHkudZFUdFHzP*}J0G9!t;IaZoaAYt-TG(sLd%FmWg}U?u)}A9(Yz
z{yB$5)GtGWDE7q(Yre={xcAs-b1m~S9+O~3mI4Ka$=Ryv2a8^wZ{BHT!5HRMFE(do
z^T}G4oIjd7najNY%i64Hp7$pF<^5*!(hY(R42&!SaH8M@qwI{^dX~I;)BjmTtZ2?G
zSp6k?K{R{ug_qI>MmL=QdN44uTu@Jt*|l3W{Gi`U`-a)28#wHy{?n`oVULwKUyJH&
zi#-jT5q~3#cx!b2if;&Ie|}*5rTr}DUnPjD{bG9(An(Ay%f2P?U*buj8#;e&FRX2r
zEZF}g{J>GG8SQ27n2{YO;K0z!x+QT_v=OJ6*L~|Ozv~ALH^lt9XTLn{+YYDy?x$>~
zaws&kF)vH_TYggQN6fGFd!L7wZs4h#@=v!Skp1;eek5NCI54!!81Q*pt7<<ed^x|F
zyR?97kJewY9f9oLZ;oqgSYBZla5&5;8&MO!iErMNec!c9R`ON(FN~jFCw*sav+K9V
zrFZU}K#L<bu8cqK&Fs?|m?SI~e4PK@{st#%U?4^5f`ttWAF`#dxccJ{E9;?cSL~-K
Qz5(SZPgg&ebxsLQ0E{1ItN;K2

literal 0
HcmV?d00001

diff --git a/assets/icons/size_large.png b/assets/icons/size_large.png
new file mode 100644
index 0000000000000000000000000000000000000000..18b3420564654a9adf32e5a91d0d41f82fd4e2ce
GIT binary patch
literal 774
zcmeAS@N?(olHy`uVBq!ia0y~yU^oE69Lx+145>_WOc@v$I14-?iy0VXB0!k&?2PAU
z7#J8NOI#yLg7ec#$`gxH8OqDc^)mCai<1)zQuXqS(r3T3kz!zA*c;#z;>y6lz{tSB
z&&H~up`od%simc*t*x!2qhnxTU~Ft`YHDh(qh)SxZmp|rZEbC1V`HbMZLg=};Nalo
z<mBw^?CR?3;o;$BsOx2@=Vz?vXRPn%=ND+KA84W<5)u+>Vi0PoA7y3`7Z(?AZkUje
zkd%~^oSdARnwplDR#H+@QBhG<RaISG-QZx>+uJ*7(xfR<rc9kWb;gVtvu4ejJ$v??
zIdisc+qP%Vo`VMu9y@mIY^c-Ir%ykA{P^k9r~m)|>&2?gU|?W8<>}%WQgQ3;9nWCl
zK#_)vJS?n20y9&2x)ivYj86RcUoZCM?7IAf>l5AQ?*6mu-fF9ruS)jDm8=f^v&EX#
z|F`6Yow^lP40yqNiGok1f8Ow|x_Ls}F0|J0yZ*+6_pNXJq?mbj3(r(!U~pL6u>1F~
zId1>w{`y;T)&BWEU9p&@b>@Nx4ky>1Tm0YmuOWl?PWfX^^(*a>Eiz%b(f9Yf{_D;1
zwf0|6uUvKh$vz?Ox+QkMRJTbppYeU>W5dqCa6ur!_M83g73aUdXkQtBWdDVncdIu(
zNPm@n@wzQLvT65Z69j(OdkCu^&(n{8v2VkI->;e)ooyK$7Mp+k<W>9Y;_sFHaZdiv
z{~7A(EZKMGgYO$lWbGgJGh}c4e=xAtP5t1~EB$WkTZ`uRa?f5V?-F0Uf}Mdu!ajQA
z|F6EaeT)Bl{aqIR_2-@Pq=WOXtY4g8$%kxC54*_!OriMgj0_rL0e{kO-Mfb@i^&#Y
h&nV}bSGM{`B~yZ2+wU_c&Xs}`dAj<!taD0e0stH>9UcGx

literal 0
HcmV?d00001

diff --git a/assets/icons/size_medium.png b/assets/icons/size_medium.png
new file mode 100644
index 0000000000000000000000000000000000000000..4b4f7754fb46de7cf2ddfc265da900bf77cc0d3e
GIT binary patch
literal 661
zcmeAS@N?(olHy`uVBq!ia0y~yU^oE69Lx+145>_WOc@v$I14-?iy0VXB0!k&?2PAU
z7#J8NOI#yLg7ec#$`gxH8OqDc^)mCai<1)zQuXqS(r3T3kz!zASQ_9H;>y6lz{toT
z#KWSYp`oRvrK_uJU|?WrX=!C;Wo>P3Yinz7Z|~sX5bdfH9UUFxrV|qr6B`?w<f)sS
zoSc%9l9iQ}<FA|Jua_I3m!F?sP*6}5tXCYY-<6=>m0-}FsNbDv(3@n?muxU0#c)cR
z;hZ^hR<B;YY15{iJ9qBcv*&Q5$&n*RjvYI8{P^(;7cN}BeEIh6+YcT*c=F`Q+qZ8&
ze*E}pj>Z4~|7W~e{gi=$vCz}SF{I+w+uJAom>fk|0}gNsrn?@EbYUrUdh*}ixAxtx
z6h|j1@AI+urk^?;S-NWSs*p|oTc;JSn%{7%`q)ZF2BN^9$^#F+JumsTuV@zExugp-
zi*f?29#mzn+sVkl5W%s)TIZSGueD3$*ByOe_i{HktBqe*W#>PYm+I1n72dxTk*shy
z+3@+sZE4ZZ0)Oi+^<PW=Fz3tO7y91pIp@Cn?crr$2rzn}@$KEVZp)5+GrzpODj}ox
z*YC^meW197oARISLf77}X@*~4giqSHQ>OXY6lUG&RSXObH;V+Te?Lx|x9@+v>farL
z&DWQ_cdvhH4cExPz+fP)@LOFY&XAEIh5N)m%XjZNkY#bR9o!nSbRUOk-+a#eAu!;3
S`i3cTAjO`pelF{r5}E+3Nbo}d

literal 0
HcmV?d00001

diff --git a/assets/icons/size_small.png b/assets/icons/size_small.png
new file mode 100644
index 0000000000000000000000000000000000000000..2c72840d2dfe2dfb36791973a159869a325de758
GIT binary patch
literal 480
zcmeAS@N?(olHy`uVBq!ia0y~yU^oE69Lx+145>_WOc@v$I14-?iy0VXB0!k&?2PAU
z7#J8NOI#yLg7ec#$`gxH8OqDc^)mCai<1)zQuXqS(r3T3kz!zA@Cfh;ab;j&U}R+A
z=402;(9qP>)Y8(@*4Eb1(J?hOH8(eRa&mHYbxkOBPOfxGsd7n8O--wHEuZ3BHN&rO
zOT_d8F|%gPnmv2=|Ns9*mhx&bFfdAbx;TbZ+<JR!H(!&3h-)C5=uvSEyMO=vLv_?m
zj<xLERaTi1!KygfC$v@nYNNNmLoH_vF9T`dgL=b5o51>-YyP&fU5s<Y<V%?t7&N#p
z+}$*7eeLA;u@f6!+peyBd%I>o6SBcI>;)3{)3=_hnqT|5*7RL_62tHFd|#^>8sZuE
z*gq<pZu-u5-}ctpBmY2w3)lFW=}^3BK{P9af{wzUt*3vY7ztN}o58{8QTiZAbRT<`
WRNXSKx%+!SN<CfuT-G@yGywo@K!HpE

literal 0
HcmV?d00001

diff --git a/icons/build_game_icons.sh b/icons/build_game_icons.sh
index 94c69ea..ac70e5f 100755
--- a/icons/build_game_icons.sh
+++ b/icons/build_game_icons.sh
@@ -19,10 +19,18 @@ AVAILABLE_GAME_IMAGES="
   button_start
   game_fail
   game_win
+  colors_5
+  colors_6
+  colors_7
+  colors_8
   level_easy
   level_medium
   level_hard
   level_nightmare
+  size_small
+  size_medium
+  size_large
+  size_extra
 "
 
 # Skins
diff --git a/icons/colors_5.svg b/icons/colors_5.svg
new file mode 100644
index 0000000..bdf66c3
--- /dev/null
+++ b/icons/colors_5.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 102 102" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="1" width="100" height="100" ry="0" fill="#97c05c" stroke="#000" stroke-width="2"/><g transform="translate(-1.0061 .33115)" aria-label="5"><path d="m63.315 55.063q0 2.2656-0.85938 4.2188-0.83984 1.9336-2.4609 3.3203-1.7969 1.4844-4.1406 2.207-2.3242 0.70312-5.3125 0.70312-3.4961-0.01953-5.918-0.56641-2.4023-0.52734-3.9258-1.1914v-6.4258h0.82031q1.7773 1.0547 3.8281 1.7578t4.082 0.70312q1.2305 0 2.6562-0.27344 1.4453-0.29297 2.2852-1.0352 0.66406-0.60547 0.99609-1.2305 0.35156-0.625 0.35156-1.9336 0-1.0156-0.46875-1.7383-0.44922-0.74219-1.1719-1.1914-1.0547-0.64453-2.5391-0.83984-1.4844-0.21484-2.6953-0.21484-1.7578 0-3.3789 0.3125-1.6016 0.29297-2.8125 0.58594h-0.85938v-16.406h20.684v5.5664h-13.633v4.7461q0.60547-0.03906 1.5234-0.05859 0.9375-0.03906 1.6406-0.03906 2.4023 0 4.2773 0.46875 1.8945 0.44922 3.2617 1.2695 1.7773 1.0742 2.7734 2.8516 0.99609 1.7578 0.99609 4.4336z"/></g></svg>
diff --git a/icons/colors_6.svg b/icons/colors_6.svg
new file mode 100644
index 0000000..4c00994
--- /dev/null
+++ b/icons/colors_6.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 102 102" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="1" width="100" height="100" ry="0" fill="#f29c38" stroke="#000" stroke-width="2"/><g transform="translate(3.8694 .21001)" aria-label="6"><path d="m59.025 55.399q0 2.2461-0.82031 4.2188t-2.3047 3.3203q-1.582 1.4453-3.6719 2.207-2.0703 0.76172-4.8633 0.76172-2.6172 0-4.7852-0.70312-2.1484-0.72266-3.6914-2.1875-1.7773-1.6797-2.7148-4.3359t-0.9375-6.3477q0-3.8281 0.87891-6.7969t2.8711-5.2539q1.9141-2.1875 4.9609-3.3984 3.0664-1.2109 7.2852-1.2109 1.4258 0 3.125 0.19531t2.207 0.29297v5.7227h-0.74219q-0.52734-0.25391-1.7969-0.56641-1.25-0.33203-2.8516-0.33203-3.75 0-5.8398 1.8359t-2.5195 5.1172q1.5039-0.89844 3.1641-1.4453 1.6797-0.56641 3.6133-0.56641 1.6992 0 3.1445 0.39062 1.4648 0.39062 2.7148 1.25 1.6211 1.1328 2.5977 3.0469 0.97656 1.9141 0.97656 4.7852zm-8.8867 4.3945q0.60547-0.66406 0.95703-1.5625 0.37109-0.91797 0.37109-2.4805 0-1.4258-0.41016-2.3242-0.41016-0.91797-1.1328-1.4648-0.70312-0.54688-1.6602-0.74219-0.95703-0.21484-1.9727-0.21484-0.85938 0-1.7969 0.19531-0.9375 0.19531-1.7188 0.48828 0 0.19531-0.01953 0.64453t-0.01953 1.1328q0 2.4023 0.46875 3.9648 0.48828 1.543 1.2891 2.3633 0.54688 0.60547 1.2891 0.89844 0.74219 0.27344 1.6016 0.27344 0.64453 0 1.4258-0.29297t1.3281-0.87891z"/></g></svg>
diff --git a/icons/colors_7.svg b/icons/colors_7.svg
new file mode 100644
index 0000000..55f53eb
--- /dev/null
+++ b/icons/colors_7.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 102 102" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="1" width="100" height="100" ry="0" fill="#cd5542" stroke="#000" stroke-width="2"/><g transform="translate(3.9378 .2393)" aria-label="7"><path d="m58.459 42.001-13.164 23.301h-8.3594l13.672-23.516h-14.941v-5.5664h22.793z"/></g></svg>
diff --git a/icons/colors_8.svg b/icons/colors_8.svg
new file mode 100644
index 0000000..7633afb
--- /dev/null
+++ b/icons/colors_8.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 102 102" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="1" width="100" height="100" ry="0" fill="#6041b0" stroke="#000" stroke-width="2"/><g transform="translate(4.1624 .2393)" aria-label="8"><path d="m59.123 57.177q0 3.8672-3.3008 6.3281-3.2812 2.4609-9.0234 2.4609-3.2227 0-5.5273-0.66406-2.3047-0.66406-3.8086-1.8359-1.4844-1.1523-2.207-2.6953-0.70312-1.543-0.70312-3.3203 0-2.1875 1.2695-3.8672 1.2891-1.6992 4.4336-2.9688v-0.11719q-2.5391-1.1719-3.7305-2.9492t-1.1914-4.1211q0-3.457 3.2031-5.6641 3.2031-2.207 8.3398-2.207 5.3906 0 8.4375 2.0117 3.0664 1.9922 3.0664 5.332 0 2.0703-1.2891 3.6914t-3.9453 2.7539v0.11719q3.0469 1.1523 4.5117 3.1055t1.4648 4.6094zm-8.0664-13.438q0-1.4844-1.1523-2.3633-1.1328-0.87891-3.0273-0.87891-0.70312 0-1.4453 0.17578-0.72266 0.17578-1.3281 0.50781-0.56641 0.33203-0.9375 0.87891-0.37109 0.52734-0.37109 1.2109 0 1.1523 0.64453 1.7969 0.66406 0.64453 2.1484 1.2891 0.54688 0.23438 1.4844 0.58594 0.95703 0.33203 2.3047 0.76172 0.89844-1.0547 1.2891-1.8945 0.39062-0.83984 0.39062-2.0703zm0.60547 13.77q0-1.4062-0.70312-2.1289t-2.8906-1.6602q-0.64453-0.29297-1.875-0.72266-1.2305-0.42969-2.0703-0.74219-0.83984 0.76172-1.5234 1.8555-0.66406 1.0742-0.66406 2.4219 0 2.0312 1.4453 3.2422 1.4648 1.1914 3.8086 1.1914 0.625 0 1.4648-0.17578 0.83984-0.19531 1.4453-0.58594 0.70312-0.44922 1.1328-1.0547 0.42969-0.60547 0.42969-1.6406z"/></g></svg>
diff --git a/icons/size_extra.svg b/icons/size_extra.svg
new file mode 100644
index 0000000..fe07dfb
--- /dev/null
+++ b/icons/size_extra.svg
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 100 100" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="100" height="100" ry="0" fill="#5f41af" stroke="#000" stroke-width="2"/>
+  <g transform="translate(4.4197 1.4084)" fill="#fff" stroke="#282828" stroke-linecap="round" stroke-width="3"><rect x="13.796" y="16.807" width="12.714" height="12.714"/><rect x="26.51" y="16.807" width="12.714" height="12.714"/><rect x="39.223" y="16.807" width="12.714" height="12.714"/><rect x="51.937" y="16.807" width="12.714" height="12.714"/><rect x="64.651" y="16.807" width="12.714" height="12.714"/><rect x="13.796" y="29.521" width="12.714" height="12.714"/><rect x="26.51" y="29.521" width="12.714" height="12.714"/><rect x="39.223" y="29.521" width="12.714" height="12.714"/><rect x="51.937" y="29.521" width="12.714" height="12.714"/><rect x="64.651" y="29.521" width="12.714" height="12.714"/><rect x="13.796" y="42.235" width="12.714" height="12.714"/><rect x="26.51" y="42.235" width="12.714" height="12.714"/><rect x="39.223" y="42.235" width="12.714" height="12.714"/><rect x="51.937" y="42.235" width="12.714" height="12.714"/><rect x="64.651" y="42.235" width="12.714" height="12.714"/><rect x="13.796" y="54.948" width="12.714" height="12.714"/><rect x="26.51" y="54.948" width="12.714" height="12.714"/><rect x="39.223" y="54.948" width="12.714" height="12.714"/><rect x="51.937" y="54.948" width="12.714" height="12.714"/><rect x="64.651" y="54.948" width="12.714" height="12.714"/><rect x="13.796" y="67.662" width="12.714" height="12.714"/><rect x="26.51" y="67.662" width="12.714" height="12.714"/><rect x="39.223" y="67.662" width="12.714" height="12.714"/><rect x="51.937" y="67.662" width="12.714" height="12.714"/><rect x="64.651" y="67.662" width="12.714" height="12.714"/></g></svg>
diff --git a/icons/size_large.svg b/icons/size_large.svg
new file mode 100644
index 0000000..174a530
--- /dev/null
+++ b/icons/size_large.svg
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 100 100" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="100" height="100" ry="0" fill="#cd5542" stroke="#000" stroke-width="2"/>
+  <g transform="translate(6.2763 8.2075)" fill="#fff" stroke="#282828" stroke-linecap="round" stroke-width="3"><rect x="18.296" y="16.365" width="12.714" height="12.714"/><rect x="31.01" y="16.365" width="12.714" height="12.714"/><rect x="43.724" y="16.365" width="12.714" height="12.714"/><rect x="56.437" y="16.365" width="12.714" height="12.714"/><rect x="18.296" y="29.079" width="12.714" height="12.714"/><rect x="31.01" y="29.079" width="12.714" height="12.714"/><rect x="43.724" y="29.079" width="12.714" height="12.714"/><rect x="56.437" y="29.079" width="12.714" height="12.714"/><rect x="18.296" y="41.792" width="12.714" height="12.714"/><rect x="31.01" y="41.792" width="12.714" height="12.714"/><rect x="43.724" y="41.792" width="12.714" height="12.714"/><rect x="56.437" y="41.792" width="12.714" height="12.714"/><rect x="18.296" y="54.506" width="12.714" height="12.714"/><rect x="31.01" y="54.506" width="12.714" height="12.714"/><rect x="43.724" y="54.506" width="12.714" height="12.714"/><rect x="56.437" y="54.506" width="12.714" height="12.714"/></g></svg>
diff --git a/icons/size_medium.svg b/icons/size_medium.svg
new file mode 100644
index 0000000..bcc2fba
--- /dev/null
+++ b/icons/size_medium.svg
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 100 100" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="100" height="100" ry="0" fill="#f29c38" stroke="#000" stroke-width="2"/>
+  <g transform="translate(11.967 8.1117)" fill="#fff" stroke="#282828" stroke-linecap="round" stroke-width="3"><rect x="18.962" y="22.818" width="12.714" height="12.714"/><rect x="31.676" y="22.818" width="12.714" height="12.714"/><rect x="44.389" y="22.818" width="12.714" height="12.714"/><rect x="18.962" y="35.531" width="12.714" height="12.714"/><rect x="31.676" y="35.531" width="12.714" height="12.714"/><rect x="44.389" y="35.531" width="12.714" height="12.714"/><rect x="18.962" y="48.245" width="12.714" height="12.714"/><rect x="31.676" y="48.245" width="12.714" height="12.714"/><rect x="44.389" y="48.245" width="12.714" height="12.714"/></g></svg>
diff --git a/icons/size_small.svg b/icons/size_small.svg
new file mode 100644
index 0000000..1ccb6e9
--- /dev/null
+++ b/icons/size_small.svg
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 100 100" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="100" height="100" ry="0" fill="#97c05c" stroke="#000" stroke-width="2"/>
+  <g transform="translate(8.8715 12.603)" fill="#fff" stroke="#282828" stroke-linecap="round" stroke-width="3"><rect x="28.415" y="24.683" width="12.714" height="12.714"/><rect x="41.128" y="24.683" width="12.714" height="12.714"/><rect x="28.415" y="37.397" width="12.714" height="12.714"/><rect x="41.128" y="37.397" width="12.714" height="12.714"/></g></svg>
diff --git a/lib/entities/cell.dart b/lib/entities/cell.dart
index 57d927a..9129f4d 100644
--- a/lib/entities/cell.dart
+++ b/lib/entities/cell.dart
@@ -56,7 +56,7 @@ class Cell {
 
   String getImageAssetName(Data myProvider) {
     int cellValue = this.value;
-    return 'assets/skins/' + myProvider.skin + '_' + cellValue.toString() + '.png';
+    return 'assets/skins/' + myProvider.parameterSkin + '_' + cellValue.toString() + '.png';
   }
 
 }
diff --git a/lib/layout/parameters.dart b/lib/layout/parameters.dart
index f0c0979..c901d7b 100644
--- a/lib/layout/parameters.dart
+++ b/lib/layout/parameters.dart
@@ -13,7 +13,11 @@ class Parameters {
         mainAxisSize: MainAxisSize.min,
         mainAxisAlignment: MainAxisAlignment.center,
         children: [
-          Parameters.buildParameterSelector(myProvider, 'level'),
+          // Parameters.buildParameterSelector(myProvider, 'level'),
+          // SizedBox(height: 5),
+          Parameters.buildParameterSelector(myProvider, 'size'),
+          SizedBox(height: 5),
+          Parameters.buildParameterSelector(myProvider, 'colors'),
           SizedBox(height: 5),
           Parameters.buildParameterSelector(myProvider, 'skin'),
           SizedBox(height: 5),
diff --git a/lib/provider/data.dart b/lib/provider/data.dart
index 8025bb5..96edef9 100644
--- a/lib/provider/data.dart
+++ b/lib/provider/data.dart
@@ -5,16 +5,30 @@ class Data extends ChangeNotifier {
 
   // Configuration available values
   List _availableLevelValues = ['easy', 'medium', 'hard', 'nightmare'];
+  List _availableSizeValues = ['small', 'medium', 'large', 'extra'];
+  List _availableColorsValues = ['5', '6', '7', '8'];
   List _availableSkinValues = ['default', 'retro', 'symbols'];
 
   List get availableLevelValues => _availableLevelValues;
+  List get availableSizeValues => _availableSizeValues;
+  List get availableColorsValues => _availableColorsValues;
   List get availableSkinValues => _availableSkinValues;
 
   // Application default configuration
-  String _level = '';
-  String _levelDefault = 'medium';
-  String _skin = '';
-  String _skinDefault = 'default';
+  String _parameterLevel = '';
+  String _parameterLevelDefault = 'medium';
+  String _parameterSize = '';
+  String _parameterSizeDefault = 'medium';
+  String _parameterColors = '';
+  String _parameterColorsDefault = '6';
+  String _parameterSkin = '';
+  String _parameterSkinDefault = 'default';
+
+  // Application current configuration
+  String get parameterLevel => _parameterLevel;
+  String get parameterSize => _parameterSize;
+  String get parameterColors => _parameterColors;
+  String get parameterSkin => _parameterSkin;
 
   // Game data
   bool _gameIsRunning = false;
@@ -29,27 +43,35 @@ class Data extends ChangeNotifier {
   int _progressTotal = 0;
   int _progressDelta = 0;
 
-  String get level => _level;
-  void updateLevel(String level) {
-    _level = level;
-
-    updateBoardSize(getBoardSizeFromLevel(level));
-    updateColorsCount(getColorsCountFromLevel(level));
 
+  void updateParameterLevel(String parameterLevel) {
+    _parameterLevel = parameterLevel;
     notifyListeners();
   }
-
-  String get skin => _skin;
-  void updateSkin(String skin) {
-    _skin = skin;
+  void updateParameterSize(String parameterSize) {
+    _parameterSize = parameterSize;
+    updateBoardSize(getBoardSizeFromParameter(parameterSize));
+    notifyListeners();
+  }
+  void updateParameterColors(String parameterColors) {
+    _parameterColors = parameterColors;
+    updateColorsCount(getColorsCountFromParameter(parameterColors));
+    notifyListeners();
+  }
+  void updateParameterSkin(String parameterSkin) {
+    _parameterSkin = parameterSkin;
     notifyListeners();
   }
 
   getParameterValue(String parameterCode) {
     switch(parameterCode) {
-      case 'level': { return _level; }
+      case 'level': { return _parameterLevel; }
+      break;
+      case 'size': { return _parameterSize; }
       break;
-      case 'skin': { return _skin; }
+      case 'colors': { return _parameterColors; }
+      break;
+      case 'skin': { return _parameterSkin; }
       break;
     }
     return '';
@@ -59,6 +81,10 @@ class Data extends ChangeNotifier {
     switch(parameterCode) {
       case 'level': { return _availableLevelValues; }
       break;
+      case 'size': { return _availableSizeValues; }
+      break;
+      case 'colors': { return _availableColorsValues; }
+      break;
       case 'skin': { return _availableSkinValues; }
       break;
     }
@@ -67,9 +93,13 @@ class Data extends ChangeNotifier {
 
   setParameterValue(String parameterCode, String parameterValue) async {
     switch(parameterCode) {
-      case 'level': { updateLevel(parameterValue); }
+      case 'level': { updateParameterLevel(parameterValue); }
+      break;
+      case 'size': { updateParameterSize(parameterValue); }
       break;
-      case 'skin': { updateSkin(parameterValue); }
+      case 'colors': { updateParameterColors(parameterValue); }
+      break;
+      case 'skin': { updateParameterSkin(parameterValue); }
       break;
     }
     final prefs = await SharedPreferences.getInstance();
@@ -78,47 +108,49 @@ class Data extends ChangeNotifier {
 
   void initParametersValues() async {
     final prefs = await SharedPreferences.getInstance();
-    setParameterValue('level', prefs.getString('level') ?? _levelDefault);
-    setParameterValue('skin', prefs.getString('skin') ?? _skinDefault);
-  }
-
-  int get boardSize => _boardSize;
-  void updateBoardSize(int boardSize) {
-    _boardSize = boardSize;
-    _progressTotal = boardSize * boardSize;
+    setParameterValue('level', prefs.getString('level') ?? _parameterLevelDefault);
+    setParameterValue('size', prefs.getString('size') ?? _parameterSizeDefault);
+    setParameterValue('colors', prefs.getString('colors') ?? _parameterColorsDefault);
+    setParameterValue('skin', prefs.getString('skin') ?? _parameterSkinDefault);
   }
 
-  int get colorsCount => _colorsCount;
-  void updateColorsCount(int colorsCount) {
-    _colorsCount = colorsCount;
-  }
-
-  int getBoardSizeFromLevel(String level) {
-    switch(level) {
-      case 'easy': { return 6; }
+  int getBoardSizeFromParameter(String parameterSize) {
+    switch(parameterSize) {
+      case 'small': { return 6; }
       break;
       case 'medium': { return 10; }
       break;
-      case 'hard': { return 14; }
+      case 'large': { return 14; }
       break;
-      case 'nightmare': { return 20; }
+      case 'extra': { return 20; }
       break;
     }
-    return 8;
+    return getBoardSizeFromParameter(_parameterSizeDefault);
   }
 
-  int getColorsCountFromLevel(String level) {
-    switch(level) {
-      case 'easy': { return 4; }
+  int getColorsCountFromParameter(String parameterColors) {
+    switch(parameterColors) {
+      case '5': { return 5; }
       break;
-      case 'medium': { return 5; }
+      case '6': { return 6; }
       break;
-      case 'hard': { return 6; }
+      case '7': { return 7; }
       break;
-      case 'nightmare': { return 7; }
+      case '8': { return 8; }
       break;
     }
-    return 4;
+    return getColorsCountFromParameter(_parameterColorsDefault);
+  }
+
+  int get boardSize => _boardSize;
+  void updateBoardSize(int boardSize) {
+    _boardSize = boardSize;
+    _progressTotal = boardSize * boardSize;
+  }
+
+  int get colorsCount => _colorsCount;
+  void updateColorsCount(int colorsCount) {
+    _colorsCount = colorsCount;
   }
 
   List get cells => _cells;
diff --git a/lib/utils/board_utils.dart b/lib/utils/board_utils.dart
index 5127b15..21a8922 100644
--- a/lib/utils/board_utils.dart
+++ b/lib/utils/board_utils.dart
@@ -6,7 +6,7 @@ import '../provider/data.dart';
 class BoardUtils {
 
   static printGrid(List cells) {
-    String stringValues = '01234567';
+    String stringValues = '012345678';
     print('');
     print('-------');
     for (var rowIndex = 0; rowIndex < cells.length; rowIndex++) {
diff --git a/lib/utils/game_utils.dart b/lib/utils/game_utils.dart
index a7005ec..b9eb780 100644
--- a/lib/utils/game_utils.dart
+++ b/lib/utils/game_utils.dart
@@ -9,7 +9,7 @@ class GameUtils {
 
   static Future<void> startGame(Data myProvider) async {
     print('Starting game');
-    print('- level: ' + myProvider.level);
+    print('- level: ' + myProvider.parameterLevel);
     print('- size: ' + myProvider.boardSize.toString());
     print('- colors: ' + myProvider.colorsCount.toString());
 
-- 
GitLab