From 624bf28efc8e60097b7f47aaba99e05d2d7373ed Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr>
Date: Mon, 14 Jun 2021 17:23:31 +0200
Subject: [PATCH] Add minimal home page, settings and gameplay

---
 android/gradle.properties                     |   4 +-
 assets/icons/.gitkeep                         |   0
 assets/icons/button_start.png                 | Bin 0 -> 4777 bytes
 assets/icons/difficulty_easy.png              | Bin 0 -> 2967 bytes
 assets/icons/difficulty_hard.png              | Bin 0 -> 2811 bytes
 assets/icons/difficulty_medium.png            | Bin 0 -> 3036 bytes
 assets/icons/size_2.png                       | Bin 0 -> 863 bytes
 assets/icons/size_3.png                       | Bin 0 -> 1885 bytes
 assets/icons/skin_default.png                 | Bin 0 -> 5798 bytes
 assets/skins/.gitkeep                         |   0
 assets/skins/default_1.png                    | Bin 0 -> 664 bytes
 assets/skins/default_2.png                    | Bin 0 -> 2268 bytes
 assets/skins/default_3.png                    | Bin 0 -> 2621 bytes
 assets/skins/default_4.png                    | Bin 0 -> 1612 bytes
 assets/skins/default_5.png                    | Bin 0 -> 2113 bytes
 assets/skins/default_6.png                    | Bin 0 -> 3245 bytes
 assets/skins/default_7.png                    | Bin 0 -> 1935 bytes
 assets/skins/default_8.png                    | Bin 0 -> 3407 bytes
 assets/skins/default_9.png                    | Bin 0 -> 3218 bytes
 assets/skins/empty.png                        | Bin 0 -> 335 bytes
 ...ld_icons.sh => build_application_icons.sh} |   1 -
 icons/build_game_icons.sh                     |  66 +++++
 icons/button_start.svg                        |   2 +
 icons/difficulty_easy.svg                     |   2 +
 icons/difficulty_hard.svg                     |   2 +
 icons/difficulty_medium.svg                   |   2 +
 icons/size_2.svg                              |   2 +
 icons/size_3.svg                              |   2 +
 icons/skin_default.svg                        |   2 +
 icons/skins/default/1.svg                     |   4 +
 icons/skins/default/2.svg                     |   2 +
 icons/skins/default/3.svg                     |   2 +
 icons/skins/default/4.svg                     |   2 +
 icons/skins/default/5.svg                     |   2 +
 icons/skins/default/6.svg                     |   2 +
 icons/skins/default/7.svg                     |   2 +
 icons/skins/default/8.svg                     |   2 +
 icons/skins/default/9.svg                     |   2 +
 icons/skins/empty.svg                         |   2 +
 lib/entities/cell.dart                        |  95 +++++++
 lib/provider/data.dart                        | 105 ++++++-
 lib/screens/home.dart                         | 256 +++++++++++++++---
 pubspec.yaml                                  |   3 +-
 43 files changed, 512 insertions(+), 54 deletions(-)
 create mode 100644 assets/icons/.gitkeep
 create mode 100644 assets/icons/button_start.png
 create mode 100644 assets/icons/difficulty_easy.png
 create mode 100644 assets/icons/difficulty_hard.png
 create mode 100644 assets/icons/difficulty_medium.png
 create mode 100644 assets/icons/size_2.png
 create mode 100644 assets/icons/size_3.png
 create mode 100644 assets/icons/skin_default.png
 create mode 100644 assets/skins/.gitkeep
 create mode 100644 assets/skins/default_1.png
 create mode 100644 assets/skins/default_2.png
 create mode 100644 assets/skins/default_3.png
 create mode 100644 assets/skins/default_4.png
 create mode 100644 assets/skins/default_5.png
 create mode 100644 assets/skins/default_6.png
 create mode 100644 assets/skins/default_7.png
 create mode 100644 assets/skins/default_8.png
 create mode 100644 assets/skins/default_9.png
 create mode 100644 assets/skins/empty.png
 rename icons/{build_icons.sh => build_application_icons.sh} (92%)
 create mode 100755 icons/build_game_icons.sh
 create mode 100644 icons/button_start.svg
 create mode 100644 icons/difficulty_easy.svg
 create mode 100644 icons/difficulty_hard.svg
 create mode 100644 icons/difficulty_medium.svg
 create mode 100644 icons/size_2.svg
 create mode 100644 icons/size_3.svg
 create mode 100644 icons/skin_default.svg
 create mode 100644 icons/skins/default/1.svg
 create mode 100644 icons/skins/default/2.svg
 create mode 100644 icons/skins/default/3.svg
 create mode 100644 icons/skins/default/4.svg
 create mode 100644 icons/skins/default/5.svg
 create mode 100644 icons/skins/default/6.svg
 create mode 100644 icons/skins/default/7.svg
 create mode 100644 icons/skins/default/8.svg
 create mode 100644 icons/skins/default/9.svg
 create mode 100644 icons/skins/empty.svg
 create mode 100644 lib/entities/cell.dart

diff --git a/android/gradle.properties b/android/gradle.properties
index bc2d95e..818e87b 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.1
-app.versionCode=1
+app.versionName=0.0.2
+app.versionCode=2
diff --git a/assets/icons/.gitkeep b/assets/icons/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/assets/icons/button_start.png b/assets/icons/button_start.png
new file mode 100644
index 0000000000000000000000000000000000000000..fc68a389653da8a866ee8f94847a0227aa030995
GIT binary patch
literal 4777
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

literal 0
HcmV?d00001

diff --git a/assets/icons/difficulty_easy.png b/assets/icons/difficulty_easy.png
new file mode 100644
index 0000000000000000000000000000000000000000..0bde256ef61a433321973f3b714cb13a5a76ae36
GIT binary patch
literal 2967
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
b@sEAViz(l)-xF>GHGn-`{an^LB{Ts5X}!}4

literal 0
HcmV?d00001

diff --git a/assets/icons/difficulty_hard.png b/assets/icons/difficulty_hard.png
new file mode 100644
index 0000000000000000000000000000000000000000..087591fa02fcb21b57b47ebddaeb35b01261b05d
GIT binary patch
literal 2811
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
YmUPEXjZbG{U|?YIboFyt=akR{01u*TQvd(}

literal 0
HcmV?d00001

diff --git a/assets/icons/difficulty_medium.png b/assets/icons/difficulty_medium.png
new file mode 100644
index 0000000000000000000000000000000000000000..67364276383e39456f05791a88fabd3001513b4b
GIT binary patch
literal 3036
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
Vo8xN_GB7YOc)I$ztaD0e0ssg^20;J-

literal 0
HcmV?d00001

diff --git a/assets/icons/size_2.png b/assets/icons/size_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..91f7fd436c51769ed22cfd97d9e297de827f17ee
GIT binary patch
literal 863
zcmeAS@N?(olHy`uVBq!ia0y~yU^oE69Lx+145>_WOc@v$I14-?iy0VX)-o{2lrV1m
z#&UvzfkCpwHKHUqKdq!Zu_%?Hyu4g5GcUV1Ik6yBFTW^#_B$IX1_p+Q0X`wF3=9le
z|Nm$H|DO#;S^xiM{QsZz{~sJ>gV_uW3=E8nj7&_7%*;$IEKIDdOl)k-?CdO@oGe^i
ztUNqye0*&D{Oke(>_S2uA|jk(V%$<vJTfvoa&o*13Ve!+d`e3E%F6tzs)AZtLfYEG
zy1K%8dSa%g5>{5yj*fEf?h3xXO2NUZ5fQ49k?OIr>Tz+JNlBW?$$EKtdinWAm6gU-
zRhC_yR^44T6DK&%neDS<yYJ2&{`>a@9M~Un>SW~gYtgrE#yxzH`0_>S=TGTBzGwXY
zmG%E0e_5OWDEvx-{DK*L{rm%if={10d+z5iiECH?FfcGa^K@|xskrs_?oGc#4h*di
z14CAYtkmG@*s-WdNpHsjr5)Pu|2y2{F`xWJMO1a}kNL0db>p3aqMQuU)HvGb>G2pH
zOKFSCKd1A9m&50Uxq^xFd3I1>F)%QA2tW91`StgdhW4XZ-iv|+Z5Y<P?H0`m5%xW6
zyWT3{rdg_}D)XFGtK;vw)n5EE_xk=dd=<HirA41If>dMR2kRME&rX`ytF>t54*v41
zjNOafPiZ~+4OTou;lUHvoa1h`7r)H8?Dncb+-z4!;FsUwkB+m1KgxKcZHQqSNZ=Cx
zjeSDeH&<Nkj6cn&)48oUVX?EQ?#BvQkR${*oMd>lJxSWk>h-brclOE)<ZjPgysT@|
zUH$@ZPKXLrvO%7qZ~l>OIVI*D_xCcN=q|gkEil^kWSzj-$E6^Z65Ih+LeU#9<|)@z
zzpHe;z2ergRf|#>?7Tpd82Eub)1uOi7ySjh7HRGR`PseRFg!r;K0iq10Tu@N{FV2o
zvs9RaxC{&j@*Q4$e|>&t<$lJ-nct)hvVGKEzum1deXh}c)tfc;=l(M904elz^>bP0
Hl+XkKTFEQ6

literal 0
HcmV?d00001

diff --git a/assets/icons/size_3.png b/assets/icons/size_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..d69c0a2df9a253d4a593a380198e56c297e35e3c
GIT binary patch
literal 1885
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
L{an^LB{Ts5C_V^Q

literal 0
HcmV?d00001

diff --git a/assets/icons/skin_default.png b/assets/icons/skin_default.png
new file mode 100644
index 0000000000000000000000000000000000000000..a00d6d50e91f04029d6d58b747f3644298504fa2
GIT binary patch
literal 5798
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

literal 0
HcmV?d00001

diff --git a/assets/skins/.gitkeep b/assets/skins/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/assets/skins/default_1.png b/assets/skins/default_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..81fedf0ce0a6e139a2700780f36b8424ece903ef
GIT binary patch
literal 664
zcmeAS@N?(olHy`uVBq!ia0y~yU^oE69Lx+145>_WOc@v$I14-?iy0VX)-o{2lrV1m
z#&UvzfkCpwHKHUqKdq!Zu_%?Hyu4g5GcUV1Ik6yBFTW^#_B$IX1_p*{0X`wF3=9lU
zVc;1IzyzT5vuDp37#MhXczAhv`T6+;1Ox;H1=ZBlbaZq~O-(H<EG#W8U0hs}laq^z
zimIxr>gwt`J3A*%oH%*%<T-QZELgB$@#4kHmoMM5XV2cfd-v_zcktlBW5<r2JbCim
zxpS8;UAl4O#=U#@9zA;W`0?W>Po6w|`ZVC@CMJ-lOM?7@8GQZx1A~H3pE-N(=P!wC
zSN||DFlKqWIEGZ*dVBq(ACsd*>&2jufL#YG=dp_fPW)bPsa%-I<KcX1S)JwmU0OTU
zSNbm9a!t$4Q9G)4iqzr@xl7jGXb96vV(v2Gl4Aga1N&Kc<kz25Gvi>W*k@^bPjmT~
z3FZ&3zn#f!xBdMz<I_R`h1Js<Dz`mnn^9fu)^K#&bEX%vrKgXcW+(`s1~!3#f#EBY
zRr~Ek#<|UtPv0xpA}{!1Yi*3lf$wiGGTfbio0(B9zn@VezkYt5UiyJGZ!4L9UH|L#
zd=qO3FHAo*=>$oJe1FkfvpIIGE%>~&?7)IGTZ@s+Z^+ymcjZ>C-27kmoFMUplZ>u!
u{=VHJDSg3f^+v|mnx?Z7;{$i^oMgwK<eOl)c5-JKNSUXrpUXO@geCxIEBxXB

literal 0
HcmV?d00001

diff --git a/assets/skins/default_2.png b/assets/skins/default_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..a1d9df5390311feb5d6b28039dad1a193f84d613
GIT binary patch
literal 2268
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

literal 0
HcmV?d00001

diff --git a/assets/skins/default_3.png b/assets/skins/default_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..a3144a8b0d4d17e48613cc769ad52dc28a98bb21
GIT binary patch
literal 2621
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
Qz`(%Z>FVdQ&MBb@0LF5eq5uE@

literal 0
HcmV?d00001

diff --git a/assets/skins/default_4.png b/assets/skins/default_4.png
new file mode 100644
index 0000000000000000000000000000000000000000..e442b9ae5e570c37c2c9f1c219faadfa2ef7fa90
GIT binary patch
literal 1612
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

literal 0
HcmV?d00001

diff --git a/assets/skins/default_5.png b/assets/skins/default_5.png
new file mode 100644
index 0000000000000000000000000000000000000000..d3942e1bc9cd01718d0f47a94095227f74c123b7
GIT binary patch
literal 2113
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
Mr>mdKI;Vst0J(FdwEzGB

literal 0
HcmV?d00001

diff --git a/assets/skins/default_6.png b/assets/skins/default_6.png
new file mode 100644
index 0000000000000000000000000000000000000000..e881400e5c205a5e94549bd9e6748f8aac30b4ce
GIT binary patch
literal 3245
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
B=Mw+`

literal 0
HcmV?d00001

diff --git a/assets/skins/default_7.png b/assets/skins/default_7.png
new file mode 100644
index 0000000000000000000000000000000000000000..96abfbd8ea239500ceb0b2725ead7011398f12df
GIT binary patch
literal 1935
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
F1ONtwL&pFB

literal 0
HcmV?d00001

diff --git a/assets/skins/default_8.png b/assets/skins/default_8.png
new file mode 100644
index 0000000000000000000000000000000000000000..b1cda45df085155374036546e26d02b8436dccaf
GIT binary patch
literal 3407
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

literal 0
HcmV?d00001

diff --git a/assets/skins/default_9.png b/assets/skins/default_9.png
new file mode 100644
index 0000000000000000000000000000000000000000..c08765ae77b7c80a72f4bdb44f1c33f067ebffda
GIT binary patch
literal 3218
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
Z2QTg4|8xJe4h9AW22WQ%mvv4FO#p#m-F^T7

literal 0
HcmV?d00001

diff --git a/assets/skins/empty.png b/assets/skins/empty.png
new file mode 100644
index 0000000000000000000000000000000000000000..af78d03efb01bbb072eb1de50a10daf05ebb670a
GIT binary patch
literal 335
zcmeAS@N?(olHy`uVBq!ia0y~yU^oE6EX)iH3=2LLnlLaha29w(7Beu&tYu)3DPi3B
zjpYOb1A}CVYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&3=9lf0X`wF3=9lU
zVc;1IzyzT5vuDqqK7E?m`)@1AAtgb6!3@5B{((Wkr_Y={_w$#;wX1&^7#MmzT^vIy
zZoNHg$lDSi;(Bm;14GY*HH>rCvgjx@N^#!~*reF_o>g?aVlm5{m34Us>*mjj+ETwZ
z^1&Kg?mJfxF*1-14%}|A{k=cyBvX2C<bxIOX8*}Q%>3hqYVT(6isv9hJzf1=);T3K
F0RYGOdrSZT

literal 0
HcmV?d00001

diff --git a/icons/build_icons.sh b/icons/build_application_icons.sh
similarity index 92%
rename from icons/build_icons.sh
rename to icons/build_application_icons.sh
index fefc393..336359e 100755
--- a/icons/build_icons.sh
+++ b/icons/build_application_icons.sh
@@ -4,7 +4,6 @@
 command -v inkscape >/dev/null 2>&1 || { echo >&2 "I require inkscape but it's not installed. Aborting."; exit 1; }
 command -v scour >/dev/null 2>&1 || { echo >&2 "I require scour but it's not installed. Aborting."; exit 1; }
 command -v optipng >/dev/null 2>&1 || { echo >&2 "I require optipng but it's not installed. Aborting."; exit 1; }
-command -v convert >/dev/null 2>&1 || { echo >&2 "I require convert (imagemagick) but it's not installed. Aborting."; exit 1; }
 
 CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
 BASE_DIR="$(dirname "${CURRENT_DIR}")"
diff --git a/icons/build_game_icons.sh b/icons/build_game_icons.sh
new file mode 100755
index 0000000..7fac920
--- /dev/null
+++ b/icons/build_game_icons.sh
@@ -0,0 +1,66 @@
+#! /bin/bash
+
+# Check dependencies
+command -v inkscape >/dev/null 2>&1 || { echo >&2 "I require inkscape but it's not installed. Aborting."; exit 1; }
+command -v scour >/dev/null 2>&1 || { echo >&2 "I require scour but it's not installed. Aborting."; exit 1; }
+command -v optipng >/dev/null 2>&1 || { echo >&2 "I require optipng but it's not installed. Aborting."; exit 1; }
+
+CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
+BASE_DIR="$(dirname "${CURRENT_DIR}")"
+
+OPTIPNG_OPTIONS="-preserve -quiet -o7"
+
+# optimize svg
+function optimize_svg() {
+  SOURCE="$1"
+
+  cp ${SOURCE} ${SOURCE}.tmp
+  scour \
+      --remove-descriptive-elements \
+      --enable-id-stripping \
+      --enable-viewboxing \
+      --enable-comment-stripping \
+      --nindent=4 \
+      -i ${SOURCE}.tmp \
+      -o ${SOURCE}
+  rm ${SOURCE}.tmp
+}
+
+# build icons
+function build_icon() {
+  ICON_SIZE=192
+  SOURCE="$1"
+  TARGET="$2"
+
+  optimize_svg "${SOURCE}"
+
+  inkscape \
+      --export-width=${ICON_SIZE} \
+      --export-height=${ICON_SIZE} \
+      --export-filename=${TARGET} \
+      ${SOURCE}
+
+  optipng ${OPTIPNG_OPTIONS} ${TARGET}
+}
+
+function build_icon_for_skin() {
+  SKIN_CODE="$1"
+
+  for VALUE in {1..9};
+  do
+    build_icon ${CURRENT_DIR}/skins/${SKIN_CODE}/${VALUE}.svg ${BASE_DIR}/assets/skins/${SKIN_CODE}_${VALUE}.png
+  done
+}
+
+# Game icons
+build_icon ${CURRENT_DIR}/button_start.svg ${BASE_DIR}/assets/icons/button_start.png
+build_icon ${CURRENT_DIR}/difficulty_easy.svg ${BASE_DIR}/assets/icons/difficulty_easy.png
+build_icon ${CURRENT_DIR}/difficulty_medium.svg ${BASE_DIR}/assets/icons/difficulty_medium.png
+build_icon ${CURRENT_DIR}/difficulty_hard.svg ${BASE_DIR}/assets/icons/difficulty_hard.png
+build_icon ${CURRENT_DIR}/size_2.svg ${BASE_DIR}/assets/icons/size_2.png
+build_icon ${CURRENT_DIR}/size_3.svg ${BASE_DIR}/assets/icons/size_3.png
+build_icon ${CURRENT_DIR}/skin_default.svg ${BASE_DIR}/assets/icons/skin_default.png
+build_icon ${CURRENT_DIR}/skins/empty.svg ${BASE_DIR}/assets/skins/empty.png
+
+# Skins
+build_icon_for_skin "default"
diff --git a/icons/button_start.svg b/icons/button_start.svg
new file mode 100644
index 0000000..52e7fcf
--- /dev/null
+++ b/icons/button_start.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 93.665 93.676" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m46.835 0c-25.826 0-46.835 21.009-46.835 46.841 0 25.826 21.009 46.835 46.835 46.835s46.83-21.009 46.83-46.835c0-25.832-21.004-46.841-46.83-46.841zm0 83.709c-20.36 0-36.875-16.508-36.875-36.868 0-20.369 16.515-36.874 36.875-36.874 20.361 0 36.873 16.505 36.873 36.874 0 20.36-16.512 36.868-36.873 36.868z"/><path d="m34.852 25.44c-1.1248-1.1302-4.0012-1.1302-4.0012 0v45.921c0 1.1316 2.8832 1.1316 4.0121 0l37.693-20.918c1.1289-1.1248 1.1479-2.9551 0.02171-4.084z" fill="#479fee" stroke-width="1.3568"/></svg>
diff --git a/icons/difficulty_easy.svg b/icons/difficulty_easy.svg
new file mode 100644
index 0000000..204ea0b
--- /dev/null
+++ b/icons/difficulty_easy.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 98.851 99.618" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="98.851" height="99.618" ry="1.795" fill="#41ff6a"/><path d="m22.408 52.415 20.8 13.7c0.2 0.1 0.3 0.2 0.5 0.3 1.3 0.5 2.8-0.1 3.3-1.3 0.5-1.3-0.1-2.8-1.3-3.3l-23.2-9.6c-0.2 0-0.3 0.2-0.1 0.2zm23.7 11.6c0.1 0.8-0.5 1.4-1.3 1.5s-1.4-0.5-1.5-1.3 0.5-1.4 1.3-1.5c0.8 0 1.5 0.5 1.5 1.3z"/><path d="m40.708 35.515c0.1 0.4 0.6 0.7 1 0.7 0.9-0.1 1.9-0.1 2.8-0.1 1.5 0 2.9 0.1 4.3 0.3 0.6 0.1 1.2-0.4 1.2-1v-6.9c0-0.6-0.5-1-1-1-3.2 0.1-6.4 0.7-9.3 1.6-0.5 0.2-0.8 0.7-0.6 1.3z"/><path d="m51.508 36.815c2.1 0.5 4.2 1.3 6.2 2.2 0.5 0.3 1.2 0 1.4-0.6l2.7-8.2c0.2-0.5-0.1-1.1-0.6-1.3-3-0.9-6.1-1.5-9.3-1.6-0.6 0-1 0.4-1 1v7.5c-0.1 0.5 0.2 0.9 0.6 1z"/><path d="m80.508 45.115-8.4 6.1c-0.4 0.3-0.5 0.8-0.3 1.3 0.9 1.6 1.6 3.2 2.2 4.9 0.2 0.5 0.7 0.8 1.2 0.6l9.8-3.2c0.5-0.2 0.8-0.7 0.6-1.3-1-2.9-2.3-5.7-3.8-8.2-0.2-0.4-0.9-0.6-1.3-0.2z"/><path d="m31.908 39.015c2.3-1.1 4.7-2 7.2-2.5 0.6-0.1 1-0.7 0.8-1.3l-1.5-4.7c-0.2-0.5-0.8-0.8-1.3-0.6-2.9 1.2-5.7 2.7-8.2 4.6-0.4 0.3-0.5 0.9-0.2 1.4l2 2.8c0.2 0.4 0.8 0.5 1.2 0.3z"/><path d="m62.408 30.615-2.8 8.6c-0.1 0.4 0 0.9 0.4 1.1 1.7 1 3.4 2.2 4.9 3.6 0.4 0.4 1.1 0.3 1.5-0.1l5.7-7.9c0.3-0.4 0.2-1.1-0.2-1.4-2.5-1.9-5.3-3.4-8.2-4.6-0.5-0.2-1.1 0.1-1.3 0.7z"/><path d="m66.908 45.815c1.3 1.4 2.5 2.8 3.5 4.4 0.3 0.5 0.9 0.6 1.4 0.3l8.3-6c0.4-0.3 0.5-0.9 0.2-1.4-1.8-2.5-3.9-4.8-6.2-6.8-0.4-0.4-1.1-0.3-1.5 0.2l-5.9 8.1c-0.2 0.3-0.2 0.8 0.2 1.2z"/><path d="m23.408 45.315c1.8-2 3.9-3.7 6.2-5.1 0.5-0.3 0.6-1 0.3-1.4l-1.8-2.4c-0.3-0.5-1-0.6-1.5-0.2-2.3 2-4.4 4.3-6.2 6.8-0.3 0.4-0.2 1.1 0.2 1.4l1.4 1c0.5 0.3 1 0.3 1.4-0.1z"/><path d="m12.808 53.815 6 2c0.5 0.2 1-0.1 1.2-0.6 1.1-2.6 2.2-4.3 3.9-6.4 0.4-0.4 0.3-1.1-0.2-1.4l-5.9-4.2c-0.5-0.3-1.1-0.2-1.4 0.3-1.6 2.5-3.2 6.1-4.1 9-0.3 0.6 0 1.2 0.5 1.3z"/><path d="m74.808 59.915c0.4 1.7 0.7 3.5 0.9 5.3 0 0.5 0.5 0.9 1 0.9h10.2c0.6 0 1-0.5 1-1-0.1-3.1-0.5-6-1.3-8.9-0.1-0.6-0.7-0.9-1.3-0.7l-9.8 3.2c-0.6 0.2-0.9 0.7-0.7 1.2z"/><path d="m14.808 66.115c0.1-3.2 0.7-6.3 1.7-9.2 0.2-0.5-0.1-1.1-0.6-1.3l-0.4-0.1c-0.5-0.2-1.1 0.1-1.3 0.7-0.8 3.2-1.3 6.5-1.3 9.9z"/></svg>
diff --git a/icons/difficulty_hard.svg b/icons/difficulty_hard.svg
new file mode 100644
index 0000000..b9fac20
--- /dev/null
+++ b/icons/difficulty_hard.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 98.851 99.618" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="98.851" height="99.618" ry="1.795" fill="#d31158"/><path d="m68.154 58.254-24.4 5.1c-0.2 0-0.4 0.1-0.5 0.1-1.3 0.6-1.9 2-1.4 3.3 0.6 1.3 2 1.9 3.3 1.4l23-9.7c0.2 0 0.1-0.2 0-0.2zm-25 8.7c-0.6-0.5-0.6-1.4-0.1-2s1.4-0.6 2-0.1 0.6 1.4 0.1 2c-0.5 0.5-1.4 0.6-2 0.1z"/><path d="m40.054 37.354c0.1 0.4 0.6 0.7 1 0.7 0.9-0.1 1.9-0.1 2.8-0.1 1.5 0 2.9 0.1 4.3 0.3 0.6 0.1 1.2-0.4 1.2-1v-6.9c0-0.6-0.5-1-1-1-3.2 0.1-6.4 0.7-9.3 1.6-0.5 0.2-0.8 0.7-0.6 1.3z"/><path d="m50.854 38.754c2.1 0.5 4.2 1.3 6.2 2.2 0.5 0.3 1.2 0 1.4-0.6l2.7-8.2c0.2-0.5-0.1-1.1-0.6-1.3-3-0.9-6.1-1.5-9.3-1.6-0.6 0-1 0.4-1 1v7.5c-0.2 0.5 0.1 0.9 0.6 1z"/><path d="m81.754 45.554-12.2 8.9c-0.4 0.3-0.5 0.8-0.3 1.3 0.9 1.6 1.2 2.6 1.8 4.3 0.2 0.5 0.7 0.8 1.2 0.6l14.4-4.7c0.5-0.2 0.8-0.7 0.6-1.3-1-2.9-2.6-6.4-4.1-8.9-0.3-0.5-1-0.6-1.4-0.2z"/><path d="m31.154 40.854c2.3-1.1 4.7-2 7.2-2.5 0.6-0.1 1-0.7 0.8-1.3l-1.5-4.7c-0.2-0.5-0.8-0.8-1.3-0.6-2.9 1.2-5.7 2.7-8.2 4.6-0.4 0.3-0.5 0.9-0.2 1.4l2 2.8c0.3 0.4 0.8 0.5 1.2 0.3z"/><path d="m61.754 32.454-2.8 8.6c-0.1 0.4 0 0.9 0.4 1.1 1.7 1 3.4 2.2 4.9 3.6 0.4 0.4 1.1 0.3 1.5-0.1l5.7-7.9c0.3-0.4 0.2-1.1-0.2-1.4-2.5-1.9-5.3-3.4-8.2-4.6-0.5-0.1-1.1 0.2-1.3 0.7z"/><path d="m66.154 47.654c1.3 1.4 2.5 2.8 3.5 4.4 0.3 0.5 0.9 0.6 1.4 0.3l8.3-6c0.4-0.3 0.5-0.9 0.2-1.4-1.8-2.5-3.9-4.8-6.2-6.8-0.4-0.4-1.1-0.3-1.5 0.2l-5.9 8.1c-0.2 0.3-0.1 0.9 0.2 1.2z"/><path d="m22.654 47.154c1.8-2 3.9-3.7 6.2-5.1 0.5-0.3 0.6-1 0.3-1.4l-1.7-2.4c-0.3-0.5-1-0.6-1.5-0.2-2.3 2-4.4 4.3-6.2 6.8-0.3 0.4-0.2 1.1 0.2 1.4l1.4 1c0.4 0.4 1 0.3 1.3-0.1z"/><path d="m14.954 56.654 0.5 0.2c0.5 0.2 1-0.1 1.2-0.6 1.1-2.6 2.5-5 4.2-7.1 0.4-0.4 0.3-1.1-0.2-1.4l-1.2-0.8c-0.3-0.4-1-0.2-1.3 0.3-1.6 2.5-2.9 5.3-3.8 8.2-0.2 0.5 0.1 1.1 0.6 1.2z"/><path d="m74.054 61.754c0.4 1.7 0.7 3.5 0.9 5.3 0 0.5 0.5 0.9 1 0.9h10.2c0.6 0 1-0.5 1-1-0.1-3.1-0.5-6-1.3-8.9-0.1-0.6-0.7-0.9-1.3-0.7l-9.8 3.2c-0.5 0.2-0.8 0.7-0.7 1.2z"/><path d="m14.054 67.954c0.1-3.2 0.7-6.3 1.7-9.2 0.2-0.5-0.1-1.1-0.6-1.3l-0.3-0.1c-0.5-0.2-1.1 0.1-1.3 0.7-0.8 3.2-1.3 6.5-1.3 9.9z"/></svg>
diff --git a/icons/difficulty_medium.svg b/icons/difficulty_medium.svg
new file mode 100644
index 0000000..e71cd18
--- /dev/null
+++ b/icons/difficulty_medium.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 98.851 99.618" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="98.851" height="99.618" ry="1.795" fill="#eeb517"/><path d="m52.928 42.009-11 21.7c-0.1 0.2-0.1 0.3-0.2 0.5-0.4 1.4 0.4 2.7 1.7 3.2 1.4 0.4 2.7-0.4 3.2-1.7l6.6-23.7c0-0.1-0.2-0.2-0.3 0zm-8.5 24.3c-0.8 0.1-1.5-0.4-1.6-1.1-0.1-0.8 0.4-1.5 1.1-1.6 0.8-0.1 1.5 0.4 1.6 1.1 0.1 0.8-0.4 1.5-1.1 1.6z"/><path d="m40.128 36.409c0.1 0.4 0.6 0.7 1 0.7 0.9-0.1 1.9-0.1 2.8-0.1 1.5 0 2.9 0.1 4.3 0.3 0.6 0.1 1.2-0.4 1.2-1v-6.9c0-0.6-0.5-1-1-1-3.2 0.1-6.4 0.7-9.3 1.6-0.5 0.2-0.8 0.7-0.6 1.3z"/><path d="m50.928 40.209c2.1 0.5 3.5 1 5.5 2 0.5 0.3 1.2 0 1.4-0.6l4.2-12.8c0.2-0.5-0.1-1.1-0.6-1.3-3-0.9-6.9-1.5-10.1-1.7-0.6 0-1 0.4-1 1v12.4c-0.1 0.5 0.2 0.9 0.6 1z"/><path d="m79.928 46.009-8.4 6.1c-0.4 0.3-0.5 0.8-0.3 1.3 0.9 1.6 1.6 3.2 2.2 4.9 0.2 0.5 0.7 0.8 1.2 0.6l9.8-3.2c0.5-0.2 0.8-0.7 0.6-1.3-1-2.9-2.3-5.7-3.8-8.2-0.2-0.4-0.9-0.5-1.3-0.2z"/><path d="m31.328 39.909c2.3-1.1 4.7-2 7.2-2.5 0.6-0.1 1-0.7 0.8-1.3l-1.5-4.7c-0.2-0.5-0.8-0.8-1.3-0.6-2.9 1.2-5.7 2.7-8.2 4.6-0.4 0.3-0.5 0.9-0.2 1.4l2 2.8c0.2 0.4 0.8 0.5 1.2 0.3z"/><path d="m61.828 31.509-2.8 8.6c-0.1 0.4 0 0.9 0.4 1.1 1.7 1 3.4 2.2 4.9 3.6 0.4 0.4 1.1 0.3 1.5-0.1l5.7-7.9c0.3-0.4 0.2-1.1-0.2-1.4-2.5-1.9-5.3-3.4-8.2-4.6-0.5-0.1-1.1 0.2-1.3 0.7z"/><path d="m66.328 46.709c1.3 1.4 2.5 2.8 3.5 4.4 0.3 0.5 0.9 0.6 1.4 0.3l8.3-6c0.4-0.3 0.5-0.9 0.2-1.4-1.8-2.5-3.9-4.8-6.2-6.8-0.4-0.4-1.1-0.3-1.5 0.2l-5.8 8.1c-0.3 0.3-0.3 0.9 0.1 1.2z"/><path d="m22.828 46.209c1.8-2 3.9-3.7 6.2-5.1 0.5-0.3 0.6-1 0.3-1.4l-1.8-2.4c-0.3-0.5-1-0.6-1.5-0.2-2.3 2-4.4 4.3-6.2 6.8-0.3 0.4-0.2 1.1 0.2 1.4l1.4 1c0.5 0.4 1 0.3 1.4-0.1z"/><path d="m15.128 55.709 0.5 0.2c0.5 0.2 1-0.1 1.2-0.6 1.1-2.6 2.5-5 4.2-7.1 0.4-0.4 0.3-1.1-0.2-1.4l-1.2-0.8c-0.5-0.3-1.1-0.2-1.4 0.3-1.6 2.5-2.9 5.3-3.8 8.2-0.1 0.5 0.2 1.1 0.7 1.2z"/><path d="m74.228 60.809c0.4 1.7 0.7 3.5 0.9 5.3 0 0.5 0.5 0.9 1 0.9h10.2c0.6 0 1-0.5 1-1-0.1-3.1-0.5-6-1.3-8.9-0.1-0.6-0.7-0.9-1.3-0.7l-9.8 3.2c-0.6 0.2-0.8 0.7-0.7 1.2z"/><path d="m14.228 67.009c0.1-3.2 0.7-6.3 1.7-9.2 0.2-0.5-0.1-1.1-0.6-1.3l-0.3-0.1c-0.5-0.2-1.1 0.1-1.3 0.7-0.8 3.2-1.3 6.5-1.3 9.9z"/></svg>
diff --git a/icons/size_2.svg b/icons/size_2.svg
new file mode 100644
index 0000000..6772a5f
--- /dev/null
+++ b/icons/size_2.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 98.851 99.618" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="98.851" height="99.618" ry="1.795" fill="#6afffe"/><path d="m8.016 8.1944v83.701h83.701v-83.701zm60.683 60.683h-14.648v-14.648h14.648zm0 4.185v14.648h-14.648v-14.648zm4.185 0h14.648v14.648h-14.648zm0-4.185v-14.648h14.648v14.648zm0-23.018v-14.648h14.648v14.648zm-4.185 0h-14.648v-14.648h14.648zm-23.018 0h-14.648v-14.648h14.648zm0 8.3701v14.648h-14.648v-14.648zm0 18.833v14.648h-14.648v-14.648zm41.85-46.035h-14.648v-14.648h14.648zm-18.833-14.648v14.648h-14.648v-14.648zm-23.018 14.648h-14.648v-14.648h14.648zm-33.48-14.648h14.648v14.648h-14.648zm0 18.833h14.648v14.648h-14.648zm0 23.018h14.648v14.648h-14.648zm0 18.833h14.648v14.648h-14.648z" stroke-width="2.0925"/></svg>
diff --git a/icons/size_3.svg b/icons/size_3.svg
new file mode 100644
index 0000000..727e31a
--- /dev/null
+++ b/icons/size_3.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 98.851 99.618" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="98.851" height="99.618" ry="1.795" fill="#6afffe"/><path d="m65.824 4.0024h-62v90h90v-90zm9 79v-8h8v8zm8 2v7h-8v-7zm-38-2v-8h8v8zm8 2v7h-8v-7zm-38-2v-8h8v8zm8 2v7h-8v-7zm0-70v8h-8v-8zm-8-2v-7h8v7zm38 2v8h-8v-8zm-8-2v-7h8v7zm0 30v-7h8v7zm8 2v8h-8v-8zm-10-2h-7v-7h7zm0 2v8h-7v-8zm0 10v7h-7v-7zm2 0h8v7h-8zm10 0h7v7h-7zm0-2v-8h7v8zm0-10v-7h7v7zm0-11v-7h7v7zm-2 0h-8v-7h8zm-10 0h-7v-7h7zm-11 0h-7v-7h7zm0 4v7h-7v-7zm0 9v8h-7v-8zm0 10v7h-7v-7zm0 11v7h-7v-7zm4 0h7v7h-7zm9 0h8v7h-8zm10 0h7v7h-7zm11 0h7v7h-7zm0-4v-7h7v7zm0-9v-8h7v8zm0-10v-7h7v7zm0-11v-7h7v7zm0-9v-8h7v8zm-4 0h-7v-8h7zm-19 0h-7v-8h7zm-11 0h-7v-8h7zm-9 2v7h-8v-7zm0 11v7h-8v-7zm0 9v8h-8v-8zm0 10v7h-8v-7zm0 11v7h-8v-7zm2 9h7v8h-7zm11 0h7v8h-7zm19 0h7v8h-7zm11 0h7v8h-7zm9-2v-7h8v7zm0-11v-7h8v7zm0-9v-8h8v8zm0-10v-7h8v7zm0-11v-7h8v7zm0-9v-8h8v8zm0-10v-7h8v7zm-2-7v7h-7v-7zm-11 7h-7v-7h7zm-19-7v7h-7v-7zm-11 7h-7v-7h7zm-26-7h7v7h-7zm0 9h7v8h-7zm0 10h7v7h-7zm0 11h7v7h-7zm0 9h7v8h-7zm0 10h7v7h-7zm0 11h7v7h-7zm0 9h7v8h-7zm0 10h7v7h-7zm19 7v-7h7v7zm11-7h7v7h-7zm19 7v-7h7v7zm11-7h7v7h-7zm26 7h-7v-7h7zm0-9h-7v-8h7zm0-10h-7v-7h7zm0-11h-7v-7h7zm0-9h-7v-8h7zm0-10h-7v-7h7zm0-11h-7v-7h7zm0-9h-7v-8h7zm-7-10v-7h7v7z"/></svg>
diff --git a/icons/skin_default.svg b/icons/skin_default.svg
new file mode 100644
index 0000000..76c40c2
--- /dev/null
+++ b/icons/skin_default.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 98.851 99.618" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="98.851" height="99.618" ry="1.795" fill="#f3ff6a"/><path class="st0" d="m56.096 53.176 26.479-4.2576c2.3483-0.37629 4.5851 1.2404 4.9614 3.5887l3.8395 23.859c0.37628 2.3483-1.2404 4.5851-3.5887 4.9614l-26.479 4.2576c-2.3483 0.37629-4.5851-1.2404-4.9614-3.5887l-3.8395-23.859c-0.37629-2.3483 1.2404-4.5851 3.5887-4.9614zm13.567 11.198-5.1217-0.05575c0.1533-1.6515 0.73864-2.9964 1.7769-4.0416 1.0313-1.0383 2.627-1.7421 4.7733-2.0975 2.4737-0.41113 4.3273-0.25086 5.5886 0.48778 1.2543 0.73864 1.9999 1.8048 2.2298 3.1984 0.13937 0.81529 0.03484 1.5957-0.29964 2.3344-0.33448 0.73864-0.90588 1.4285-1.7281 2.0765 0.75954 0.05575 1.3588 0.17421 1.7839 0.35538 0.69683 0.2857 1.2682 0.71076 1.7212 1.2891 0.45294 0.57837 0.75954 1.3031 0.90588 2.1811 0.18118 1.101 0.07665 2.2089-0.33448 3.3239-0.41113 1.108-1.108 2.0278-2.1044 2.7525-0.99646 0.7247-2.3762 1.2404-4.1461 1.533-1.7212 0.2857-3.1148 0.31357-4.174 0.06968-1.0661-0.23692-1.979-0.69683-2.7525-1.3658-0.76651-0.67592-1.4285-1.5748-1.972-2.7037l5.1496-1.5818c0.38326 1.0313 0.82923 1.7142 1.3309 2.0556 0.50172 0.34145 1.0871 0.45294 1.763 0.34145 0.7038-0.11846 1.2473-0.47384 1.6306-1.0731 0.38326-0.5923 0.50172-1.324 0.35538-2.188-0.14633-0.878-0.48778-1.5191-1.0174-1.9302-0.52959-0.40416-1.1846-0.54353-1.9581-0.4181-0.41113 0.06968-0.96162 0.26479-1.6445 0.5923l-0.35538-3.8117c0.29267-7e-3 0.52262-0.0209 0.68289-0.04878 0.68289-0.11149 1.2125-0.43203 1.5957-0.94072 0.38326-0.51565 0.52262-1.0661 0.42506-1.6654-0.09756-0.57837-0.34841-1.0104-0.73864-1.2891-0.40416-0.2857-0.89891-0.38326-1.4982-0.27873-0.62018 0.10452-1.0871 0.36932-1.4146 0.80832-0.32054 0.439-0.47384 1.1358-0.45294 2.0905zm-20.117-45.663 3.2193 19.316-5.3307 0.89194-2.1044-12.633c-0.75258 0.80135-1.4982 1.4633-2.2438 1.9999-0.73864 0.53656-1.6933 1.094-2.8431 1.6654l-0.71773-4.2994c1.7003-0.88497 2.9755-1.8118 3.8326-2.7943 0.8571-0.98253 1.4703-2.1184 1.8327-3.4145zm-31.357 31.748 25.727 7.5815c2.2856 0.67592 3.6026 3.0939 2.9267 5.3795l-6.8289 23.177c-0.67592 2.2856-3.0939 3.6026-5.3795 2.9267l-25.72-7.5745c-2.2856-0.67592-3.6026-3.0939-2.9267-5.3795l6.8289-23.177c0.66896-2.2856 3.087-3.6026 5.3725-2.9336zm18.612 20.229-3.526-0.50172c-0.19511 0.22298-0.41113 0.439-0.64805 0.64108-0.89194 0.76651-2.3135 1.4842-4.2646 2.1462-1.1567 0.37629-1.9302 0.65502-2.3344 0.82226-0.40416 0.17421-0.88497 0.40416-1.4494 0.7038l7.4421 2.202-1.1498 3.8744-14.292-4.2228c0.57837-1.3588 1.4703-2.5434 2.6689-3.5329 1.1985-0.99646 3.1845-2.0069 5.9718-3.0242 0.52959-0.19511 0.99646-0.37629 1.4146-0.55049 0.93375-0.39022 1.5888-0.7247 1.972-1.0174 0.5505-0.42507 0.89891-0.878 1.0383-1.3588 0.1533-0.52262 0.09756-1.0243-0.18118-1.5121-0.27873-0.48778-0.71076-0.81529-1.2961-0.9895-0.60624-0.18118-1.1637-0.1324-1.6585 0.1324-0.50172 0.27176-0.96162 0.87104-1.3797 1.8048l-4.6478-1.7978c0.58534-1.2891 1.2404-2.2299 1.9581-2.8361 0.7247-0.60624 1.5957-0.97556 2.6201-1.108 1.0313-0.1324 2.3413 0.03484 3.951 0.51565 1.6724 0.49475 2.9197 1.0731 3.742 1.7281 0.81529 0.65502 1.3797 1.4564 1.6724 2.4041 0.29964 0.95466 0.3066 1.9163 0.01394 2.8988-0.22995 0.76651-0.61321 1.4564-1.1567 2.0835zm-5.5677-55.614 26.479-4.2576c2.3483-0.37629 4.5851 1.2404 4.9614 3.5887l3.8395 23.859c0.37629 2.3483-1.2404 4.5851-3.5887 4.9614l-26.479 4.2576c-2.3483 0.37629-4.5851-1.2404-4.9614-3.5887l-3.8395-23.859c-0.37629-2.3483 1.2404-4.5851 3.5887-4.9614z" clip-rule="evenodd" fill-rule="evenodd" stroke-width=".69683"/></svg>
diff --git a/icons/skins/default/1.svg b/icons/skins/default/1.svg
new file mode 100644
index 0000000..4ae157f
--- /dev/null
+++ b/icons/skins/default/1.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 98.851 99.618" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="98.851" height="99.618" ry="1.795" fill="#e5e5e5"/>
+  <g stroke-width="2.8975" aria-label="1"><path d="m28.274 82.939h18.675v-64.458l-20.316 4.0746v-10.413l20.203-4.0746h11.432v74.871h18.675v9.6206h-48.669z"/></g>
+</svg>
diff --git a/icons/skins/default/2.svg b/icons/skins/default/2.svg
new file mode 100644
index 0000000..ebfcf15
--- /dev/null
+++ b/icons/skins/default/2.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 98.851 99.618" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="98.851" height="99.618" ry="1.795" fill="#e5e5e5"/><text x="13.899673" y="92.559296" fill="#000000" font-family="sans-serif" font-size="115.9px" letter-spacing="0px" stroke-width="2.8975" word-spacing="0px" style="line-height:1.25" xml:space="preserve"><tspan x="13.899673" y="92.559296" stroke-width="2.8975">2</tspan></text></svg>
diff --git a/icons/skins/default/3.svg b/icons/skins/default/3.svg
new file mode 100644
index 0000000..784ea45
--- /dev/null
+++ b/icons/skins/default/3.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 98.851 99.618" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="98.851" height="99.618" ry="1.795" fill="#e5e5e5"/><text x="13.899673" y="92.559296" fill="#000000" font-family="sans-serif" font-size="115.9px" letter-spacing="0px" stroke-width="2.8975" word-spacing="0px" style="line-height:1.25" xml:space="preserve"><tspan x="13.899673" y="92.559296" stroke-width="2.8975">3</tspan></text></svg>
diff --git a/icons/skins/default/4.svg b/icons/skins/default/4.svg
new file mode 100644
index 0000000..7f95225
--- /dev/null
+++ b/icons/skins/default/4.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 98.851 99.618" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="98.851" height="99.618" ry="1.795" fill="#e5e5e5"/><text x="13.899673" y="92.559296" fill="#000000" font-family="sans-serif" font-size="115.9px" letter-spacing="0px" stroke-width="2.8975" word-spacing="0px" style="line-height:1.25" xml:space="preserve"><tspan x="13.899673" y="92.559296" stroke-width="2.8975">4</tspan></text></svg>
diff --git a/icons/skins/default/5.svg b/icons/skins/default/5.svg
new file mode 100644
index 0000000..59aa9bf
--- /dev/null
+++ b/icons/skins/default/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 98.851 99.618" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="98.851" height="99.618" ry="1.795" fill="#e5e5e5"/><text x="13.899673" y="92.559296" fill="#000000" font-family="sans-serif" font-size="115.9px" letter-spacing="0px" stroke-width="2.8975" word-spacing="0px" style="line-height:1.25" xml:space="preserve"><tspan x="13.899673" y="92.559296" stroke-width="2.8975">5</tspan></text></svg>
diff --git a/icons/skins/default/6.svg b/icons/skins/default/6.svg
new file mode 100644
index 0000000..1251bc3
--- /dev/null
+++ b/icons/skins/default/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 98.851 99.618" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="98.851" height="99.618" ry="1.795" fill="#e5e5e5"/><text x="13.899673" y="92.559296" fill="#000000" font-family="sans-serif" font-size="115.9px" letter-spacing="0px" stroke-width="2.8975" word-spacing="0px" style="line-height:1.25" xml:space="preserve"><tspan x="13.899673" y="92.559296" stroke-width="2.8975">6</tspan></text></svg>
diff --git a/icons/skins/default/7.svg b/icons/skins/default/7.svg
new file mode 100644
index 0000000..8ed4b06
--- /dev/null
+++ b/icons/skins/default/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 98.851 99.618" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="98.851" height="99.618" ry="1.795" fill="#e5e5e5"/><text x="13.899673" y="92.559296" fill="#000000" font-family="sans-serif" font-size="115.9px" letter-spacing="0px" stroke-width="2.8975" word-spacing="0px" style="line-height:1.25" xml:space="preserve"><tspan x="13.899673" y="92.559296" stroke-width="2.8975">7</tspan></text></svg>
diff --git a/icons/skins/default/8.svg b/icons/skins/default/8.svg
new file mode 100644
index 0000000..b563d75
--- /dev/null
+++ b/icons/skins/default/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 98.851 99.618" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="98.851" height="99.618" ry="1.795" fill="#e5e5e5"/><g stroke-width="2.8975" aria-label="8"><path d="m50.741 52.436q-8.1492 0-12.846 4.3576-4.6405 4.3576-4.6405 11.997 0 7.6399 4.6405 11.997 4.6971 4.3576 12.846 4.3576t12.846-4.3576q4.6971-4.4142 4.6971-11.997 0-7.6399-4.6971-11.997-4.6405-4.3576-12.846-4.3576zm-11.432-4.8669q-7.3569-1.8109-11.488-6.8476-4.0746-5.0367-4.0746-12.28 0-10.13 7.1872-16.015 7.2438-5.8855 19.807-5.8855 12.62 0 19.807 5.8855 7.1872 5.8855 7.1872 16.015 0 7.2438-4.1312 12.28-4.0746 5.0367-11.375 6.8476 8.2624 1.9241 12.846 7.5267 4.6405 5.6026 4.6405 13.695 0 12.28-7.5267 18.845-7.4701 6.5646-21.448 6.5646t-21.505-6.5646q-7.4701-6.5646-7.4701-18.845 0-8.0926 4.6405-13.695 4.6405-5.6026 12.903-7.5267zm-4.1878-18.053q0 6.5646 4.0746 10.243 4.1312 3.6785 11.545 3.6785 7.3569 0 11.488-3.6785 4.1878-3.6785 4.1878-10.243 0-6.5646-4.1878-10.243-4.1312-3.6785-11.488-3.6785-7.4135 0-11.545 3.6785-4.0746 3.6785-4.0746 10.243z"/></g></svg>
diff --git a/icons/skins/default/9.svg b/icons/skins/default/9.svg
new file mode 100644
index 0000000..974bae0
--- /dev/null
+++ b/icons/skins/default/9.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 98.851 99.618" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="98.851" height="99.618" ry="1.795" fill="#e5e5e5"/><g stroke-width="2.8975" aria-label="9"><path d="m26.633 90.805v-10.413q4.301 2.0373 8.7151 3.1125t8.6585 1.0752q11.318 0 17.26-7.5833 5.9987-7.6399 6.8476-23.146-3.2823 4.8669-8.319 7.4701t-11.149 2.6032q-12.677 0-20.09-7.6399-7.3569-7.6965-7.3569-20.996 0-13.016 7.6965-20.882 7.6965-7.8663 20.486-7.8663 14.657 0 22.354 11.262 7.7531 11.205 7.7531 32.597 0 19.977-9.5074 31.918-9.4508 11.884-25.466 11.884-4.301 0-8.7151-0.84888t-9.1679-2.5466zm22.75-35.823q7.6965 0 12.167-5.263 4.5273-5.263 4.5273-14.431 0-9.1113-4.5273-14.374-4.4708-5.3196-12.167-5.3196-7.6965 0-12.224 5.3196-4.4708 5.263-4.4708 14.374 0 9.1679 4.4708 14.431 4.5273 5.263 12.224 5.263z"/></g></svg>
diff --git a/icons/skins/empty.svg b/icons/skins/empty.svg
new file mode 100644
index 0000000..5cb26d7
--- /dev/null
+++ b/icons/skins/empty.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 98.851 99.618" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="98.851" height="99.618" ry="1.795" fill="#e5e5e5"/></svg>
diff --git a/lib/entities/cell.dart b/lib/entities/cell.dart
new file mode 100644
index 0000000..f5ae942
--- /dev/null
+++ b/lib/entities/cell.dart
@@ -0,0 +1,95 @@
+import 'package:flutter/material.dart';
+import 'package:provider/provider.dart';
+
+import '../provider/data.dart';
+
+class Cell {
+  int value;
+  final int col;
+  final int row;
+
+  Cell(
+    @required this.value,
+    @required this.col,
+    @required this.row,
+  );
+
+  Container widget(Data myProvider) {
+    String imageAsset = 'assets/skins/empty.png';
+    if (this.value > 0) {
+      imageAsset = 'assets/skins/' + myProvider.skin + '_' + this.value.toString() + '.png';
+    }
+
+    int size = myProvider.size;
+
+    double borderWidth = 3;
+    Color borderDarkColor = Colors.black;
+    Color borderLightColor = Colors.grey;
+    Color borderSelectedColor = Colors.red;
+
+    Border borders = Border(
+      top: BorderSide(width: borderWidth, color: ((this.row % size) == 0) ? borderDarkColor : borderLightColor),
+      left: BorderSide(width: borderWidth, color: ((this.col % size) == 0) ? borderDarkColor : borderLightColor),
+      right: BorderSide(width: borderWidth, color: (((this.col + 1) % size) == 0) ? borderDarkColor : borderLightColor),
+      bottom: BorderSide(width: borderWidth, color: (((this.row + 1) % size) == 0) ? borderDarkColor : borderLightColor),
+    );
+
+    if (this.col == myProvider.currentCellCol && this.row == myProvider.currentCellRow) {
+      borders = Border.all(
+        color: borderSelectedColor,
+        width: borderWidth,
+      );
+    }
+
+    return Container(
+      decoration: BoxDecoration(
+        color: Colors.white,
+        border: borders,
+      ),
+      child: GestureDetector(
+        child: Image(
+          image: AssetImage(imageAsset),
+          fit: BoxFit.fill
+        ),
+        onTap: () {
+          if (this.col != null && this.row != null) {
+            if (this.col != myProvider.currentCellCol || this.row != myProvider.currentCellRow) {
+              myProvider.selectCell(this.col, this.row);
+            } else {
+              myProvider.selectCell(null, null);
+            }
+          }
+        },
+      )
+    );
+  }
+
+  Container widgetUpdateValue(Data myProvider) {
+    String imageAsset = 'assets/skins/empty.png';
+    if (this.value > 0) {
+      imageAsset = 'assets/skins/' + myProvider.skin + '_' + this.value.toString() + '.png';
+    }
+
+    return Container(
+      decoration: BoxDecoration(
+        color: Colors.white,
+        border: Border.all(
+          color: Colors.black,
+          width: 2,
+        ),
+      ),
+      child: GestureDetector(
+        child: Image(
+          image: AssetImage(imageAsset),
+          fit: BoxFit.fill
+        ),
+        onTap: () {
+          if (this.col != null && this.row != null) {
+            myProvider.updateCellValue(this.col, this.row, this.value);
+          }
+          myProvider.selectCell(null, null);
+        },
+      )
+    );
+  }
+}
diff --git a/lib/provider/data.dart b/lib/provider/data.dart
index 4cc589c..da43d26 100644
--- a/lib/provider/data.dart
+++ b/lib/provider/data.dart
@@ -2,26 +2,109 @@ import 'package:flutter/foundation.dart';
 
 class Data extends ChangeNotifier {
 
-  // randomization
-  bool _searchingImage = false;
-  String _image = '';
+  // Configuration available values
+  List _availableDifficultyLevels = ['easy', 'medium', 'hard'];
+  List _availableSizes = [2, 3];
+  List _availableSkins = ['default'];
 
-  bool get searchingImage => _searchingImage;
+  List get availableDifficultyLevels => _availableDifficultyLevels;
+  List get availableSizes => _availableSizes;
+  List get availableSkins => _availableSkins;
 
-  set searchingImage(bool value) {
-    _searchingImage = value;
+  // Application default configuration
+  String _level = 'medium';
+  int _size = 3;
+  String _skin = 'default';
+
+  // Game data
+  bool _stateRunning = false;
+  List _cells = [];
+  int _currentCellCol = null;
+  int _currentCellRow = null;
+
+  String get level => _level;
+  set updateLevel(String level) {
+    _level = level;
     notifyListeners();
   }
 
-  String get image => _image;
+  int get size => _size;
+  set updateSize(int size) {
+    _size = size;
+    notifyListeners();
+  }
+
+  String get skin => _skin;
+  set updateSkin(String skin) {
+    _skin = skin;
+    notifyListeners();
+  }
+
+  getParameterValue(String parameterCode) {
+    switch(parameterCode) {
+      case 'difficulty': { return _level; }
+      break;
+      case 'size': { return _size; }
+      break;
+      case 'skin': { return _skin; }
+      break;
+    }
+  }
+
+  List getParameterAvailableValues(String parameterCode) {
+    switch(parameterCode) {
+      case 'difficulty': { return _availableDifficultyLevels; }
+      break;
+      case 'size': { return _availableSizes; }
+      break;
+      case 'skin': { return _availableSkins; }
+      break;
+    }
+  }
+
+  setParameterValue(String parameterCode, var parameterValue) {
+    switch(parameterCode) {
+      case 'difficulty': { updateLevel = parameterValue; }
+      break;
+      case 'size': { updateSize = parameterValue; }
+      break;
+      case 'skin': { updateSkin = parameterValue; }
+      break;
+    }
+  }
+
+  List get cells => _cells;
+  set updateCells(List cells) {
+    _cells = cells;
+    notifyListeners();
+  }
+
+  int get currentCellCol => _currentCellCol;
+  set updateCurrentCellCol(int currentCellCol) {
+    _currentCellCol = currentCellCol;
+    notifyListeners();
+  }
+
+  int get currentCellRow => _currentCellRow;
+  set updateCurrentCellRow(int currentCellRow) {
+    _currentCellRow = currentCellRow;
+    notifyListeners();
+  }
+
+  selectCell(int col, int row) {
+    _currentCellCol = col;
+    _currentCellRow = row;
+    notifyListeners();
+  }
 
-  set updateImage(String value) {
-    _image = value;
+  updateCellValue(int col, int row, int value) {
+    _cells[row][col].value = value;
     notifyListeners();
   }
 
-  void resetGame() {
-    _image = '';
+  bool get stateRunning => _stateRunning;
+  set updateStateRunning(bool stateRunning) {
+    _stateRunning = stateRunning;
     notifyListeners();
   }
 }
diff --git a/lib/screens/home.dart b/lib/screens/home.dart
index de5b013..62d2155 100644
--- a/lib/screens/home.dart
+++ b/lib/screens/home.dart
@@ -1,57 +1,235 @@
 import 'package:flutter/material.dart';
 import 'package:provider/provider.dart';
 
+import '../entities/cell.dart';
 import '../provider/data.dart';
 
 class Home extends StatelessWidget {
   static const String id = 'home';
 
-  @override
-  Widget build(BuildContext context) {
-    Data _myProvider = Provider.of<Data>(context);
+  static const double _parameterButtonSize = 70;
+  static const double _startButtonSize = 150;
 
-    return Scaffold(
-      appBar: AppBar(
-        title: Text('Sudoku'),
+  Future<void> resetGame(Data myProvider) async {
+    myProvider.updateStateRunning = false;
+  }
+
+  Future<void> startGame(Data myProvider) async {
+    myProvider.updateStateRunning = true;
+    myProvider.updateCells = createEmptyBoard(myProvider.size);
+  }
+
+  List createEmptyBoard(int size) {
+    int index = 0;
+    List cells = [];
+    for (var rowIndex = 0; rowIndex < (size * size); rowIndex++) {
+      List row = [];
+      for (var colIndex = 0; colIndex < (size * size); colIndex++) {
+        row.add(
+          Cell(
+            (index++ % ((size * size) + 1)), // for debug purpose only :')
+            colIndex,
+            rowIndex
+          )
+        );
+      }
+      cells.add(row);
+    }
+
+    return cells;
+  }
+
+  Container _buildParametersSelector(Data myProvider) {
+    return Container(
+      child: Column(
+        mainAxisSize: MainAxisSize.min,
+        mainAxisAlignment: MainAxisAlignment.center,
+        children: [
+          _buildParameterSelector(myProvider, 'difficulty'),
+          _buildParameterSelector(myProvider, 'size'),
+          _buildParameterSelector(myProvider, 'skin'),
+
+          _buildStartGameButton(myProvider),
+        ],
       ),
-      body: Center(
-        child: Column(
-          mainAxisAlignment: MainAxisAlignment.center,
-          children: <Widget>[
-            Container(
-              child: Column(
-                mainAxisSize: MainAxisSize.min,
-                mainAxisAlignment: MainAxisAlignment.center,
-                children: [
-                  Container(
-                    margin: EdgeInsets.all(4),
-                    padding: EdgeInsets.all(4),
-                    decoration: BoxDecoration(
-                      color: Colors.blue,
-                      borderRadius: BorderRadius.circular(4),
-                      border: Border.all(
-                        color: Colors.green,
-                        width: 4,
-                      ),
-                    ),
-                    child: FlatButton(
-                      child: Text(
-                        '🎲',
-                        textAlign: TextAlign.center,
-                        style: TextStyle(
-                          fontSize: 50,
-                          fontWeight: FontWeight.w600,
-                          color: Colors.black,
-                        ),
-                      ),
-                    ),
+    );
+  }
+
+  Column _buildStartGameButton(Data myProvider) {
+    return Column(
+      mainAxisSize: MainAxisSize.min,
+      mainAxisAlignment: MainAxisAlignment.center,
+      children: [
+        FlatButton(
+          child: Image(
+            image: AssetImage('assets/icons/button_start.png'),
+            width: _startButtonSize,
+            height: _startButtonSize,
+            fit: BoxFit.fill
+          ),
+          onPressed: () => startGame(myProvider),
+        )
+      ],
+    );
+  }
+
+  Column _buildParameterSelector(Data myProvider, String parameterCode) {
+    List availableValues = myProvider.getParameterAvailableValues(parameterCode);
+
+    return Column(
+      children: [
+        Table(
+          defaultColumnWidth: IntrinsicColumnWidth(),
+          children: [
+            TableRow(
+              children: [
+                for (var index = 0; index < availableValues.length; index++)
+                  Column(
+                    children: [
+                      _buildParameterButton(myProvider, parameterCode, availableValues[index])
+                    ]
                   ),
-                ],
-              ),
+              ],
             ),
           ],
         ),
+        SizedBox(height: 20),
+      ]
+    );
+  }
+
+  FlatButton _buildParameterButton(Data myProvider, String parameterCode, var parameterValue) {
+    String currentValue = myProvider.getParameterValue(parameterCode).toString();
+
+    bool isActive = (parameterValue.toString() == currentValue);
+    String imageAsset = 'assets/icons/' + parameterCode + '_' + parameterValue.toString() + '.png';
+
+    return FlatButton(
+      child: Container(
+        decoration: BoxDecoration(
+          color: Colors.white,
+          borderRadius: BorderRadius.circular(10),
+          border: Border.all(
+            color: isActive ? Colors.blue : Colors.white,
+            width: 10,
+          ),
+        ),
+        child: Image(
+          image: AssetImage(imageAsset),
+          width: _parameterButtonSize,
+          height: _parameterButtonSize,
+          fit: BoxFit.fill
+        ),
+      ),
+      onPressed: () => myProvider.setParameterValue(parameterCode, parameterValue),
+    );
+  }
+
+  Container _buildGameWidget(Data myProvider) {
+    return Container(
+      child: Column(
+        mainAxisAlignment: MainAxisAlignment.start,
+        crossAxisAlignment: CrossAxisAlignment.start,
+        children: [
+          _buildGameBoard(myProvider),
+          SizedBox(height: 2),
+          _buildSelectCellValueBar(myProvider)
+        ],
+      ),
+    );
+  }
+
+  Container _buildGameBoard(Data myProvider) {
+    List cells = myProvider.cells;
+    int size = myProvider.size;
+
+    Color borderColor = _checkBoardIsSolved(cells) ? Colors.green : Colors.orange;
+
+    return Container(
+      margin: EdgeInsets.all(2),
+      padding: EdgeInsets.all(2),
+      decoration: BoxDecoration(
+        color: borderColor,
+        borderRadius: BorderRadius.circular(2),
+        border: Border.all(
+          color: borderColor,
+          width: 2,
+        ),
+      ),
+
+      child: Table(
+        defaultColumnWidth: IntrinsicColumnWidth(),
+        children: [
+          for (var row = 0; row < (size * size); row++)
+            TableRow(children: [
+              for (var col = 0; col < (size * size); col++)
+                Column(children: [
+                  cells[row][col].widget(myProvider)
+                ]),
+            ]),
+        ]
+      ),
+    );
+  }
+
+  Container _buildSelectCellValueBar(Data myProvider) {
+    List cells = myProvider.cells;
+    int size = myProvider.size;
+
+    Color borderColor = Colors.blue;
+
+    bool isCellSelected = (myProvider.currentCellCol != null && myProvider.currentCellRow != null);
+
+    return Container(
+      margin: EdgeInsets.all(2),
+      padding: EdgeInsets.all(2),
+
+      child: Table(
+        defaultColumnWidth: IntrinsicColumnWidth(),
+        children: [
+          TableRow(
+            children: [
+              for (var value = 0; value < ((size * size) + 1); value++)
+                Column(
+                  children: [
+                    Cell(
+                      isCellSelected ? value : 0,
+                      isCellSelected ? myProvider.currentCellCol : null,
+                      isCellSelected ? myProvider.currentCellRow : null
+                    ).widgetUpdateValue(myProvider)
+                  ]
+                ),
+            ]
+          ),
+        ]
       ),
     );
   }
+
+  bool _checkBoardIsSolved(List cells) {
+    return false;
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    Data myProvider = Provider.of<Data>(context);
+
+    return Scaffold(
+      appBar: AppBar(
+        title: Text('🔢'),
+        actions: [
+          if (myProvider.stateRunning)
+            FlatButton(
+              child: Text('◀️'),
+              onPressed: () => resetGame(myProvider),
+            ),
+        ],
+      ),
+      body: SafeArea(
+        child: Center(
+          child: myProvider.stateRunning ? _buildGameWidget(myProvider) : _buildParametersSelector(myProvider)
+        ),
+      )
+    );
+  }
 }
diff --git a/pubspec.yaml b/pubspec.yaml
index dc063f6..bbdc442 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -18,4 +18,5 @@ dev_dependencies:
 flutter:
   uses-material-design: true
   assets:
-    - assets/files/
+    - assets/icons/
+    - assets/skins/
-- 
GitLab