diff --git a/android/assets/ui/x0.75/back.png b/android/assets/ui/x0.75/back.png new file mode 100644 index 0000000..7b11e7b Binary files /dev/null and b/android/assets/ui/x0.75/back.png differ diff --git a/android/assets/ui/x0.75/button_down.png b/android/assets/ui/x0.75/button_down.png new file mode 100644 index 0000000..f8b9a38 Binary files /dev/null and b/android/assets/ui/x0.75/button_down.png differ diff --git a/android/assets/ui/x0.75/button_up.png b/android/assets/ui/x0.75/button_up.png new file mode 100644 index 0000000..92f739d Binary files /dev/null and b/android/assets/ui/x0.75/button_up.png differ diff --git a/android/assets/ui/x0.75/cancel.png b/android/assets/ui/x0.75/cancel.png new file mode 100644 index 0000000..16f15dd Binary files /dev/null and b/android/assets/ui/x0.75/cancel.png differ diff --git a/android/assets/ui/x0.75/credits.png b/android/assets/ui/x0.75/credits.png new file mode 100644 index 0000000..6deb4b0 Binary files /dev/null and b/android/assets/ui/x0.75/credits.png differ diff --git a/android/assets/ui/x0.75/cup.png b/android/assets/ui/x0.75/cup.png new file mode 100644 index 0000000..e16df53 Binary files /dev/null and b/android/assets/ui/x0.75/cup.png differ diff --git a/android/assets/ui/x0.75/home.png b/android/assets/ui/x0.75/home.png new file mode 100644 index 0000000..5e0c7cd Binary files /dev/null and b/android/assets/ui/x0.75/home.png differ diff --git a/android/assets/ui/x0.75/issues.png b/android/assets/ui/x0.75/issues.png new file mode 100644 index 0000000..c80234b Binary files /dev/null and b/android/assets/ui/x0.75/issues.png differ diff --git a/android/assets/ui/x0.75/ok.png b/android/assets/ui/x0.75/ok.png new file mode 100644 index 0000000..6e8a1b9 Binary files /dev/null and b/android/assets/ui/x0.75/ok.png differ diff --git a/android/assets/ui/x0.75/palette.png b/android/assets/ui/x0.75/palette.png new file mode 100644 index 0000000..0c421f6 Binary files /dev/null and b/android/assets/ui/x0.75/palette.png differ diff --git a/android/assets/ui/x0.75/play.png b/android/assets/ui/x0.75/play.png new file mode 100644 index 0000000..c39f8b4 Binary files /dev/null and b/android/assets/ui/x0.75/play.png differ diff --git a/android/assets/ui/x0.75/play_saved.png b/android/assets/ui/x0.75/play_saved.png new file mode 100644 index 0000000..95af0aa Binary files /dev/null and b/android/assets/ui/x0.75/play_saved.png differ diff --git a/android/assets/ui/x0.75/replay.png b/android/assets/ui/x0.75/replay.png new file mode 100644 index 0000000..0d83093 Binary files /dev/null and b/android/assets/ui/x0.75/replay.png differ diff --git a/android/assets/ui/x0.75/share.png b/android/assets/ui/x0.75/share.png new file mode 100644 index 0000000..818fdcc Binary files /dev/null and b/android/assets/ui/x0.75/share.png differ diff --git a/android/assets/ui/x0.75/snap_off.png b/android/assets/ui/x0.75/snap_off.png new file mode 100644 index 0000000..e6d6d45 Binary files /dev/null and b/android/assets/ui/x0.75/snap_off.png differ diff --git a/android/assets/ui/x0.75/snap_on.png b/android/assets/ui/x0.75/snap_on.png new file mode 100644 index 0000000..f7284ed Binary files /dev/null and b/android/assets/ui/x0.75/snap_on.png differ diff --git a/android/assets/ui/x0.75/sound_off.png b/android/assets/ui/x0.75/sound_off.png new file mode 100644 index 0000000..6b2e1a7 Binary files /dev/null and b/android/assets/ui/x0.75/sound_off.png differ diff --git a/android/assets/ui/x0.75/sound_on.png b/android/assets/ui/x0.75/sound_on.png new file mode 100644 index 0000000..a8f8927 Binary files /dev/null and b/android/assets/ui/x0.75/sound_on.png differ diff --git a/android/assets/ui/x0.75/star.png b/android/assets/ui/x0.75/star.png new file mode 100644 index 0000000..5d576c4 Binary files /dev/null and b/android/assets/ui/x0.75/star.png differ diff --git a/android/assets/ui/x0.75/stats.png b/android/assets/ui/x0.75/stats.png new file mode 100644 index 0000000..3ca0e4a Binary files /dev/null and b/android/assets/ui/x0.75/stats.png differ diff --git a/android/assets/ui/x0.75/stopwatch.png b/android/assets/ui/x0.75/stopwatch.png new file mode 100644 index 0000000..2e89b37 Binary files /dev/null and b/android/assets/ui/x0.75/stopwatch.png differ diff --git a/android/assets/ui/x0.75/web.png b/android/assets/ui/x0.75/web.png new file mode 100644 index 0000000..ad5898c Binary files /dev/null and b/android/assets/ui/x0.75/web.png differ diff --git a/android/assets/ui/x1.25/back.png b/android/assets/ui/x1.25/back.png new file mode 100644 index 0000000..516c897 Binary files /dev/null and b/android/assets/ui/x1.25/back.png differ diff --git a/android/assets/ui/x1.25/button_down.png b/android/assets/ui/x1.25/button_down.png new file mode 100644 index 0000000..85631f6 Binary files /dev/null and b/android/assets/ui/x1.25/button_down.png differ diff --git a/android/assets/ui/x1.25/button_up.png b/android/assets/ui/x1.25/button_up.png new file mode 100644 index 0000000..49fdd87 Binary files /dev/null and b/android/assets/ui/x1.25/button_up.png differ diff --git a/android/assets/ui/x1.25/cancel.png b/android/assets/ui/x1.25/cancel.png new file mode 100644 index 0000000..4187763 Binary files /dev/null and b/android/assets/ui/x1.25/cancel.png differ diff --git a/android/assets/ui/x1.25/credits.png b/android/assets/ui/x1.25/credits.png new file mode 100644 index 0000000..b7aa43b Binary files /dev/null and b/android/assets/ui/x1.25/credits.png differ diff --git a/android/assets/ui/x1.25/cup.png b/android/assets/ui/x1.25/cup.png new file mode 100644 index 0000000..4e82f86 Binary files /dev/null and b/android/assets/ui/x1.25/cup.png differ diff --git a/android/assets/ui/x1.25/home.png b/android/assets/ui/x1.25/home.png new file mode 100644 index 0000000..53b8652 Binary files /dev/null and b/android/assets/ui/x1.25/home.png differ diff --git a/android/assets/ui/x1.25/issues.png b/android/assets/ui/x1.25/issues.png new file mode 100644 index 0000000..be9116c Binary files /dev/null and b/android/assets/ui/x1.25/issues.png differ diff --git a/android/assets/ui/x1.25/ok.png b/android/assets/ui/x1.25/ok.png new file mode 100644 index 0000000..44e6d3c Binary files /dev/null and b/android/assets/ui/x1.25/ok.png differ diff --git a/android/assets/ui/x1.25/palette.png b/android/assets/ui/x1.25/palette.png new file mode 100644 index 0000000..59b6489 Binary files /dev/null and b/android/assets/ui/x1.25/palette.png differ diff --git a/android/assets/ui/x1.25/play.png b/android/assets/ui/x1.25/play.png new file mode 100644 index 0000000..f8ecac3 Binary files /dev/null and b/android/assets/ui/x1.25/play.png differ diff --git a/android/assets/ui/x1.25/play_saved.png b/android/assets/ui/x1.25/play_saved.png new file mode 100644 index 0000000..85ce38e Binary files /dev/null and b/android/assets/ui/x1.25/play_saved.png differ diff --git a/android/assets/ui/x1.25/replay.png b/android/assets/ui/x1.25/replay.png new file mode 100644 index 0000000..4437d65 Binary files /dev/null and b/android/assets/ui/x1.25/replay.png differ diff --git a/android/assets/ui/x1.25/share.png b/android/assets/ui/x1.25/share.png new file mode 100644 index 0000000..45c8a98 Binary files /dev/null and b/android/assets/ui/x1.25/share.png differ diff --git a/android/assets/ui/x1.25/snap_off.png b/android/assets/ui/x1.25/snap_off.png new file mode 100644 index 0000000..94f77f1 Binary files /dev/null and b/android/assets/ui/x1.25/snap_off.png differ diff --git a/android/assets/ui/x1.25/snap_on.png b/android/assets/ui/x1.25/snap_on.png new file mode 100644 index 0000000..f81d8db Binary files /dev/null and b/android/assets/ui/x1.25/snap_on.png differ diff --git a/android/assets/ui/x1.25/sound_off.png b/android/assets/ui/x1.25/sound_off.png new file mode 100644 index 0000000..d2d3cf7 Binary files /dev/null and b/android/assets/ui/x1.25/sound_off.png differ diff --git a/android/assets/ui/x1.25/sound_on.png b/android/assets/ui/x1.25/sound_on.png new file mode 100644 index 0000000..f8477a6 Binary files /dev/null and b/android/assets/ui/x1.25/sound_on.png differ diff --git a/android/assets/ui/x1.25/star.png b/android/assets/ui/x1.25/star.png new file mode 100644 index 0000000..cd69f55 Binary files /dev/null and b/android/assets/ui/x1.25/star.png differ diff --git a/android/assets/ui/x1.25/stats.png b/android/assets/ui/x1.25/stats.png new file mode 100644 index 0000000..2a07b60 Binary files /dev/null and b/android/assets/ui/x1.25/stats.png differ diff --git a/android/assets/ui/x1.25/stopwatch.png b/android/assets/ui/x1.25/stopwatch.png new file mode 100644 index 0000000..317a2b6 Binary files /dev/null and b/android/assets/ui/x1.25/stopwatch.png differ diff --git a/android/assets/ui/x1.25/web.png b/android/assets/ui/x1.25/web.png new file mode 100644 index 0000000..543e81f Binary files /dev/null and b/android/assets/ui/x1.25/web.png differ diff --git a/android/assets/ui/x1.5/back.png b/android/assets/ui/x1.5/back.png new file mode 100644 index 0000000..1c7c9cb Binary files /dev/null and b/android/assets/ui/x1.5/back.png differ diff --git a/android/assets/ui/x1.5/button_down.png b/android/assets/ui/x1.5/button_down.png new file mode 100644 index 0000000..250b3b1 Binary files /dev/null and b/android/assets/ui/x1.5/button_down.png differ diff --git a/android/assets/ui/x1.5/button_up.png b/android/assets/ui/x1.5/button_up.png new file mode 100644 index 0000000..bd7d925 Binary files /dev/null and b/android/assets/ui/x1.5/button_up.png differ diff --git a/android/assets/ui/x1.5/cancel.png b/android/assets/ui/x1.5/cancel.png new file mode 100644 index 0000000..249eb5a Binary files /dev/null and b/android/assets/ui/x1.5/cancel.png differ diff --git a/android/assets/ui/x1.5/credits.png b/android/assets/ui/x1.5/credits.png new file mode 100644 index 0000000..acfd45f Binary files /dev/null and b/android/assets/ui/x1.5/credits.png differ diff --git a/android/assets/ui/x1.5/cup.png b/android/assets/ui/x1.5/cup.png new file mode 100644 index 0000000..11910fd Binary files /dev/null and b/android/assets/ui/x1.5/cup.png differ diff --git a/android/assets/ui/x1.5/home.png b/android/assets/ui/x1.5/home.png new file mode 100644 index 0000000..0c168b8 Binary files /dev/null and b/android/assets/ui/x1.5/home.png differ diff --git a/android/assets/ui/x1.5/issues.png b/android/assets/ui/x1.5/issues.png new file mode 100644 index 0000000..fb2e1e8 Binary files /dev/null and b/android/assets/ui/x1.5/issues.png differ diff --git a/android/assets/ui/x1.5/ok.png b/android/assets/ui/x1.5/ok.png new file mode 100644 index 0000000..5ebdbdf Binary files /dev/null and b/android/assets/ui/x1.5/ok.png differ diff --git a/android/assets/ui/x1.5/palette.png b/android/assets/ui/x1.5/palette.png new file mode 100644 index 0000000..04160d9 Binary files /dev/null and b/android/assets/ui/x1.5/palette.png differ diff --git a/android/assets/ui/x1.5/play.png b/android/assets/ui/x1.5/play.png new file mode 100644 index 0000000..4577184 Binary files /dev/null and b/android/assets/ui/x1.5/play.png differ diff --git a/android/assets/ui/x1.5/play_saved.png b/android/assets/ui/x1.5/play_saved.png new file mode 100644 index 0000000..1eb7f43 Binary files /dev/null and b/android/assets/ui/x1.5/play_saved.png differ diff --git a/android/assets/ui/x1.5/replay.png b/android/assets/ui/x1.5/replay.png new file mode 100644 index 0000000..aab2ddc Binary files /dev/null and b/android/assets/ui/x1.5/replay.png differ diff --git a/android/assets/ui/x1.5/share.png b/android/assets/ui/x1.5/share.png new file mode 100644 index 0000000..a631215 Binary files /dev/null and b/android/assets/ui/x1.5/share.png differ diff --git a/android/assets/ui/x1.5/snap_off.png b/android/assets/ui/x1.5/snap_off.png new file mode 100644 index 0000000..28f49df Binary files /dev/null and b/android/assets/ui/x1.5/snap_off.png differ diff --git a/android/assets/ui/x1.5/snap_on.png b/android/assets/ui/x1.5/snap_on.png new file mode 100644 index 0000000..a8a5f98 Binary files /dev/null and b/android/assets/ui/x1.5/snap_on.png differ diff --git a/android/assets/ui/x1.5/sound_off.png b/android/assets/ui/x1.5/sound_off.png new file mode 100644 index 0000000..ea76a37 Binary files /dev/null and b/android/assets/ui/x1.5/sound_off.png differ diff --git a/android/assets/ui/x1.5/sound_on.png b/android/assets/ui/x1.5/sound_on.png new file mode 100644 index 0000000..2df04eb Binary files /dev/null and b/android/assets/ui/x1.5/sound_on.png differ diff --git a/android/assets/ui/x1.5/star.png b/android/assets/ui/x1.5/star.png new file mode 100644 index 0000000..ec99e16 Binary files /dev/null and b/android/assets/ui/x1.5/star.png differ diff --git a/android/assets/ui/x1.5/stats.png b/android/assets/ui/x1.5/stats.png new file mode 100644 index 0000000..86451e5 Binary files /dev/null and b/android/assets/ui/x1.5/stats.png differ diff --git a/android/assets/ui/x1.5/stopwatch.png b/android/assets/ui/x1.5/stopwatch.png new file mode 100644 index 0000000..c6e512d Binary files /dev/null and b/android/assets/ui/x1.5/stopwatch.png differ diff --git a/android/assets/ui/x1.5/web.png b/android/assets/ui/x1.5/web.png new file mode 100644 index 0000000..64e27ac Binary files /dev/null and b/android/assets/ui/x1.5/web.png differ diff --git a/android/assets/ui/x2.0/back.png b/android/assets/ui/x2.0/back.png new file mode 100644 index 0000000..790e819 Binary files /dev/null and b/android/assets/ui/x2.0/back.png differ diff --git a/android/assets/ui/x2.0/button_down.png b/android/assets/ui/x2.0/button_down.png new file mode 100644 index 0000000..c74c684 Binary files /dev/null and b/android/assets/ui/x2.0/button_down.png differ diff --git a/android/assets/ui/x2.0/button_up.png b/android/assets/ui/x2.0/button_up.png new file mode 100644 index 0000000..03865f3 Binary files /dev/null and b/android/assets/ui/x2.0/button_up.png differ diff --git a/android/assets/ui/x2.0/cancel.png b/android/assets/ui/x2.0/cancel.png new file mode 100644 index 0000000..33e6805 Binary files /dev/null and b/android/assets/ui/x2.0/cancel.png differ diff --git a/android/assets/ui/x2.0/credits.png b/android/assets/ui/x2.0/credits.png new file mode 100644 index 0000000..52c2b9d Binary files /dev/null and b/android/assets/ui/x2.0/credits.png differ diff --git a/android/assets/ui/x2.0/cup.png b/android/assets/ui/x2.0/cup.png new file mode 100644 index 0000000..f77c2eb Binary files /dev/null and b/android/assets/ui/x2.0/cup.png differ diff --git a/android/assets/ui/x2.0/home.png b/android/assets/ui/x2.0/home.png new file mode 100644 index 0000000..8969342 Binary files /dev/null and b/android/assets/ui/x2.0/home.png differ diff --git a/android/assets/ui/x2.0/issues.png b/android/assets/ui/x2.0/issues.png new file mode 100644 index 0000000..93583ab Binary files /dev/null and b/android/assets/ui/x2.0/issues.png differ diff --git a/android/assets/ui/x2.0/ok.png b/android/assets/ui/x2.0/ok.png new file mode 100644 index 0000000..19e0c76 Binary files /dev/null and b/android/assets/ui/x2.0/ok.png differ diff --git a/android/assets/ui/x2.0/palette.png b/android/assets/ui/x2.0/palette.png new file mode 100644 index 0000000..5828295 Binary files /dev/null and b/android/assets/ui/x2.0/palette.png differ diff --git a/android/assets/ui/x2.0/play.png b/android/assets/ui/x2.0/play.png new file mode 100644 index 0000000..7ce1f05 Binary files /dev/null and b/android/assets/ui/x2.0/play.png differ diff --git a/android/assets/ui/x2.0/play_saved.png b/android/assets/ui/x2.0/play_saved.png new file mode 100644 index 0000000..536c918 Binary files /dev/null and b/android/assets/ui/x2.0/play_saved.png differ diff --git a/android/assets/ui/x2.0/replay.png b/android/assets/ui/x2.0/replay.png new file mode 100644 index 0000000..9312946 Binary files /dev/null and b/android/assets/ui/x2.0/replay.png differ diff --git a/android/assets/ui/x2.0/share.png b/android/assets/ui/x2.0/share.png new file mode 100644 index 0000000..f3985f9 Binary files /dev/null and b/android/assets/ui/x2.0/share.png differ diff --git a/android/assets/ui/x2.0/snap_off.png b/android/assets/ui/x2.0/snap_off.png new file mode 100644 index 0000000..f2f4a33 Binary files /dev/null and b/android/assets/ui/x2.0/snap_off.png differ diff --git a/android/assets/ui/x2.0/snap_on.png b/android/assets/ui/x2.0/snap_on.png new file mode 100644 index 0000000..7051cca Binary files /dev/null and b/android/assets/ui/x2.0/snap_on.png differ diff --git a/android/assets/ui/x2.0/sound_off.png b/android/assets/ui/x2.0/sound_off.png new file mode 100644 index 0000000..9a86064 Binary files /dev/null and b/android/assets/ui/x2.0/sound_off.png differ diff --git a/android/assets/ui/x2.0/sound_on.png b/android/assets/ui/x2.0/sound_on.png new file mode 100644 index 0000000..efbc86a Binary files /dev/null and b/android/assets/ui/x2.0/sound_on.png differ diff --git a/android/assets/ui/x2.0/star.png b/android/assets/ui/x2.0/star.png new file mode 100644 index 0000000..7f19749 Binary files /dev/null and b/android/assets/ui/x2.0/star.png differ diff --git a/android/assets/ui/x2.0/stats.png b/android/assets/ui/x2.0/stats.png new file mode 100644 index 0000000..c7d118d Binary files /dev/null and b/android/assets/ui/x2.0/stats.png differ diff --git a/android/assets/ui/x2.0/stopwatch.png b/android/assets/ui/x2.0/stopwatch.png new file mode 100644 index 0000000..48f1521 Binary files /dev/null and b/android/assets/ui/x2.0/stopwatch.png differ diff --git a/android/assets/ui/x2.0/web.png b/android/assets/ui/x2.0/web.png new file mode 100644 index 0000000..2f14369 Binary files /dev/null and b/android/assets/ui/x2.0/web.png differ diff --git a/android/assets/ui/x4.0/back.png b/android/assets/ui/x4.0/back.png new file mode 100644 index 0000000..7376534 Binary files /dev/null and b/android/assets/ui/x4.0/back.png differ diff --git a/android/assets/ui/x4.0/button_down.png b/android/assets/ui/x4.0/button_down.png new file mode 100644 index 0000000..b3f81e5 Binary files /dev/null and b/android/assets/ui/x4.0/button_down.png differ diff --git a/android/assets/ui/x4.0/button_up.png b/android/assets/ui/x4.0/button_up.png new file mode 100644 index 0000000..fbfacee Binary files /dev/null and b/android/assets/ui/x4.0/button_up.png differ diff --git a/android/assets/ui/x4.0/cancel.png b/android/assets/ui/x4.0/cancel.png new file mode 100644 index 0000000..786c73e Binary files /dev/null and b/android/assets/ui/x4.0/cancel.png differ diff --git a/android/assets/ui/x4.0/credits.png b/android/assets/ui/x4.0/credits.png new file mode 100644 index 0000000..75fcd85 Binary files /dev/null and b/android/assets/ui/x4.0/credits.png differ diff --git a/android/assets/ui/x4.0/cup.png b/android/assets/ui/x4.0/cup.png new file mode 100644 index 0000000..956aaf0 Binary files /dev/null and b/android/assets/ui/x4.0/cup.png differ diff --git a/android/assets/ui/x4.0/home.png b/android/assets/ui/x4.0/home.png new file mode 100644 index 0000000..2388327 Binary files /dev/null and b/android/assets/ui/x4.0/home.png differ diff --git a/android/assets/ui/x4.0/issues.png b/android/assets/ui/x4.0/issues.png new file mode 100644 index 0000000..e7cf026 Binary files /dev/null and b/android/assets/ui/x4.0/issues.png differ diff --git a/android/assets/ui/x4.0/ok.png b/android/assets/ui/x4.0/ok.png new file mode 100644 index 0000000..b9b92ef Binary files /dev/null and b/android/assets/ui/x4.0/ok.png differ diff --git a/android/assets/ui/x4.0/palette.png b/android/assets/ui/x4.0/palette.png new file mode 100644 index 0000000..ec5e56e Binary files /dev/null and b/android/assets/ui/x4.0/palette.png differ diff --git a/android/assets/ui/x4.0/play.png b/android/assets/ui/x4.0/play.png new file mode 100644 index 0000000..c4ea3c0 Binary files /dev/null and b/android/assets/ui/x4.0/play.png differ diff --git a/android/assets/ui/x4.0/play_saved.png b/android/assets/ui/x4.0/play_saved.png new file mode 100644 index 0000000..c3aa0e6 Binary files /dev/null and b/android/assets/ui/x4.0/play_saved.png differ diff --git a/android/assets/ui/x4.0/replay.png b/android/assets/ui/x4.0/replay.png new file mode 100644 index 0000000..5588181 Binary files /dev/null and b/android/assets/ui/x4.0/replay.png differ diff --git a/android/assets/ui/x4.0/share.png b/android/assets/ui/x4.0/share.png new file mode 100644 index 0000000..85cc41d Binary files /dev/null and b/android/assets/ui/x4.0/share.png differ diff --git a/android/assets/ui/x4.0/snap_off.png b/android/assets/ui/x4.0/snap_off.png new file mode 100644 index 0000000..32142f0 Binary files /dev/null and b/android/assets/ui/x4.0/snap_off.png differ diff --git a/android/assets/ui/x4.0/snap_on.png b/android/assets/ui/x4.0/snap_on.png new file mode 100644 index 0000000..5180a5c Binary files /dev/null and b/android/assets/ui/x4.0/snap_on.png differ diff --git a/android/assets/ui/x4.0/sound_off.png b/android/assets/ui/x4.0/sound_off.png new file mode 100644 index 0000000..e3bc002 Binary files /dev/null and b/android/assets/ui/x4.0/sound_off.png differ diff --git a/android/assets/ui/x4.0/sound_on.png b/android/assets/ui/x4.0/sound_on.png new file mode 100644 index 0000000..6777e9d Binary files /dev/null and b/android/assets/ui/x4.0/sound_on.png differ diff --git a/android/assets/ui/x4.0/star.png b/android/assets/ui/x4.0/star.png new file mode 100644 index 0000000..3f691a0 Binary files /dev/null and b/android/assets/ui/x4.0/star.png differ diff --git a/android/assets/ui/x4.0/stats.png b/android/assets/ui/x4.0/stats.png new file mode 100644 index 0000000..8b22916 Binary files /dev/null and b/android/assets/ui/x4.0/stats.png differ diff --git a/android/assets/ui/x4.0/stopwatch.png b/android/assets/ui/x4.0/stopwatch.png new file mode 100644 index 0000000..18cac2b Binary files /dev/null and b/android/assets/ui/x4.0/stopwatch.png differ diff --git a/android/assets/ui/x4.0/web.png b/android/assets/ui/x4.0/web.png new file mode 100644 index 0000000..7e995c3 Binary files /dev/null and b/android/assets/ui/x4.0/web.png differ diff --git a/core/src/io/github/lonamiwebs/klooni/Klooni.java b/core/src/io/github/lonamiwebs/klooni/Klooni.java index 33e1f3d..3b844e9 100644 --- a/core/src/io/github/lonamiwebs/klooni/Klooni.java +++ b/core/src/io/github/lonamiwebs/klooni/Klooni.java @@ -25,6 +25,9 @@ public class Klooni extends Game { private final static float SCORE_TO_MONEY = 1f / 100f; + public static final int GAME_HEIGHT = 680; + public static final int GAME_WIDTH = 408; + //endregion //region Creation @@ -34,38 +37,8 @@ public class Klooni extends Game { onDesktop = Gdx.app.getType().equals(Application.ApplicationType.Desktop); prefs = Gdx.app.getPreferences("io.github.lonamiwebs.klooni.game"); - // TODO Better way to have this skin somewhere - // Gotta create that darn .jsonā€¦! - skin = new Skin(Gdx.files.internal("skin/uiskin.json")); - - skin.add("button_up", new NinePatch(new Texture( - Gdx.files.internal("ui/button_up.png")), 28, 28, 28, 28)); - - skin.add("button_down", new NinePatch(new Texture( - Gdx.files.internal("ui/button_down.png")), 28, 28, 28, 28)); - - skin.add("play_texture", new Texture(Gdx.files.internal("ui/play.png"))); - skin.add("play_saved_texture", new Texture(Gdx.files.internal("ui/play_saved.png"))); - skin.add("star_texture", new Texture(Gdx.files.internal("ui/star.png"))); - skin.add("stopwatch_texture", new Texture(Gdx.files.internal("ui/stopwatch.png"))); - skin.add("palette_texture", new Texture(Gdx.files.internal("ui/palette.png"))); - skin.add("home_texture", new Texture(Gdx.files.internal("ui/home.png"))); - skin.add("replay_texture", new Texture(Gdx.files.internal("ui/replay.png"))); - skin.add("share_texture", new Texture(Gdx.files.internal("ui/share.png"))); - skin.add("sound_on_texture", new Texture(Gdx.files.internal("ui/sound_on.png"))); - skin.add("sound_off_texture", new Texture(Gdx.files.internal("ui/sound_off.png"))); - skin.add("snap_on_texture", new Texture(Gdx.files.internal("ui/snap_on.png"))); - skin.add("snap_off_texture", new Texture(Gdx.files.internal("ui/snap_off.png"))); - skin.add("issues_texture", new Texture(Gdx.files.internal("ui/issues.png"))); - skin.add("credits_texture", new Texture(Gdx.files.internal("ui/credits.png"))); - skin.add("web_texture", new Texture(Gdx.files.internal("ui/web.png"))); - skin.add("back_texture", new Texture(Gdx.files.internal("ui/back.png"))); - skin.add("ok_texture", new Texture(Gdx.files.internal("ui/ok.png"))); - skin.add("cancel_texture", new Texture(Gdx.files.internal("ui/cancel.png"))); - - skin.add("font", new BitmapFont(Gdx.files.internal("font/geosans-light.fnt"))); - skin.add("font_small", new BitmapFont(Gdx.files.internal("font/geosans-light32.fnt"))); - skin.add("font_bonus", new BitmapFont(Gdx.files.internal("font/the-next-font.fnt"))); + // Load the best match for the skin (depending on the device screen dimensions) + skin = SkinLoader.loadSkin(); // Use only one instance for the theme, so anyone using it uses the most up-to-date Theme.skin = skin; // Not the best idea diff --git a/core/src/io/github/lonamiwebs/klooni/SkinLoader.java b/core/src/io/github/lonamiwebs/klooni/SkinLoader.java new file mode 100644 index 0000000..aae42aa --- /dev/null +++ b/core/src/io/github/lonamiwebs/klooni/SkinLoader.java @@ -0,0 +1,65 @@ +package io.github.lonamiwebs.klooni; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.BitmapFont; +import com.badlogic.gdx.graphics.g2d.NinePatch; +import com.badlogic.gdx.scenes.scene2d.ui.Skin; + +public class SkinLoader { + private static float[] multipliers = {0.75f, 1.0f, 1.25f, 1.5f, 2.0f, 4.0f}; + private static String[] ids = { + "play", "play_saved", "star", "stopwatch", "palette", "home", "replay", + "share", "sound_on", "sound_off", "snap_on", "snap_off", "issues", "credits", + "web", "back", "ok", "cancel" + }; + + private static float bestMultiplier; + + static { + // Use the height to determine the best match + // We cannot use a size which is over the device height, + // so use the closest smaller one + int i; + float desired = (float)Gdx.graphics.getHeight() / (float)Klooni.GAME_HEIGHT; + for (i = multipliers.length - 1; i > 0; --i) { + if (multipliers[i] < desired) + break; + } + + // Now that we have the right multiplier, load the skin + Gdx.app.log("SkinLoader", "Using assets multiplier x" + multipliers[i]); + bestMultiplier = multipliers[i]; + } + + static Skin loadSkin() { + final String folder = "ui/x" + bestMultiplier + "/"; + + // Base skin + Skin skin = new Skin(Gdx.files.internal("skin/uiskin.json")); + + // Nine patches + final int border = (int)(28 * bestMultiplier); + skin.add("button_up", new NinePatch(new Texture( + Gdx.files.internal(folder + "button_up.png")), border, border, border, border)); + + skin.add("button_down", new NinePatch(new Texture( + Gdx.files.internal(folder + "button_down.png")), border, border, border, border)); + + for (String id : ids) { + skin.add(id + "_texture", new Texture(Gdx.files.internal(folder + id + ".png"))); + } + + // TODO Best fonts too! + skin.add("font", new BitmapFont(Gdx.files.internal("font/geosans-light.fnt"))); + skin.add("font_small", new BitmapFont(Gdx.files.internal("font/geosans-light32.fnt"))); + skin.add("font_bonus", new BitmapFont(Gdx.files.internal("font/the-next-font.fnt"))); + + return skin; + } + + public static Texture loadPng(String name) { + final String filename = "ui/x" + bestMultiplier + "/" + name + ".png"; + return new Texture(Gdx.files.internal(filename)); + } +} diff --git a/core/src/io/github/lonamiwebs/klooni/game/BaseScorer.java b/core/src/io/github/lonamiwebs/klooni/game/BaseScorer.java index 909a729..e8d9900 100644 --- a/core/src/io/github/lonamiwebs/klooni/game/BaseScorer.java +++ b/core/src/io/github/lonamiwebs/klooni/game/BaseScorer.java @@ -11,6 +11,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.Label; import com.badlogic.gdx.utils.Align; import io.github.lonamiwebs.klooni.Klooni; +import io.github.lonamiwebs.klooni.SkinLoader; import io.github.lonamiwebs.klooni.serializer.BinSerializable; public abstract class BaseScorer implements BinSerializable { @@ -36,7 +37,7 @@ public abstract class BaseScorer implements BinSerializable { // The board size is required when calculating the score BaseScorer(final Klooni game, GameLayout layout, int highScore) { - cupTexture = new Texture(Gdx.files.internal("ui/cup.png")); + cupTexture = SkinLoader.loadPng("cup"); cupColor = Klooni.theme.currentScore.cpy(); cupArea = new Rectangle(); diff --git a/desktop/src/io/github/lonamiwebs/klooni/desktop/DesktopLauncher.java b/desktop/src/io/github/lonamiwebs/klooni/desktop/DesktopLauncher.java index c645122..dbd83d5 100644 --- a/desktop/src/io/github/lonamiwebs/klooni/desktop/DesktopLauncher.java +++ b/desktop/src/io/github/lonamiwebs/klooni/desktop/DesktopLauncher.java @@ -9,8 +9,8 @@ public class DesktopLauncher { public static void main (String[] arg) { LwjglApplicationConfiguration config = new LwjglApplicationConfiguration(); config.title = "Klooni 1010!"; - config.width = 408; - config.height = 680; + config.width = Klooni.GAME_WIDTH; + config.height = Klooni.GAME_HEIGHT; config.addIcon("ic_launcher/icon128.png", Files.FileType.Internal); config.addIcon("ic_launcher/icon32.png", Files.FileType.Internal); config.addIcon("ic_launcher/icon16.png", Files.FileType.Internal); diff --git a/html/src/io/github/lonamiwebs/klooni/client/HtmlLauncher.java b/html/src/io/github/lonamiwebs/klooni/client/HtmlLauncher.java index e6eb718..2229472 100644 --- a/html/src/io/github/lonamiwebs/klooni/client/HtmlLauncher.java +++ b/html/src/io/github/lonamiwebs/klooni/client/HtmlLauncher.java @@ -1,19 +1,19 @@ -package io.github.lonamiwebs.klooni.client; - -import com.badlogic.gdx.ApplicationListener; -import com.badlogic.gdx.backends.gwt.GwtApplication; -import com.badlogic.gdx.backends.gwt.GwtApplicationConfiguration; -import io.github.lonamiwebs.klooni.Klooni; - -public class HtmlLauncher extends GwtApplication { - - @Override - public GwtApplicationConfiguration getConfig () { - return new GwtApplicationConfiguration(408, 680); - } - - @Override - public ApplicationListener createApplicationListener () { - return new Klooni(); - } -} +package io.github.lonamiwebs.klooni.client; + +import com.badlogic.gdx.ApplicationListener; +import com.badlogic.gdx.backends.gwt.GwtApplication; +import com.badlogic.gdx.backends.gwt.GwtApplicationConfiguration; +import io.github.lonamiwebs.klooni.Klooni; + +public class HtmlLauncher extends GwtApplication { + + @Override + public GwtApplicationConfiguration getConfig () { + return new GwtApplicationConfiguration(Klooni.GAME_WIDTH, Klooni.GAME_HEIGHT); + } + + @Override + public ApplicationListener createApplicationListener () { + return new Klooni(); + } +}