diff --git a/android/assets/text/screen/createuser/form/resource_cs.properties b/android/assets/text/screen/createuser/form/resource_cs.properties new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/android/assets/text/screen/createuser/form/resource_sk.properties b/android/assets/text/screen/createuser/form/resource_sk.properties new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/android/assets/text/screen/createuser/panorama/resource_cs.properties b/android/assets/text/screen/createuser/panorama/resource_cs.properties new file mode 100644 index 0000000000000000000000000000000000000000..c5625f3f7e1d57237348075bd4fa7c6a0a1aa0f2 --- /dev/null +++ b/android/assets/text/screen/createuser/panorama/resource_cs.properties @@ -0,0 +1,4 @@ +createuser_detective_1=Dialog 1 +createuser_detective_2=Dialog 2 +createuser_detective_3=Dialog 3 +createuser_detective_4=Dialog 4 diff --git a/android/assets/text/screen/createuser/panorama/resource_sk.properties b/android/assets/text/screen/createuser/panorama/resource_sk.properties new file mode 100644 index 0000000000000000000000000000000000000000..1bd67ca1ca8e6292f03b20f70325ab52136fadd4 --- /dev/null +++ b/android/assets/text/screen/createuser/panorama/resource_sk.properties @@ -0,0 +1,4 @@ +createuser_detective_1=Dialog 1 SK +createuser_detective_2=Dialog 2 SK +createuser_detective_3=Dialog 3 SK +createuser_detective_4=Dialog 4 SK diff --git a/core/assets/common/screen/createuser/form/gfx/avatar/0.jpg b/core/assets/common/screen/createuser/form/gfx/avatar/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..75da7bcf703c1e58f178a7de987cf643a78903fe Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/avatar/0.jpg differ diff --git a/core/assets/common/screen/createuser/form/gfx/avatar/1.jpg b/core/assets/common/screen/createuser/form/gfx/avatar/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3409e14994c0fc23a51d4a6d4af4cede4356d5fc Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/avatar/1.jpg differ diff --git a/core/assets/common/screen/createuser/form/gfx/avatar/2.jpg b/core/assets/common/screen/createuser/form/gfx/avatar/2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3cdfe5698f3f90d7bc7bd466b06eff664b46dce3 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/avatar/2.jpg differ diff --git a/core/assets/common/screen/createuser/form/gfx/avatar/3.jpg b/core/assets/common/screen/createuser/form/gfx/avatar/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e68c84ab3231d758071a8b61a98bfa8af020c4de Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/avatar/3.jpg differ diff --git a/core/assets/common/screen/createuser/form/gfx/avatar/4.jpg b/core/assets/common/screen/createuser/form/gfx/avatar/4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..df34c7f0eb54c1d7b60e70253025371638b47fe4 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/avatar/4.jpg differ diff --git a/core/assets/common/screen/createuser/form/gfx/avatar/5.jpg b/core/assets/common/screen/createuser/form/gfx/avatar/5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..11d27fdf3da7466a3292dae323a1d62c115c1516 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/avatar/5.jpg differ diff --git a/core/assets/common/screen/createuser/form/gfx/avatar/6.jpg b/core/assets/common/screen/createuser/form/gfx/avatar/6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..49fd4ee5d7b9e473370a55b1907340245c0e931a Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/avatar/6.jpg differ diff --git a/core/assets/common/screen/createuser/form/gfx/avatar/7.jpg b/core/assets/common/screen/createuser/form/gfx/avatar/7.jpg new file mode 100644 index 0000000000000000000000000000000000000000..92780b09bae2bab38edff11674a9cf45701be676 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/avatar/7.jpg differ diff --git a/core/assets/common/screen/createuser/form/gfx/avatar/8.jpg b/core/assets/common/screen/createuser/form/gfx/avatar/8.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3ab38fc4261a91c08124e19571bbc35a36998e79 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/avatar/8.jpg differ diff --git a/core/assets/common/screen/createuser/form/gfx/avatar/film_inside.png b/core/assets/common/screen/createuser/form/gfx/avatar/film_inside.png new file mode 100644 index 0000000000000000000000000000000000000000..f9b8702977168618df9f05a03f081e1716a8941b Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/avatar/film_inside.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/avatar/film_outerline.png b/core/assets/common/screen/createuser/form/gfx/avatar/film_outerline.png new file mode 100644 index 0000000000000000000000000000000000000000..59c1eeb589275f299c5c44fc03102503206d284c Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/avatar/film_outerline.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/avatar/overlay.png b/core/assets/common/screen/createuser/form/gfx/avatar/overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..d8fc30a3129c1ed8bf6f5c1ffb25a031c3e894ea Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/avatar/overlay.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/background.png b/core/assets/common/screen/createuser/form/gfx/background.png new file mode 100644 index 0000000000000000000000000000000000000000..739d3949bf7550fa62fad0619a5eec42dd55e930 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/background.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/badge.png b/core/assets/common/screen/createuser/form/gfx/badge.png new file mode 100644 index 0000000000000000000000000000000000000000..45ad4492f63ba38d376310487e4469c7d08f4c20 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/badge.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/border.png b/core/assets/common/screen/createuser/form/gfx/border.png new file mode 100644 index 0000000000000000000000000000000000000000..7c5b7d9ba407faf4c3b125aff5adc186131df15b Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/border.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/button_minus.png b/core/assets/common/screen/createuser/form/gfx/button_minus.png new file mode 100644 index 0000000000000000000000000000000000000000..11fb998c172a3a96480fa7c6106e64e9fd0d6cbe Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/button_minus.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/button_minus_pressed.png b/core/assets/common/screen/createuser/form/gfx/button_minus_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..d923eb65e5ae538561aa0c9b0a868cd00ad3d3d5 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/button_minus_pressed.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/button_plus.png b/core/assets/common/screen/createuser/form/gfx/button_plus.png new file mode 100644 index 0000000000000000000000000000000000000000..9cd5b655566e9e165a5778eca4f1f301a9ccf41d Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/button_plus.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/button_plus_pressed.png b/core/assets/common/screen/createuser/form/gfx/button_plus_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..669037737c89272010be6a9f50707b04b14b623b Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/button_plus_pressed.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/dialog_background.9.png b/core/assets/common/screen/createuser/form/gfx/dialog_background.9.png new file mode 100644 index 0000000000000000000000000000000000000000..4dd5f9881af1d77adf6af2b9ba0211f8aaf5888d Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/dialog_background.9.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/error.png b/core/assets/common/screen/createuser/form/gfx/error.png new file mode 100644 index 0000000000000000000000000000000000000000..9006e9ba813182e8074a6362a6fbf689802eb006 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/error.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/helpbubble_left.9.png b/core/assets/common/screen/createuser/form/gfx/helpbubble_left.9.png new file mode 100644 index 0000000000000000000000000000000000000000..c45eaeabca3ff4f6f3e114b16f2852e83e9f7079 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/helpbubble_left.9.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/helpbubble_straight.9.png b/core/assets/common/screen/createuser/form/gfx/helpbubble_straight.9.png new file mode 100644 index 0000000000000000000000000000000000000000..ab0f4e1cfe93736a032385ffa0fd756a485decbb Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/helpbubble_straight.9.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/ink.png b/core/assets/common/screen/createuser/form/gfx/ink.png new file mode 100644 index 0000000000000000000000000000000000000000..13ce5d7757043e0e53be948d94a2123ecccc1dec Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/ink.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/inkpad.png b/core/assets/common/screen/createuser/form/gfx/inkpad.png new file mode 100644 index 0000000000000000000000000000000000000000..eed2a9a6bcb632ada3c70a7a6cead0a4b0f33963 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/inkpad.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/mugshotframe.png b/core/assets/common/screen/createuser/form/gfx/mugshotframe.png new file mode 100644 index 0000000000000000000000000000000000000000..525b4cac6a429886d170ab197bdd2f18515f4c22 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/mugshotframe.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/pencil.png b/core/assets/common/screen/createuser/form/gfx/pencil.png new file mode 100644 index 0000000000000000000000000000000000000000..5460327ad85d9900e87cedb4e658964106d5e1ee Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/pencil.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/pencil_dropped.png b/core/assets/common/screen/createuser/form/gfx/pencil_dropped.png new file mode 100644 index 0000000000000000000000000000000000000000..cab6f998fe0687c7f04f48cf6a42a42356ac7eee Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/pencil_dropped.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/pencil_dropped_selected.png b/core/assets/common/screen/createuser/form/gfx/pencil_dropped_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..88b505ad15afada3ad5f464bf1b2f993c952d25c Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/pencil_dropped_selected.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/pencil_grabbed.png b/core/assets/common/screen/createuser/form/gfx/pencil_grabbed.png new file mode 100644 index 0000000000000000000000000000000000000000..67167e89250334ac98f4fc4baa679a56ae84d220 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/pencil_grabbed.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/sex_female.png b/core/assets/common/screen/createuser/form/gfx/sex_female.png new file mode 100644 index 0000000000000000000000000000000000000000..40ed86d45c1ccdeb53068afffc147b10d4fefb14 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/sex_female.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/sex_male.png b/core/assets/common/screen/createuser/form/gfx/sex_male.png new file mode 100644 index 0000000000000000000000000000000000000000..2640eb2ac943b163fef8e8f70fe1a2f221d5f9a7 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/sex_male.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/signature_background.9.png b/core/assets/common/screen/createuser/form/gfx/signature_background.9.png new file mode 100644 index 0000000000000000000000000000000000000000..34a8684782808b80af8fd556e3b6dd0b8eb73a19 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/signature_background.9.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/stamp_left_dropped.png b/core/assets/common/screen/createuser/form/gfx/stamp_left_dropped.png new file mode 100644 index 0000000000000000000000000000000000000000..4a9f24702ed6332c89da92348496173dec561bc0 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/stamp_left_dropped.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/stamp_left_grabbed.png b/core/assets/common/screen/createuser/form/gfx/stamp_left_grabbed.png new file mode 100644 index 0000000000000000000000000000000000000000..6dc7f8c326d1341c5c9e811c3d1a68fa70616c95 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/stamp_left_grabbed.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/stamp_left_selected.png b/core/assets/common/screen/createuser/form/gfx/stamp_left_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..7e285f93da545c703e1d12011c0970726d07af6a Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/stamp_left_selected.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/stamp_middle_dropped.png b/core/assets/common/screen/createuser/form/gfx/stamp_middle_dropped.png new file mode 100644 index 0000000000000000000000000000000000000000..39a6962e70210e5228dfe9d518467695af0f3a4c Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/stamp_middle_dropped.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/stamp_middle_grabbed.png b/core/assets/common/screen/createuser/form/gfx/stamp_middle_grabbed.png new file mode 100644 index 0000000000000000000000000000000000000000..765902e61bd12e4af761d0094ce80c49596f0533 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/stamp_middle_grabbed.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/stamp_right_dropped.png b/core/assets/common/screen/createuser/form/gfx/stamp_right_dropped.png new file mode 100644 index 0000000000000000000000000000000000000000..8f28651c6f40775a56b7af8e7f5cd2aa8b883896 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/stamp_right_dropped.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/stamp_right_grabbed.png b/core/assets/common/screen/createuser/form/gfx/stamp_right_grabbed.png new file mode 100644 index 0000000000000000000000000000000000000000..1c90a45d977d7e251bc528af91e635da0e180706 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/stamp_right_grabbed.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/switch_background.png b/core/assets/common/screen/createuser/form/gfx/switch_background.png new file mode 100644 index 0000000000000000000000000000000000000000..bdabc002a724e552c2f4589a48cb427d324291da Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/switch_background.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/switch_center.png b/core/assets/common/screen/createuser/form/gfx/switch_center.png new file mode 100644 index 0000000000000000000000000000000000000000..256fbadf858b3ff75d89f613a999690097da942e Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/switch_center.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/switch_left.png b/core/assets/common/screen/createuser/form/gfx/switch_left.png new file mode 100644 index 0000000000000000000000000000000000000000..8216aa6e7239296e511c20368cd417e86bb9a7df Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/switch_left.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/switch_right.png b/core/assets/common/screen/createuser/form/gfx/switch_right.png new file mode 100644 index 0000000000000000000000000000000000000000..a4277b77893113429fb7c0fb9c073d0c8cb2241a Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/switch_right.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/table.png b/core/assets/common/screen/createuser/form/gfx/table.png new file mode 100644 index 0000000000000000000000000000000000000000..c2b0e26c037723806231dc09d8b571f64648f0c9 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/table.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/texfield_signature.png b/core/assets/common/screen/createuser/form/gfx/texfield_signature.png new file mode 100644 index 0000000000000000000000000000000000000000..a1f3db7e0973c2588a89a6fbfbde0511adeea54a Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/texfield_signature.png differ diff --git a/core/assets/common/screen/createuser/form/gfx/textfield_covername.png b/core/assets/common/screen/createuser/form/gfx/textfield_covername.png new file mode 100644 index 0000000000000000000000000000000000000000..f67dfed4c1dba619ba2dfcbb296147f9e3f0e287 Binary files /dev/null and b/core/assets/common/screen/createuser/form/gfx/textfield_covername.png differ diff --git a/core/assets/common/screen/createuser/form/mfx/profil_foto.mp3 b/core/assets/common/screen/createuser/form/mfx/profil_foto.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..5b965b8577412471de14be3cf37c66b7862abe43 Binary files /dev/null and b/core/assets/common/screen/createuser/form/mfx/profil_foto.mp3 differ diff --git a/core/assets/common/screen/createuser/form/mfx/profil_jmeno.mp3 b/core/assets/common/screen/createuser/form/mfx/profil_jmeno.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..d5231dd5e8af6c032e83dd989c42d63703864b47 Binary files /dev/null and b/core/assets/common/screen/createuser/form/mfx/profil_jmeno.mp3 differ diff --git a/core/assets/common/screen/createuser/form/mfx/profil_klukholka.mp3 b/core/assets/common/screen/createuser/form/mfx/profil_klukholka.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..819eb8ac56603007ee460e5d24a38bc5f0231b48 Binary files /dev/null and b/core/assets/common/screen/createuser/form/mfx/profil_klukholka.mp3 differ diff --git a/core/assets/common/screen/createuser/form/mfx/profil_podpis_pero.mp3 b/core/assets/common/screen/createuser/form/mfx/profil_podpis_pero.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..d0a6e84a17af4bd866abfd8ea3a645acae261bc6 Binary files /dev/null and b/core/assets/common/screen/createuser/form/mfx/profil_podpis_pero.mp3 differ diff --git a/core/assets/common/screen/createuser/form/mfx/profil_podpis_prst.mp3 b/core/assets/common/screen/createuser/form/mfx/profil_podpis_prst.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..754ca5a15f908d1db0b45082c6faebcc70b68cf4 Binary files /dev/null and b/core/assets/common/screen/createuser/form/mfx/profil_podpis_prst.mp3 differ diff --git a/core/assets/common/screen/createuser/form/mfx/profil_razitko.mp3 b/core/assets/common/screen/createuser/form/mfx/profil_razitko.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..fdebe5c86e2437b6cb1408a9a94e381472ff14f6 Binary files /dev/null and b/core/assets/common/screen/createuser/form/mfx/profil_razitko.mp3 differ diff --git a/core/assets/common/screen/createuser/form/mfx/profil_vek.mp3 b/core/assets/common/screen/createuser/form/mfx/profil_vek.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..e206f076e0c54095b2f30e39c47fc0914e610d5d Binary files /dev/null and b/core/assets/common/screen/createuser/form/mfx/profil_vek.mp3 differ diff --git a/core/assets/common/screen/createuser/form/sfx/cesta_do_kancelare.mp3 b/core/assets/common/screen/createuser/form/sfx/cesta_do_kancelare.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..c74d01aa68cf5381662878db1a1307fa3b89868f Binary files /dev/null and b/core/assets/common/screen/createuser/form/sfx/cesta_do_kancelare.mp3 differ diff --git a/core/assets/common/screen/createuser/panorama/balcony.png b/core/assets/common/screen/createuser/panorama/gfx/balcony.png similarity index 100% rename from core/assets/common/screen/createuser/panorama/balcony.png rename to core/assets/common/screen/createuser/panorama/gfx/balcony.png diff --git a/core/assets/common/screen/createuser/panorama/balcony_blur.png b/core/assets/common/screen/createuser/panorama/gfx/balcony_blur.png similarity index 100% rename from core/assets/common/screen/createuser/panorama/balcony_blur.png rename to core/assets/common/screen/createuser/panorama/gfx/balcony_blur.png diff --git a/core/assets/common/screen/createuser/panorama/balcony_blur_winter.png b/core/assets/common/screen/createuser/panorama/gfx/balcony_blur_winter.png similarity index 100% rename from core/assets/common/screen/createuser/panorama/balcony_blur_winter.png rename to core/assets/common/screen/createuser/panorama/gfx/balcony_blur_winter.png diff --git a/core/assets/common/screen/createuser/panorama/balcony_winter.png b/core/assets/common/screen/createuser/panorama/gfx/balcony_winter.png similarity index 100% rename from core/assets/common/screen/createuser/panorama/balcony_winter.png rename to core/assets/common/screen/createuser/panorama/gfx/balcony_winter.png diff --git a/core/assets/common/screen/createuser/panorama/detectiveoffice.png b/core/assets/common/screen/createuser/panorama/gfx/detectiveoffice.png similarity index 100% rename from core/assets/common/screen/createuser/panorama/detectiveoffice.png rename to core/assets/common/screen/createuser/panorama/gfx/detectiveoffice.png diff --git a/core/assets/common/screen/createuser/panorama/gfx/newspaper/clickmap.png b/core/assets/common/screen/createuser/panorama/gfx/newspaper/clickmap.png new file mode 100644 index 0000000000000000000000000000000000000000..70725cf98732e3f1fb505acadd281bbbf5d6de4f Binary files /dev/null and b/core/assets/common/screen/createuser/panorama/gfx/newspaper/clickmap.png differ diff --git a/core/assets/cs/screen/createuser/panorama/newspaper/detail01.png b/core/assets/common/screen/createuser/panorama/gfx/newspaper/detail01.png similarity index 100% rename from core/assets/cs/screen/createuser/panorama/newspaper/detail01.png rename to core/assets/common/screen/createuser/panorama/gfx/newspaper/detail01.png diff --git a/core/assets/cs/screen/createuser/panorama/newspaper/detail02.png b/core/assets/common/screen/createuser/panorama/gfx/newspaper/detail02.png similarity index 100% rename from core/assets/cs/screen/createuser/panorama/newspaper/detail02.png rename to core/assets/common/screen/createuser/panorama/gfx/newspaper/detail02.png diff --git a/core/assets/cs/screen/createuser/panorama/newspaper/detail03.png b/core/assets/common/screen/createuser/panorama/gfx/newspaper/detail03.png similarity index 100% rename from core/assets/cs/screen/createuser/panorama/newspaper/detail03.png rename to core/assets/common/screen/createuser/panorama/gfx/newspaper/detail03.png diff --git a/core/assets/cs/screen/createuser/panorama/newspaper/detail04.png b/core/assets/common/screen/createuser/panorama/gfx/newspaper/detail04.png similarity index 100% rename from core/assets/cs/screen/createuser/panorama/newspaper/detail04.png rename to core/assets/common/screen/createuser/panorama/gfx/newspaper/detail04.png diff --git a/core/assets/cs/screen/createuser/panorama/newspaper/detail05.png b/core/assets/common/screen/createuser/panorama/gfx/newspaper/detail05.png similarity index 100% rename from core/assets/cs/screen/createuser/panorama/newspaper/detail05.png rename to core/assets/common/screen/createuser/panorama/gfx/newspaper/detail05.png diff --git a/core/assets/common/screen/createuser/panorama/gfx/newspaper/left_finger.png b/core/assets/common/screen/createuser/panorama/gfx/newspaper/left_finger.png new file mode 100644 index 0000000000000000000000000000000000000000..c8431dbbe719145e6fb60de67d497509ba356117 Binary files /dev/null and b/core/assets/common/screen/createuser/panorama/gfx/newspaper/left_finger.png differ diff --git a/core/assets/common/screen/createuser/panorama/newspaper/open1.png b/core/assets/common/screen/createuser/panorama/gfx/newspaper/open1.png similarity index 100% rename from core/assets/common/screen/createuser/panorama/newspaper/open1.png rename to core/assets/common/screen/createuser/panorama/gfx/newspaper/open1.png diff --git a/core/assets/common/screen/createuser/panorama/newspaper/open2.png b/core/assets/common/screen/createuser/panorama/gfx/newspaper/open2.png similarity index 100% rename from core/assets/common/screen/createuser/panorama/newspaper/open2.png rename to core/assets/common/screen/createuser/panorama/gfx/newspaper/open2.png diff --git a/core/assets/common/screen/createuser/panorama/newspaper/open3.png b/core/assets/common/screen/createuser/panorama/gfx/newspaper/open3.png similarity index 100% rename from core/assets/common/screen/createuser/panorama/newspaper/open3.png rename to core/assets/common/screen/createuser/panorama/gfx/newspaper/open3.png diff --git a/core/assets/common/screen/createuser/panorama/newspaper/open4.png b/core/assets/common/screen/createuser/panorama/gfx/newspaper/open4.png similarity index 100% rename from core/assets/common/screen/createuser/panorama/newspaper/open4.png rename to core/assets/common/screen/createuser/panorama/gfx/newspaper/open4.png diff --git a/core/assets/common/screen/createuser/panorama/newspaper/open5.png b/core/assets/common/screen/createuser/panorama/gfx/newspaper/open5.png similarity index 100% rename from core/assets/common/screen/createuser/panorama/newspaper/open5.png rename to core/assets/common/screen/createuser/panorama/gfx/newspaper/open5.png diff --git a/core/assets/common/screen/createuser/panorama/gfx/newspaper/overlay.png b/core/assets/common/screen/createuser/panorama/gfx/newspaper/overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..d8fc30a3129c1ed8bf6f5c1ffb25a031c3e894ea Binary files /dev/null and b/core/assets/common/screen/createuser/panorama/gfx/newspaper/overlay.png differ diff --git a/core/assets/common/screen/createuser/panorama/gfx/newspaper/right_finger.png b/core/assets/common/screen/createuser/panorama/gfx/newspaper/right_finger.png new file mode 100644 index 0000000000000000000000000000000000000000..0f996ffb9571729c7dfa386b66b2fe4d0669089b Binary files /dev/null and b/core/assets/common/screen/createuser/panorama/gfx/newspaper/right_finger.png differ diff --git a/core/assets/common/screen/createuser/panorama/newspaper/newspaper.png b/core/assets/common/screen/createuser/panorama/gfx/newspaper/spinner.png similarity index 100% rename from core/assets/common/screen/createuser/panorama/newspaper/newspaper.png rename to core/assets/common/screen/createuser/panorama/gfx/newspaper/spinner.png diff --git a/core/assets/common/screen/createuser/panorama/gfx/newspaper/stretchhint.png b/core/assets/common/screen/createuser/panorama/gfx/newspaper/stretchhint.png new file mode 100644 index 0000000000000000000000000000000000000000..949faea19c87d8a12fcf7700d1ac63cbe798c108 Binary files /dev/null and b/core/assets/common/screen/createuser/panorama/gfx/newspaper/stretchhint.png differ diff --git a/core/assets/common/screen/createuser/panorama/gfx/swipe/knock.png b/core/assets/common/screen/createuser/panorama/gfx/swipe/knock.png new file mode 100644 index 0000000000000000000000000000000000000000..04affd8dac3740e31c9c80a71da29278110c4273 Binary files /dev/null and b/core/assets/common/screen/createuser/panorama/gfx/swipe/knock.png differ diff --git a/core/assets/common/screen/createuser/panorama/swipe/tile0.png b/core/assets/common/screen/createuser/panorama/gfx/swipe/tile0.png similarity index 100% rename from core/assets/common/screen/createuser/panorama/swipe/tile0.png rename to core/assets/common/screen/createuser/panorama/gfx/swipe/tile0.png diff --git a/core/assets/common/screen/createuser/panorama/swipe/tile1.png b/core/assets/common/screen/createuser/panorama/gfx/swipe/tile1.png similarity index 100% rename from core/assets/common/screen/createuser/panorama/swipe/tile1.png rename to core/assets/common/screen/createuser/panorama/gfx/swipe/tile1.png diff --git a/core/assets/common/screen/createuser/panorama/swipe/tile2.png b/core/assets/common/screen/createuser/panorama/gfx/swipe/tile2.png similarity index 100% rename from core/assets/common/screen/createuser/panorama/swipe/tile2.png rename to core/assets/common/screen/createuser/panorama/gfx/swipe/tile2.png diff --git a/core/assets/common/screen/createuser/panorama/swipe/tile3.png b/core/assets/common/screen/createuser/panorama/gfx/swipe/tile3.png similarity index 100% rename from core/assets/common/screen/createuser/panorama/swipe/tile3.png rename to core/assets/common/screen/createuser/panorama/gfx/swipe/tile3.png diff --git a/core/assets/common/screen/createuser/panorama/sfx/noviny_prilet.mp3 b/core/assets/common/screen/createuser/panorama/sfx/noviny_prilet.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..34931ae84939d54691fd91cc8daa5380de6d40a1 Binary files /dev/null and b/core/assets/common/screen/createuser/panorama/sfx/noviny_prilet.mp3 differ diff --git a/core/assets/common/screen/createuser/panorama/sfx/noviny_rozbaleni.mp3 b/core/assets/common/screen/createuser/panorama/sfx/noviny_rozbaleni.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..07417998ccd96e7afdaa00dee6e4de4c5d6c09a1 Binary files /dev/null and b/core/assets/common/screen/createuser/panorama/sfx/noviny_rozbaleni.mp3 differ diff --git a/core/assets/common/screen/createuser/panorama/sfx/tuk_1.mp3 b/core/assets/common/screen/createuser/panorama/sfx/tuk_1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..210305a705ae5d4676934e96dfdf65a9ccce0449 Binary files /dev/null and b/core/assets/common/screen/createuser/panorama/sfx/tuk_1.mp3 differ diff --git a/core/assets/common/screen/createuser/panorama/sfx/tuk_2.mp3 b/core/assets/common/screen/createuser/panorama/sfx/tuk_2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..9f99b26d5206ae12e04502cc78a425a0905cf269 Binary files /dev/null and b/core/assets/common/screen/createuser/panorama/sfx/tuk_2.mp3 differ diff --git a/core/assets/common/screen/createuser/panorama/sfx/tuk_3.mp3 b/core/assets/common/screen/createuser/panorama/sfx/tuk_3.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..9c546e954b77aab22a85fe0c31b1bb9e4cd55088 Binary files /dev/null and b/core/assets/common/screen/createuser/panorama/sfx/tuk_3.mp3 differ diff --git a/core/assets/cs/screen/createuser/form/gfx/stamp.png b/core/assets/cs/screen/createuser/form/gfx/stamp.png new file mode 100644 index 0000000000000000000000000000000000000000..8e80db058bac023e45e67c2a7f06663bb1c0509c Binary files /dev/null and b/core/assets/cs/screen/createuser/form/gfx/stamp.png differ diff --git a/core/assets/cs/screen/createuser/form/gfx/stampplaceholder.png b/core/assets/cs/screen/createuser/form/gfx/stampplaceholder.png new file mode 100644 index 0000000000000000000000000000000000000000..1412e8205cf2bb95a4d4d75a8045848a74f22925 Binary files /dev/null and b/core/assets/cs/screen/createuser/form/gfx/stampplaceholder.png differ diff --git a/core/assets/cs/screen/createuser/panorama/gfx/newspaper/detail01.png b/core/assets/cs/screen/createuser/panorama/gfx/newspaper/detail01.png new file mode 100644 index 0000000000000000000000000000000000000000..55d7c9e036690dc887f7725e1bec551d2f32d066 Binary files /dev/null and b/core/assets/cs/screen/createuser/panorama/gfx/newspaper/detail01.png differ diff --git a/core/assets/cs/screen/createuser/panorama/gfx/newspaper/detail02.png b/core/assets/cs/screen/createuser/panorama/gfx/newspaper/detail02.png new file mode 100644 index 0000000000000000000000000000000000000000..a957ccb0eaaf65a07de48d910d068a2d37541826 Binary files /dev/null and b/core/assets/cs/screen/createuser/panorama/gfx/newspaper/detail02.png differ diff --git a/core/assets/cs/screen/createuser/panorama/gfx/newspaper/detail03.png b/core/assets/cs/screen/createuser/panorama/gfx/newspaper/detail03.png new file mode 100644 index 0000000000000000000000000000000000000000..f991753da10e867e23da437f1e6b99b65d4eb2f0 Binary files /dev/null and b/core/assets/cs/screen/createuser/panorama/gfx/newspaper/detail03.png differ diff --git a/core/assets/cs/screen/createuser/panorama/gfx/newspaper/detail04.png b/core/assets/cs/screen/createuser/panorama/gfx/newspaper/detail04.png new file mode 100644 index 0000000000000000000000000000000000000000..887737f2dbe3bfd44f855e8066d90ff066bd74af Binary files /dev/null and b/core/assets/cs/screen/createuser/panorama/gfx/newspaper/detail04.png differ diff --git a/core/assets/cs/screen/createuser/panorama/gfx/newspaper/detail05.png b/core/assets/cs/screen/createuser/panorama/gfx/newspaper/detail05.png new file mode 100644 index 0000000000000000000000000000000000000000..4d5480a69ce336ed74a02742c563140d75739020 Binary files /dev/null and b/core/assets/cs/screen/createuser/panorama/gfx/newspaper/detail05.png differ diff --git a/core/assets/cs/screen/createuser/panorama/newspaper/opened.png b/core/assets/cs/screen/createuser/panorama/gfx/newspaper/opened.png similarity index 100% rename from core/assets/cs/screen/createuser/panorama/newspaper/opened.png rename to core/assets/cs/screen/createuser/panorama/gfx/newspaper/opened.png diff --git a/core/assets/cs/screen/createuser/panorama/swipe/door.png b/core/assets/cs/screen/createuser/panorama/gfx/swipe/door.png similarity index 100% rename from core/assets/cs/screen/createuser/panorama/swipe/door.png rename to core/assets/cs/screen/createuser/panorama/gfx/swipe/door.png diff --git a/core/assets/cs/screen/createuser/panorama/mfx/detective/1.mp3 b/core/assets/cs/screen/createuser/panorama/mfx/detective/1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..7fccdea0b2361bdb5b1dd9f7d3948091716d6f85 Binary files /dev/null and b/core/assets/cs/screen/createuser/panorama/mfx/detective/1.mp3 differ diff --git a/core/assets/cs/screen/createuser/panorama/mfx/detective/2.mp3 b/core/assets/cs/screen/createuser/panorama/mfx/detective/2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..c6586352a630a888517f1accdb345d1d575f2a7b Binary files /dev/null and b/core/assets/cs/screen/createuser/panorama/mfx/detective/2.mp3 differ diff --git a/core/assets/cs/screen/createuser/panorama/mfx/detective/3.mp3 b/core/assets/cs/screen/createuser/panorama/mfx/detective/3.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..1b14801a029b7168c2412d36deeb6d7613ac7c51 Binary files /dev/null and b/core/assets/cs/screen/createuser/panorama/mfx/detective/3.mp3 differ diff --git a/core/assets/cs/screen/createuser/panorama/mfx/detective/4.mp3 b/core/assets/cs/screen/createuser/panorama/mfx/detective/4.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..1b8fde371a3727154bf2ccecbb1a06b7769c996b Binary files /dev/null and b/core/assets/cs/screen/createuser/panorama/mfx/detective/4.mp3 differ diff --git a/core/assets/cs/screen/createuser/panorama/mfx/newspaper/1.mp3 b/core/assets/cs/screen/createuser/panorama/mfx/newspaper/1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..fdcb51732b091e768b1812626897da8095664ed4 Binary files /dev/null and b/core/assets/cs/screen/createuser/panorama/mfx/newspaper/1.mp3 differ diff --git a/core/assets/cs/screen/createuser/panorama/mfx/newspaper/2.mp3 b/core/assets/cs/screen/createuser/panorama/mfx/newspaper/2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..cecdaedb1d903b2492038d64e953ebe19a0f89a7 Binary files /dev/null and b/core/assets/cs/screen/createuser/panorama/mfx/newspaper/2.mp3 differ diff --git a/core/assets/cs/screen/createuser/panorama/mfx/newspaper/3.mp3 b/core/assets/cs/screen/createuser/panorama/mfx/newspaper/3.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..eb8c1ad4274c1b506f85f091a87adcb82a86279d Binary files /dev/null and b/core/assets/cs/screen/createuser/panorama/mfx/newspaper/3.mp3 differ diff --git a/core/assets/cs/screen/createuser/panorama/mfx/newspaper/4.mp3 b/core/assets/cs/screen/createuser/panorama/mfx/newspaper/4.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..95d57558a336bb74d8f5b1286b68b1f0e64ab6d3 Binary files /dev/null and b/core/assets/cs/screen/createuser/panorama/mfx/newspaper/4.mp3 differ diff --git a/core/assets/cs/screen/createuser/panorama/mfx/newspaper/5.mp3 b/core/assets/cs/screen/createuser/panorama/mfx/newspaper/5.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..5e1ea85e795ed9a94b399221d36a6c35531779e4 Binary files /dev/null and b/core/assets/cs/screen/createuser/panorama/mfx/newspaper/5.mp3 differ diff --git a/core/src/cz/nic/tablexia/TablexiaSettings.java b/core/src/cz/nic/tablexia/TablexiaSettings.java index 15fc8f78e94d347d70917325a322d64c457fa8ec..c7d61812a581e7f447e63a48c148ad41b7710796 100644 --- a/core/src/cz/nic/tablexia/TablexiaSettings.java +++ b/core/src/cz/nic/tablexia/TablexiaSettings.java @@ -13,7 +13,7 @@ import cz.nic.tablexia.game.GameDefinition; import cz.nic.tablexia.game.difficulty.GameDifficulty; import cz.nic.tablexia.loader.application.ApplicationTextManager; import cz.nic.tablexia.screen.AbstractTablexiaScreen; -import cz.nic.tablexia.screen.gamemenu.GameMenuScreen; +import cz.nic.tablexia.screen.createuser.FormScreen; import cz.nic.tablexia.util.Log; import cz.nic.tablexia.util.Utility; @@ -24,7 +24,8 @@ public class TablexiaSettings { private static final int MIN_SCREEN_HEIGHT = (int) (DEFAULT_SCREEN_WIDTH * MAXIMUM_RATIO); private static final boolean DEBUG_SHOW_BOUNDING_BOXES = true; - public static final Class<? extends AbstractTablexiaScreen<?>> INITIAL_SCREEN = GameMenuScreen.class; + public static final Class<? extends AbstractTablexiaScreen<?>> INITIAL_SCREEN = FormScreen.class; + public static final int AVATAR_COUNT = 8; private static final String PREFERENCES_KEY = "cz.nic.tablexia."; public static final String LOCALE_KEY = "locale"; @@ -32,6 +33,7 @@ public class TablexiaSettings { private static final String IDE_BUILD_VERSION_NAME = "DEVEL"; + private final BuildType BUILD_TYPE; private final String VERSION_NAME; @@ -188,9 +190,9 @@ public class TablexiaSettings { //////////////////////////// SETTINGS ACCESS - public boolean isDebug() { - return BUILD_TYPE.isDebug(); - } + public boolean isDebug() { + return BUILD_TYPE.isDebug(); + } public String getVersionName() { return VERSION_NAME; diff --git a/core/src/cz/nic/tablexia/model/User.java b/core/src/cz/nic/tablexia/model/User.java new file mode 100644 index 0000000000000000000000000000000000000000..4067b4a1f2620113076c7f5ce84a1547b8a5301c --- /dev/null +++ b/core/src/cz/nic/tablexia/model/User.java @@ -0,0 +1,20 @@ +package cz.nic.tablexia.model; + +/** + * Created by lhoracek on 4/16/15. + */ +public class User { + private Gender gender; + + public Gender getGender() { + return gender; + } + + public void setGender(Gender gender) { + this.gender = gender; + } + + public static enum Gender { + MALE,FEMALE; + } +} diff --git a/core/src/cz/nic/tablexia/screen/AbstractAutoloadTablexiaScreen.java b/core/src/cz/nic/tablexia/screen/AbstractAutoloadTablexiaScreen.java new file mode 100644 index 0000000000000000000000000000000000000000..d1fb37fcad54e915783ab702bb4f5822732b8feb --- /dev/null +++ b/core/src/cz/nic/tablexia/screen/AbstractAutoloadTablexiaScreen.java @@ -0,0 +1,75 @@ +package cz.nic.tablexia.screen; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.audio.Music; +import com.badlogic.gdx.audio.Sound; +import com.badlogic.gdx.graphics.Texture; + +import java.util.List; + +import cz.nic.tablexia.loader.TablexiaAssetManager; +import cz.nic.tablexia.util.assetmanager.DirectoryAsset; + +/** + * Created by lhoracek on 4/9/15. + */ +public class AbstractAutoloadTablexiaScreen<T> extends AbstractLinearTextureTablexiaScreen<T> { + public static final String TEXTURE_ASSET_PATH_SUFFIX = "/gfx"; + public static final String SOUND_ASSET_PATH_SUFFIX = "/sfx"; + public static final String MUSIC_ASSET_PATH_SUFFIX = "/mfx"; + public static final String TEXT_ASSET_PATH_SUFFIX = "/resource"; + public static final String TEXT_ASSET_PATH_PREFIX = "text/"; + + + private DirectoryAsset textureAssets; + private DirectoryAsset soundAssets; + private DirectoryAsset musicAssets; + private String basePath; + + public AbstractAutoloadTablexiaScreen(String basePath) { + initAssets(basePath); + } + + public AbstractAutoloadTablexiaScreen(boolean hasState, boolean loadAsync, TablexiaAssetManager.StorageType storageType, String basePath) { + super(hasState, loadAsync, storageType); + initAssets(basePath); + } + + private void initAssets(String basePath) { + textureAssets = new DirectoryAsset(basePath + TEXTURE_ASSET_PATH_SUFFIX); + soundAssets = new DirectoryAsset(basePath + SOUND_ASSET_PATH_SUFFIX); + musicAssets = new DirectoryAsset(basePath + MUSIC_ASSET_PATH_SUFFIX); + this.basePath = basePath; + } + + @Override + protected void prepareScreenTextureAssetNames(List<String> textureFileNames) { + super.prepareScreenTextureAssetNames(textureFileNames); + textureFileNames.addAll(textureAssets.values()); + } + + @Override + protected void prepareScreenSoundAssetNames(List<String> soundsFileNames) { + super.prepareScreenSoundAssetNames(soundsFileNames); + soundsFileNames.addAll(soundAssets.values()); + } + + @Override + protected String prepareScreenTextResourcesAssetName() { + return TEXT_ASSET_PATH_PREFIX + basePath + TEXT_ASSET_PATH_SUFFIX; + } + + @Override + public Texture getTexture(String textureName) { + return super.getTexture(textureAssets.get(textureName)); + } + + @Override + public Sound getSound(String soundName) { + return super.getSound(soundAssets.get(soundName)); + } + + public Music getMusic(String musicName) { + return Gdx.audio.newMusic(Gdx.files.external(TablexiaAssetManager.StorageType.EXTERNAL.getStoragePath() + musicAssets.get(musicName))); + } +} diff --git a/core/src/cz/nic/tablexia/screen/AbstractLinearTextureTablexiaScreen.java b/core/src/cz/nic/tablexia/screen/AbstractLinearTextureTablexiaScreen.java new file mode 100644 index 0000000000000000000000000000000000000000..10de67bb0cb3964996a45d1e2acf3ff48cd42b48 --- /dev/null +++ b/core/src/cz/nic/tablexia/screen/AbstractLinearTextureTablexiaScreen.java @@ -0,0 +1,24 @@ +package cz.nic.tablexia.screen; + +import com.badlogic.gdx.graphics.Texture; + +import cz.nic.tablexia.loader.TablexiaAssetManager; + +/** + * Created by lhoracek on 4/8/15. + */ +public class AbstractLinearTextureTablexiaScreen<T> extends AbstractTablexiaScreen<T> { + public AbstractLinearTextureTablexiaScreen() { + } + + public AbstractLinearTextureTablexiaScreen(boolean hasState, boolean loadAsync, TablexiaAssetManager.StorageType storageType) { + super(hasState, loadAsync, storageType); + } + + @Override + public Texture getTexture(String textureName) { + Texture texture = super.getTexture(textureName); + texture.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear); + return texture; + } +} diff --git a/core/src/cz/nic/tablexia/screen/createuser/FormScreen.java b/core/src/cz/nic/tablexia/screen/createuser/FormScreen.java index 3ee1a3225fa9c511176b74abe7007d474087bb86..e188d2e4ef52b6420fe061c859fb2142c4b3bb85 100644 --- a/core/src/cz/nic/tablexia/screen/createuser/FormScreen.java +++ b/core/src/cz/nic/tablexia/screen/createuser/FormScreen.java @@ -1,21 +1,290 @@ package cz.nic.tablexia.screen.createuser; +import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.TextureRegion; +import com.badlogic.gdx.scenes.scene2d.Actor; +import com.badlogic.gdx.scenes.scene2d.Group; +import com.badlogic.gdx.scenes.scene2d.InputEvent; +import com.badlogic.gdx.scenes.scene2d.InputListener; +import com.badlogic.gdx.scenes.scene2d.ui.Dialog; +import com.badlogic.gdx.scenes.scene2d.ui.HorizontalGroup; +import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.Label; -import com.badlogic.gdx.scenes.scene2d.ui.Label.LabelStyle; -import com.badlogic.gdx.scenes.scene2d.ui.Table; +import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane; +import com.badlogic.gdx.scenes.scene2d.ui.Stack; +import com.badlogic.gdx.scenes.scene2d.ui.VerticalGroup; +import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; +import com.badlogic.gdx.scenes.scene2d.utils.Drawable; +import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; -import cz.nic.tablexia.screen.AbstractTablexiaScreen; +import cz.nic.tablexia.TablexiaSettings; +import cz.nic.tablexia.loader.application.ApplicationFontManager; +import cz.nic.tablexia.model.User; +import cz.nic.tablexia.screen.AbstractAutoloadTablexiaScreen; +import cz.nic.tablexia.screen.createuser.form.FormInputListener; +import cz.nic.tablexia.screen.createuser.form.SignatureDialog; +import cz.nic.tablexia.util.Log; +import cz.nic.tablexia.util.ScaleUtil; +import cz.nic.tablexia.util.listener.DragActorListener; +import cz.nic.tablexia.util.listener.DragSwitchListener; -public class FormScreen extends AbstractTablexiaScreen<Void> { +public class FormScreen extends AbstractAutoloadTablexiaScreen<Void> { + public static final String BASET_ASSET_PATH = "screen/createuser/form"; + private static final int MUGSHOT_HEIGHT = 250; + + private Actor pen, mugshotFrame, stamp; + private Image stampPlaceholder, mugshotImage; + private Actor buttonPlus, buttonMinus; + private Label ageLabel, nameLabel; + private int age; + private String name; + private String mugshot; + private User user = new User(); + + + public FormScreen() { + super(BASET_ASSET_PATH); + } @Override protected void screenLoaded() { - Label label = new Label(getClass().getSimpleName(), new LabelStyle(getDefaultRegularFont(), Color.WHITE)); - Table table = new Table(); - table.add(label); - label.setPosition(getStage().getWidth() / 2, getStage().getHeight() / 2); - getStage().addActor(label); + getStage().setDebugAll(TablexiaSettings.getInstance().isShowBoundingBoxes()); + Group group = new Group(); + + Image background = new Image(getTexture("table")); + ScaleUtil.setBackgroundSize(background); + group.addActor(background); + + group.addActor(ScaleUtil.createImageWidthPosition(getTexture("inkpad"), getStage().getWidth() * 0.3f, getStage().getWidth() * -0.1f, getStage().getWidth() * 0.3f)); + group.addActor(ScaleUtil.createImageSizePosition(getTexture("background"), getStage().getWidth() * 0.75f, TablexiaSettings.getMinWorldHeight() * 0.98f, getStage().getWidth() * 0.13f, 0)); + group.addActor(ScaleUtil.createImageWidthPosition(getTexture("badge"), getStage().getWidth() * 0.3f, getStage().getWidth() * 0.18f, getStage().getWidth() * 0.15f)); + group.addActor(mugshotImage = ScaleUtil.createImageWidthPosition(getTexture("avatar/0"), getStage().getWidth() * 0.13f, getStage().getWidth() * 0.6f, getStage().getWidth() * 0.34f)); // size for all mugshots + group.addActor(mugshotFrame = ScaleUtil.createImageWidthPosition(getTexture("mugshotframe"), getStage().getWidth() * 0.17f, getStage().getWidth() * 0.58f, getStage().getWidth() * 0.32f)); + group.addActor(ScaleUtil.createImageWidthPosition(getTexture("textfield_covername"), getStage().getWidth() * 0.2f, getStage().getWidth() * 0.57f, getStage().getWidth() * 0.27f)); + group.addActor(stampPlaceholder = ScaleUtil.createImageWidthPosition(getTexture("stampplaceholder"), getStage().getWidth() * 0.1f, getStage().getWidth() * 0.73f, getStage().getWidth() * 0.04f)); + group.addActor(ScaleUtil.createImageWidthPosition(getTexture("texfield_signature"), getStage().getWidth() * 0.15f, getStage().getWidth() * 0.55f, getStage().getWidth() * 0.07f)); + // TODO pens and stamps variant + mugshotFrame.addListener(new ClickListener() { + @Override + public void clicked(InputEvent event, float x, float y) { + showMugshotDialog(); + } + }); + + this.age = 10; + Label age = new Label("Vek", getLabelStyle()); + ageLabel = new Label(String.valueOf(this.age), getLabelStyle()); + Label gender = new Label("Pohlavi", getLabelStyle()); + nameLabel = new Label("", getLabelStyle()); + + age.setFontScale(0.7f); + gender.setFontScale(0.7f); + nameLabel.setSize(getStage().getWidth() * 0.2f, getStage().getWidth() * 0.05f); + nameLabel.setPosition(getStage().getWidth() * 0.57f, getStage().getWidth() * 0.27f); + age.setPosition(getStage().getWidth() * 0.58f, getStage().getWidth() * 0.225f); + ageLabel.setPosition(getStage().getWidth() * 0.58f, getStage().getWidth() * 0.185f); + age.setPosition(getStage().getWidth() * 0.58f, getStage().getWidth() * 0.225f); + gender.setPosition(getStage().getWidth() * 0.73f, getStage().getWidth() * 0.225f); + nameLabel.addListener(new FormInputListener(nameLabel)); + nameLabel.addListener(new ClickListener() { + @Override + public void clicked(InputEvent event, float x, float y) { + Gdx.input.setOnscreenKeyboardVisible(true); + getStage().setKeyboardFocus(nameLabel); + + } + }); + + group.addActor(nameLabel); + group.addActor(ageLabel); + group.addActor(age); + group.addActor(gender); + group.addActor(ScaleUtil.createImageWidthPosition(getTexture("sex_female"), getStage().getWidth() * 0.015f, getStage().getWidth() * 0.69f, getStage().getWidth() * 0.18f)); + group.addActor(ScaleUtil.createImageWidthPosition(getTexture("sex_male"), getStage().getWidth() * 0.015f, getStage().getWidth() * 0.80f, getStage().getWidth() * 0.18f)); + group.addActor(buttonMinus = ScaleUtil.createImageWidthPosition(getTexture("button_minus"), getStage().getWidth() * 0.035f, getStage().getWidth() * 0.535f, getStage().getWidth() * 0.18f)); // size for all mugshots + group.addActor(buttonPlus = ScaleUtil.createImageWidthPosition(getTexture("button_plus"), getStage().getWidth() * 0.035f, getStage().getWidth() * 0.615f, getStage().getWidth() * 0.18f)); // size for all mugshots + buttonPlus.addListener(new ClickListener() { + @Override + public void clicked(InputEvent event, float x, float y) { + setAge(Math.min(FormScreen.this.age + 1, 99)); + } + }); + buttonMinus.addListener(new ClickListener() { + @Override + public void clicked(InputEvent event, float x, float y) { + setAge(Math.max(FormScreen.this.age - 1, 1)); + } + }); + + group.addActor(ScaleUtil.createImageWidthPosition(getTexture("switch_background"), getStage().getWidth() * 0.07f, getStage().getWidth() * 0.715f, getStage().getWidth() * 0.18f)); + Group selector = new Group(); + final Image[] steps = new Image[3]; + selector.addActor(steps[0] = ScaleUtil.createImageWidthPosition(getTexture("switch_left"), getStage().getWidth() * 0.035f, 0, 0)); + selector.addActor(steps[1] = ScaleUtil.createImageWidthPosition(getTexture("switch_center"), getStage().getWidth() * 0.035f, 0, 0)); + selector.addActor(steps[2] = ScaleUtil.createImageWidthPosition(getTexture("switch_right"), getStage().getWidth() * 0.035f, 0, 0)); + selector.setPosition(getStage().getWidth() * 0.735f, getStage().getWidth() * 0.169f); + group.addActor(selector); + float middle = getStage().getWidth() * 0.71f + getStage().getWidth() * 0.027f; + DragSwitchListener sl = new DragSwitchListener(selector, getStage().getWidth() * 0.71f, getStage().getWidth() * 0.71f + getStage().getWidth() * 0.055f, middle); + selector.addListener(sl); + sl.setSwitchMovedListener(new DragSwitchListener.SwitchMovedListener() { + @Override + public void movedToStep(int step) { + for (Image im : steps) { + im.setVisible(false); + } + steps[step].setVisible(true); + } + }); + sl.setSwitchSelectedListener(new DragSwitchListener.SwitchSelectedListener() { + @Override + public void stepSelected(int step) { + user.setGender(step == 0 ? User.Gender.FEMALE : User.Gender.MALE); + } + }); + sl.switchToStep(1); + sl.setDisabledPoint(middle); + + // TODO pencil and stamp layers + group.addActor(pen = ScaleUtil.createImageWidthPosition(getTexture("pencil_dropped"), getStage().getWidth() * 0.2f, getStage().getWidth() * 0.85f, getStage().getWidth() * -0.13f)); + group.addActor(stamp = ScaleUtil.createImageWidthPosition(getTexture("stamp_left_dropped"), getStage().getWidth() * 0.2f, getStage().getWidth() * -0.01f, getStage().getWidth() * -0.05f)); + pen.addListener(new DragActorListener(pen, true, new DragActorListener.DragDropListener() { + @Override + public void dropped(float x, float y) { + if ((x > 526 && x < 700) && (y > -300 && y < -190)) { + showSubscribeDialog(); + } + } + })); + stamp.addListener(new DragActorListener(stamp, true, new DragActorListener.DragDropListener() { + @Override + public void dropped(float x, float y) { + if ((x > 636 && x < 775) && (y > -130 && y < 50)) { + Drawable d = new TextureRegionDrawable(new TextureRegion(getTexture("stamp"))); + stampPlaceholder.setDrawable(d); + } + } + })); + + getStage().addActor(group); + } + + + private void showMugshotDialog() { + final Group mugshots = new Group(); + + // grey translucent overlay + Image overlay = new Image(getTexture("avatar/overlay")); + overlay.getColor().a = 0.5f; + mugshots.addActor(ScaleUtil.setBackgroundSize(overlay)); + overlay.addListener(new InputListener() { + @Override + public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { + event.stop(); + mugshots.remove(); + return false; + } + }); + + + // avatar pictures + HorizontalGroup hg = new HorizontalGroup(); + for (int i = 0; i < TablexiaSettings.AVATAR_COUNT; i++) { + final Actor avatar = prepareAvatarPicture(i + 1); + avatar.setName(String.valueOf(i + 1)); + avatar.addListener(new ClickListener() { + @Override + public void clicked(InputEvent event, float x, float y) { + event.stop(); + mugshots.remove(); + Drawable d = new TextureRegionDrawable(new TextureRegion(getTexture("avatar/" + avatar.getName()))); + mugshotImage.setDrawable(d); + // TODO set avatar! + } + }); + hg.addActor(avatar); + hg.setHeight(avatar.getHeight()); + } + + + ScrollPane sp = new ScrollPane(hg); + sp.setScrollingDisabled(false, true); + sp.setSize(1000, hg.getHeight()); + sp.setPosition(0, 156); + mugshots.addActor(sp); + getStage().addActor(mugshots); + } + + private Actor prepareAvatarPicture(int num) { + Texture texture = getTexture("avatar/" + num); + float mugshotWidth = ScaleUtil.getWidth(texture.getWidth(), texture.getHeight(), MUGSHOT_HEIGHT); + + Image avatar = ScaleUtil.createImageToHeight(getTexture("avatar/" + num), MUGSHOT_HEIGHT); + avatar.getDrawable().setMinHeight(MUGSHOT_HEIGHT); + avatar.getDrawable().setMinWidth(mugshotWidth); + Image film = ScaleUtil.createImageToHeight(getTexture("avatar/film_inside"), MUGSHOT_HEIGHT); + film.getDrawable().setMinHeight(MUGSHOT_HEIGHT); + film.getDrawable().setMinWidth(mugshotWidth); + + VerticalGroup vg = new VerticalGroup(); + Image frameTop = ScaleUtil.createImageToWidth(getTexture("avatar/film_outerline"), mugshotWidth); + frameTop.getDrawable().setMinWidth(mugshotWidth); + frameTop.getDrawable().setMinHeight(frameTop.getHeight()); + Image frameBottom = ScaleUtil.createImageToWidth(getTexture("avatar/film_outerline"), mugshotWidth); + frameBottom.getDrawable().setMinWidth(mugshotWidth); + frameBottom.getDrawable().setMinHeight(frameTop.getHeight()); + + Stack stack = new Stack(); + stack.setSize(mugshotWidth, MUGSHOT_HEIGHT); + stack.addActor(avatar); + stack.addActor(film); + + vg.addActor(frameTop); + vg.addActor(stack); + vg.addActor(frameBottom); + + vg.setHeight(MUGSHOT_HEIGHT + frameBottom.getHeight() + frameTop.getHeight()); + vg.setWidth(mugshotWidth); + + Log.info(((Object) this).getClass().getName(), "Vertical size " + vg.getWidth() + "x" + vg.getHeight()); + + return vg; + + } + + + private Label.LabelStyle getLabelStyle() { + return new Label.LabelStyle(ApplicationFontManager.getInstance().getFont(ApplicationFontManager.APPLICATION_DEFAULT_FONT_REGULAR), Color.BLACK); + } + + public void setAge(int age) { + ageLabel.setText(String.valueOf(this.age = age)); + } + + + private void showSubscribeDialog() { + final Group signature = new Group(); + + // grey translucent overlay + Image overlay = new Image(getTexture("avatar/overlay")); + overlay.getColor().a = 0.5f; + signature.addActor(ScaleUtil.setBackgroundSize(overlay)); + overlay.addListener(new InputListener() { + @Override + public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { + event.stop(); + signature.remove(); + return false; + } + }); + // TODO show sign dialog + + + getStage().addActor(signature); + Dialog dialog = new SignatureDialog(getStage().getWidth() * 0.1f, getStage().getWidth() * 0.1f - (getStage().getCamera().position.y - getStage().getHeight() / 2) / 2, getStage().getWidth() * 0.8f, getStage().getHeight() * 0.8f).show(getStage()); } } + diff --git a/core/src/cz/nic/tablexia/screen/createuser/PanoramaAssets.java b/core/src/cz/nic/tablexia/screen/createuser/PanoramaAssets.java deleted file mode 100644 index f8bec1625adce2e0c7e8afd6c3a8bb90314ee579..0000000000000000000000000000000000000000 --- a/core/src/cz/nic/tablexia/screen/createuser/PanoramaAssets.java +++ /dev/null @@ -1,15 +0,0 @@ -package cz.nic.tablexia.screen.createuser; - -import cz.nic.tablexia.util.assetmanager.DirectoryAsset; - -/** - * Created by lhoracek on 4/2/15. - */ -public class PanoramaAssets extends DirectoryAsset { - public static final String PATH = "screen/createuser/panorama"; - - @Override - public String getPath() { - return PATH; - } -} diff --git a/core/src/cz/nic/tablexia/screen/createuser/PanoramaScreen.java b/core/src/cz/nic/tablexia/screen/createuser/PanoramaScreen.java index 8d6692c23866863841169a927a0fb50353a22ca3..e36e606fa5e99c510e092b7dc4eed4789446e1a9 100644 --- a/core/src/cz/nic/tablexia/screen/createuser/PanoramaScreen.java +++ b/core/src/cz/nic/tablexia/screen/createuser/PanoramaScreen.java @@ -1,79 +1,453 @@ package cz.nic.tablexia.screen.createuser; +import com.badlogic.gdx.audio.Music; +import com.badlogic.gdx.audio.Sound; +import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.graphics.Pixmap; +import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Group; +import com.badlogic.gdx.scenes.scene2d.InputEvent; +import com.badlogic.gdx.scenes.scene2d.InputListener; +import com.badlogic.gdx.scenes.scene2d.Touchable; +import com.badlogic.gdx.scenes.scene2d.actions.Actions; +import com.badlogic.gdx.scenes.scene2d.ui.Dialog; +import com.badlogic.gdx.scenes.scene2d.ui.HorizontalGroup; import com.badlogic.gdx.scenes.scene2d.ui.Image; +import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane; +import com.badlogic.gdx.scenes.scene2d.ui.Stack; +import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; -import java.util.List; - -import cz.nic.tablexia.screen.AbstractTablexiaScreen; +import cz.nic.tablexia.Tablexia; +import cz.nic.tablexia.TablexiaApplication; +import cz.nic.tablexia.bus.ApplicationBus; +import cz.nic.tablexia.screen.AbstractAutoloadTablexiaScreen; +import cz.nic.tablexia.util.ScaleUtil; +import cz.nic.tablexia.util.ui.dialog.TablexiaDialog; +import cz.nic.tablexia.util.ui.dialog.TextDialog; +import cz.nic.tablexia.util.ui.dialog.text.DialogTextContent; /** * Screen showing street animation and office before user create form */ -public class PanoramaScreen extends AbstractTablexiaScreen<Void> { - private PanoramaAssets assets = new PanoramaAssets(); - - private Actor balconyBlur, newspaper, newspaperOpen; +public class PanoramaScreen extends AbstractAutoloadTablexiaScreen<Void> { + public static final String BASET_ASSET_PATH = "screen/createuser/panorama"; - @Override - protected void prepareScreenTextureAssetNames(List<String> textureFileNames) { - super.prepareScreenTextureAssetNames(textureFileNames); - textureFileNames.addAll(assets.values()); + public PanoramaScreen() { + super(BASET_ASSET_PATH); } @Override protected void screenLoaded() { - switchScreen(prepareBalcony()); + switchSubscreen(prepareBalcony()); } - private void switchScreen(Actor actor) { + private void switchSubscreen(Actor actor) { getStage().clear(); getStage().addActor(actor); } + /** + * Create balcony view waiting for click + * Shows winter image based on current time + * + * @return + */ private Actor prepareBalcony() { - Group group = new Group(); - + final Group group = new Group(); + ScaleUtil.setFullScreen(group, getStage()); boolean isWinter = true; - Image balcony = new Image(getTexture(assets.get("balcony" + (isWinter ? "_winter" : "")))); - setFullScreen(balcony); + Image balcony = new Image(getTexture("balcony" + (isWinter ? "_winter" : ""))); + ScaleUtil.setFullScreen(balcony, getStage()); group.addActor(balcony); - balconyBlur = new Image(getTexture(assets.get("balcony_blur" + (isWinter ? "_winter" : "")))); - setFullScreen(balconyBlur); + final Image balconyBlur = new Image(getTexture("balcony_blur" + (isWinter ? "_winter" : ""))); + ScaleUtil.setFullScreen(balconyBlur, getStage()); + balconyBlur.setVisible(false); group.addActor(balconyBlur); - // TODO newspaper spin - // TODO newspaper detail + balcony.addListener(new ClickListener() { + @Override + public void clicked(InputEvent event, float x, float y) { + if ((x > getStage().getWidth() * 0.2f && x < getStage().getWidth() * 0.6f) && (y > getStage().getWidth() * 0.1f && y < getStage().getWidth() * 0.3f)) { + balconyBlur.addAction(Actions.fadeIn(0.1f)); + balconyBlur.setVisible(true); + + final Sound spinSound = getSound("noviny_prilet"); + spinSound.play(); - setFullScreen(group); + Image spin = new Image(getTexture("newspaper/spinner")); + spin.setOrigin(spin.getWidth() / 2, spin.getHeight() / 2); + spin.setPosition(group.getWidth() / 2 - spin.getWidth() / 2, group.getHeight() / 2 - spin.getHeight() / 2); + spin.setScale(0.1f); + spin.addAction(Actions.sequence(Actions.parallel(Actions.rotateBy(3600, 1.5f), Actions.scaleTo(2f, 2f, 1.5f)), Actions.parallel(Actions.sequence(Actions.fadeOut(0.5f), Actions.hide()), Actions.run(new Runnable() { + @Override + public void run() { + group.addActor(prepareOpenAction()); + spinSound.stop(); + } + })))); + group.addActor(spin); + } + } + }); return group; } + /** + * Prepare closed newspaper with hint to open + * + * @return + */ + private Actor prepareOpenAction() { + final Group openAction = new Group(); + ScaleUtil.setFullScreen(openAction, getStage()); + + Stack newspaperStages = new Stack(); + ScaleUtil.setFullScreen(newspaperStages, getStage()); + final Image[] stages = new Image[5]; + for (int i = 1; i <= 5; i++) { + Image stage = new Image(getTexture("newspaper/open" + i)); + newspaperStages.addActor(stage); + stages[i - 1] = stage; + stage.setVisible(false); + } + stages[0].setVisible(true); + openAction.addActor(newspaperStages); + + Image leftFinger = ScaleUtil.createImageWidthPosition(getTexture("newspaper/left_finger"), getStage().getWidth() * 0.2f, getStage().getWidth() * 0.2f - getStage().getWidth() * 0.2f / 2, 0); + Image rightFinger = ScaleUtil.createImageWidthPosition(getTexture("newspaper/right_finger"), getStage().getWidth() * 0.2f, getStage().getWidth() * 0.8f - getStage().getWidth() * 0.2f / 2, 0); + Image hint = ScaleUtil.createImageWidthPosition(getTexture("newspaper/stretchhint"), getStage().getWidth() * 0.5f, getStage().getWidth() / 2 - getStage().getWidth() * 0.5f / 2, getStage().getHeight() * 0.1f); + + leftFinger.addAction(Actions.sequence(Actions.fadeIn(0.5f), Actions.forever(Actions.sequence(Actions.moveTo(getStage().getWidth() * 0.4f - leftFinger.getWidth() / 2, leftFinger.getY(), 0.5f), Actions.scaleTo(0.8f, 0.8f, 0.2f), Actions.moveTo(-leftFinger.getWidth(), leftFinger.getY(), 0.5f), Actions.scaleTo(1f, 1f, 0.1f))))); + rightFinger.addAction(Actions.sequence(Actions.fadeIn(0.5f), Actions.forever(Actions.sequence(Actions.moveTo(getStage().getWidth() * 0.6f - rightFinger.getWidth() / 2, rightFinger.getY(), 0.5f), Actions.scaleTo(0.8f, 0.8f, 0.2f), Actions.moveTo(getStage().getWidth() + rightFinger.getWidth(), rightFinger.getY(), 0.5f), Actions.scaleTo(1f, 1f, 0.1f))))); + + openAction.addActor(hint); + openAction.addActor(leftFinger); + openAction.addActor(rightFinger); + + openAction.addListener(new InputListener() { + private boolean dragging, mouse; + private Sound sound; + private float x1start, x2start, x1, x2; + + @Override + public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { + super.touchDown(event, x, y, pointer, button); + // desktop mouse button workaround + if (button == 1) { + mouse = true; + } else { + mouse = false; + } + if (pointer == 0) { + x1start = x1 = x; + } + if (pointer == 1) { + x2start = x2 = x; + dragging = true; + } + return true; + } + + private void showStage(int i) { + for (Image image : stages) { + image.setVisible(false); + } + stages[i].setVisible(true); + } + + @Override + public void touchDragged(InputEvent event, float x, float y, int pointer) { + super.touchDragged(event, x, y, pointer); + if (pointer == 0) { + x1 = x; + } else if (pointer == 1) { + x2 = x; + } + + if (getDiff() > getStage().getWidth() * 0.25f) { + onScaled(); + } else if (getDiff() > getStage().getWidth() * 0.2f) { + showStage(4); + } else if (getDiff() > getStage().getWidth() * 0.15f) { + showStage(3); + } else if (getDiff() > getStage().getWidth() * 0.1f) { + showStage(2); + } else if (getDiff() > getStage().getWidth() * 0.05f) { + showStage(1); + if (sound == null) { + sound = getSound("noviny_rozbaleni"); + sound.play(); + } + } else { + stopSound(); + showStage(0); + } + } + + private void stopSound() { + if (sound != null) { + sound.stop(); + sound = null; + } + } + + @Override + public void touchUp(InputEvent event, float x, float y, int pointer, int button) { + super.touchUp(event, x, y, pointer, button); + showStage(0); + stopSound(); + if (pointer == 1) { + dragging = false; + } + } + + private float getDiff() { + if (mouse) { + return Math.abs(x1start - x1); + } else if (dragging) { + return Math.abs(Math.abs(x1 - x2) - Math.abs(x1start - x2start)); + } + return 0; + } + + public void onScaled() { + sound = null; + openAction.getParent().addActor(prepareOpenedNewspaper()); + openAction.remove(); + } + }); + + return openAction; + } + + /** + * Prepare opened newspaper with topic details and playback of comments + * + * @return + */ + private Actor prepareOpenedNewspaper() { + final Group newspaper = new Group(); + ScaleUtil.setFullScreen(newspaper, getStage()); + Image opened = new Image(getTexture("newspaper/opened")); + ScaleUtil.setFullScreen(opened, getStage()); + newspaper.addActor(opened); + + final Group help = new Group(); + ScaleUtil.setFullScreen(help, getStage()); + newspaper.addActor(help); + + Image overlay = new Image(getTexture("newspaper/overlay")); + overlay.getColor().a = 0.5f; + ScaleUtil.setFullScreen(overlay, getStage()); + help.addActor(overlay); + + final Image[] details = new Image[5]; + for (int i = 0; i < 5; i++) { + details[i] = ScaleUtil.createImageFitInto(getTexture("newspaper/detail0" + (i + 1)), getStage().getWidth() * 0.8f, getStage().getHeight() * 0.8f); + details[i].setPosition(getStage().getWidth() / 2 - details[i].getWidth() / 2, getStage().getHeight() / 2 - details[i].getHeight() / 2); + help.addActor(details[i]); + if (i == 4) { + details[i].addListener(new ClickListener() { + @Override + public void clicked(InputEvent event, float x, float y) { + super.clicked(event, x, y); + for (Actor a : newspaper.getParent().getChildren()) { + a.addAction(Actions.sequence(Actions.moveBy(-getStage().getWidth(), 0, 0.5f), Actions.removeActor())); + } + Actor street = prepareSwipeStreet(); + newspaper.getParent().addActor(street); + street.setPosition(getStage().getWidth(), 0); + street.addAction(Actions.moveTo(0, 0, 0.5f)); + } + }); + } + } + + help.setVisible(false); + help.addListener(new ClickListener() { + @Override + public void clicked(InputEvent event, float x, float y) { + super.clicked(event, x, y); + help.addAction(Actions.sequence(Actions.fadeOut(0.25f), Actions.hide())); + stopMusic(); + event.stop(); + } + }); + + opened.addListener(new ClickListener() { + private final Color DETECTIVE_COLOR = Color.BLACK; + private final Color SWIMSUIT_COLOR = Color.YELLOW; + private final Color MOTOBIKE_COLOR = Color.BLUE; + private final Color BEARD_COLOR = Color.RED; + private final Color BALOON_COLOR = Color.GREEN; + + private Music music; + + @Override + public void clicked(InputEvent event, float x, float y) { + super.clicked(event, x, y); + + for (int i = 0; i < 5; i++) { + details[i].setVisible(false); + } + Color color = getTouchedColor(x, y); + if (color.equals(DETECTIVE_COLOR)) { + details[4].setVisible(true); + playMusic("newspaper/5"); + } else if (color.equals(SWIMSUIT_COLOR)) { + details[3].setVisible(true); + playMusic("newspaper/1"); + } else if (color.equals(MOTOBIKE_COLOR)) { + playMusic("newspaper/2"); + details[2].setVisible(true); + } else if (color.equals(BEARD_COLOR)) { + playMusic("newspaper/3"); + details[0].setVisible(true); + } else if (color.equals(BALOON_COLOR)) { + details[1].setVisible(true); + playMusic("newspaper/4"); + } else { + return; + } + help.addAction(Actions.sequence(Actions.alpha(0), Actions.parallel(Actions.show(), Actions.fadeIn(0.25f)))); + if (music != null && !music.isPlaying()) { + music.play(); + } + } + + + private Color getTouchedColor(float x, float y) { + Texture clickmap = getTexture("newspaper/clickmap"); + if (!clickmap.getTextureData().isPrepared()) { + clickmap.getTextureData().prepare(); + } + + Pixmap pixmap = clickmap.getTextureData().consumePixmap(); + int clickX = (int) (x / newspaper.getWidth() * clickmap.getWidth()); + int clickY = clickmap.getHeight() - (int) (y / newspaper.getHeight() * clickmap.getHeight()); + return new Color(pixmap.getPixel(clickX, clickY)); + } + }); + + return newspaper; + } + + private Music playingMusic; + + private void playMusic(String key) { + stopMusic(); + playingMusic = getMusic(key); + playingMusic.play(); + } + + private void stopMusic() { + if (playingMusic != null && playingMusic.isPlaying()) { + playingMusic.stop(); + } + } + + /** + * Prepare street view with swipe and door knock + * + * @return + */ private Actor prepareSwipeStreet() { - Group group = new Group(); - // TODO tiles in horizontal panel - // TODO active door + final Group panel = new Group(); + ScaleUtil.setFullScreen(panel, getStage()); - setFullScreen(group); - return group; + Group group = new HorizontalGroup(); + group.setHeight(getStage().getHeight()); + + ScrollPane pane = new ScrollPane(group); + ScaleUtil.setFullScreen(pane, getStage()); + pane.setScrollingDisabled(false, true); + panel.addActor(pane); + + + Image leftFinger = ScaleUtil.createImageWidthPosition(getTexture("newspaper/left_finger"), getStage().getWidth() * 0.2f, getStage().getWidth() * 0.2f - getStage().getWidth() * 0.2f / 2, 0); + leftFinger.addAction(Actions.sequence(Actions.fadeIn(0.5f), Actions.forever(Actions.sequence(Actions.moveTo(getStage().getWidth() * 0.4f - leftFinger.getWidth() / 2, leftFinger.getY(), 0.5f), Actions.scaleTo(0.8f, 0.8f, 0.2f), Actions.moveTo(-leftFinger.getWidth(), leftFinger.getY(), 0.5f), Actions.scaleTo(1f, 1f, 0.1f))))); + panel.addActor(leftFinger); + + // TODO delay finger hint + // TODO hide finger if scrolled over 0.7 + + for (int i = 0; i < 4; i++) { + final Image image = ScaleUtil.createImageToHeight(getTexture("swipe/tile" + i), getStage().getHeight()); + + if (i == 3) { + final Group detectiveDoor = new Group(); + image.addListener(new ClickListener() { + private int knockCount = 0; + + @Override + public void clicked(InputEvent event, float x, float y) { + super.clicked(event, x, y); + if (x > image.getWidth() * 0.3f) { + knockCount++; + Image knock = ScaleUtil.createImageWidthPosition(getTexture("swipe/knock"), getStage().getWidth() * 0.2f, x, y); + detectiveDoor.addActor(knock); + knock.addAction(Actions.sequence(Actions.delay(0.25f), Actions.fadeOut(0.2f), Actions.removeActor())); + knock.setTouchable(Touchable.disabled); + getSound("tuk_" + knockCount).play(); + if (knockCount > 2) { + Actor office = prepareOffice(); + panel.addAction(Actions.sequence(Actions.moveBy(-getStage().getWidth(), 0, 0.5f), Actions.removeActor())); + panel.getParent().addActor(office); + office.setPosition(getStage().getWidth(), 0); + office.addAction(Actions.moveTo(0, 0, 0.5f)); + } + } + } + }); + detectiveDoor.addActor(image); + detectiveDoor.setSize(image.getWidth(), image.getHeight()); + group.addActor(detectiveDoor); + } else { + group.addActor(image); + } + } + return panel; } + /** + * Prapare detective office with dialogs and playing voice + * + * @return + */ private Actor prepareOffice() { Group group = new Group(); - - Image background = new Image(getTexture(assets.get("detectiveoffice"))); - setFullScreen(background); + Image background = new Image(getTexture("detectiveoffice")); + ScaleUtil.setFullScreen(background, getStage()); group.addActor(background); - - setFullScreen(group); + showDialog(1); + ScaleUtil.setFullScreen(group, getStage()); return group; } - private void setFullScreen(Actor actor) { - actor.setPosition(0, 0); - actor.setSize(getStage().getWidth(), getStage().getHeight()); + /** + * Show detective dialog with text and play sound. If last dialog, go to FormScreen + * + * @param num + */ + private void showDialog(final int num) { + String text = getText("createuser_detective_" + num); + final Dialog dialog = new TextDialog(getStage().getWidth() * 0.3f, getStage().getWidth() * 0.26f, getStage().getWidth() * 0.3f, getStage().getWidth() * 0.2f, TablexiaDialog.BackGroundType.BUBBLE_CLASSIC_CONTINUE_BUTTON, new DialogTextContent("", text)).show(getStage()); + playMusic("detective/" + num); + dialog.addListener(new ClickListener() { + @Override + public void clicked(InputEvent event, float x, float y) { + super.clicked(event, x, y); + dialog.hide(); + stopMusic(); + if (num == 4) { + ApplicationBus.getInstance().publishAsync(new Tablexia.ChangeScreenEvent(FormScreen.class, TablexiaApplication.ScreenTransaction.FADE)); + } else { + showDialog(num + 1); + } + } + }); } } diff --git a/core/src/cz/nic/tablexia/screen/createuser/form/FormInputListener.java b/core/src/cz/nic/tablexia/screen/createuser/form/FormInputListener.java new file mode 100644 index 0000000000000000000000000000000000000000..c198f21f973f698afc727aab4ba8c4e01cda4c52 --- /dev/null +++ b/core/src/cz/nic/tablexia/screen/createuser/form/FormInputListener.java @@ -0,0 +1,30 @@ +package cz.nic.tablexia.screen.createuser.form; + +import com.badlogic.gdx.Input; +import com.badlogic.gdx.scenes.scene2d.InputEvent; +import com.badlogic.gdx.scenes.scene2d.InputListener; +import com.badlogic.gdx.scenes.scene2d.ui.Label; + +/** + * Created by lhoracek on 4/16/15. + */ +public class FormInputListener extends InputListener { + + private final Label label; + + + public FormInputListener(Label label) { + this.label = label; + } + + @Override + public boolean keyTyped(InputEvent event, char character) { + if (character == Input.Keys.ENTER || character == Input.Keys.TAB) { + label.getStage().unfocus(label); + return false; + } + label.getText().append(character); + label.invalidateHierarchy(); + return true; + } +} diff --git a/core/src/cz/nic/tablexia/screen/createuser/form/SignatureDialog.java b/core/src/cz/nic/tablexia/screen/createuser/form/SignatureDialog.java new file mode 100644 index 0000000000000000000000000000000000000000..97cbd9372e7260e2988952fcab7a12527118742a --- /dev/null +++ b/core/src/cz/nic/tablexia/screen/createuser/form/SignatureDialog.java @@ -0,0 +1,21 @@ +package cz.nic.tablexia.screen.createuser.form; + +import cz.nic.tablexia.util.ui.dialog.TablexiaDialog; + +/** + * Created by lhoracek on 4/24/15. + */ +public class SignatureDialog extends TablexiaDialog { + public SignatureDialog(float x, float y, float width, float height) { + super(x, y, width, height, BackGroundType.DIALOG_RECTANGLE); + } + + @Override + public void prepareContent() { + super.prepareContent(); + SignaturePane pane = new SignaturePane(); + pane.setSize(getWidth(), getHeight()); + pane.setPosition(0,0); + addActor(pane); + } +} diff --git a/core/src/cz/nic/tablexia/screen/createuser/form/SignaturePane.java b/core/src/cz/nic/tablexia/screen/createuser/form/SignaturePane.java new file mode 100644 index 0000000000000000000000000000000000000000..b5eb988f91d20bacf9f02b89b97b12e13895e62a --- /dev/null +++ b/core/src/cz/nic/tablexia/screen/createuser/form/SignaturePane.java @@ -0,0 +1,40 @@ +package cz.nic.tablexia.screen.createuser.form; + +import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.graphics.g2d.Batch; +import com.badlogic.gdx.graphics.glutils.ShapeRenderer; +import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.scenes.scene2d.Actor; + +import cz.nic.tablexia.screen.createuser.form.swipehandler.SwipeHandler; + +/** + * Created by lhoracek on 4/24/15. + */ +public class SignaturePane extends Actor { + + SwipeHandler swipeHandler = new SwipeHandler(1000); + ShapeRenderer shapeRenderer = new ShapeRenderer(); + + public SignaturePane() { + addListener(swipeHandler); + } + + @Override + public void draw(Batch batch, float parentAlpha) { + super.draw(batch, parentAlpha); + if (swipeHandler.path().size > 1) { + float[] vert = new float[swipeHandler.path().size * 2]; + for (int i = 0; i < swipeHandler.path().size; i++) { + Vector2 proj = getStage().getViewport().project(swipeHandler.path().get(i).cpy()); + Vector2 sc = localToStageCoordinates(proj); + vert[i * 2] = sc.x; + vert[i * 2 + 1] = sc.y; + } + shapeRenderer.begin(ShapeRenderer.ShapeType.Line); + shapeRenderer.setColor(Color.BLUE); + shapeRenderer.polyline(vert); + shapeRenderer.end(); + } + } +} diff --git a/core/src/cz/nic/tablexia/screen/createuser/form/swipehandler/FixedList.java b/core/src/cz/nic/tablexia/screen/createuser/form/swipehandler/FixedList.java new file mode 100755 index 0000000000000000000000000000000000000000..48a0ca7acebabf9124f31d36c87510a5f53826fd --- /dev/null +++ b/core/src/cz/nic/tablexia/screen/createuser/form/swipehandler/FixedList.java @@ -0,0 +1,49 @@ +package cz.nic.tablexia.screen.createuser.form.swipehandler; + +import com.badlogic.gdx.utils.Array; + +/** + * A simple extension of Array that allows inserting an element + * at the head (index 0) without ever growing the backing array. + * Elements are shifted right and eventually discarded to make + * way for new additions. + * + * @param <T> generic type + * @author mattdesl + */ +public class FixedList<T> extends Array<T> { + + /** + * Safely creates a list that is backed by an array which + * can be directly accessed. + * + * @param capacity the fixed-size capacity of this list + * @param type the class type of the elements in this list + */ + public FixedList(int capacity, Class<T> type) { + super(false, capacity, type); + } + + /** + * Inserts the item into index zero, shifting all items to the right, + * but without increasing the list's size past its array capacity. + * + * @param t the element to insert + */ + public void insert(T t) { + T[] items = this.items; + + // increase size if we have a new point + size = Math.min(size + 1, items.length); + + // shift elements right + for (int i = size - 1; i > 0; i--) { + items[i] = items[i - 1]; + } + + // insert new item at first index + items[0] = t; + } + + +} diff --git a/core/src/cz/nic/tablexia/screen/createuser/form/swipehandler/ResolverCopy.java b/core/src/cz/nic/tablexia/screen/createuser/form/swipehandler/ResolverCopy.java new file mode 100644 index 0000000000000000000000000000000000000000..c1359f8afb5fd85577ef11fbdda41b408c7a55ac --- /dev/null +++ b/core/src/cz/nic/tablexia/screen/createuser/form/swipehandler/ResolverCopy.java @@ -0,0 +1,14 @@ +package cz.nic.tablexia.screen.createuser.form.swipehandler; + +import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.utils.Array; + +public class ResolverCopy implements SwipeResolver { + + @Override + public void resolve(Array<Vector2> input, Array<Vector2> output) { + output.clear(); + output.addAll(input); + } + +} diff --git a/core/src/cz/nic/tablexia/screen/createuser/form/swipehandler/ResolverRadialChaikin.java b/core/src/cz/nic/tablexia/screen/createuser/form/swipehandler/ResolverRadialChaikin.java new file mode 100755 index 0000000000000000000000000000000000000000..b36564729dbb84e9b0aaf21f37799a8089bc294f --- /dev/null +++ b/core/src/cz/nic/tablexia/screen/createuser/form/swipehandler/ResolverRadialChaikin.java @@ -0,0 +1,101 @@ +package cz.nic.tablexia.screen.createuser.form.swipehandler; + +import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.utils.Array; + + +//Events that trigger a "slash" +//- Reached max number of points; slash stops and fades out +//- Delay from touchDown is too long + +public class ResolverRadialChaikin implements SwipeResolver { + + private Array<Vector2> tmp = new Array<Vector2>(Vector2.class); + + public static int iterations = 2; + public static float simplifyTolerance = 35f; + + public void resolve(Array<Vector2> input, Array<Vector2> output) { + output.clear(); + if (input.size<=2) { //simple copy + output.addAll(input); + return; + } + + //simplify with squared tolerance + if (simplifyTolerance>0 && input.size>3) { + simplify(input, simplifyTolerance * simplifyTolerance, tmp); + input = tmp; + } + + //perform smooth operations + if (iterations<=0) { //no smooth, just copy input to output + output.addAll(input); + } else if (iterations==1) { //1 iteration, smooth to output + smooth(input, output); + } else { //multiple iterations.. ping-pong between arrays + int iters = iterations; + //subsequent iterations + do { + smooth(input, output); + tmp.clear(); + tmp.addAll(output); + Array<Vector2> old = output; + input = tmp; + output = old; + } while (--iters > 0); + } + } + + public static void smooth(Array<Vector2> input, Array<Vector2> output) { + //expected size + output.clear(); + output.ensureCapacity(input.size*2); + + //first element + output.add(input.get(0)); + //average elements + for (int i=0; i<input.size-1; i++) { + Vector2 p0 = input.get(i); + Vector2 p1 = input.get(i+1); + + Vector2 Q = new Vector2(0.75f * p0.x + 0.25f * p1.x, 0.75f * p0.y + 0.25f * p1.y); + Vector2 R = new Vector2(0.25f * p0.x + 0.75f * p1.x, 0.25f * p0.y + 0.75f * p1.y); + output.add(Q); + output.add(R); + } + + //last element + output.add(input.get(input.size-1)); + } + + //simple distance-based simplification + //adapted from simplify.js + public static void simplify(Array<Vector2> points, float sqTolerance, Array<Vector2> out) { + int len = points.size; + + Vector2 point = new Vector2(); + Vector2 prevPoint = points.get(0); + + out.clear(); + out.add(prevPoint); + + for (int i = 1; i < len; i++) { + point = points.get(i); + if (distSq(point, prevPoint) > sqTolerance) { + out.add(point); + prevPoint = point; + } + } + if (!prevPoint.equals(point)) { + out.add(point); + } + } + + public static float distSq(Vector2 p1, Vector2 p2) { + float dx = p1.x - p2.x, dy = p1.y - p2.y; + return dx * dx + dy * dy; + } + +} + diff --git a/core/src/cz/nic/tablexia/screen/createuser/form/swipehandler/SwipeDebugScreen.java b/core/src/cz/nic/tablexia/screen/createuser/form/swipehandler/SwipeDebugScreen.java new file mode 100644 index 0000000000000000000000000000000000000000..aa99f0fecfb134c3e0d1adcd3a385477c62fa91f --- /dev/null +++ b/core/src/cz/nic/tablexia/screen/createuser/form/swipehandler/SwipeDebugScreen.java @@ -0,0 +1,22 @@ +package cz.nic.tablexia.screen.createuser.form.swipehandler; + +import com.badlogic.gdx.scenes.scene2d.Actor; + +import cz.nic.tablexia.TablexiaSettings; +import cz.nic.tablexia.screen.AbstractTablexiaScreen; +import cz.nic.tablexia.screen.createuser.form.SignaturePane; + +/** + * Created by lhoracek on 4/24/15. + */ +public class SwipeDebugScreen extends AbstractTablexiaScreen<Void> { + @Override + protected void screenLoaded() { + super.screenLoaded(); + getStage().setDebugAll(true); + Actor swiper = new SignaturePane(); + swiper.setSize(TablexiaSettings.getWorldWidth(), TablexiaSettings.getMinWorldHeight()); + swiper.setPosition(0, 0); + getStage().addActor(swiper); + } +} diff --git a/core/src/cz/nic/tablexia/screen/createuser/form/swipehandler/SwipeHandler.java b/core/src/cz/nic/tablexia/screen/createuser/form/swipehandler/SwipeHandler.java new file mode 100755 index 0000000000000000000000000000000000000000..6851804a9f1a82812597c761c5ad73d49f31966f --- /dev/null +++ b/core/src/cz/nic/tablexia/screen/createuser/form/swipehandler/SwipeHandler.java @@ -0,0 +1,117 @@ +package cz.nic.tablexia.screen.createuser.form.swipehandler; + +import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.scenes.scene2d.InputEvent; +import com.badlogic.gdx.scenes.scene2d.InputListener; +import com.badlogic.gdx.utils.Array; + +import cz.nic.tablexia.util.Log; + +public class SwipeHandler extends InputListener { + + private FixedList<Vector2> inputPoints; + + /** + * The pointer associated with this swipe event. + */ + private int inputPointer = 0; + + /** + * The minimum distance between the first and second point in a drawn line. + */ + public int initialDistance = 5; + + /** + * The minimum distance between two points in a drawn line (starting at the second point). + */ + public int minDistance = 5; + + private Vector2 lastPoint = new Vector2(); + + private SwipeResolver simplifier = new ResolverRadialChaikin(); + private Array<Vector2> simplified; + + public SwipeHandler(int maxInputPoints) { + this.inputPoints = new FixedList<Vector2>(maxInputPoints, Vector2.class); + simplified = new Array<Vector2>(true, maxInputPoints, Vector2.class); + resolve(); //copy initial empty list + } + + /** + * Returns the fixed list of input points (not simplified). + * + * @return the list of input points + */ + public Array<Vector2> input() { + return this.inputPoints; + } + + /** + * Returns the simplified list of points representing this swipe. + * + * @return + */ + public Array<Vector2> path() { + return simplified; + } + + /** + * If the points are dirty, the line is simplified. + */ + public void resolve() { + simplifier.resolve(inputPoints, simplified); + } + + @Override + public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { + Log.debug("Swiper", "Touch down begin"); + if (pointer != inputPointer || button != inputPointer) { + return false; + } + + //clear points + inputPoints.clear(); + + //starting point + lastPoint = new Vector2(x, y); + inputPoints.insert(lastPoint); + + resolve(); + Log.debug("Swiper", "Touch down"); + return true; + } + + + @Override + public void touchUp(InputEvent event, float x, float y, int pointer, int button) { + //on release, the line is simplified + resolve(); + Log.debug("Swiper", "Touch up"); + } + + + @Override + public void touchDragged(InputEvent event, float x, float y, int pointer) { + if (pointer != inputPointer) + return; + Vector2 v = new Vector2(x, y); + + //calc length + float dx = v.x - lastPoint.x; + float dy = v.y - lastPoint.y; + float len = (float) Math.sqrt(dx * dx + dy * dy); + //TODO: use minDistanceSq + + //if we are under required distance + if (len < minDistance && (inputPoints.size > 1 || len < initialDistance)) + return; + + //add new point + inputPoints.insert(v); + Log.debug("Swiper", "Points count: " + inputPoints.size); + lastPoint = v; + + //simplify our new line + resolve(); + } +} diff --git a/core/src/cz/nic/tablexia/screen/createuser/form/swipehandler/SwipeResolver.java b/core/src/cz/nic/tablexia/screen/createuser/form/swipehandler/SwipeResolver.java new file mode 100644 index 0000000000000000000000000000000000000000..e8e56cfdbaf604f0847ee7ee363fe2e046450922 --- /dev/null +++ b/core/src/cz/nic/tablexia/screen/createuser/form/swipehandler/SwipeResolver.java @@ -0,0 +1,15 @@ +package cz.nic.tablexia.screen.createuser.form.swipehandler; + +import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.utils.Array; + +public interface SwipeResolver { + + /** + * Simplifies and smoothes the input. + * + * @param input the input of the swipe event + * @param output the output instance + */ + public void resolve(Array<Vector2> input, Array<Vector2> output); +} diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java index 6edb7edaea7d2567b3d391e182b7728291c929ae..2ad1c39d40e2eb257e4b63140ab626427198b936 100644 --- a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java +++ b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java @@ -1,6 +1,5 @@ package cz.nic.tablexia.screen.gamemenu; -import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.scenes.scene2d.Touchable; import com.badlogic.gdx.scenes.scene2d.ui.Image; @@ -11,12 +10,12 @@ import java.util.List; import cz.nic.tablexia.TablexiaSettings; import cz.nic.tablexia.bus.ApplicationBus; import cz.nic.tablexia.game.GameDefinition; -import cz.nic.tablexia.screen.AbstractTablexiaScreen; +import cz.nic.tablexia.screen.AbstractLinearTextureTablexiaScreen; import cz.nic.tablexia.screen.gamemenu.pages.GameMenuPage; import cz.nic.tablexia.screen.gamemenu.pages.OfficeMenuPage; import cz.nic.tablexia.util.ui.ViewPager; -public class GameMenuScreen extends AbstractTablexiaScreen<Void> { +public class GameMenuScreen extends AbstractLinearTextureTablexiaScreen<Void> { private ViewPager vp; @@ -52,10 +51,4 @@ public class GameMenuScreen extends AbstractTablexiaScreen<Void> { vp.scrollToPage(1); } - @Override - public Texture getTexture(String textureName) { - Texture texture = super.getTexture(textureName); - texture.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear); - return texture; - } } diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/pages/GameMenuPage.java b/core/src/cz/nic/tablexia/screen/gamemenu/pages/GameMenuPage.java index d0712ead42a2306fe1ba37e340415584b9ceae85..6c51ba47b5e84fbf5a71ac02bc541f9bd36c7dea 100644 --- a/core/src/cz/nic/tablexia/screen/gamemenu/pages/GameMenuPage.java +++ b/core/src/cz/nic/tablexia/screen/gamemenu/pages/GameMenuPage.java @@ -6,9 +6,7 @@ import com.badlogic.gdx.graphics.g2d.Batch; import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.InputEvent; -import com.badlogic.gdx.scenes.scene2d.InputListener; import com.badlogic.gdx.scenes.scene2d.actions.AlphaAction; -import com.badlogic.gdx.scenes.scene2d.actions.MoveToAction; import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.Label; import com.badlogic.gdx.scenes.scene2d.ui.Stack; @@ -19,6 +17,8 @@ import cz.nic.tablexia.game.GameDefinition; import cz.nic.tablexia.game.difficulty.GameDifficulty; import cz.nic.tablexia.screen.AbstractTablexiaScreen; import cz.nic.tablexia.screen.gamemenu.GameMenuAssets; +import cz.nic.tablexia.util.Log; +import cz.nic.tablexia.util.listener.DragSwitchListener; import cz.nic.tablexia.util.ui.ViewPager; /** @@ -32,6 +32,7 @@ public class GameMenuPage extends MenuPage implements ViewPager.ScrollListener { private Actor diffEasy, diffMedium, diffHard; private Stack diffStack; private GameDifficulty gameDifficulty = GameDifficulty.EASY; + private DragSwitchListener dragSwitchListener; private float scrollOffset = TablexiaSettings.getWorldWidth(); // hack to keep paralax layers out of picture before scrolled for first time @@ -148,43 +149,18 @@ public class GameMenuPage extends MenuPage implements ViewPager.ScrollListener { diffStack.setSize(diffWidth, diffHeight); diffStack.setPosition(diffX, diffY); addActor(diffStack); - setDifficulty(gameDifficulty); - - diffStack.addListener(new InputListener() { - float lastX; - + diffStack.addListener(dragSwitchListener = new DragSwitchListener(diffStack, diffEasyX, diffHardX, diffMediumX)); + dragSwitchListener.setSwitchMovedListener(new DragSwitchListener.SwitchMovedListener() { @Override - public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { - super.touchDown(event, x, y, pointer, button); - lastX = x; - event.stop(); - return true; - } - - @Override - public void touchDragged(InputEvent event, float x, float y, int pointer) { - super.touchDragged(event, x, y, pointer); - float bx = diffStack.getX() + (x - lastX); - if (bx >= diffEasyX && bx <= diffHardX) { - diffStack.setPosition(bx, diffStack.getY()); + public void movedToStep(int step) { + Log.info(((Object) this).getClass().getName(), "moved to step: " + step); + for(int i = 0 ; i< diffStack.getChildren().size; i++){ + diffStack.getChildren().get(i).setVisible(i==step); } - showDifficulty(getDifficulty()); - event.stop(); - } - - @Override - public void touchUp(InputEvent event, float x, float y, int pointer, int button) { - super.touchUp(event, x, y, pointer, button); - float bx = diffStack.getX() + (x - lastX); - - GameDifficulty newDiff = getDifficulty(); - setDifficulty(newDiff); - if (gameDifficulty != newDiff) { - difficultyChanged(newDiff); - } - event.stop(); } }); + setDifficulty(gameDifficulty); // TODO + } /** @@ -193,20 +169,7 @@ public class GameMenuPage extends MenuPage implements ViewPager.ScrollListener { * @param difficulty */ public void setDifficulty(GameDifficulty difficulty) { - showDifficulty(difficulty); - MoveToAction ma = new MoveToAction(); - switch (difficulty) { - case EASY: - ma.setPosition(diffEasyX, diffStack.getY()); - break; - case MEDIUM: - ma.setPosition(diffMediumX, diffStack.getY()); - break; - case HARD: - ma.setPosition(diffHardX, diffStack.getY()); - break; - } - diffStack.addAction(ma); + dragSwitchListener.switchToStep(difficulty.ordinal()); if (gameDifficulty != difficulty) { difficultyChanged(difficulty); } @@ -222,51 +185,6 @@ public class GameMenuPage extends MenuPage implements ViewPager.ScrollListener { TablexiaSettings.getInstance().setGameDifficulty(game, difficulty); } - /** - * Get nearest difficulty from current slider position - * - * @return - */ - private GameDifficulty getDifficulty() { - float bx = diffStack.getX(); - if (bx < diffMediumX) { - if ((diffEasyX + ((diffMediumX - diffEasyX) / 2)) > bx) { - return GameDifficulty.EASY; - } else { - return GameDifficulty.MEDIUM; - } - } else { - if ((diffMediumX + ((diffHardX - diffMediumX) / 2)) > bx) { - return GameDifficulty.MEDIUM; - } else { - return GameDifficulty.HARD; - } - } - } - - /** - * Check difficulty image and display corresponding image - * - * @param diff - */ - private void showDifficulty(GameDifficulty diff) { - diffEasy.setVisible(false); - diffMedium.setVisible(false); - diffHard.setVisible(false); - - switch (diff) { - case EASY: - diffEasy.setVisible(true); - break; - case MEDIUM: - diffMedium.setVisible(true); - break; - case HARD: - diffHard.setVisible(true); - break; - } - } - @Override public void draw(Batch batch, float parentAlpha) { // Paralax layers diff --git a/core/src/cz/nic/tablexia/screen/loader/LoaderScreen.java b/core/src/cz/nic/tablexia/screen/loader/LoaderScreen.java index ab4540de92b5599693c68da84ce0edc1ee5a8680..72b1cbfce05aee4930abfb758ca609327bb51967 100644 --- a/core/src/cz/nic/tablexia/screen/loader/LoaderScreen.java +++ b/core/src/cz/nic/tablexia/screen/loader/LoaderScreen.java @@ -6,10 +6,11 @@ import com.badlogic.gdx.scenes.scene2d.ui.Image; import java.util.List; +import cz.nic.tablexia.TablexiaSettings; import cz.nic.tablexia.loader.TablexiaAssetManager; -import cz.nic.tablexia.screen.AbstractTablexiaScreen; +import cz.nic.tablexia.screen.AbstractLinearTextureTablexiaScreen; -public class LoaderScreen extends AbstractTablexiaScreen<Void> { +public class LoaderScreen extends AbstractLinearTextureTablexiaScreen<Void> { private static final String LOADER_BACKGROUND = "gfx/screen_loader_background.jpg"; private static final String LOADER_SMALL_HAND = "gfx/screen_loader_smallhand.png"; @@ -28,23 +29,24 @@ public class LoaderScreen extends AbstractTablexiaScreen<Void> { @Override protected void screenLoaded() { + // TODO fix screen size Image background = new Image(getTexture(LOADER_BACKGROUND)); background.setPosition(0, 0); - background.setSize(getStage().getWidth(), getStage().getHeight()); + background.setSize(getStage().getWidth(), TablexiaSettings.getMinWorldHeight()); getStage().addActor(background); Image smallhand = new Image(getTexture(LOADER_SMALL_HAND)); - smallhand.setPosition(getStage().getWidth() * 0.22f, getStage().getHeight() * 0.64f); - smallhand.setSize(getStage().getWidth() * 0.01f, getStage().getHeight() * 0.06f); + smallhand.setPosition(220, 355); + smallhand.setSize(10, 40); getStage().addActor(smallhand); - smallhand.setOrigin(smallhand.getWidth() / 2, 0); + smallhand.setOrigin(smallhand.getWidth() / 2, 5); smallhand.addAction(Actions.forever(Actions.rotateBy(-360, 6))); Image bighand = new Image(getTexture(LOADER_BIG_HAND)); - bighand.setPosition(getStage().getWidth() * 0.22f, getStage().getHeight() * 0.64f); - bighand.setSize(getStage().getWidth() * 0.01f, getStage().getHeight() * 0.06f); + bighand.setPosition(220, 355); + bighand.setSize(10, 40); getStage().addActor(bighand); - bighand.setOrigin(bighand.getWidth() / 2, 0); + bighand.setOrigin(bighand.getWidth() / 2, 5); bighand.addAction(Actions.forever(Actions.rotateBy(-360, 0.5f))); } diff --git a/core/src/cz/nic/tablexia/util/ScaleUtil.java b/core/src/cz/nic/tablexia/util/ScaleUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..4dc65214df95ee1999f63af6b0b404a484c92c5f --- /dev/null +++ b/core/src/cz/nic/tablexia/util/ScaleUtil.java @@ -0,0 +1,85 @@ +package cz.nic.tablexia.util; + +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.scenes.scene2d.Actor; +import com.badlogic.gdx.scenes.scene2d.Stage; +import com.badlogic.gdx.scenes.scene2d.ui.Image; + +import cz.nic.tablexia.TablexiaSettings; + +/** + * Created by lhoracek on 4/7/15. + */ +public class ScaleUtil { + + public static Image createImageSizePosition(Texture texture, float width, float height, float x, float y) { + Image image = createImageSize(texture, width, height); + image.setPosition(x, y); + return image; + } + + public static Image createImageWidthPosition(Texture texture, float width, float x, float y) { + Image image = createImageToWidth(texture, width); + image.setPosition(x, y); + return image; + } + + public static Image createImageHeightPosition(Texture texture, float height, float x, float y) { + Image image = createImageToHeight(texture, height); + image.setPosition(x, y); + return image; + } + + public static Image createImageFitInto(Texture texture, float width, float height) { + Image image = new Image(texture); + if (getWidth(texture.getWidth(), texture.getHeight(), height) > width) { + image.setSize(width, getHeight(texture.getWidth(), texture.getHeight(), width)); + } else { + image.setSize(getWidth(texture.getWidth(), texture.getHeight(), height), height); + } + return image; + } + + public static Image createImageSize(Texture texture, float width, float height) { + Image image = new Image(texture); + image.setSize(width, height); + return image; + } + + public static Image createImageToWidth(Texture texture, float width) { + Image image = new Image(texture); + image.setSize(width, getHeight(texture.getWidth(), texture.getHeight(), width)); + return image; + } + + public static Image createImageToHeight(Texture texture, float height) { + Image image = new Image(texture); + image.setSize(getWidth(texture.getWidth(), texture.getHeight(), height), height); + return image; + } + + public static float getHeight(float origWidth, float origHeight, float targetWidth) { + return targetWidth / (origWidth / origHeight); + } + + public static float getWidth(float origWidth, float origHeight, float targetHeight) { + return targetHeight * (origWidth / origHeight); + } + + public static Actor setFullScreen(Actor actor, Stage stage) { + setPosition(actor, 0, 0); + actor.setSize(stage.getWidth(), stage.getHeight()); + return actor; + } + + public static Actor setBackgroundSize(Actor actor) { + setPosition(actor, 0, -TablexiaSettings.getMinWorldHeight()/2); + actor.setSize(TablexiaSettings.getWorldWidth(), TablexiaSettings.getMinWorldHeight()*2); + return actor; + } + + public static Actor setPosition(Actor actor, float x, float y) { + actor.setPosition(x, y); + return actor; + } +} diff --git a/core/src/cz/nic/tablexia/util/assetmanager/DirectoryAsset.java b/core/src/cz/nic/tablexia/util/assetmanager/DirectoryAsset.java index 15136168250072e1231f4a139be8a78b946d12dd..c837dcb06c4dfb47d76c0706426d67dc8d662f5b 100644 --- a/core/src/cz/nic/tablexia/util/assetmanager/DirectoryAsset.java +++ b/core/src/cz/nic/tablexia/util/assetmanager/DirectoryAsset.java @@ -11,11 +11,12 @@ import cz.nic.tablexia.util.Log; /** * Created by lhoracek on 4/3/15. */ -public abstract class DirectoryAsset extends HashMap<String, String> { - public abstract String getPath(); +public class DirectoryAsset extends HashMap<String, String> { + private final String basePath; - public DirectoryAsset() { - loadFilesInDir(getPath()); + public DirectoryAsset(String path){ + basePath = path; + loadFilesInDir(basePath); } private void loadFilesInDir(String path) { @@ -42,9 +43,19 @@ public abstract class DirectoryAsset extends HashMap<String, String> { } public String add(String path, FileHandle fh) { - String fullPath = getPath() + "/" + path + fh.name(); + String fullPath = basePath + "/" + path + fh.name(); String key = path + fh.nameWithoutExtension(); Log.info(getClass().getName(), "Adding asset: " + key + " : " + fullPath); return super.put(key, fullPath); } + + @Override + public String get(Object key) { + String value = super.get(key); + if(value == null){ + Log.info(getClass().getName(), "Asset not prepared: " + key); + throw new IllegalArgumentException("Asset not prepared: " + key); + } + return value; + } } diff --git a/core/src/cz/nic/tablexia/util/listener/DragActorListener.java b/core/src/cz/nic/tablexia/util/listener/DragActorListener.java new file mode 100644 index 0000000000000000000000000000000000000000..ce5f515f65e400f5a6c4fbb921e3bda891c47753 --- /dev/null +++ b/core/src/cz/nic/tablexia/util/listener/DragActorListener.java @@ -0,0 +1,88 @@ +package cz.nic.tablexia.util.listener; + +import com.badlogic.gdx.math.Interpolation; +import com.badlogic.gdx.scenes.scene2d.Actor; +import com.badlogic.gdx.scenes.scene2d.InputEvent; +import com.badlogic.gdx.scenes.scene2d.InputListener; +import com.badlogic.gdx.scenes.scene2d.actions.Actions; + +import cz.nic.tablexia.util.Log; + +/** + * Created by lhoracek on 4/10/15. + */ +public class DragActorListener extends InputListener { + private float grabX, grabY, startX, startY; + private final Actor actor; + private boolean bounceBack; + private DragDropListener dragDropListener; + + public DragActorListener(Actor actor) { + this.actor = actor; + } + + public DragActorListener(Actor actor, boolean bounceBack) { + this.actor = actor; + this.bounceBack = bounceBack; + } + + public DragActorListener(Actor actor, boolean bounceBack, DragDropListener dragDropListener) { + this(actor,bounceBack); + this.dragDropListener = dragDropListener; + } + + public void setDragDropListener(DragDropListener dragDropListener) { + this.dragDropListener = dragDropListener; + } + + // TODO add callback method + private void moveBack() { + actor.addAction(Actions.moveTo(startX, startY, 0.5f, Interpolation.elasticOut)); + } + + @Override + public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { + super.touchDown(event, x, y, pointer, button); + if (pointer == 0 && button == 0) { + grabX = x; + grabY = y; + startX = actor.getX(); + startY = actor.getY(); + event.stop(); + return true; + } + return false; + } + + @Override + public void touchDragged(InputEvent event, float x, float y, int pointer) { + super.touchDragged(event, x, y, pointer); + if (pointer == 0) { + float bx = actor.getX() + (x - grabX); + float by = actor.getY() + (y - grabY); + actor.setPosition(bx, by); + if (actor.getDebug()) { + Log.info(((Object) this).getClass().getName(), "Position " + bx + "x" + by); + } + event.stop(); + } + } + + @Override + public void touchUp(InputEvent event, float x, float y, int pointer, int button) { + if (pointer == 0 && button == 0) { + super.touchUp(event, x, y, pointer, button); + if (bounceBack) { + moveBack(); + } + if(dragDropListener != null){ + dragDropListener.dropped(actor.getX(),actor.getY()); + } + event.stop(); + } + } + + public static interface DragDropListener { + public void dropped(float x, float y); + } +} diff --git a/core/src/cz/nic/tablexia/util/listener/DragSwitchListener.java b/core/src/cz/nic/tablexia/util/listener/DragSwitchListener.java new file mode 100644 index 0000000000000000000000000000000000000000..5d90c72d8fe05e351bfacd28a06ca35dfe22e36e --- /dev/null +++ b/core/src/cz/nic/tablexia/util/listener/DragSwitchListener.java @@ -0,0 +1,145 @@ +package cz.nic.tablexia.util.listener; + +import com.badlogic.gdx.math.Interpolation; +import com.badlogic.gdx.scenes.scene2d.Actor; +import com.badlogic.gdx.scenes.scene2d.InputEvent; +import com.badlogic.gdx.scenes.scene2d.InputListener; +import com.badlogic.gdx.scenes.scene2d.actions.Actions; + +/** + * Created by lhoracek on 4/10/15. + */ +public class DragSwitchListener extends InputListener { + private float grabX, startX; + + private final float maxX, minX; + private final float[] snadPoints; + private final Actor actor; + private SwitchMovedListener switchMovedListener; + private SwitchSelectedListener switchSelectedListener; + private Float disabledPoint; + + public DragSwitchListener(Actor actor, float minX, float maxX, float... snapPoints) { + this.actor = actor; + this.minX = minX; + this.maxX = maxX; + this.snadPoints = snapPoints == null ? new float[0] : snapPoints; + } + + // TODO add callback method + private void moveBack() { + actor.addAction(Actions.moveTo(startX, actor.getY(), 0.5f, Interpolation.pow2)); + } + + @Override + public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { + super.touchDown(event, x, y, pointer, button); + grabX = x; + startX = actor.getX(); + event.stop(); + return true; + } + + @Override + public void touchDragged(InputEvent event, float x, float y, int pointer) { + super.touchDragged(event, x, y, pointer); + float bx = actor.getX() + (x - grabX); + if (bx > minX && bx < maxX) { + actor.setPosition(bx, actor.getY()); + if (switchMovedListener != null) { + switchMovedListener.movedToStep(getStep(true)); + } + } + event.stop(); + } + + @Override + public void touchUp(InputEvent event, float x, float y, int pointer, int button) { + super.touchUp(event, x, y, pointer, button); + actor.addAction(Actions.moveTo(getClosestValue(false), actor.getY())); + if (switchMovedListener != null) { + switchMovedListener.movedToStep(getStep(false)); + } + if (switchSelectedListener != null) { + switchSelectedListener.stepSelected(getStep(false)); + } + event.stop(); + } + + private int getStep(boolean useDisabled) { + float closest = getClosestValue(useDisabled); + + for (int i = 0; i < snadPoints.length; i++) { + if (snadPoints[i] == closest) { + return i + 1; + } + } + return closest == minX ? 0 : snadPoints.length + 1; + } + + private float getX(int step) { + if (step == 0) { + return minX; + } else if (step <= snadPoints.length) { + return snadPoints[step - 1]; + } + return maxX; + } + + public void switchToStep(int step) { + actor.setX(getX(step)); + if (switchMovedListener != null) { + switchMovedListener.movedToStep(getStep(true)); + } + if (switchSelectedListener != null) { + switchSelectedListener.stepSelected(getStep(true)); + } + } + + private float getClosestValue(boolean useDisabled) { + float left = minX; + float right = maxX; + + // find closest snap points + for (float snap : snadPoints) { + if (!useDisabled && disabledPoint != null && snap == disabledPoint.floatValue()) { + continue; + } + if (snap > actor.getX() && ((snap - actor.getX()) < (right - actor.getX()))) { + right = snap; + } else if (snap <= actor.getX() && ((actor.getX() - snap) < (actor.getX() - left))) { + left = snap; + } + } + float middle = left + ((right - left) / 2); + return actor.getX() > middle ? right : left; + } + + public SwitchMovedListener getSwitchMovedListener() { + return switchMovedListener; + } + + public void setDisabledPoint(Float disabledPoint) { + this.disabledPoint = disabledPoint; + } + + public void setSwitchMovedListener(SwitchMovedListener switchMovedListener) { + this.switchMovedListener = switchMovedListener; + } + + public SwitchSelectedListener getSwitchSelectedListener() { + return switchSelectedListener; + } + + public void setSwitchSelectedListener(SwitchSelectedListener switchSelectedListener) { + this.switchSelectedListener = switchSelectedListener; + } + + public static interface SwitchMovedListener { + public void movedToStep(int step); + } + + public static interface SwitchSelectedListener { + public void stepSelected(int step); + } +}