From 53d53fa5c76b931f9ecee2ebb11ad3aa7837bb6b Mon Sep 17 00:00:00 2001 From: Sewmina Dilshan Date: Tue, 21 Feb 2023 22:19:23 +0530 Subject: [PATCH] almost ready --- ...roidx.annotation.annotation-1.2.0.jar.meta | 2 +- ...ion.annotation-experimental-1.1.0.aar.meta | 2 +- ...roidx.arch.core.core-common-2.1.0.jar.meta | 2 +- ...oidx.arch.core.core-runtime-2.1.0.aar.meta | 2 +- ...nflater.asynclayoutinflater-1.0.0.aar.meta | 2 +- .../androidx.browser.browser-1.4.0.aar.meta | 2 +- ...roidx.collection.collection-1.1.0.jar.meta | 2 +- ...ncurrent.concurrent-futures-1.0.0.jar.meta | 2 +- ...torlayout.coordinatorlayout-1.0.0.aar.meta | 2 +- .../Android/androidx.core.core-1.6.0.aar.meta | 2 +- ...cursoradapter.cursoradapter-1.0.0.aar.meta | 2 +- ...roidx.customview.customview-1.0.0.aar.meta | 2 +- ...x.documentfile.documentfile-1.0.0.aar.meta | 2 +- ...x.drawerlayout.drawerlayout-1.0.0.aar.meta | 2 +- .../androidx.fragment.fragment-1.0.0.aar.meta | 2 +- ...x.interpolator.interpolator-1.0.0.aar.meta | 2 +- ...gacy.legacy-support-core-ui-1.0.0.aar.meta | 2 +- ...y.legacy-support-core-utils-1.0.0.aar.meta | 2 +- ....lifecycle.lifecycle-common-2.4.1.jar.meta | 2 +- ...ycle.lifecycle-common-java8-2.4.1.jar.meta | 2 +- ...ifecycle.lifecycle-livedata-2.1.0.aar.meta | 2 +- ...cle.lifecycle-livedata-core-2.1.0.aar.meta | 2 +- ...oidx.lifecycle.lifecycle-process-2.4.1.aar | Bin 9993 -> 9993 bytes ...lifecycle.lifecycle-process-2.4.1.aar.meta | 2 +- ...lifecycle.lifecycle-runtime-2.4.1.aar.meta | 2 +- ...lifecycle.lifecycle-service-2.1.0.aar.meta | 2 +- ...fecycle.lifecycle-viewmodel-2.0.0.aar.meta | 2 +- .../androidx.loader.loader-1.0.0.aar.meta | 2 +- ...nager.localbroadcastmanager-1.0.0.aar.meta | 2 +- .../androidx.print.print-1.0.0.aar.meta | 2 +- .../androidx.room.room-common-2.2.5.jar.meta | 2 +- .../androidx.room.room-runtime-2.2.5.aar.meta | 2 +- ...anelayout.slidingpanelayout-1.0.0.aar.meta | 2 +- .../androidx.sqlite.sqlite-2.1.0.aar.meta | 2 +- ...idx.sqlite.sqlite-framework-2.1.0.aar.meta | 2 +- ...androidx.startup.startup-runtime-1.1.1.aar | Bin 20086 -> 20086 bytes ...idx.startup.startup-runtime-1.1.1.aar.meta | 2 +- ...shlayout.swiperefreshlayout-1.0.0.aar.meta | 2 +- .../androidx.tracing.tracing-1.0.0.aar.meta | 2 +- ...celable.versionedparcelable-1.1.1.aar.meta | 2 +- ...ndroidx.viewpager.viewpager-1.0.0.aar.meta | 2 +- .../androidx.work.work-runtime-2.7.0.aar | Bin 1530136 -> 1530136 bytes .../androidx.work.work-runtime-2.7.0.aar.meta | 2 +- ...roid.gms.play-services-ads-21.3.0.aar.meta | 2 +- ...gms.play-services-ads-base-21.3.0.aar.meta | 2 +- ...ay-services-ads-identifier-18.0.0.aar.meta | 2 +- ...roid.gms.play-services-ads-lite-21.3.0.aar | Bin 717952 -> 717952 bytes ...gms.play-services-ads-lite-21.3.0.aar.meta | 2 +- ...d.gms.play-services-appset-16.0.1.aar.meta | 2 +- ...oid.gms.play-services-auth-16.0.1.aar.meta | 2 +- ...ay-services-auth-api-phone-16.0.0.aar.meta | 2 +- ...ms.play-services-auth-base-16.0.0.aar.meta | 2 +- ...oid.gms.play-services-base-18.0.0.aar.meta | 2 +- ...gms.play-services-basement-18.0.0.aar.meta | 2 +- ...-services-measurement-base-20.1.2.aar.meta | 2 +- ...rvices-measurement-sdk-api-20.1.2.aar.meta | 2 +- ...id.gms.play-services-tasks-18.0.1.aar.meta | 2 +- ...ump.user-messaging-platform-2.0.0.aar.meta | 2 +- ...google.guava.listenablefuture-1.0.jar.meta | 2 +- ...gle.signin.google-signin-support-1.0.4.aar | Bin 198795 -> 198795 bytes ...ignin.google-signin-support-1.0.4.aar.meta | 2 +- .../Android/googlemobileads-unity.aar.meta | 118 +- Assets/Scenes/Login.unity | 358 +++ Assets/Scenes/MainMenu.unity | 1992 +++++++---------- Assets/Scenes/Proto.unity | 1579 ++++++++++++- Assets/Scripts/AdsManager.cs | 158 ++ Assets/Scripts/AdsManager.cs.meta | 11 + Assets/Scripts/AudioManager.cs | 22 + Assets/Scripts/DataManager.cs | 93 +- Assets/Scripts/GameManager.cs | 58 +- Assets/Scripts/LevelGenerator.cs | 15 +- Assets/Scripts/LoadingScreen.cs | 8 +- Assets/Scripts/Login.cs | 18 + Assets/Scripts/MainMenu.cs | 50 +- Assets/Sprites/UI/logout_icon.png | Bin 0 -> 5174 bytes Assets/Sprites/UI/logout_icon.png.meta | 135 ++ Assets/Sprites/golfinity2d.png | Bin 0 -> 38033 bytes Assets/Sprites/golfinity2d.png.meta | 135 ++ ProjectSettings/GvhProjectSettings.xml | 4 +- ProjectSettings/ProjectSettings.asset | 13 +- 80 files changed, 3537 insertions(+), 1342 deletions(-) create mode 100644 Assets/Scripts/AdsManager.cs create mode 100644 Assets/Scripts/AdsManager.cs.meta create mode 100644 Assets/Sprites/UI/logout_icon.png create mode 100644 Assets/Sprites/UI/logout_icon.png.meta create mode 100644 Assets/Sprites/golfinity2d.png create mode 100644 Assets/Sprites/golfinity2d.png.meta diff --git a/Assets/Plugins/Android/androidx.annotation.annotation-1.2.0.jar.meta b/Assets/Plugins/Android/androidx.annotation.annotation-1.2.0.jar.meta index 321b9bb..9904804 100644 --- a/Assets/Plugins/Android/androidx.annotation.annotation-1.2.0.jar.meta +++ b/Assets/Plugins/Android/androidx.annotation.annotation-1.2.0.jar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 79ff48a4583ed7640849617b72c8ab2b +guid: 2090a2e551c1a0f4eb428d9656737c32 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.annotation.annotation-experimental-1.1.0.aar.meta b/Assets/Plugins/Android/androidx.annotation.annotation-experimental-1.1.0.aar.meta index 4b5243a..e2eae37 100644 --- a/Assets/Plugins/Android/androidx.annotation.annotation-experimental-1.1.0.aar.meta +++ b/Assets/Plugins/Android/androidx.annotation.annotation-experimental-1.1.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f536aa2f1fee0b4429fbede21ccbc01b +guid: c37cc38b72ea2d445841544292af450c labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.arch.core.core-common-2.1.0.jar.meta b/Assets/Plugins/Android/androidx.arch.core.core-common-2.1.0.jar.meta index 88896ac..9632771 100644 --- a/Assets/Plugins/Android/androidx.arch.core.core-common-2.1.0.jar.meta +++ b/Assets/Plugins/Android/androidx.arch.core.core-common-2.1.0.jar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 0a867bda5e78f9b4ba5fd0577ddf0899 +guid: 2dcbe8870a3837945acbc13d65b57abe labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.arch.core.core-runtime-2.1.0.aar.meta b/Assets/Plugins/Android/androidx.arch.core.core-runtime-2.1.0.aar.meta index 7fed02a..cd80b9f 100644 --- a/Assets/Plugins/Android/androidx.arch.core.core-runtime-2.1.0.aar.meta +++ b/Assets/Plugins/Android/androidx.arch.core.core-runtime-2.1.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 0e367020ce4ae9342b4b956fcfbae7f2 +guid: e61381cef9126934aa9a4b3b624accba labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.asynclayoutinflater.asynclayoutinflater-1.0.0.aar.meta b/Assets/Plugins/Android/androidx.asynclayoutinflater.asynclayoutinflater-1.0.0.aar.meta index f4bda90..ef7e2da 100644 --- a/Assets/Plugins/Android/androidx.asynclayoutinflater.asynclayoutinflater-1.0.0.aar.meta +++ b/Assets/Plugins/Android/androidx.asynclayoutinflater.asynclayoutinflater-1.0.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a8544a9fa19059c4c8d64d904936fd1e +guid: e4af3447af6096f4e8f55230fd1e9248 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.browser.browser-1.4.0.aar.meta b/Assets/Plugins/Android/androidx.browser.browser-1.4.0.aar.meta index 61216ea..c642735 100644 --- a/Assets/Plugins/Android/androidx.browser.browser-1.4.0.aar.meta +++ b/Assets/Plugins/Android/androidx.browser.browser-1.4.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5712f9261e52a7a409c2a86bd2c2cb96 +guid: c7a954166d027184f94fc278b983ac6e labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.collection.collection-1.1.0.jar.meta b/Assets/Plugins/Android/androidx.collection.collection-1.1.0.jar.meta index ddd6a9b..b3f53f1 100644 --- a/Assets/Plugins/Android/androidx.collection.collection-1.1.0.jar.meta +++ b/Assets/Plugins/Android/androidx.collection.collection-1.1.0.jar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2b24dfba6f3e78045b608340ba97035f +guid: 20842b18e680b274d873b9404162cffa labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.concurrent.concurrent-futures-1.0.0.jar.meta b/Assets/Plugins/Android/androidx.concurrent.concurrent-futures-1.0.0.jar.meta index ffe5080..1a5072c 100644 --- a/Assets/Plugins/Android/androidx.concurrent.concurrent-futures-1.0.0.jar.meta +++ b/Assets/Plugins/Android/androidx.concurrent.concurrent-futures-1.0.0.jar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ca609baf87a81b040a0dd392a2157765 +guid: 64a3a7ccff498ba4b99520ba3dd4ca3b labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.coordinatorlayout.coordinatorlayout-1.0.0.aar.meta b/Assets/Plugins/Android/androidx.coordinatorlayout.coordinatorlayout-1.0.0.aar.meta index 41bb852..235ec54 100644 --- a/Assets/Plugins/Android/androidx.coordinatorlayout.coordinatorlayout-1.0.0.aar.meta +++ b/Assets/Plugins/Android/androidx.coordinatorlayout.coordinatorlayout-1.0.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 16d0c0b54a7650c46a1053185c4ebd0c +guid: 4a9361828b4ce7d4c879c78d9b52856c labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.core.core-1.6.0.aar.meta b/Assets/Plugins/Android/androidx.core.core-1.6.0.aar.meta index 440e083..a894b76 100644 --- a/Assets/Plugins/Android/androidx.core.core-1.6.0.aar.meta +++ b/Assets/Plugins/Android/androidx.core.core-1.6.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 95457351d6cfea046af4177436955495 +guid: edfe4791b6d6f90479f630a056350599 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.cursoradapter.cursoradapter-1.0.0.aar.meta b/Assets/Plugins/Android/androidx.cursoradapter.cursoradapter-1.0.0.aar.meta index c218e9a..2e7cb8d 100644 --- a/Assets/Plugins/Android/androidx.cursoradapter.cursoradapter-1.0.0.aar.meta +++ b/Assets/Plugins/Android/androidx.cursoradapter.cursoradapter-1.0.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 86f4db619b9f4b84891772ad2c196e37 +guid: 461f460ef258cd944b8e72bbc6688a44 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.customview.customview-1.0.0.aar.meta b/Assets/Plugins/Android/androidx.customview.customview-1.0.0.aar.meta index 0e2a6de..bdfc867 100644 --- a/Assets/Plugins/Android/androidx.customview.customview-1.0.0.aar.meta +++ b/Assets/Plugins/Android/androidx.customview.customview-1.0.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b02e305f0642ed341aba32f4c087a78a +guid: 0ef91926c9439474ba0274db9feffd9c labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.documentfile.documentfile-1.0.0.aar.meta b/Assets/Plugins/Android/androidx.documentfile.documentfile-1.0.0.aar.meta index eee7648..3dc4fc1 100644 --- a/Assets/Plugins/Android/androidx.documentfile.documentfile-1.0.0.aar.meta +++ b/Assets/Plugins/Android/androidx.documentfile.documentfile-1.0.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c3f3ea4c15ca7864eb9e66e94525208c +guid: 38cdfa4264aeeb5479c9a632f4907016 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.drawerlayout.drawerlayout-1.0.0.aar.meta b/Assets/Plugins/Android/androidx.drawerlayout.drawerlayout-1.0.0.aar.meta index e935b41..eb05db9 100644 --- a/Assets/Plugins/Android/androidx.drawerlayout.drawerlayout-1.0.0.aar.meta +++ b/Assets/Plugins/Android/androidx.drawerlayout.drawerlayout-1.0.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 71f811a2a7068bc4eb8dcb36d6f60104 +guid: a29eebbe22ec93d408302dfc1b3772cc labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.fragment.fragment-1.0.0.aar.meta b/Assets/Plugins/Android/androidx.fragment.fragment-1.0.0.aar.meta index 6156d1a..30966f2 100644 --- a/Assets/Plugins/Android/androidx.fragment.fragment-1.0.0.aar.meta +++ b/Assets/Plugins/Android/androidx.fragment.fragment-1.0.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ec14c5a8279e87440aae8f51090a46f8 +guid: b7e2573be970b1e4096d8549a3eba6e7 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.interpolator.interpolator-1.0.0.aar.meta b/Assets/Plugins/Android/androidx.interpolator.interpolator-1.0.0.aar.meta index e42327c..d6fc58c 100644 --- a/Assets/Plugins/Android/androidx.interpolator.interpolator-1.0.0.aar.meta +++ b/Assets/Plugins/Android/androidx.interpolator.interpolator-1.0.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 29bfafe1cbb0d5644813084d20be71ce +guid: e018afbd2ae719249afc4a2f98e37ef6 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.legacy.legacy-support-core-ui-1.0.0.aar.meta b/Assets/Plugins/Android/androidx.legacy.legacy-support-core-ui-1.0.0.aar.meta index 0ed6254..bdd43d8 100644 --- a/Assets/Plugins/Android/androidx.legacy.legacy-support-core-ui-1.0.0.aar.meta +++ b/Assets/Plugins/Android/androidx.legacy.legacy-support-core-ui-1.0.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 33d57443cf2978d42806f9f50fe7540a +guid: fd171e44f802b7b43a811b36bdfc0bb9 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.legacy.legacy-support-core-utils-1.0.0.aar.meta b/Assets/Plugins/Android/androidx.legacy.legacy-support-core-utils-1.0.0.aar.meta index aa64422..9fb76ec 100644 --- a/Assets/Plugins/Android/androidx.legacy.legacy-support-core-utils-1.0.0.aar.meta +++ b/Assets/Plugins/Android/androidx.legacy.legacy-support-core-utils-1.0.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: edff60f090dea4447b435de9436fabc3 +guid: bdc5d5ba566cde642a8250c6ef5f7e09 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.lifecycle.lifecycle-common-2.4.1.jar.meta b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-common-2.4.1.jar.meta index 5f6ed9c..5f3cef2 100644 --- a/Assets/Plugins/Android/androidx.lifecycle.lifecycle-common-2.4.1.jar.meta +++ b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-common-2.4.1.jar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 244839c08650d8d40b7878d4a84b7710 +guid: 57e41dd0360f9854abb246edfa11a5bb labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.lifecycle.lifecycle-common-java8-2.4.1.jar.meta b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-common-java8-2.4.1.jar.meta index 8b26829..1654ae6 100644 --- a/Assets/Plugins/Android/androidx.lifecycle.lifecycle-common-java8-2.4.1.jar.meta +++ b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-common-java8-2.4.1.jar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d18a8500e24c37a43aa9e636366cb2dd +guid: b165d62e989a53d45be3760398fb8535 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.lifecycle.lifecycle-livedata-2.1.0.aar.meta b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-livedata-2.1.0.aar.meta index 92f4796..fc3ae48 100644 --- a/Assets/Plugins/Android/androidx.lifecycle.lifecycle-livedata-2.1.0.aar.meta +++ b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-livedata-2.1.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8e60726c4ce0ec045beb5e6dbcf5b1dc +guid: 9d8c9eead9d7a254ea7bd4a9db68d0ef labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.lifecycle.lifecycle-livedata-core-2.1.0.aar.meta b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-livedata-core-2.1.0.aar.meta index 57ff383..4697a18 100644 --- a/Assets/Plugins/Android/androidx.lifecycle.lifecycle-livedata-core-2.1.0.aar.meta +++ b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-livedata-core-2.1.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8154bc7099edc1f47980eaab951ef1bb +guid: 05f90f71759694f42ae65e990cee6268 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.lifecycle.lifecycle-process-2.4.1.aar b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-process-2.4.1.aar index a307bbf95159f43d85b425121fe7246f9515e8f9..809fa80c2fe5b11d03b61391062c1a51cc4721d8 100644 GIT binary patch delta 112 zcmeD5>-6Id@MdNaVc_84V9;v}*~mLfo*76_UL~&rrZ38CfayQ-24GrW!3;!i&QQ3+ j1Qu{tt_IUbl}*6(A7u+LZLZ<~rmIxkK=kIrDsD^wC!Hb~ delta 112 zcmeD5>-6Id@MdNaVc_84V9;R;+Q>Ugo*76_UL~&rrZ38CfayQ-24GrW!3;!i&QQ3+ j1Qu{tt_IUbl}*6(A7u+LZLZ<~rmIxkK=kIrDsD^w^ywTV diff --git a/Assets/Plugins/Android/androidx.lifecycle.lifecycle-process-2.4.1.aar.meta b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-process-2.4.1.aar.meta index 1d4a2f0..273fce2 100644 --- a/Assets/Plugins/Android/androidx.lifecycle.lifecycle-process-2.4.1.aar.meta +++ b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-process-2.4.1.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: db49d431702d85f4da43f2d23c73e9f8 +guid: a39e07e74b9b3df408813484ba3d005c labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.lifecycle.lifecycle-runtime-2.4.1.aar.meta b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-runtime-2.4.1.aar.meta index 12f8f8d..ab0beab 100644 --- a/Assets/Plugins/Android/androidx.lifecycle.lifecycle-runtime-2.4.1.aar.meta +++ b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-runtime-2.4.1.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 55a3d1d4e4e8f2c45883d0e3d5df3b51 +guid: e5a0df9a44241054180a5bfe8fb3f7fb labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.lifecycle.lifecycle-service-2.1.0.aar.meta b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-service-2.1.0.aar.meta index 9215fcf..8be4069 100644 --- a/Assets/Plugins/Android/androidx.lifecycle.lifecycle-service-2.1.0.aar.meta +++ b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-service-2.1.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 43a70c710c9be4e4da886efb88640dbb +guid: 80eab51e48b43204997a2d34437494ea labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.lifecycle.lifecycle-viewmodel-2.0.0.aar.meta b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-viewmodel-2.0.0.aar.meta index eecec58..f34ef92 100644 --- a/Assets/Plugins/Android/androidx.lifecycle.lifecycle-viewmodel-2.0.0.aar.meta +++ b/Assets/Plugins/Android/androidx.lifecycle.lifecycle-viewmodel-2.0.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 297956e0f4140c242bd39dabcfddef92 +guid: fe01e7fb044750c4b95840e12366bc73 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.loader.loader-1.0.0.aar.meta b/Assets/Plugins/Android/androidx.loader.loader-1.0.0.aar.meta index b721dec..eb5fb75 100644 --- a/Assets/Plugins/Android/androidx.loader.loader-1.0.0.aar.meta +++ b/Assets/Plugins/Android/androidx.loader.loader-1.0.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b6ed61e52bda1c74fb0b74626e2ac557 +guid: ce471ad01d2e60744a15d010733c3cc5 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.localbroadcastmanager.localbroadcastmanager-1.0.0.aar.meta b/Assets/Plugins/Android/androidx.localbroadcastmanager.localbroadcastmanager-1.0.0.aar.meta index 1dc023f..46bbbe3 100644 --- a/Assets/Plugins/Android/androidx.localbroadcastmanager.localbroadcastmanager-1.0.0.aar.meta +++ b/Assets/Plugins/Android/androidx.localbroadcastmanager.localbroadcastmanager-1.0.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 725846755f74c0e4da6fa5bd1d281af1 +guid: 0f1699e5792a1334ead6ee5e317773ad labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.print.print-1.0.0.aar.meta b/Assets/Plugins/Android/androidx.print.print-1.0.0.aar.meta index ce7868b..b8d1767 100644 --- a/Assets/Plugins/Android/androidx.print.print-1.0.0.aar.meta +++ b/Assets/Plugins/Android/androidx.print.print-1.0.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 733723b88966d28409d127ff5467598e +guid: eb25b19ab7ec46048bdd03a80d9f58f3 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.room.room-common-2.2.5.jar.meta b/Assets/Plugins/Android/androidx.room.room-common-2.2.5.jar.meta index 7768c65..9e146c8 100644 --- a/Assets/Plugins/Android/androidx.room.room-common-2.2.5.jar.meta +++ b/Assets/Plugins/Android/androidx.room.room-common-2.2.5.jar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 69df94215dc6ae8499eb9a48b6a9b0dd +guid: 42ec62aa45ba3df4c9f460110c06fe49 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.room.room-runtime-2.2.5.aar.meta b/Assets/Plugins/Android/androidx.room.room-runtime-2.2.5.aar.meta index 887da6f..2a4d92f 100644 --- a/Assets/Plugins/Android/androidx.room.room-runtime-2.2.5.aar.meta +++ b/Assets/Plugins/Android/androidx.room.room-runtime-2.2.5.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1ef865152e0dfae448b9f54e03572f98 +guid: 625ec8225be86f64d8d590bc98f13c22 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.slidingpanelayout.slidingpanelayout-1.0.0.aar.meta b/Assets/Plugins/Android/androidx.slidingpanelayout.slidingpanelayout-1.0.0.aar.meta index 5ff3d9e..cf726e7 100644 --- a/Assets/Plugins/Android/androidx.slidingpanelayout.slidingpanelayout-1.0.0.aar.meta +++ b/Assets/Plugins/Android/androidx.slidingpanelayout.slidingpanelayout-1.0.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: dd53cfaec026bf94ab6c37dcc4da11ec +guid: fdecc74724fb81c409b21a1100be19ee labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.sqlite.sqlite-2.1.0.aar.meta b/Assets/Plugins/Android/androidx.sqlite.sqlite-2.1.0.aar.meta index cd3a970..7d1720b 100644 --- a/Assets/Plugins/Android/androidx.sqlite.sqlite-2.1.0.aar.meta +++ b/Assets/Plugins/Android/androidx.sqlite.sqlite-2.1.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ec7bfec189b91554497a6b839953ceb0 +guid: 7f1ff59d092505e4097665163ad99e4e labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.sqlite.sqlite-framework-2.1.0.aar.meta b/Assets/Plugins/Android/androidx.sqlite.sqlite-framework-2.1.0.aar.meta index 2f64513..de8769c 100644 --- a/Assets/Plugins/Android/androidx.sqlite.sqlite-framework-2.1.0.aar.meta +++ b/Assets/Plugins/Android/androidx.sqlite.sqlite-framework-2.1.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 11c96af3aaea28a47af34f87b09fdf72 +guid: 93004fe5c7329f246b5569621379e171 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.startup.startup-runtime-1.1.1.aar b/Assets/Plugins/Android/androidx.startup.startup-runtime-1.1.1.aar index dff4c8985eeafa6ad270160c38b5349625fe8e79..019c4cdc8249f89ba873e4c21f7386ad97725981 100644 GIT binary patch delta 114 zcmex1hwjoVDI$-OdENdfay$c3oyOJ+W|~J_jUu(n+<&2m;jeMBN6}r delta 114 zcmex1hwjoVDI$-OdENdfay$c3oyOJ+W|~J_jUu(n+<&2m;h%C9V!3- diff --git a/Assets/Plugins/Android/androidx.startup.startup-runtime-1.1.1.aar.meta b/Assets/Plugins/Android/androidx.startup.startup-runtime-1.1.1.aar.meta index d7722a5..03cbbb3 100644 --- a/Assets/Plugins/Android/androidx.startup.startup-runtime-1.1.1.aar.meta +++ b/Assets/Plugins/Android/androidx.startup.startup-runtime-1.1.1.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2355d6cd82678db41896596cc8968561 +guid: 302b55c888486b94eb76f96aa152974a labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.swiperefreshlayout.swiperefreshlayout-1.0.0.aar.meta b/Assets/Plugins/Android/androidx.swiperefreshlayout.swiperefreshlayout-1.0.0.aar.meta index a0643bb..7862af5 100644 --- a/Assets/Plugins/Android/androidx.swiperefreshlayout.swiperefreshlayout-1.0.0.aar.meta +++ b/Assets/Plugins/Android/androidx.swiperefreshlayout.swiperefreshlayout-1.0.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f917b4fd8e7bc414093f31c85a2aa602 +guid: d6229e95944634e418cb3fb3bc302ae9 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.tracing.tracing-1.0.0.aar.meta b/Assets/Plugins/Android/androidx.tracing.tracing-1.0.0.aar.meta index 60307d3..17ba77d 100644 --- a/Assets/Plugins/Android/androidx.tracing.tracing-1.0.0.aar.meta +++ b/Assets/Plugins/Android/androidx.tracing.tracing-1.0.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: fd1f61f5eef11db44a0748a352a83279 +guid: f9c20c49f75543c409ad403275fbe4df labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.versionedparcelable.versionedparcelable-1.1.1.aar.meta b/Assets/Plugins/Android/androidx.versionedparcelable.versionedparcelable-1.1.1.aar.meta index f263456..3f735e6 100644 --- a/Assets/Plugins/Android/androidx.versionedparcelable.versionedparcelable-1.1.1.aar.meta +++ b/Assets/Plugins/Android/androidx.versionedparcelable.versionedparcelable-1.1.1.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 950c1751e9100cf46847b3cf9a9da61b +guid: d55c5a2d03364854495670de2295065e labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.viewpager.viewpager-1.0.0.aar.meta b/Assets/Plugins/Android/androidx.viewpager.viewpager-1.0.0.aar.meta index e1cef2b..80980e7 100644 --- a/Assets/Plugins/Android/androidx.viewpager.viewpager-1.0.0.aar.meta +++ b/Assets/Plugins/Android/androidx.viewpager.viewpager-1.0.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 34ce73b0de948b245943ff070936f8ea +guid: 446775fa89b2e8943a8474088a964296 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/androidx.work.work-runtime-2.7.0.aar b/Assets/Plugins/Android/androidx.work.work-runtime-2.7.0.aar index 2a374597a85c6838571a54d895725fd97f5f6ce9..9488f88a317715af64938e564aa88e3c977c80c2 100644 GIT binary patch delta 194 zcmW;EzYT&w9K~_pU5%p|LOo%BF5Hlhq zB4SP~UXYtn_1WWYBzAZjSvq`-tQ}M$+XmG>k+0`coXXE3w6bwHS=l+z%E94n<=CJK HuHvgdNcS@P delta 194 zcmW;EzX`%X9L4eIMRWdnYE1OEKnfedLd3$t%0l5H;@M>dM-VLD3}yir2uN12bO}3$ zFuCr-m&ePCEH5$~56X`{t+h9ApY9+UM3Yd2Pqc_O5fGZ_5M822^oeRVAcn+<2#GNf z5iv0#rZ33VsOs!-GmKh4!G2LJ#7 diff --git a/Assets/Plugins/Android/androidx.work.work-runtime-2.7.0.aar.meta b/Assets/Plugins/Android/androidx.work.work-runtime-2.7.0.aar.meta index 125e7da..558cb36 100644 --- a/Assets/Plugins/Android/androidx.work.work-runtime-2.7.0.aar.meta +++ b/Assets/Plugins/Android/androidx.work.work-runtime-2.7.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: aebd4149ebd2a5f479c6d4cdc4a2c177 +guid: fc7c84d311f416748ac8b4a2737ac3fa labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/com.google.android.gms.play-services-ads-21.3.0.aar.meta b/Assets/Plugins/Android/com.google.android.gms.play-services-ads-21.3.0.aar.meta index 8c641c1..add3531 100644 --- a/Assets/Plugins/Android/com.google.android.gms.play-services-ads-21.3.0.aar.meta +++ b/Assets/Plugins/Android/com.google.android.gms.play-services-ads-21.3.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a890a4732afd9834599fbbd1b76f8cc3 +guid: 0b91a0b40db87cf4682aad9d7e249228 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/com.google.android.gms.play-services-ads-base-21.3.0.aar.meta b/Assets/Plugins/Android/com.google.android.gms.play-services-ads-base-21.3.0.aar.meta index b27a026..58be465 100644 --- a/Assets/Plugins/Android/com.google.android.gms.play-services-ads-base-21.3.0.aar.meta +++ b/Assets/Plugins/Android/com.google.android.gms.play-services-ads-base-21.3.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1ced1aa10351f5148b5027d6796e1f72 +guid: 1cdc80fa1bd042a43a87bd62fa845698 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/com.google.android.gms.play-services-ads-identifier-18.0.0.aar.meta b/Assets/Plugins/Android/com.google.android.gms.play-services-ads-identifier-18.0.0.aar.meta index e3052de..382faf5 100644 --- a/Assets/Plugins/Android/com.google.android.gms.play-services-ads-identifier-18.0.0.aar.meta +++ b/Assets/Plugins/Android/com.google.android.gms.play-services-ads-identifier-18.0.0.aar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d5551c0404550cd41ace2be614a5fc26 +guid: e925b902192271f4fb4916ae40ef2f29 labels: - gpsr PluginImporter: diff --git a/Assets/Plugins/Android/com.google.android.gms.play-services-ads-lite-21.3.0.aar b/Assets/Plugins/Android/com.google.android.gms.play-services-ads-lite-21.3.0.aar index cfb9573a56613451e421fb55df39594365708bab..fc41d36a7fecc9c21b1ba6c65fdb71241bc99bb2 100644 GIT binary patch delta 101 zcmZp8son5Wn>WClnMH(wgM))XzcHkdx0RQ%m6xfNm${XfrInYpm6xrRm%Wvjqm`F) sD=!ycC^Jyibh%J2c@Sf}LnxQPT(D5^C$1M@hTUf_eXv}?XD$Io00ONWaR2}S delta 101 zcmZp8son5Wn>WClnMH(wgM))Xk1eQ?x0RQ%m6xfNm${XfrInYpm6xrRm%Wvjqm`F) sD=!ycC^Jyibh%J2c@Sf}LnxQPT(D5^C$1M@hTUf_eXv}?XD$Io0GQGkeE { Debug.Log("admob Init status : " + initStatus.ToString());}); + + StartCoroutine(ReloadAds(true)); + } + + private InterstitialAd interstitialAd; + + /// + /// Loads the interstitial ad. + /// + public void LoadInterstitialAd() + { + // Clean up the old ad before loading a new one. + if (interstitialAd != null) + { + interstitialAd.Destroy(); + interstitialAd = null; + } + + Debug.Log("Loading the interstitial ad."); + + // create our request used to load the ad. + var adRequest = new AdRequest.Builder() + .AddKeyword("unity-admob-sample") + .Build(); + + // send the request to load the ad. + InterstitialAd.Load(intAdId, adRequest, + (InterstitialAd ad, LoadAdError error) => + { + // if error is not null, the load request failed. + if (error != null || ad == null) + { + Debug.LogError("interstitial ad failed to load an ad " + + "with error : " + error); + return; + } + + Debug.Log("Interstitial ad loaded with response : " + + ad.GetResponseInfo()); + + interstitialAd = ad; + }); + + + } + + public void ShowIntAd() + { + if (interstitialAd != null && interstitialAd.CanShowAd()) + { + Debug.Log("Showing interstitial ad."); + interstitialAd.Show(); + } + else + { + Debug.LogError("Interstitial ad is not ready yet."); + } + StartCoroutine(ReloadAds(false)); + + } + + + private RewardedAd rewardedAd; + + /// + /// Loads the rewarded ad. + /// + public void LoadRewardedAd() + { + // Clean up the old ad before loading a new one. + if (rewardedAd != null) + { + rewardedAd.Destroy(); + rewardedAd = null; + } + + Debug.Log("Loading the rewarded ad."); + + // create our request used to load the ad. + var adRequest = new AdRequest.Builder().Build(); + + // send the request to load the ad. + RewardedAd.Load(rewardedAdId, adRequest, + (RewardedAd ad, LoadAdError error) => + { + // if error is not null, the load request failed. + if (error != null || ad == null) + { + Debug.LogError("Rewarded ad failed to load an ad " + + "with error : " + error); + return; + } + + Debug.Log("Rewarded ad loaded with response : " + + ad.GetResponseInfo()); + + rewardedAd = ad; + + rewardedAd.OnAdPaid += OnRewardSuccess; + }); + } + + private void OnRewardSuccess(AdValue obj) + { + GameManager.AdWatched(); + } + + public void ShowRewardedAd() + { + const string rewardMsg = + "Rewarded ad rewarded the user. Type: {0}, amount: {1}."; + + if (rewardedAd != null && rewardedAd.CanShowAd()) + { + rewardedAd.Show((Reward reward) => + { + // TODO: Reward the user. + Debug.Log(String.Format(rewardMsg, reward.Type, reward.Amount)); + }); + } + + StartCoroutine(ReloadAds(true)); + } + + + IEnumerator ReloadAds(bool rewarded){ + yield return new WaitForSeconds(2); + LoadInterstitialAd(); + if(rewarded){ + LoadRewardedAd(); + } + } + + +} diff --git a/Assets/Scripts/AdsManager.cs.meta b/Assets/Scripts/AdsManager.cs.meta new file mode 100644 index 0000000..9b5a086 --- /dev/null +++ b/Assets/Scripts/AdsManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e46b7fd82b2948048adc56ec0c56c4f3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/AudioManager.cs b/Assets/Scripts/AudioManager.cs index 7fc6050..8116f61 100644 --- a/Assets/Scripts/AudioManager.cs +++ b/Assets/Scripts/AudioManager.cs @@ -5,8 +5,15 @@ using UnityEngine; public class AudioManager : MonoBehaviour { public static AudioManager instance { get; private set;} + public static bool isMute {get; private set;} void Awake(){ + if(instance != null){Destroy(gameObject);return;} instance =this; + + if(PlayerPrefs.HasKey("mute")){ + isMute = PlayerPrefs.GetInt("mute") == 1; + } + Refresh(); } [SerializeField]private AudioSource sfxSource; [SerializeField]private AudioSource dropSfxSource; @@ -30,6 +37,21 @@ public class AudioManager : MonoBehaviour instance.dropSfx(magnitude); } + public static bool ToggleMute(){ + isMute = !isMute; + Refresh(); + PlayerPrefs.SetInt("mute", isMute ? 1 : 0); + PlayerPrefs.Save(); + return isMute; + } + + public static void Refresh(){ + if(instance!=null){ + instance.sfxSource.volume = isMute ? 0 : 1; + instance.dropSfxSource.volume = isMute ? 0 : 1; + } + } + void hitSfx(float magnitude){ AudioClip selectedClip; diff --git a/Assets/Scripts/DataManager.cs b/Assets/Scripts/DataManager.cs index 6543721..89f7089 100644 --- a/Assets/Scripts/DataManager.cs +++ b/Assets/Scripts/DataManager.cs @@ -2,21 +2,31 @@ using System; using System.Collections; using System.Collections.Generic; using System.Threading.Tasks; +using Google; using Newtonsoft.Json; using UnityEngine; using UnityEngine.Networking; public static class DataManager{ public const string API_ENDPOINT = "http://vps.playpoolstudios.com/faucet/golf/api/"; - + private const string key = "#2CuV1Bit^S!sW1ZcgRv8BhrO"; public static UserData userData{get; private set;} + public static bool isLogged{ get{return userData != null;}} + + public static void Signout(){ + GoogleSignIn.DefaultInstance.SignOut(); + PlayerPrefs.DeleteAll(); + PlayerPrefs.Save(); + + userData = null; + } - public static async void Login(string username,string password){ + public static async Task Login(string username,string password){ WWWForm form = new WWWForm(); form.AddField("username", username); form.AddField("password", password); - form.AddField("key", "#2CuV1Bit^S!sW1ZcgRv8BhrO"); + form.AddField("key", key); @@ -35,28 +45,34 @@ public static class DataManager{ userData = JsonConvert.DeserializeObject(request.downloadHandler.text); Debug.Log("Success parsing userdata"); + PlayerPrefs.SetString("username", username); + PlayerPrefs.SetString("password", password); + PlayerPrefs.Save(); + }catch(Exception e){ Debug.Log("Error parsing userdata"); } }else{ if(request.downloadHandler.text == "0"){ userData = new UserData(){username = username}; + Debug.Log("Created local account"); }else{ MessageBox.ShowMessage("Error logging in, Server said\n" +request.downloadHandler.text); - return; + return 1; } } } LoadingScreen.LoadLevel("MainMenu"); + return 0; } public static async void GoogleLogin(string username){ WWWForm form = new WWWForm(); form.AddField("username", username); - form.AddField("key", "#2CuV1Bit^S!sW1ZcgRv8BhrO"); + form.AddField("key", key); using (UnityWebRequest request = UnityWebRequest.Post(API_ENDPOINT + "google_login.php", form)) { @@ -66,12 +82,22 @@ public static class DataManager{ await Task.Yield(); } Debug.Log("glogin response: " +request.downloadHandler.text); + MessageBox.ShowMessage(request.downloadHandler.text); if(request.downloadHandler.text.Contains("{")){ try{ userData = JsonConvert.DeserializeObject(request.downloadHandler.text); + if(userData == null){ + throw new NullReferenceException(); + } + if(userData.username.Length < 3){ + throw new IndexOutOfRangeException(); + } Debug.Log("Success parsing userdata"); - + + PlayerPrefs.SetString("username", username); + PlayerPrefs.SetString("password", username); + PlayerPrefs.Save(); }catch(Exception e){ Debug.Log("Error parsing userdata"); } @@ -88,10 +114,65 @@ public static class DataManager{ LoadingScreen.LoadLevel("MainMenu"); } + + public static async void AddScores(int amount){ + WWWForm form = new WWWForm(); + + Debug.Log(userData.ToString()); + + form.AddField("username", userData.username); + form.AddField("password", userData.password); + form.AddField("amount", amount); + form.AddField("key", key); + + using (UnityWebRequest request = UnityWebRequest.Post(API_ENDPOINT + "add_scores.php", form)) + { + var operation = request.SendWebRequest(); + while (!operation.isDone) + { + await Task.Yield(); + } + Debug.Log("add scores response: " +request.downloadHandler.text); + + if(request.downloadHandler.text.Contains("{")){ + try{ + userData = JsonConvert.DeserializeObject(request.downloadHandler.text); + if(userData == null){ + throw new NullReferenceException(); + } + if(userData.username.Length < 3){ + throw new IndexOutOfRangeException(); + } + Debug.Log("Success parsing userdata"); + + + }catch(Exception e){ + Debug.Log("Error parsing userdata"); + } + }else{ + + MessageBox.ShowMessage("Error Updating scores, Server said\n" +request.downloadHandler.text); + + } + + } + + LoadingScreen.LoadLevel("MainMenu"); + } + } [System.Serializable] public class UserData{ + public int id; public string username; + public string password; public int score; + public int TopScore; + + + public override string ToString() + { + return JsonConvert.SerializeObject(this); + } } diff --git a/Assets/Scripts/GameManager.cs b/Assets/Scripts/GameManager.cs index b5b8e38..c9cdf08 100644 --- a/Assets/Scripts/GameManager.cs +++ b/Assets/Scripts/GameManager.cs @@ -40,11 +40,16 @@ public class GameManager : MonoBehaviour public int Score{get {return m_curScore;} set{ m_curScore = value; UpdateUI(); }} public Text StrokesTxt; public Text ScoreTxt; + public Text gameOverBestScoreTxt, gameOverTotalScoreTxt; public GameObject GameOverUI; + public GameObject PauseMenuUI; public Animator HoleInOne; public int curHoleIndex; + private static int adCounter = 0; void Start() { + strokesTxtDefaultSize = StrokesTxt.transform.localScale; + scoreTxtDefaultSize = ScoreTxt.transform.localScale; camTargetPos = ball.transform.position; CurStrokes =1; lastPosition = ball.transform.position; @@ -118,9 +123,25 @@ public class GameManager : MonoBehaviour //No hole found if(CurStrokes <=0){ - GameOverUI.SetActive(true); + GameOver(); } } + + public void GameOver(){ + if(GameOverUI.active){return;} + + gameOverBestScoreTxt.text = DataManager.userData.TopScore.ToString(); + gameOverTotalScoreTxt.text = DataManager.userData.score.ToString(); + + GameOverUI.SetActive(true); + adCounter++; + + if(adCounter > 1){ + adCounter=0; + AdsManager.instance.ShowIntAd(); + } + } + public static async void Hole(Vector2 position){ while(instance.ball.simulated){ await Task.Delay(100); @@ -196,17 +217,18 @@ public class GameManager : MonoBehaviour int _tempScore; int _tempStrokes; - + Vector3 scoreTxtDefaultSize, strokesTxtDefaultSize; public void UpdateUI(){ if(Score != _tempScore){ - LeanTween.scale(ScoreTxt.gameObject, ScoreTxt.transform.localScale * 1.5f , 0.5f).setEasePunch(); _tempScore = Score; - + ScoreTxt.transform.localScale = scoreTxtDefaultSize; + LeanTween.scale(ScoreTxt.gameObject, scoreTxtDefaultSize * 2f , 0.5f).setEasePunch(); } + if(CurStrokes != _tempStrokes){ _tempStrokes = CurStrokes; - LeanTween.scale(StrokesTxt.gameObject, StrokesTxt.transform.localScale * 1.5f, 0.5f).setEasePunch(); + LeanTween.scale(StrokesTxt.gameObject, strokesTxtDefaultSize * 1.5f, 0.5f).setEasePunch(); } ScoreTxt.text = Score.ToString(); StrokesTxt.text = CurStrokes.ToString(); @@ -217,12 +239,38 @@ public class GameManager : MonoBehaviour Gizmos.DrawWireSphere(ball.transform.position, holeCheckRadius); } + public void WatchAd(){ + AdsManager.instance.ShowRewardedAd(); + + } + + public static void AdWatched(){ + try{ + instance.GameOverUI.SetActive(false); + instance.CurStrokes= (int)((float)instance.MaxStrokes/2f); + }catch{ + + } + } + public void Restrt(){ LoadingScreen.LoadLevel(SceneManager.GetActiveScene().name); + DataManager.AddScores(Score); } public void MainMenu(){ LoadingScreen.LoadLevel("MainMenu"); + DataManager.AddScores(Score); + + } + + + public void PauseMenu(bool value){ + if(value){ + LeanTween.scale(PauseMenuUI, Vector3.one, 0.15f).setEaseInCirc(); + }else{ + LeanTween.scale(PauseMenuUI, Vector3.zero, 0.15f).setEaseOutCirc(); + } } } diff --git a/Assets/Scripts/LevelGenerator.cs b/Assets/Scripts/LevelGenerator.cs index 7e84857..2ff0d86 100644 --- a/Assets/Scripts/LevelGenerator.cs +++ b/Assets/Scripts/LevelGenerator.cs @@ -27,14 +27,13 @@ public class LevelGenerator : MonoBehaviour holes = new List(); - GenerateBlock(lastOffset); - GenerateBlock(lastOffset); - - + GenerateBlock(); + GenerateBlock(); } float lastOffset=0; - void GenerateBlock(float offset){ + void GenerateBlock(){ + float offset = lastOffset; SpriteShapeController spriteShapeController = Instantiate(spriteShapeControllerPrefab, new Vector3(offset,0),Quaternion.identity).GetComponent(); spriteShapeController.spline.Clear(); points = new Vector3[LevelCount+1]; @@ -100,6 +99,10 @@ public class LevelGenerator : MonoBehaviour void Update() { - + if(GameManager.instance == null){return;} + + if(GameManager.instance.ball.position.x > lastOffset - 100){ + GenerateBlock(); + } } } diff --git a/Assets/Scripts/LoadingScreen.cs b/Assets/Scripts/LoadingScreen.cs index 7761528..745b5d0 100644 --- a/Assets/Scripts/LoadingScreen.cs +++ b/Assets/Scripts/LoadingScreen.cs @@ -14,6 +14,8 @@ public class LoadingScreen : MonoBehaviour if(instance != null){Destroy(gameObject);return;} instance =this; canvasGroup = GetComponent(); + + Application.targetFrameRate = 60; } @@ -58,7 +60,11 @@ public class LoadingScreen : MonoBehaviour yield return null; } Debug.Log("Loaded scene " + levelName); - yield return new WaitForSecondsRealtime(2f); + // yield return new WaitForSecondsRealtime(2f); + while(loadingProgress.fillAmount < 1){ + SetProgress( loadingProgress.fillAmount+0.01f); + yield return new WaitForSeconds(0.1f); + } canvasGroup.blocksRaycasts = false; diff --git a/Assets/Scripts/Login.cs b/Assets/Scripts/Login.cs index 4fe94ce..0fb99dd 100644 --- a/Assets/Scripts/Login.cs +++ b/Assets/Scripts/Login.cs @@ -33,6 +33,24 @@ public class Login : MonoBehaviour RequestIdToken = true, RequestEmail=true, }; + + } + + async void AutoLogin(){ + Debug.Log("Start auto-login"); + if(PlayerPrefs.HasKey("username")){ + Debug.Log("Has saved credentials, Trying to login with them"); + int loginResult = await DataManager.Login(PlayerPrefs.GetString("username"), PlayerPrefs.GetString("password")); + if(loginResult == 0){ + LoadingScreen.LoadLevel("MainMenu"); + }else{ + Debug.Log("Failed auto-login"); + + } + } + } + void Start(){ + AutoLogin(); } diff --git a/Assets/Scripts/MainMenu.cs b/Assets/Scripts/MainMenu.cs index d79e3ea..1d32e2a 100644 --- a/Assets/Scripts/MainMenu.cs +++ b/Assets/Scripts/MainMenu.cs @@ -1,7 +1,9 @@ using System.Collections; using System.Collections.Generic; +using Google; using UnityEngine; - +using UnityEngine.SceneManagement; +using UnityEngine.UI; public class MainMenu : MonoBehaviour { @@ -11,28 +13,70 @@ public class MainMenu : MonoBehaviour public LeanTweenType transitionEffect; private Vector2 defaultCenter; + public Button copyBtn, muteBtn; + public Button signoutBtn; + public Sprite muteIcon, unmuteIcon; + + + public Text txtUserId; void Awake(){ + if(!DataManager.isLogged){ + SceneManager.LoadScene(0); + return; + } defaultCenter = MainMenuPanel.transform.position; SettingsPanel.transform.position = MainMenuPanel.transform.position - new Vector3(3000,0); SettingsPanel.SetActive(true); + + muteBtn.onClick.AddListener(ToggleMute); + copyBtn.onClick.AddListener(CopyId); + signoutBtn.onClick.AddListener(SignOut); } public void Leave(){ Application.Quit(); } void Start(){ + Refresh(); // MessageBox.ShowMessage("Welcome to Infinite Golf 2D.\nThis is a slow paced 2d endless golf game, All the levels are proceduraly generated and you will be rewarded for putting the ball in every and each hole.\n\nGood Luck","Welcome"); } + void Refresh(){ + txtUserId.text = DataManager.userData.id.ToString(); + if(AudioManager.isMute){ + muteBtn.transform.GetChild(0).GetComponent().sprite = muteIcon; + }else{ + muteBtn.transform.GetChild(0).GetComponent().sprite = unmuteIcon; + } + } + public void SettingsPage(){ - LeanTween.moveX(MainMenuPanel, 3000, transitionTime).setEase(transitionEffect); + LeanTween.moveX(MainMenuPanel, 10000, transitionTime).setEase(transitionEffect); LeanTween.moveX(SettingsPanel, defaultCenter.x, transitionTime).setEase(transitionEffect); } public void MainPage(){ LeanTween.moveX(MainMenuPanel, defaultCenter.x, transitionTime).setEase(transitionEffect); - LeanTween.moveX(SettingsPanel, -3000, transitionTime).setEase(transitionEffect); + LeanTween.moveX(SettingsPanel, -10000, transitionTime).setEase(transitionEffect); + } + + public void CopyId(){ + GUIUtility.systemCopyBuffer = DataManager.userData.id.ToString(); + copyBtn.transform.Find("lbl").GetComponent().text = "Copied"; + } + + public void ToggleMute(){ + AudioManager.ToggleMute(); + Refresh(); + } + + + void SignOut(){ + + + DataManager.Signout(); + SceneManager.LoadScene(0); } } diff --git a/Assets/Sprites/UI/logout_icon.png b/Assets/Sprites/UI/logout_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6264b198976b308cadab655acfff406061ca811e GIT binary patch literal 5174 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 ZIFIH*JH*AsUM}MReQgu13Jv?He*pwrtxf;{ literal 0 HcmV?d00001 diff --git a/Assets/Sprites/UI/logout_icon.png.meta b/Assets/Sprites/UI/logout_icon.png.meta new file mode 100644 index 0000000..9525554 --- /dev/null +++ b/Assets/Sprites/UI/logout_icon.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: faa879e13c1dc14479b9e29747331c77 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sprites/golfinity2d.png b/Assets/Sprites/golfinity2d.png new file mode 100644 index 0000000000000000000000000000000000000000..6ae29ac0ad8aa23112334844b161919ec78d3ada GIT binary patch literal 38033 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 O*A-nOOo{ew(*FSxJC$Yt literal 0 HcmV?d00001 diff --git a/Assets/Sprites/golfinity2d.png.meta b/Assets/Sprites/golfinity2d.png.meta new file mode 100644 index 0000000..d7d7c66 --- /dev/null +++ b/Assets/Sprites/golfinity2d.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 3a7268d833f473442bbd6e3c4d2d0c47 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/GvhProjectSettings.xml b/ProjectSettings/GvhProjectSettings.xml index 02b91c2..1e7c030 100644 --- a/ProjectSettings/GvhProjectSettings.xml +++ b/ProjectSettings/GvhProjectSettings.xml @@ -8,7 +8,7 @@ - + @@ -17,5 +17,5 @@ - + \ No newline at end of file diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 51d8f11..1680b98 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -12,8 +12,8 @@ PlayerSettings: targetDevice: 2 useOnDemandResources: 0 accelerometerFrequency: 60 - companyName: DefaultCompany - productName: Golf + companyName: Xperience + productName: Infinite Golf 2D defaultCursor: {fileID: 0} cursorHotspot: {x: 0, y: 0} m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} @@ -270,7 +270,14 @@ PlayerSettings: AndroidMinifyDebug: 0 AndroidValidateAppBundleSize: 1 AndroidAppBundleSizeToValidate: 150 - m_BuildTargetIcons: [] + m_BuildTargetIcons: + - m_BuildTarget: + m_Icons: + - serializedVersion: 2 + m_Icon: {fileID: 2800000, guid: 3a7268d833f473442bbd6e3c4d2d0c47, type: 3} + m_Width: 128 + m_Height: 128 + m_Kind: 0 m_BuildTargetPlatformIcons: - m_BuildTarget: Android m_Icons: