From 97c5381fea0f053522baefa0caff8efd9fdb9b3a Mon Sep 17 00:00:00 2001 From: Ino Date: Sun, 7 Sep 2025 10:22:33 +0900 Subject: [PATCH] =?UTF-8?q?=ED=81=B4=EB=9D=BC=EC=9A=B0=EB=93=9C=20?= =?UTF-8?q?=EC=A0=80=EC=9E=A5/=EB=A1=9C=EB=93=9C=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AddressableAssetSettings.asset | 2 +- .../Android/addressables_content_state.bin | Bin 2220 -> 2220 bytes .../GeneratedLocalRepo/GooglePlayGames.meta | 8 + .../com.google.play.games.meta | 8 + .../com.google.play.games/Editor.meta | 8 + .../Editor/m2repository.meta | 8 + .../Editor/m2repository/com.meta | 8 + .../Editor/m2repository/com/google.meta | 8 + .../Editor/m2repository/com/google/games.meta | 8 + .../com/google/games/gpgs-plugin-support.meta | 8 + .../games/gpgs-plugin-support/2.1.0.meta | 8 + .../2.1.0/gpgs-plugin-support-2.1.0.aar | Bin 0 -> 31938 bytes .../2.1.0/gpgs-plugin-support-2.1.0.aar.meta | 25 + .../2.1.0/gpgs-plugin-support-2.1.0.pom | 20 + .../2.1.0/gpgs-plugin-support-2.1.0.pom.meta | 9 + Assets/GoogleMobileAds/link.xml.meta | 2 +- Assets/GooglePlayGames.meta | 8 + .../com.google.play.games.meta | 8 + .../com.google.play.games/Editor.meta | 9 + .../Editor/GPGSAndroidSetupUI.cs | 460 ++++++ .../Editor/GPGSAndroidSetupUI.cs.meta | 14 + .../Editor/GPGSDocsUI.cs | 53 + .../Editor/GPGSDocsUI.cs.meta | 14 + .../Editor/GPGSPostBuild.cs | 42 + .../Editor/GPGSPostBuild.cs.meta | 14 + .../Editor/GPGSProjectSettings.cs | 197 +++ .../Editor/GPGSProjectSettings.cs.meta | 14 + .../Editor/GPGSStrings.cs | 174 ++ .../Editor/GPGSStrings.cs.meta | 14 + .../Editor/GPGSUpgrader.cs | 61 + .../Editor/GPGSUpgrader.cs.meta | 14 + .../com.google.play.games/Editor/GPGSUtil.cs | 798 ++++++++++ .../Editor/GPGSUtil.cs.meta | 14 + .../Editor/Google.Play.Games.Editor.asmdef | 9 + .../Google.Play.Games.Editor.asmdef.meta | 10 + .../GooglePlayGamesPluginDependencies.xml | 13 + ...GooglePlayGamesPluginDependencies.xml.meta | 9 + .../Editor/GooglePlayGamesPlugin_v2.1.0.txt | 100 ++ .../GooglePlayGamesPlugin_v2.1.0.txt.meta | 11 + .../Editor/NearbyConnectionUI.cs | 153 ++ .../Editor/NearbyConnectionUI.cs.meta | 14 + .../Editor/m2repository.meta | 10 + .../Editor/m2repository/com.meta | 8 + .../Editor/m2repository/com/google.meta | 8 + .../Editor/m2repository/com/google/games.meta | 8 + .../com/google/games/gpgs-plugin-support.meta | 8 + .../games/gpgs-plugin-support/2.1.0.meta | 8 + .../2.1.0/gpgs-plugin-support-2.1.0.pom | 20 + .../2.1.0/gpgs-plugin-support-2.1.0.pom.md5 | 1 + .../gpgs-plugin-support-2.1.0.pom.md5.meta | 9 + .../2.1.0/gpgs-plugin-support-2.1.0.pom.meta | 9 + .../2.1.0/gpgs-plugin-support-2.1.0.pom.sha1 | 1 + .../gpgs-plugin-support-2.1.0.pom.sha1.meta | 9 + .../gpgs-plugin-support-2.1.0.pom.sha256 | 1 + .../gpgs-plugin-support-2.1.0.pom.sha256.meta | 9 + .../gpgs-plugin-support-2.1.0.pom.sha512 | 1 + .../gpgs-plugin-support-2.1.0.pom.sha512.meta | 9 + .../2.1.0/gpgs-plugin-support-2.1.0.srcaar | Bin 0 -> 31938 bytes .../gpgs-plugin-support-2.1.0.srcaar.md5 | 1 + .../gpgs-plugin-support-2.1.0.srcaar.md5.meta | 9 + .../gpgs-plugin-support-2.1.0.srcaar.meta | 9 + .../gpgs-plugin-support-2.1.0.srcaar.sha1 | 1 + ...gpgs-plugin-support-2.1.0.srcaar.sha1.meta | 9 + .../gpgs-plugin-support-2.1.0.srcaar.sha256 | 1 + ...gs-plugin-support-2.1.0.srcaar.sha256.meta | 9 + .../gpgs-plugin-support-2.1.0.srcaar.sha512 | 1 + ...gs-plugin-support-2.1.0.srcaar.sha512.meta | 9 + .../gpgs-plugin-support/maven-metadata.xml | 13 + .../maven-metadata.xml.md5 | 1 + .../maven-metadata.xml.md5.meta | 9 + .../maven-metadata.xml.meta | 9 + .../maven-metadata.xml.sha1 | 1 + .../maven-metadata.xml.sha1.meta | 9 + .../maven-metadata.xml.sha256 | 1 + .../maven-metadata.xml.sha256.meta | 9 + .../maven-metadata.xml.sha512 | 1 + .../maven-metadata.xml.sha512.meta | 9 + .../Editor/template-AndroidManifest.txt | 27 + .../Editor/template-AndroidManifest.txt.meta | 10 + .../Editor/template-Constants.txt | 29 + .../Editor/template-Constants.txt.meta | 10 + .../Editor/template-GameInfo.txt | 71 + .../Editor/template-GameInfo.txt.meta | 10 + .../com.google.play.games/Proguard.meta | 8 + .../com.google.play.games/Proguard/games.txt | 20 + .../Proguard/games.txt.meta | 9 + .../com.google.play.games/Runtime.meta | 8 + .../Runtime/Google.Play.Games.asmdef | 7 + .../Runtime/Google.Play.Games.asmdef.meta | 10 + .../Runtime/Scripts.meta | 8 + .../Runtime/Scripts/BasicApi.meta | 5 + .../Runtime/Scripts/BasicApi/Achievement.cs | 201 +++ .../Scripts/BasicApi/Achievement.cs.meta | 14 + .../Runtime/Scripts/BasicApi/AuthResponse.cs | 104 ++ .../Scripts/BasicApi/AuthResponse.cs.meta | 13 + .../Runtime/Scripts/BasicApi/AuthScope.cs | 102 ++ .../Scripts/BasicApi/AuthScope.cs.meta | 13 + .../Scripts/BasicApi/CommonStatusCodes.cs | 100 ++ .../BasicApi/CommonStatusCodes.cs.meta | 14 + .../Runtime/Scripts/BasicApi/CommonTypes.cs | 214 +++ .../Scripts/BasicApi/CommonTypes.cs.meta | 14 + .../Runtime/Scripts/BasicApi/DummyClient.cs | 495 ++++++ .../Scripts/BasicApi/DummyClient.cs.meta | 14 + .../Runtime/Scripts/BasicApi/Events.meta | 9 + .../Runtime/Scripts/BasicApi/Events/Event.cs | 53 + .../Scripts/BasicApi/Events/Event.cs.meta | 14 + .../Runtime/Scripts/BasicApi/Events/IEvent.cs | 60 + .../Scripts/BasicApi/Events/IEvent.cs.meta | 14 + .../Scripts/BasicApi/Events/IEventsClient.cs | 60 + .../BasicApi/Events/IEventsClient.cs.meta | 14 + .../Scripts/BasicApi/IPlayGamesClient.cs | 407 +++++ .../Scripts/BasicApi/IPlayGamesClient.cs.meta | 14 + .../Scripts/BasicApi/LeaderboardScoreData.cs | 174 ++ .../BasicApi/LeaderboardScoreData.cs.meta | 14 + .../Runtime/Scripts/BasicApi/Nearby.meta | 9 + .../BasicApi/Nearby/AdvertisingResult.cs | 67 + .../BasicApi/Nearby/AdvertisingResult.cs.meta | 14 + .../BasicApi/Nearby/ConnectionRequest.cs | 61 + .../BasicApi/Nearby/ConnectionRequest.cs.meta | 14 + .../BasicApi/Nearby/ConnectionResponse.cs | 174 ++ .../Nearby/ConnectionResponse.cs.meta | 14 + .../Nearby/DummyNearbyConnectionClient.cs | 176 +++ .../DummyNearbyConnectionClient.cs.meta | 14 + .../BasicApi/Nearby/EndpointDetails.cs | 67 + .../BasicApi/Nearby/EndpointDetails.cs.meta | 14 + .../Nearby/INearbyConnectionClient.cs | 177 +++ .../Nearby/INearbyConnectionClient.cs.meta | 14 + .../Nearby/NearbyConnectionConfiguration.cs | 91 ++ .../NearbyConnectionConfiguration.cs.meta | 14 + .../Runtime/Scripts/BasicApi/Player.cs | 39 + .../Runtime/Scripts/BasicApi/Player.cs.meta | 13 + .../Runtime/Scripts/BasicApi/PlayerProfile.cs | 35 + .../Scripts/BasicApi/PlayerProfile.cs.meta | 13 + .../Runtime/Scripts/BasicApi/PlayerStats.cs | 268 ++++ .../Scripts/BasicApi/PlayerStats.cs.meta | 14 + .../Runtime/Scripts/BasicApi/RecallAccess.cs | 57 + .../Scripts/BasicApi/RecallAccess.cs.meta | 13 + .../Runtime/Scripts/BasicApi/SavedGame.meta | 9 + .../BasicApi/SavedGame/ISavedGameClient.cs | 379 +++++ .../SavedGame/ISavedGameClient.cs.meta | 14 + .../BasicApi/SavedGame/ISavedGameMetadata.cs | 77 + .../SavedGame/ISavedGameMetadata.cs.meta | 14 + .../SavedGame/SavedGameMetadataUpdate.cs | 160 ++ .../SavedGame/SavedGameMetadataUpdate.cs.meta | 14 + .../Scripts/BasicApi/ScorePageToken.cs | 112 ++ .../Scripts/BasicApi/ScorePageToken.cs.meta | 14 + .../Scripts/BasicApi/SignInInteractivity.cs | 29 + .../BasicApi/SignInInteractivity.cs.meta | 14 + .../Runtime/Scripts/BasicApi/SignInStatus.cs | 17 + .../Scripts/BasicApi/SignInStatus.cs.meta | 14 + .../Runtime/Scripts/GameInfo.cs | 71 + .../Runtime/Scripts/GameInfo.cs.meta | 14 + .../Runtime/Scripts/ISocialPlatform.meta | 5 + .../ISocialPlatform/PlayGamesAchievement.cs | 371 +++++ .../PlayGamesAchievement.cs.meta | 14 + .../ISocialPlatform/PlayGamesLeaderboard.cs | 303 ++++ .../PlayGamesLeaderboard.cs.meta | 14 + .../ISocialPlatform/PlayGamesLocalUser.cs | 227 +++ .../PlayGamesLocalUser.cs.meta | 14 + .../ISocialPlatform/PlayGamesPlatform.cs | 1404 +++++++++++++++++ .../ISocialPlatform/PlayGamesPlatform.cs.meta | 14 + .../Scripts/ISocialPlatform/PlayGamesScore.cs | 149 ++ .../ISocialPlatform/PlayGamesScore.cs.meta | 14 + .../ISocialPlatform/PlayGamesUserProfile.cs | 299 ++++ .../PlayGamesUserProfile.cs.meta | 14 + .../Runtime/Scripts/OurUtils.meta | 5 + .../Runtime/Scripts/OurUtils/Logger.cs | 92 ++ .../Runtime/Scripts/OurUtils/Logger.cs.meta | 14 + .../Runtime/Scripts/OurUtils/Misc.cs | 100 ++ .../Runtime/Scripts/OurUtils/Misc.cs.meta | 14 + .../Scripts/OurUtils/NearbyHelperObject.cs | 104 ++ .../OurUtils/NearbyHelperObject.cs.meta | 14 + .../Runtime/Scripts/OurUtils/PlatformUtils.cs | 42 + .../Scripts/OurUtils/PlatformUtils.cs.meta | 14 + .../Scripts/OurUtils/PlayGamesHelperObject.cs | 222 +++ .../OurUtils/PlayGamesHelperObject.cs.meta | 14 + .../Runtime/Scripts/Platforms.meta | 5 + .../Runtime/Scripts/Platforms/Android.meta | 9 + .../Platforms/Android/AndroidClient.cs | 1128 +++++++++++++ .../Platforms/Android/AndroidClient.cs.meta | 14 + .../Platforms/Android/AndroidEventsClient.cs | 136 ++ .../Android/AndroidEventsClient.cs.meta | 14 + .../Android/AndroidHelperFragment.cs | 223 +++ .../Android/AndroidHelperFragment.cs.meta | 14 + .../Platforms/Android/AndroidJavaConverter.cs | 165 ++ .../Android/AndroidJavaConverter.cs.meta | 14 + .../Android/AndroidNearbyConnectionClient.cs | 443 ++++++ .../AndroidNearbyConnectionClient.cs.meta | 14 + .../Android/AndroidSavedGameClient.cs | 526 ++++++ .../Android/AndroidSavedGameClient.cs.meta | 14 + .../Android/AndroidSnapshotMetadata.cs | 90 ++ .../Android/AndroidSnapshotMetadata.cs.meta | 14 + .../Platforms/Android/AndroidTaskUtils.cs | 111 ++ .../Android/AndroidTaskUtils.cs.meta | 14 + .../NearbyConnectionClientFactory.cs | 41 + .../NearbyConnectionClientFactory.cs.meta | 14 + .../Platforms/PlayGamesClientFactory.cs | 44 + .../Platforms/PlayGamesClientFactory.cs.meta | 14 + .../Runtime/Scripts/PluginVersion.cs | 26 + .../Runtime/Scripts/PluginVersion.cs.meta | 14 + .../com.google.play.games/current-build.meta | 8 + .../com.google.play.games/package.json | 11 + .../com.google.play.games/package.json.meta | 10 + Assets/Memo.txt | 3 +- .../GooglePlayGamesManifest.androidlib.meta | 143 ++ .../AndroidManifest.xml | 27 + .../project.properties | 2 + Assets/Plugins/Android/mainTemplate.gradle | 1 + .../Android/mainTemplate.gradle.backup3 | 67 + .../Android/mainTemplate.gradle.backup3.meta | 7 + .../Plugins/Android/settingsTemplate.gradle | 3 + .../Resources/ES3/ES3Defaults.asset | 1 + .../Popups/CloudLoadCompletePopup.prefab | 634 ++++++++ .../Popups/CloudLoadCompletePopup.prefab.meta | 7 + .../Prefabs/Popups/CloudLoadFailPopup.prefab | 558 +++++++ .../Popups/CloudLoadFailPopup.prefab.meta | 7 + .../Popups/CloudLoadNoDataPopup.prefab | 558 +++++++ .../Popups/CloudLoadNoDataPopup.prefab.meta | 7 + ...ionsPopup.prefab => CloudLoadPopup.prefab} | 448 +----- .../Prefabs/Popups/CloudLoadPopup.prefab.meta | 7 + .../Popups/CloudSaveCompletePopup.prefab | 557 +++++++ .../Popups/CloudSaveCompletePopup.prefab.meta | 7 + .../Prefabs/Popups/CloudSaveFailPopup.prefab | 558 +++++++ .../Popups/CloudSaveFailPopup.prefab.meta | 7 + .../Prefabs/Popups/CloudSavePopup.prefab | 801 ++++++++++ ...prefab.meta => CloudSavePopup.prefab.meta} | 0 .../Prefabs/Popups/SettingPopup.prefab | 4 +- Assets/Resources/VersionCode.txt | 2 +- Assets/Scenes/Title.unity | 13 + Assets/Scripts/My/GPGSInfo.cs | 128 ++ Assets/Scripts/My/GPGSInfo.cs.meta | 2 + .../SingletonManagers/Managers/DBManager.cs | 4 + .../SingletonManagers/Managers/UIManager.cs | 23 + Assets/Scripts/UI/Popup/CloudLoadPopup.cs | 19 + .../Scripts/UI/Popup/CloudLoadPopup.cs.meta | 2 + Assets/Scripts/UI/Popup/CloudSavePopup.cs | 17 + .../Scripts/UI/Popup/CloudSavePopup.cs.meta | 2 + Assets/Scripts/UI/Popup/SettingPopup.cs | 3 +- Assets/UI/고스톱 수집 목록 스샷.png | Bin 969642 -> 0 bytes Assets/UI/고스톱 수집 목록 스샷.png.meta | 156 -- .../AndroidResolverDependencies.xml | 3 + ProjectSettings/GvhProjectSettings.xml | 2 + ProjectSettings/ProjectSettings.asset | 6 +- 243 files changed, 18100 insertions(+), 577 deletions(-) create mode 100644 Assets/GeneratedLocalRepo/GooglePlayGames.meta create mode 100644 Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games.meta create mode 100644 Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor.meta create mode 100644 Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository.meta create mode 100644 Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com.meta create mode 100644 Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google.meta create mode 100644 Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games.meta create mode 100644 Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support.meta create mode 100644 Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0.meta create mode 100644 Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.aar create mode 100644 Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.aar.meta create mode 100644 Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom create mode 100644 Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.meta create mode 100644 Assets/GooglePlayGames.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/GPGSAndroidSetupUI.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/GPGSAndroidSetupUI.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/GPGSDocsUI.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/GPGSDocsUI.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/GPGSPostBuild.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/GPGSPostBuild.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/GPGSProjectSettings.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/GPGSProjectSettings.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/GPGSStrings.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/GPGSStrings.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/GPGSUpgrader.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/GPGSUpgrader.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/GPGSUtil.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/GPGSUtil.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/Google.Play.Games.Editor.asmdef create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/Google.Play.Games.Editor.asmdef.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPluginDependencies.xml create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPluginDependencies.xml.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPlugin_v2.1.0.txt create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPlugin_v2.1.0.txt.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/NearbyConnectionUI.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/NearbyConnectionUI.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.md5 create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.md5.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha1 create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha1.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha256 create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha256.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha512 create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha512.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.md5 create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.md5.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha1 create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha1.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha256 create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha256.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha512 create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha512.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.md5 create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.md5.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha1 create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha1.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha256 create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha256.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha512 create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha512.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/template-AndroidManifest.txt create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/template-AndroidManifest.txt.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/template-Constants.txt create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/template-Constants.txt.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/template-GameInfo.txt create mode 100644 Assets/GooglePlayGames/com.google.play.games/Editor/template-GameInfo.txt.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Proguard.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Proguard/games.txt create mode 100644 Assets/GooglePlayGames/com.google.play.games/Proguard/games.txt.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Google.Play.Games.asmdef create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Google.Play.Games.asmdef.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Achievement.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Achievement.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/AuthResponse.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/AuthResponse.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/AuthScope.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/AuthScope.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/CommonStatusCodes.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/CommonStatusCodes.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/CommonTypes.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/CommonTypes.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/DummyClient.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/DummyClient.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/Event.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/Event.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/IEvent.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/IEvent.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/IEventsClient.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/IEventsClient.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/IPlayGamesClient.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/IPlayGamesClient.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/LeaderboardScoreData.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/LeaderboardScoreData.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/AdvertisingResult.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/AdvertisingResult.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/ConnectionRequest.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/ConnectionRequest.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/ConnectionResponse.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/ConnectionResponse.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/DummyNearbyConnectionClient.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/DummyNearbyConnectionClient.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/EndpointDetails.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/EndpointDetails.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/INearbyConnectionClient.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/INearbyConnectionClient.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/NearbyConnectionConfiguration.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/NearbyConnectionConfiguration.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Player.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Player.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/PlayerProfile.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/PlayerProfile.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/PlayerStats.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/PlayerStats.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/RecallAccess.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/RecallAccess.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/ISavedGameClient.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/ISavedGameClient.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/ISavedGameMetadata.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/ISavedGameMetadata.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/SavedGameMetadataUpdate.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/SavedGameMetadataUpdate.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/ScorePageToken.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/ScorePageToken.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SignInInteractivity.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SignInInteractivity.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SignInStatus.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SignInStatus.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/GameInfo.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/GameInfo.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesAchievement.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesAchievement.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesLeaderboard.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesLeaderboard.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesLocalUser.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesLocalUser.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesPlatform.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesPlatform.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesScore.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesScore.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesUserProfile.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesUserProfile.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/Logger.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/Logger.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/Misc.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/Misc.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/NearbyHelperObject.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/NearbyHelperObject.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/PlatformUtils.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/PlatformUtils.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/PlayGamesHelperObject.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/PlayGamesHelperObject.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidClient.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidClient.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidEventsClient.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidEventsClient.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidHelperFragment.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidHelperFragment.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidJavaConverter.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidJavaConverter.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidNearbyConnectionClient.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidNearbyConnectionClient.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidSavedGameClient.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidSavedGameClient.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidSnapshotMetadata.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidSnapshotMetadata.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidTaskUtils.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidTaskUtils.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/NearbyConnectionClientFactory.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/NearbyConnectionClientFactory.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/PlayGamesClientFactory.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/PlayGamesClientFactory.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/PluginVersion.cs create mode 100644 Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/PluginVersion.cs.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/current-build.meta create mode 100644 Assets/GooglePlayGames/com.google.play.games/package.json create mode 100644 Assets/GooglePlayGames/com.google.play.games/package.json.meta create mode 100644 Assets/Plugins/Android/GooglePlayGamesManifest.androidlib.meta create mode 100644 Assets/Plugins/Android/GooglePlayGamesManifest.androidlib/AndroidManifest.xml create mode 100644 Assets/Plugins/Android/GooglePlayGamesManifest.androidlib/project.properties create mode 100644 Assets/Plugins/Android/mainTemplate.gradle.backup3 create mode 100644 Assets/Plugins/Android/mainTemplate.gradle.backup3.meta create mode 100644 Assets/Resources/Prefabs/Popups/CloudLoadCompletePopup.prefab create mode 100644 Assets/Resources/Prefabs/Popups/CloudLoadCompletePopup.prefab.meta create mode 100644 Assets/Resources/Prefabs/Popups/CloudLoadFailPopup.prefab create mode 100644 Assets/Resources/Prefabs/Popups/CloudLoadFailPopup.prefab.meta create mode 100644 Assets/Resources/Prefabs/Popups/CloudLoadNoDataPopup.prefab create mode 100644 Assets/Resources/Prefabs/Popups/CloudLoadNoDataPopup.prefab.meta rename Assets/Resources/Prefabs/Popups/{AgreeConditionsPopup.prefab => CloudLoadPopup.prefab} (63%) create mode 100644 Assets/Resources/Prefabs/Popups/CloudLoadPopup.prefab.meta create mode 100644 Assets/Resources/Prefabs/Popups/CloudSaveCompletePopup.prefab create mode 100644 Assets/Resources/Prefabs/Popups/CloudSaveCompletePopup.prefab.meta create mode 100644 Assets/Resources/Prefabs/Popups/CloudSaveFailPopup.prefab create mode 100644 Assets/Resources/Prefabs/Popups/CloudSaveFailPopup.prefab.meta create mode 100644 Assets/Resources/Prefabs/Popups/CloudSavePopup.prefab rename Assets/Resources/Prefabs/Popups/{AgreeConditionsPopup.prefab.meta => CloudSavePopup.prefab.meta} (100%) create mode 100644 Assets/Scripts/My/GPGSInfo.cs create mode 100644 Assets/Scripts/My/GPGSInfo.cs.meta create mode 100644 Assets/Scripts/UI/Popup/CloudLoadPopup.cs create mode 100644 Assets/Scripts/UI/Popup/CloudLoadPopup.cs.meta create mode 100644 Assets/Scripts/UI/Popup/CloudSavePopup.cs create mode 100644 Assets/Scripts/UI/Popup/CloudSavePopup.cs.meta delete mode 100644 Assets/UI/고스톱 수집 목록 스샷.png delete mode 100644 Assets/UI/고스톱 수집 목록 스샷.png.meta diff --git a/Assets/AddressableAssetsData/AddressableAssetSettings.asset b/Assets/AddressableAssetsData/AddressableAssetSettings.asset index cf78e20..c90c28a 100644 --- a/Assets/AddressableAssetsData/AddressableAssetSettings.asset +++ b/Assets/AddressableAssetsData/AddressableAssetSettings.asset @@ -15,7 +15,7 @@ MonoBehaviour: m_DefaultGroup: ab759628f97301541855b12ebefe30d5 m_currentHash: serializedVersion: 2 - Hash: 92948e6e64f76e2ab7c9ad8968522f5b + Hash: 2e7ac85690eeca579afc57a4b462de21 m_OptimizeCatalogSize: 0 m_BuildRemoteCatalog: 1 m_CatalogRequestsTimeout: 0 diff --git a/Assets/AddressableAssetsData/Android/addressables_content_state.bin b/Assets/AddressableAssetsData/Android/addressables_content_state.bin index e895ba7ff869e148c97210f097f072d6db0b2ea1..dd98780447491cdc9f02f1f7f921664eabab1d5d 100644 GIT binary patch delta 18 YcmZ1@xJGb8JtM279uRJBVbov;05^dJ9smFU delta 18 ZcmZ1@xJGb8JtM1uo`Ig><`zZ`b^tc71q1*9 diff --git a/Assets/GeneratedLocalRepo/GooglePlayGames.meta b/Assets/GeneratedLocalRepo/GooglePlayGames.meta new file mode 100644 index 0000000..bd83b22 --- /dev/null +++ b/Assets/GeneratedLocalRepo/GooglePlayGames.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a5ec3b4a710c3ac4cb70edeba9fbf856 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games.meta b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games.meta new file mode 100644 index 0000000..d083439 --- /dev/null +++ b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f6275d42c28128a49a450f7708543546 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor.meta b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor.meta new file mode 100644 index 0000000..b19d404 --- /dev/null +++ b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 315965287bbf43d4b88ec90948807dc8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository.meta b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository.meta new file mode 100644 index 0000000..2b400d0 --- /dev/null +++ b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0127f844fb84e164db70282ab9a1f360 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com.meta b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com.meta new file mode 100644 index 0000000..279b75f --- /dev/null +++ b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2f4e61d01d027ae4098130e206f91e7a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google.meta b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google.meta new file mode 100644 index 0000000..496c4ab --- /dev/null +++ b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 61dedbaac98a7024fae4a814dd3996b7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games.meta b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games.meta new file mode 100644 index 0000000..5faa26b --- /dev/null +++ b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fb86a74bfb1c63941982552d7cabb4a5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support.meta b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support.meta new file mode 100644 index 0000000..8a504f6 --- /dev/null +++ b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: df3f7c6574125a0448c8b54d59640ab0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0.meta b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0.meta new file mode 100644 index 0000000..5d0ff0d --- /dev/null +++ b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 165366dd47118514188d2f8ff79b1b48 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.aar b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.aar new file mode 100644 index 0000000000000000000000000000000000000000..6b9fc563e4bd0b2843ab35ad2bebfb0cb9216e14 GIT binary patch literal 31938 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 Mzvrgx_0OmO2T}X$761SM literal 0 HcmV?d00001 diff --git a/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.aar.meta b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.aar.meta new file mode 100644 index 0000000..a5984a8 --- /dev/null +++ b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.aar.meta @@ -0,0 +1,25 @@ +fileFormatVersion: 2 +guid: d34ff6261005cf44aa1fd70929cd17e0 +labels: +- gpsr +PluginImporter: + externalObjects: {} + serializedVersion: 3 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom new file mode 100644 index 0000000..b5c4440 --- /dev/null +++ b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom @@ -0,0 +1,20 @@ + + + 4.0.0 + com.google.games + gpgs-plugin-support + 2.1.0 + aar + + + com.google.android.gms + play-services-games-v2 + 21.0.0 + + + com.google.android.gms + play-services-nearby + 18.5.0 + + + \ No newline at end of file diff --git a/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.meta b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.meta new file mode 100644 index 0000000..73bb445 --- /dev/null +++ b/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9f2e9b9a7ff43104f84fd8bc87c57d58 +labels: +- gpsr +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleMobileAds/link.xml.meta b/Assets/GoogleMobileAds/link.xml.meta index df24df5..fb460b1 100644 --- a/Assets/GoogleMobileAds/link.xml.meta +++ b/Assets/GoogleMobileAds/link.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3d56492ea0fa21446adb3064d83c2c8e +guid: 7ab68dd3fa82e4b4eb8e4795d6fbb273 labels: - gvh - gvh_version-9.5.0 diff --git a/Assets/GooglePlayGames.meta b/Assets/GooglePlayGames.meta new file mode 100644 index 0000000..fa3478e --- /dev/null +++ b/Assets/GooglePlayGames.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1f9e743e218055f47ac2ffe7c04dc1d5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games.meta b/Assets/GooglePlayGames/com.google.play.games.meta new file mode 100644 index 0000000..83f00d4 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 24d9eb3a0c4fc49e9b5e5b3600becdef +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor.meta b/Assets/GooglePlayGames/com.google.play.games/Editor.meta new file mode 100644 index 0000000..00da255 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 11083f74e79584f50ad394be94e2caec +folderAsset: yes +timeCreated: 1435699548 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSAndroidSetupUI.cs b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSAndroidSetupUI.cs new file mode 100644 index 0000000..8413846 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSAndroidSetupUI.cs @@ -0,0 +1,460 @@ +// +// Copyright (C) Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + + +namespace GooglePlayGames.Editor +{ + using System; + using System.Collections; + using System.IO; + using System.Xml; + using UnityEditor; + using UnityEngine; + + /// + /// Google Play Game Services Setup dialog for Android. + /// + public class GPGSAndroidSetupUI : EditorWindow + { + /// + /// The configuration data from the play games console "resource data" + /// + private string mConfigData = string.Empty; + + /// + /// The name of the class to generate containing the resource constants. + /// + private string mClassName = "GPGSIds"; + + /// + /// The scroll position + /// + private Vector2 scroll; + + /// + /// The directory for the constants class. + /// + private string mConstantDirectory = "Assets"; + + /// + /// The web client identifier. + /// + private string mWebClientId = string.Empty; + + /// + /// Menus the item for GPGS android setup. + /// + [MenuItem("Window/Google Play Games/Setup/Android setup...", false, 1)] + public static void MenuItemFileGPGSAndroidSetup() + { + EditorWindow window = EditorWindow.GetWindow( + typeof(GPGSAndroidSetupUI), true, GPGSStrings.AndroidSetup.Title); + window.minSize = new Vector2(500, 400); + } + + [MenuItem("Window/Google Play Games/Setup/Android setup...", true)] + public static bool EnableAndroidMenuItem() + { +#if UNITY_ANDROID + return true; +#else + return false; +#endif + } + + /// + /// Performs setup using the Android resources downloaded XML file + /// from the play console. + /// + /// true, if setup was performed, false otherwise. + /// The web client id. + /// the directory to write the constants file to. + /// Fully qualified class name for the resource Ids. + /// Resource xml data. + /// Nearby svc identifier. + /// Indicates this app requires G+ + public static bool PerformSetup( + string clientId, + string classDirectory, + string className, + string resourceXmlData, + string nearbySvcId) + { + if (string.IsNullOrEmpty(resourceXmlData) && + !string.IsNullOrEmpty(nearbySvcId)) + { + return PerformSetup( + clientId, + GPGSProjectSettings.Instance.Get(GPGSUtil.APPIDKEY), + nearbySvcId); + } + + if (ParseResources(classDirectory, className, resourceXmlData)) + { + GPGSProjectSettings.Instance.Set(GPGSUtil.CLASSDIRECTORYKEY, classDirectory); + GPGSProjectSettings.Instance.Set(GPGSUtil.CLASSNAMEKEY, className); + GPGSProjectSettings.Instance.Set(GPGSUtil.ANDROIDRESOURCEKEY, resourceXmlData); + + // check the bundle id and set it if needed. + CheckBundleId(); + + GPGSUtil.CheckAndFixDependencies(); + GPGSUtil.CheckAndFixVersionedAssestsPaths(); + AssetDatabase.Refresh(); + + Google.VersionHandler.VerboseLoggingEnabled = true; + Google.VersionHandler.UpdateVersionedAssets(forceUpdate: true); + Google.VersionHandler.Enabled = true; + AssetDatabase.Refresh(); + + Google.VersionHandler.InvokeStaticMethod( + Google.VersionHandler.FindClass( + "Google.JarResolver", + "GooglePlayServices.PlayServicesResolver"), + "MenuResolve", null); + + return PerformSetup( + clientId, + GPGSProjectSettings.Instance.Get(GPGSUtil.APPIDKEY), + nearbySvcId); + } + + return false; + } + + /// + /// Provide static access to setup for facilitating automated builds. + /// + /// The oauth2 client id for the game. This is only + /// needed if the ID Token or access token are needed. + /// App identifier. + /// Optional nearby connection serviceId + /// Indicates that GooglePlus should be enabled + /// true if successful + public static bool PerformSetup(string webClientId, string appId, string nearbySvcId) + { + if (!string.IsNullOrEmpty(webClientId)) + { + if (!GPGSUtil.LooksLikeValidClientId(webClientId)) + { + GPGSUtil.Alert(GPGSStrings.Setup.ClientIdError); + return false; + } + + string serverAppId = webClientId.Split('-')[0]; + if (!serverAppId.Equals(appId)) + { + GPGSUtil.Alert(GPGSStrings.Setup.AppIdMismatch); + return false; + } + } + + // check for valid app id + if (!GPGSUtil.LooksLikeValidAppId(appId) && string.IsNullOrEmpty(nearbySvcId)) + { + GPGSUtil.Alert(GPGSStrings.Setup.AppIdError); + return false; + } + + if (nearbySvcId != null) + { +#if UNITY_ANDROID + if (!NearbyConnectionUI.PerformSetup(nearbySvcId, true)) + { + return false; + } +#endif + } + + GPGSProjectSettings.Instance.Set(GPGSUtil.APPIDKEY, appId); + GPGSProjectSettings.Instance.Set(GPGSUtil.WEBCLIENTIDKEY, webClientId); + GPGSProjectSettings.Instance.Save(); + GPGSUtil.UpdateGameInfo(); + + // check that Android SDK is there + if (!GPGSUtil.HasAndroidSdk()) + { + Debug.LogError("Android SDK not found."); + EditorUtility.DisplayDialog( + GPGSStrings.AndroidSetup.SdkNotFound, + GPGSStrings.AndroidSetup.SdkNotFoundBlurb, + GPGSStrings.Ok); + return false; + } + + // Generate AndroidManifest.xml + GPGSUtil.GenerateAndroidManifest(); + + // refresh assets, and we're done + AssetDatabase.Refresh(); + GPGSProjectSettings.Instance.Set(GPGSUtil.ANDROIDSETUPDONEKEY, true); + GPGSProjectSettings.Instance.Save(); + + return true; + } + + /// + /// Called when this object is enabled by Unity editor. + /// + public void OnEnable() + { + GPGSProjectSettings settings = GPGSProjectSettings.Instance; + mConstantDirectory = settings.Get(GPGSUtil.CLASSDIRECTORYKEY, mConstantDirectory); + mClassName = settings.Get(GPGSUtil.CLASSNAMEKEY, mClassName); + mConfigData = settings.Get(GPGSUtil.ANDROIDRESOURCEKEY); + mWebClientId = settings.Get(GPGSUtil.WEBCLIENTIDKEY); + } + + /// + /// Called when the GUI should be rendered. + /// + public void OnGUI() + { + GUI.skin.label.wordWrap = true; + GUILayout.BeginVertical(); + + GUIStyle link = new GUIStyle(GUI.skin.label); + link.normal.textColor = new Color(0f, 0f, 1f); + + GUILayout.Space(10); + GUILayout.Label(GPGSStrings.AndroidSetup.Blurb); + if (GUILayout.Button("Open Play Games Console", link, GUILayout.ExpandWidth(false))) + { + Application.OpenURL("https://play.google.com/apps/publish"); + } + + Rect last = GUILayoutUtility.GetLastRect(); + last.y += last.height - 2; + last.x += 3; + last.width -= 6; + last.height = 2; + + GUI.Box(last, string.Empty); + + GUILayout.Space(15); + GUILayout.Label("Constants class name", EditorStyles.boldLabel); + GUILayout.Label("Enter the fully qualified name of the class to create containing the constants"); + GUILayout.Space(10); + + mConstantDirectory = EditorGUILayout.TextField( + "Directory to save constants", + mConstantDirectory, + GUILayout.MinWidth(480)); + + mClassName = EditorGUILayout.TextField( + "Constants class name", + mClassName, + GUILayout.MinWidth(480)); + + GUILayout.Label("Resources Definition", EditorStyles.boldLabel); + GUILayout.Label("Paste in the Android Resources from the Play Console"); + GUILayout.Space(10); + + scroll = GUILayout.BeginScrollView(scroll); + mConfigData = EditorGUILayout.TextArea( + mConfigData, + GUILayout.MinWidth(475), + GUILayout.Height(Screen.height)); + GUILayout.EndScrollView(); + GUILayout.Space(10); + + // Client ID field + GUILayout.Label(GPGSStrings.Setup.WebClientIdTitle, EditorStyles.boldLabel); + GUILayout.Label(GPGSStrings.AndroidSetup.WebClientIdBlurb); + + mWebClientId = EditorGUILayout.TextField( + GPGSStrings.Setup.ClientId, + mWebClientId, + GUILayout.MinWidth(450)); + + GUILayout.Space(10); + + GUILayout.FlexibleSpace(); + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if (GUILayout.Button(GPGSStrings.Setup.SetupButton, GUILayout.Width(100))) + { + // check that the classname entered is valid + try + { + if (GPGSUtil.LooksLikeValidPackageName(mClassName)) + { + DoSetup(); + return; + } + } + catch (Exception e) + { + GPGSUtil.Alert( + GPGSStrings.Error, + "Invalid classname: " + e.Message); + } + } + + if (GUILayout.Button("Cancel", GUILayout.Width(100))) + { + Close(); + } + + GUILayout.FlexibleSpace(); + GUILayout.EndHorizontal(); + GUILayout.Space(20); + GUILayout.EndVertical(); + } + + /// + /// Starts the setup process. + /// + public void DoSetup() + { + if (PerformSetup(mWebClientId, mConstantDirectory, mClassName, mConfigData, null)) + { + CheckBundleId(); + + EditorUtility.DisplayDialog( + GPGSStrings.Success, + GPGSStrings.AndroidSetup.SetupComplete, + GPGSStrings.Ok); + + GPGSProjectSettings.Instance.Set(GPGSUtil.ANDROIDSETUPDONEKEY, true); + Close(); + } + else + { + GPGSUtil.Alert( + GPGSStrings.Error, + "Invalid or missing XML resource data. Make sure the data is" + + " valid and contains the app_id element"); + } + } + + /// + /// Checks the bundle identifier. + /// + /// + /// Check the package id. If one is set the gpgs properties, + /// and the player settings are the default or empty, set it. + /// if the player settings is not the default, then prompt before + /// overwriting. + /// + public static void CheckBundleId() + { + string packageName = GPGSProjectSettings.Instance.Get( + GPGSUtil.ANDROIDBUNDLEIDKEY, string.Empty); + string currentId; +#if UNITY_5_6_OR_NEWER + currentId = PlayerSettings.GetApplicationIdentifier( + BuildTargetGroup.Android); +#else + currentId = PlayerSettings.bundleIdentifier; +#endif + if (!string.IsNullOrEmpty(packageName)) + { + if (string.IsNullOrEmpty(currentId) || + currentId == "com.Company.ProductName") + { +#if UNITY_5_6_OR_NEWER + PlayerSettings.SetApplicationIdentifier( + BuildTargetGroup.Android, packageName); +#else + PlayerSettings.bundleIdentifier = packageName; +#endif + } + else if (currentId != packageName) + { + if (EditorUtility.DisplayDialog( + "Set Bundle Identifier?", + "The server configuration is using " + + packageName + ", but the player settings is set to " + + currentId + ".\nSet the Bundle Identifier to " + + packageName + "?", + "OK", + "Cancel")) + { +#if UNITY_5_6_OR_NEWER + PlayerSettings.SetApplicationIdentifier( + BuildTargetGroup.Android, packageName); +#else + PlayerSettings.bundleIdentifier = packageName; +#endif + } + } + } + else + { + Debug.Log("NULL package!!"); + } + } + + /// + /// Parses the resources xml and set the properties. Also generates the + /// constants file. + /// + /// true, if resources was parsed, false otherwise. + /// Class directory. + /// Class name. + /// Res. the data to parse. + private static bool ParseResources(string classDirectory, string className, string res) + { + XmlTextReader reader = new XmlTextReader(new StringReader(res)); + bool inResource = false; + string lastProp = null; + Hashtable resourceKeys = new Hashtable(); + string appId = null; + while (reader.Read()) + { + if (reader.Name == "resources") + { + inResource = true; + } + + if (inResource && reader.Name == "string") + { + lastProp = reader.GetAttribute("name"); + } + else if (inResource && !string.IsNullOrEmpty(lastProp)) + { + if (reader.HasValue) + { + if (lastProp == "app_id") + { + appId = reader.Value; + GPGSProjectSettings.Instance.Set(GPGSUtil.APPIDKEY, appId); + } + else if (lastProp == "package_name") + { + GPGSProjectSettings.Instance.Set(GPGSUtil.ANDROIDBUNDLEIDKEY, reader.Value); + } + else + { + resourceKeys[lastProp] = reader.Value; + } + + lastProp = null; + } + } + } + + reader.Close(); + if (resourceKeys.Count > 0) + { + GPGSUtil.WriteResourceIds(classDirectory, className, resourceKeys); + } + + return appId != null; + } + } +} \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSAndroidSetupUI.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSAndroidSetupUI.cs.meta new file mode 100644 index 0000000..fabb847 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSAndroidSetupUI.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 41fe658b93aa24c709c540575965fdff +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSDocsUI.cs b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSDocsUI.cs new file mode 100644 index 0000000..4d7c39d --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSDocsUI.cs @@ -0,0 +1,53 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace GooglePlayGames.Editor +{ + using UnityEngine; + using UnityEditor; + + public class GPGSDocsUI + { + [MenuItem("Window/Google Play Games/Documentation/Plugin Getting Started Guide...", false, 100)] + public static void MenuItemGettingStartedGuide() + { + Application.OpenURL(GPGSStrings.ExternalLinks.GettingStartedGuideURL); + } + + [MenuItem("Window/Google Play Games/Documentation/Google Play Games API...", false, 101)] + public static void MenuItemPlayGamesServicesAPI() + { + Application.OpenURL(GPGSStrings.ExternalLinks.PlayGamesServicesApiURL); + } + + [MenuItem("Window/Google Play Games/About/About the Plugin...", false, 300)] + public static void MenuItemAbout() + { + string msg = GPGSStrings.AboutText + + PluginVersion.VersionString + " (" + + string.Format("0x{0:X8}", GooglePlayGames.PluginVersion.VersionInt) + ")"; + EditorUtility.DisplayDialog(GPGSStrings.AboutTitle, msg, + GPGSStrings.Ok); + } + + [MenuItem("Window/Google Play Games/About/License...", false, 301)] + public static void MenuItemLicense() + { + EditorUtility.DisplayDialog(GPGSStrings.LicenseTitle, GPGSStrings.LicenseText, + GPGSStrings.Ok); + } + } +} \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSDocsUI.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSDocsUI.cs.meta new file mode 100644 index 0000000..28a45ef --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSDocsUI.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 73cbcab28a27446ff9e06e06a040814f +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSPostBuild.cs b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSPostBuild.cs new file mode 100644 index 0000000..fb55c43 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSPostBuild.cs @@ -0,0 +1,42 @@ +// +// Copyright (C) 2014 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID +namespace GooglePlayGames.Editor +{ + using System.Collections.Generic; + using System.IO; + using UnityEditor.Callbacks; + using UnityEditor; + using UnityEngine; + + public static class GPGSPostBuild + { + [PostProcessBuild(99999)] + public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject) + { + if (!GPGSProjectSettings.Instance.GetBool(GPGSUtil.ANDROIDSETUPDONEKEY, false)) + { + EditorUtility.DisplayDialog("Google Play Games not configured!", + "Warning!! Google Play Games was not configured, Game Services will not work correctly.", + "OK"); + } + + return; + } + } +} +#endif //UNITY_ANDROID \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSPostBuild.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSPostBuild.cs.meta new file mode 100644 index 0000000..2cc151f --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSPostBuild.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 1a7b050a8e8214613893df7d81dcc13c +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSProjectSettings.cs b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSProjectSettings.cs new file mode 100644 index 0000000..ea6ae5d --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSProjectSettings.cs @@ -0,0 +1,197 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// Keep this file even on unsupported configurations. + +namespace GooglePlayGames.Editor +{ + using System.Collections.Generic; + using System.IO; +#if UNITY_2017_3_OR_NEWER + using UnityEngine.Networking; +#else + using UnityEngine; + +#endif + + public class GPGSProjectSettings + { + private static GPGSProjectSettings sInstance = null; + + public static GPGSProjectSettings Instance + { + get + { + if (sInstance == null) + { + sInstance = new GPGSProjectSettings(); + } + + return sInstance; + } + } + + private bool mDirty = false; + private readonly string mFile; + private Dictionary mDict = new Dictionary(); + + private GPGSProjectSettings() + { + mFile = GPGSUtil.SlashesToPlatformSeparator("ProjectSettings/GooglePlayGameSettings.txt"); + + StreamReader rd = null; + + // read the settings file, this list is all the locations it can be in order of precedence. + string[] fileLocations = + { + mFile, + GPGSUtil.SlashesToPlatformSeparator(Path.Combine(GPGSUtil.RootPath, "Editor/projsettings.txt")), + GPGSUtil.SlashesToPlatformSeparator("Assets/Editor/projsettings.txt") + }; + + foreach (string f in fileLocations) + { + if (File.Exists(f)) + { + // assign the reader and break out of the loop + rd = new StreamReader(f); + break; + } + } + + if (rd != null) + { + while (!rd.EndOfStream) + { + string line = rd.ReadLine(); + if (line == null || line.Trim().Length == 0) + { + break; + } + + line = line.Trim(); + string[] p = line.Split(new char[] {'='}, 2); + if (p.Length >= 2) + { + mDict[p[0].Trim()] = p[1].Trim(); + } + } + + rd.Close(); + } + } + + public string Get(string key, Dictionary overrides) + { + if (overrides.ContainsKey(key)) + { + return overrides[key]; + } + else if (mDict.ContainsKey(key)) + { +#if UNITY_2017_3_OR_NEWER + return UnityWebRequest.UnEscapeURL(mDict[key]); +#else + return WWW.UnEscapeURL(mDict[key]); +#endif + } + else + { + return string.Empty; + } + } + + public string Get(string key, string defaultValue) + { + if (mDict.ContainsKey(key)) + { +#if UNITY_2017_3_OR_NEWER + return UnityWebRequest.UnEscapeURL(mDict[key]); +#else + return WWW.UnEscapeURL(mDict[key]); +#endif + } + else + { + return defaultValue; + } + } + + public string Get(string key) + { + return Get(key, string.Empty); + } + + public bool GetBool(string key, bool defaultValue) + { + return Get(key, defaultValue ? "true" : "false").Equals("true"); + } + + public bool GetBool(string key) + { + return Get(key, "false").Equals("true"); + } + + public void Set(string key, string val) + { +#if UNITY_2017_3_OR_NEWER + string escaped = UnityWebRequest.EscapeURL(val); +#else + string escaped = WWW.EscapeURL(val); +#endif + mDict[key] = escaped; + mDirty = true; + } + + public void Set(string key, bool val) + { + Set(key, val ? "true" : "false"); + } + + public void Save() + { + // See if we are building the plugin, and don't write the settings file + string[] args = System.Environment.GetCommandLineArgs(); + foreach (string a in args) + { + if (a == "-g.building") + { + mDirty = false; + break; + } + } + + if (!mDirty) + { + return; + } + + StreamWriter wr = new StreamWriter(mFile, false); + foreach (string key in mDict.Keys) + { + wr.WriteLine(key + "=" + mDict[key]); + } + + wr.Close(); + mDirty = false; + } + + public static void Reload() + { + sInstance = new GPGSProjectSettings(); + } + } +} diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSProjectSettings.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSProjectSettings.cs.meta new file mode 100644 index 0000000..c2926e2 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSProjectSettings.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: cf234a050ba25433f9386e20578ccf19 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSStrings.cs b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSStrings.cs new file mode 100644 index 0000000..268e882 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSStrings.cs @@ -0,0 +1,174 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// Keep the strings all the time even if on an unsupported configuration. + +namespace GooglePlayGames.Editor +{ + public class GPGSStrings + { + public const string Error = "Error"; + public const string Ok = "OK"; + public const string Cancel = "Cancel"; + public const string Yes = "Yes"; + public const string No = "No"; + public const string Success = "Success"; + public const string Warning = "Warning"; + + public class PostInstall + { + public const string Title = "Google Play Games Plugin for Unity"; + + public const string Text = "The Google Play Games Plugin for Unity version $VERSION " + + "is now ready to use. If this is a new installation or if you have " + + "just upgraded from a previous version, please click the 'Google Play Games' " + + "menu and select 'Android Setup' to set up your project."; + } + + public class Setup + { + public const string AppIdTitle = "Google Play Games Application ID"; + public const string AppId = "Application ID"; + + public const string AppIdBlurb = "Enter your application ID below. This is the numeric\n" + + "identifier provided by the Developer Console (for example, 123456789012)."; + + public const string AppIdError = "The App Id does not appear to be valid. " + + "It must consist solely of digits, usually 10 or more."; + + public const string WebClientIdTitle = "Web App Client ID (Optional)"; + public const string ClientId = "Client ID"; + + public const string ClientIdError = "The Client ID does not appear to be valid. " + + "It should end in .apps.googleusercontent.com."; + + public const string AppIdMismatch = "Web app client ID not associated with this game!"; + + public const string NearbyServiceId = "Nearby Connection Service ID"; + + public const string NearbyServiceBlurb = "Enter the service id that identifies the " + + "nearby connections service scope"; + + public const string SetupButton = "Setup"; + } + + public class NearbyConnections + { + public const string Title = "Google Play Games - Nearby Connections Setup"; + + public const string Blurb = "To configure Nearby Connections in this project,\n" + + "please enter the information below and click on the Setup button."; + + public const string SetupComplete = "Nearby connections configured successfully."; + } + + public class AndroidSetup + { + public const string Title = "Google Play Games - Android Configuration"; + + public const string Blurb = "To configure Google Play Games in this project,\n" + + "go to the Play Game console, then enter the information below and click on the Setup button."; + + public const string WebClientIdBlurb = + "The web app client ID is needed to access the user's ID token and " + + "call other APIs onbehalf of the user." + + " It is not required for Game Services. Enter your oauth2 client ID below.\nTo obtain this " + + "ID, generate a web linked app in Developer Console. Example:\n" + + "123456789012-abcdefghijklm.apps.googleusercontent.com"; + + public const string PkgName = "Package name"; + + public const string PkgNameBlurb = "Enter your application's package name below.\n" + + "(for example, com.example.lorem.ipsum)."; + + public const string PackageNameError = "The package name does not appear to be valid. " + + "Enter a valid Android package name (for example, com.example.lorem.ipsum)."; + + public const string SdkNotFound = "Android SDK Not found"; + + public const string SdkNotFoundBlurb = "The Android SDK path was not found. " + + "Please configure it in the Unity preferences window (under External Tools)."; + + public const string LibProjNotFound = "Google Play Services Library Project Not Found"; + + public const string LibProjNotFoundBlurb = "Google Play Services library project " + + "could not be found your SDK installation. Make sure it is installed (open " + + "the SDK manager and go to Extras, and select Google Play Services)."; + + public const string SupportJarNotFound = "Android Support Library v4 Not Found"; + + public const string SupportJarNotFoundBlurb = "Android Support Library v4 " + + "could not be found your SDK installation. Make sure it is installed (open " + + "the SDK manager and go to Extras, and select 'Android Support Library')."; + + public const string LibProjVerNotFound = "The version of your copy of the Google Play " + + "Services Library Project could not be determined. Please make sure it is " + + "at least version {0}. Continue?"; + + public const string LibProjVerTooOld = "Your copy of the Google Play " + + "Services Library Project is out of date. Please launch the Android SDK manager " + + "and upgrade your Google Play Services bundle to the latest version (your version: " + + "{0}; required version: {1}). Proceeding may cause problems. Proceed anyway?"; + + public const string SetupComplete = "Google Play Games configured successfully."; + } + + public class ExternalLinks + { + public const string GettingStartedGuideURL = + "https://github.com/playgameservices/play-games-plugin-for-unity"; + + public const string PlayGamesServicesApiURL = + "https://developers.google.com/games/services"; + + public const string GooglePlayGamesAndroidSdkTitle = "Google Play Games Android SDK Download"; + + public const string GooglePlayGamesAndroidSdkBlurb = "The Google Play Games SDK for " + + "Android must be downloaded via the Android SDK Manager. Do you wish to " + + "start the SDK manager now?"; + + public const string GooglePlayGamesAndroidSdkInstructions = "The Android SDK manager " + + "will be launched. Install or upgrade the 'Google Play Services' package, " + + "which can be found under the 'Extras' " + + "category."; + + public const string GooglePlayGamesAndroidSdkManagerFailed = "Failed to find the " + + "Android SDK manager executable. Make sure the Android SDK is properly installed " + + "and that its path is correctly configured in the Unity preferences window " + + "(under External Tools)."; + } + + public const string AboutTitle = "Google Play Games Plugin for Unity"; + + public const string AboutText = "Copyright (C) 2014 Google Inc.\n\nThis is an open-source " + + "plugin that allows cross-platform integration with Google Play games services. " + + "For more information, visit the official site on Github:\n\n" + + "https://github.com/playgameservices/play-games-plugin-for-unity\n\nPlugin version: "; + + public const string LicenseTitle = "Google Play Games Plugin for Unity"; + + public const string LicenseText = "Copyright (C) 2014 Google Inc. All Rights Reserved.\n\n" + + "Licensed under the Apache License, Version 2.0 (the \"License\"); " + + "you may not use this file except in compliance with the License. " + + "You may obtain a copy of the License at\n\n" + + " http://www.apache.org/licenses/LICENSE-2.0\n\n" + + "Unless required by applicable law or agreed to in writing, software " + + "distributed under the License is distributed on an \"AS IS\" BASIS, " + + "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. " + + "See the License for the specific language governing permissions and " + + "limitations under the License."; + } +} \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSStrings.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSStrings.cs.meta new file mode 100644 index 0000000..6c9710b --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSStrings.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 992ecb564cf02408d9c5a1b44d958334 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSUpgrader.cs b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSUpgrader.cs new file mode 100644 index 0000000..ada7ed1 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSUpgrader.cs @@ -0,0 +1,61 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID + +namespace GooglePlayGames.Editor +{ + using System.IO; + using UnityEditor; + using UnityEngine; + + /// + /// GPGS upgrader handles performing and upgrade tasks. + /// + [InitializeOnLoad] + public class GPGSUpgrader + { + /// + /// Initializes static members of the class. + /// + static GPGSUpgrader() + { + if (EditorApplication.isPlayingOrWillChangePlaymode) + return; + Debug.Log("GPGSUpgrader start"); + + GPGSProjectSettings.Instance.Set(GPGSUtil.LASTUPGRADEKEY, PluginVersion.VersionKey); + GPGSProjectSettings.Instance.Set(GPGSUtil.PLUGINVERSIONKEY, + PluginVersion.VersionString); + GPGSProjectSettings.Instance.Save(); + + bool isChanged = false; + // Check that there is a AndroidManifest.xml file + if (!GPGSUtil.AndroidManifestExists()) + { + isChanged = true; + GPGSUtil.GenerateAndroidManifest(); + } + + if (isChanged) + { + AssetDatabase.Refresh(); + } + Debug.Log("GPGSUpgrader done"); + } + } +} +#endif diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSUpgrader.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSUpgrader.cs.meta new file mode 100644 index 0000000..4b414fc --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSUpgrader.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 357a64420a0c44b61a0ed7ca22c7f10f +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSUtil.cs b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSUtil.cs new file mode 100644 index 0000000..4eadb15 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSUtil.cs @@ -0,0 +1,798 @@ +// +// Copyright (C) 2014 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Keep this even on unsupported configurations. + +namespace GooglePlayGames.Editor +{ + using System; + using System.Collections; + using System.Collections.Generic; + using System.IO; + using System.Xml; + using UnityEditor; + using UnityEngine; + + /// + /// Utility class to perform various tasks in the editor. + /// + public static class GPGSUtil + { + /// Property key for project settings. + public const string SERVICEIDKEY = "App.NearbdServiceId"; + + /// Property key for project settings. + public const string APPIDKEY = "proj.AppId"; + + /// Property key for project settings. + public const string CLASSDIRECTORYKEY = "proj.classDir"; + + /// Property key for project settings. + public const string CLASSNAMEKEY = "proj.ConstantsClassName"; + + /// Property key for project settings. + public const string WEBCLIENTIDKEY = "and.ClientId"; + + /// Property key for project settings. + public const string ANDROIDRESOURCEKEY = "and.ResourceData"; + + /// Property key for project settings. + public const string ANDROIDSETUPDONEKEY = "android.SetupDone"; + + /// Property key for project settings. + public const string ANDROIDBUNDLEIDKEY = "and.BundleId"; + + /// Property key for plugin version. + public const string PLUGINVERSIONKEY = "proj.pluginVersion"; + + /// Property key for nearby settings done. + public const string NEARBYSETUPDONEKEY = "android.NearbySetupDone"; + + /// Property key for project settings. + public const string LASTUPGRADEKEY = "lastUpgrade"; + + /// Constant for token replacement + private const string SERVICEIDPLACEHOLDER = "__NEARBY_SERVICE_ID__"; + + private const string SERVICEID_ELEMENT_PLACEHOLDER = "__NEARBY_SERVICE_ELEMENT__"; + + private const string NEARBY_PERMISSIONS_PLACEHOLDER = "__NEARBY_PERMISSIONS__"; + + /// Constant for token replacement + private const string APPIDPLACEHOLDER = "__APP_ID__"; + + /// Constant for token replacement + private const string CLASSNAMEPLACEHOLDER = "__Class__"; + + /// Constant for token replacement + private const string WEBCLIENTIDPLACEHOLDER = "__WEB_CLIENTID__"; + + /// Constant for token replacement + private const string PLUGINVERSIONPLACEHOLDER = "__PLUGIN_VERSION__"; + + /// Constant for require google plus token replacement + private const string REQUIREGOOGLEPLUSPLACEHOLDER = "__REQUIRE_GOOGLE_PLUS__"; + + /// Property key for project settings. + private const string TOKENPERMISSIONKEY = "proj.tokenPermissions"; + + /// Constant for token replacement + private const string NAMESPACESTARTPLACEHOLDER = "__NameSpaceStart__"; + + /// Constant for token replacement + private const string NAMESPACEENDPLACEHOLDER = "__NameSpaceEnd__"; + + /// Constant for token replacement + private const string CONSTANTSPLACEHOLDER = "__Constant_Properties__"; + + /// + /// The game info file path, relative to the plugin root directory. This is a generated file. + /// + private const string GameInfoRelativePath = "Runtime/Scripts/GameInfo.cs"; + + /// + /// The manifest path, relative to the plugin root directory. + /// + /// The Games SDK requires additional metadata in the AndroidManifest.xml + /// file. + private const string ManifestRelativePath = + "../../Plugins/Android/GooglePlayGamesManifest.androidlib/AndroidManifest.xml"; + + private const string RootFolderName = "com.google.play.games"; + + /// + /// The root path of the Google Play Games plugin + /// + public static string RootPath + { + get + { + if (string.IsNullOrEmpty(mRootPath)) + { +#if UNITY_2018_4_OR_NEWER + // Search for root path in plugin locations for both Asset packages and UPM packages + string[] dirs = Directory.GetDirectories("Packages", RootFolderName, SearchOption.AllDirectories); + string[] dir1 = Directory.GetDirectories("Assets", RootFolderName, SearchOption.AllDirectories); + int dirsLength = dirs.Length; + Array.Resize(ref dirs, dirsLength + dir1.Length); + Array.Copy(dir1, 0, dirs, dirsLength, dir1.Length); +#else + string[] dirs = Directory.GetDirectories("Assets", RootFolderName, SearchOption.AllDirectories); +#endif + switch (dirs.Length) + { + case 0: + Alert("Plugin error: com.google.play.games folder was renamed"); + throw new Exception("com.google.play.games folder was renamed"); + + case 1: + mRootPath = SlashesToPlatformSeparator(dirs[0]); + break; + + default: + for (int i = 0; i < dirs.Length; i++) + { + if (File.Exists(SlashesToPlatformSeparator(Path.Combine(dirs[i], GameInfoRelativePath))) + ) + { + mRootPath = SlashesToPlatformSeparator(dirs[i]); + break; + } + } + + if (string.IsNullOrEmpty(mRootPath)) + { + Alert("Plugin error: com.google.play.games folder was renamed"); + throw new Exception("com.google.play.games folder was renamed"); + } + + break; + } + } + // UPM package root path is 'Library/PackageCache/com.google.play.games@.*/ + // where the suffix can be a version number if installed with URS + // or a hash if from disk or tarball + if (mRootPath.Contains(RootFolderName + '@')) + { + mRootPath = mRootPath.Replace("Packages", "Library/PackageCache"); + } + return mRootPath; + } + } + + /// + /// The game info file path. This is a generated file. + /// + private static string GameInfoPath + { + get { return SlashesToPlatformSeparator(Path.Combine(RootPath, GameInfoRelativePath)); } + } + + /// + /// The manifest path. + /// + /// The Games SDK requires additional metadata in the AndroidManifest.xml + /// file. + private static string ManifestPath + { + get { return SlashesToPlatformSeparator(Path.Combine(RootPath, ManifestRelativePath)); } + } + + /// + /// The root path of the Google Play Games plugin + /// + private static string mRootPath = ""; + + /// + /// The map of replacements for filling in code templates. The + /// key is the string that appears in the template as a placeholder, + /// the value is the key into the GPGSProjectSettings. + /// + private static Dictionary replacements = + new Dictionary() + { + // Put this element placeholder first, since it has embedded placeholder + {SERVICEID_ELEMENT_PLACEHOLDER, SERVICEID_ELEMENT_PLACEHOLDER}, + {SERVICEIDPLACEHOLDER, SERVICEIDKEY}, + {APPIDPLACEHOLDER, APPIDKEY}, + {CLASSNAMEPLACEHOLDER, CLASSNAMEKEY}, + {WEBCLIENTIDPLACEHOLDER, WEBCLIENTIDKEY}, + {PLUGINVERSIONPLACEHOLDER, PLUGINVERSIONKEY}, + // Causes the placeholder to be replaced with overridden value at runtime. + {NEARBY_PERMISSIONS_PLACEHOLDER, NEARBY_PERMISSIONS_PLACEHOLDER} + }; + + /// + /// Replaces / in file path to be the os specific separator. + /// + /// The path. + /// Path with correct separators. + public static string SlashesToPlatformSeparator(string path) + { + return path.Replace("/", System.IO.Path.DirectorySeparatorChar.ToString()); + } + + /// + /// Reads the file. + /// + /// The file contents. The slashes are corrected. + /// File path. + public static string ReadFile(string filePath) + { + filePath = SlashesToPlatformSeparator(filePath); + if (!File.Exists(filePath)) + { + Alert("Plugin error: file not found: " + filePath); + return null; + } + + StreamReader sr = new StreamReader(filePath); + string body = sr.ReadToEnd(); + sr.Close(); + return body; + } + + /// + /// Reads the editor template. + /// + /// The editor template contents. + /// Name of the template in the editor directory. + public static string ReadEditorTemplate(string name) + { + return ReadFile( + Path.Combine(RootPath, string.Format("Editor{0}{1}.txt", Path.DirectorySeparatorChar, name))); + } + + /// + /// Writes the file. + /// + /// File path - the slashes will be corrected. + /// Body of the file to write. + public static void WriteFile(string file, string body) + { + file = SlashesToPlatformSeparator(file); + DirectoryInfo dir = Directory.GetParent(file); + dir.Create(); + using (var wr = new StreamWriter(file, false)) + { + wr.Write(body); + } + } + + /// + /// Validates the string to be a valid nearby service id. + /// + /// true, if like valid service identifier was looksed, false otherwise. + /// string to test. + public static bool LooksLikeValidServiceId(string s) + { + if (s.Length < 3) + { + return false; + } + + foreach (char c in s) + { + if (!char.IsLetterOrDigit(c) && c != '.') + { + return false; + } + } + + return true; + } + + /// + /// Looks the like valid app identifier. + /// + /// true, if valid app identifier, false otherwise. + /// the string to test. + public static bool LooksLikeValidAppId(string s) + { + if (s.Length < 5) + { + return false; + } + + foreach (char c in s) + { + if (c < '0' || c > '9') + { + return false; + } + } + + return true; + } + + /// + /// Looks the like valid client identifier. + /// + /// true, if valid client identifier, false otherwise. + /// the string to test. + public static bool LooksLikeValidClientId(string s) + { + return s.EndsWith(".googleusercontent.com"); + } + + /// + /// Looks the like a valid bundle identifier. + /// + /// true, if valid bundle identifier, false otherwise. + /// the string to test. + public static bool LooksLikeValidBundleId(string s) + { + return s.Length > 3; + } + + /// + /// Looks like a valid package. + /// + /// true, if valid package name, false otherwise. + /// the string to test. + public static bool LooksLikeValidPackageName(string s) + { + if (string.IsNullOrEmpty(s)) + { + throw new Exception("cannot be empty"); + } + + string[] parts = s.Split(new char[] {'.'}); + foreach (string p in parts) + { + char[] bytes = p.ToCharArray(); + for (int i = 0; i < bytes.Length; i++) + { + if (i == 0 && !char.IsLetter(bytes[i])) + { + throw new Exception("each part must start with a letter"); + } + else if (char.IsWhiteSpace(bytes[i])) + { + throw new Exception("cannot contain spaces"); + } + else if (!char.IsLetterOrDigit(bytes[i]) && bytes[i] != '_') + { + throw new Exception("must be alphanumeric or _"); + } + } + } + + return parts.Length >= 1; + } + + /// + /// Determines if is setup done. + /// + /// true if is setup done; otherwise, false. + public static bool IsSetupDone() + { + bool doneSetup = true; +#if UNITY_ANDROID + doneSetup = GPGSProjectSettings.Instance.GetBool(ANDROIDSETUPDONEKEY, false); + // check gameinfo + if (File.Exists(GameInfoPath)) + { + string contents = ReadFile(GameInfoPath); + if (contents.Contains(APPIDPLACEHOLDER)) + { + Debug.Log("GameInfo not initialized with AppId. " + + "Run Window > Google Play Games > Setup > Android Setup..."); + return false; + } + } + else + { + Debug.Log("GameInfo.cs does not exist. Run Window > Google Play Games > Setup > Android Setup..."); + return false; + } +#endif + + return doneSetup; + } + + /// + /// Makes legal identifier from string. + /// Returns a legal C# identifier from the given string. The transformations are: + /// - spaces => underscore _ + /// - punctuation => empty string + /// - leading numbers are prefixed with underscore. + /// + /// the id + /// Key to convert to an identifier. + public static string MakeIdentifier(string key) + { + string s; + string retval = string.Empty; + if (string.IsNullOrEmpty(key)) + { + return "_"; + } + + s = key.Trim().Replace(' ', '_'); + + foreach (char c in s) + { + if (char.IsLetterOrDigit(c) || c == '_') + { + retval += c; + } + } + + return retval; + } + + /// + /// Displays an error dialog. + /// + /// the message + public static void Alert(string s) + { + Alert(GPGSStrings.Error, s); + } + + /// + /// Displays a dialog with the given title and message. + /// + /// the title. + /// the message. + public static void Alert(string title, string message) + { + EditorUtility.DisplayDialog(title, message, GPGSStrings.Ok); + } + + /// + /// Gets the android sdk path. + /// + /// The android sdk path. + public static string GetAndroidSdkPath() + { + string sdkPath = EditorPrefs.GetString("AndroidSdkRoot"); +#if UNITY_2019_1_OR_NEWER + // Unity 2019.x added installation of the Android SDK in the AndroidPlayer directory + // so fallback to searching for it there. + if (string.IsNullOrEmpty(sdkPath) || EditorPrefs.GetBool("SdkUseEmbedded")) + { + string androidPlayerDir = BuildPipeline.GetPlaybackEngineDirectory(BuildTarget.Android, BuildOptions.None); + if (!string.IsNullOrEmpty(androidPlayerDir)) + { + string androidPlayerSdkDir = Path.Combine(androidPlayerDir, "SDK"); + if (Directory.Exists(androidPlayerSdkDir)) + { + sdkPath = androidPlayerSdkDir; + } + } + } +#endif + if (sdkPath != null && (sdkPath.EndsWith("/") || sdkPath.EndsWith("\\"))) + { + sdkPath = sdkPath.Substring(0, sdkPath.Length - 1); + } + + return sdkPath; + } + + /// + /// Determines if the android sdk exists. + /// + /// true if android sdk exists; otherwise, false. + public static bool HasAndroidSdk() + { + string sdkPath = GetAndroidSdkPath(); + return sdkPath != null && sdkPath.Trim() != string.Empty && System.IO.Directory.Exists(sdkPath); + } + + /// + /// Gets the unity major version. + /// + /// The unity major version. + public static int GetUnityMajorVersion() + { +#if UNITY_5 + string majorVersion = Application.unityVersion.Split('.')[0]; + int ver; + if (!int.TryParse(majorVersion, out ver)) + { + ver = 0; + } + + return ver; +#elif UNITY_4_6 + return 4; +#else + return 0; +#endif + } + + /// + /// Checks for the android manifest file exsistance. + /// + /// true, if the file exists false otherwise. + public static bool AndroidManifestExists() + { + string destFilename = ManifestPath; + + return File.Exists(destFilename); + } + + /// + /// Generates the android manifest. + /// + public static void GenerateAndroidManifest() + { + string destFilename = ManifestPath; + + // Generate AndroidManifest.xml + string manifestBody = GPGSUtil.ReadEditorTemplate("template-AndroidManifest"); + + Dictionary overrideValues = + new Dictionary(); + + if (!string.IsNullOrEmpty(GPGSProjectSettings.Instance.Get(SERVICEIDKEY))) + { + overrideValues[NEARBY_PERMISSIONS_PLACEHOLDER] = + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n"; + overrideValues[SERVICEID_ELEMENT_PLACEHOLDER] = + " \n" + + " \n"; + } + else + { + overrideValues[NEARBY_PERMISSIONS_PLACEHOLDER] = ""; + overrideValues[SERVICEID_ELEMENT_PLACEHOLDER] = ""; + } + + foreach (KeyValuePair ent in replacements) + { + string value = + GPGSProjectSettings.Instance.Get(ent.Value, overrideValues); + manifestBody = manifestBody.Replace(ent.Key, value); + } + + GPGSUtil.WriteFile(destFilename, manifestBody); + GPGSUtil.UpdateGameInfo(); + } + + /// + /// Writes the resource identifiers file. This file contains the + /// resource ids copied (downloaded?) from the play game app console. + /// + /// Class directory. + /// Class name. + /// Resource keys. + public static void WriteResourceIds(string classDirectory, string className, Hashtable resourceKeys) + { + string constantsValues = string.Empty; + string[] parts = className.Split('.'); + string dirName = classDirectory; + if (string.IsNullOrEmpty(dirName)) + { + dirName = "Assets"; + } + + string nameSpace = string.Empty; + for (int i = 0; i < parts.Length - 1; i++) + { + dirName += "/" + parts[i]; + if (nameSpace != string.Empty) + { + nameSpace += "."; + } + + nameSpace += parts[i]; + } + + EnsureDirExists(dirName); + foreach (DictionaryEntry ent in resourceKeys) + { + string key = MakeIdentifier((string) ent.Key); + constantsValues += " public const string " + + key + " = \"" + ent.Value + "\"; // \n"; + } + + string fileBody = GPGSUtil.ReadEditorTemplate("template-Constants"); + if (nameSpace != string.Empty) + { + fileBody = fileBody.Replace( + NAMESPACESTARTPLACEHOLDER, + "namespace " + nameSpace + "\n{"); + } + else + { + fileBody = fileBody.Replace(NAMESPACESTARTPLACEHOLDER, string.Empty); + } + + fileBody = fileBody.Replace(CLASSNAMEPLACEHOLDER, parts[parts.Length - 1]); + fileBody = fileBody.Replace(CONSTANTSPLACEHOLDER, constantsValues); + if (nameSpace != string.Empty) + { + fileBody = fileBody.Replace( + NAMESPACEENDPLACEHOLDER, + "}"); + } + else + { + fileBody = fileBody.Replace(NAMESPACEENDPLACEHOLDER, string.Empty); + } + + WriteFile(Path.Combine(dirName, parts[parts.Length - 1] + ".cs"), fileBody); + } + + /// + /// Updates the game info file. This is a generated file containing the + /// app and client ids. + /// + public static void UpdateGameInfo() + { + string fileBody = GPGSUtil.ReadEditorTemplate("template-GameInfo"); + + foreach (KeyValuePair ent in replacements) + { + string value = + GPGSProjectSettings.Instance.Get(ent.Value); + fileBody = fileBody.Replace(ent.Key, value); + } + + GPGSUtil.WriteFile(GameInfoPath, fileBody); + } + + /// + /// Checks the dependencies file and fixes repository paths + /// if they are incorrect (for example if the user moved plugin + /// into some subdirectory). This is a generated file containing + /// the list of dependencies that are needed for the plugin to work. + /// + public static void CheckAndFixDependencies() + { + string depPath = + SlashesToPlatformSeparator(Path.Combine(GPGSUtil.RootPath, + "Editor/GooglePlayGamesPluginDependencies.xml")); + + XmlDocument doc = new XmlDocument(); + doc.Load(depPath); + + XmlNodeList repos = doc.SelectNodes("//androidPackage[contains(@spec,'com.google.games')]//repository"); + foreach (XmlNode repo in repos) + { + if (!Directory.Exists(repo.InnerText)) + { + int pos = repo.InnerText.IndexOf(RootFolderName); + if (pos != -1) + { + repo.InnerText = + Path.Combine(RootPath, repo.InnerText.Substring(pos + RootFolderName.Length + 1)) + .Replace("\\", "/"); + } + } + } + + doc.Save(depPath); + } + + /// + /// Checks the file containing the list of versioned assets and fixes + /// paths to them if they are incorrect (for example if the user moved + /// plugin into some subdirectory). This is a generated file. + /// + public static void CheckAndFixVersionedAssestsPaths() + { + string[] foundPaths = + Directory.GetFiles(RootPath, "GooglePlayGamesPlugin_v*.txt", SearchOption.AllDirectories); + + if (foundPaths.Length == 1) + { + string tmpFilePath = Path.GetTempFileName(); + + StreamWriter writer = new StreamWriter(tmpFilePath); + using (StreamReader reader = new StreamReader(foundPaths[0])) + { + string assetPath; + while ((assetPath = reader.ReadLine()) != null) + { + int pos = assetPath.IndexOf(RootFolderName); + if (pos != -1) + { + assetPath = Path.Combine(RootPath, assetPath.Substring(pos + RootFolderName.Length + 1)) + .Replace("\\", "/"); + } + + writer.WriteLine(assetPath); + } + } + + writer.Flush(); + writer.Close(); + + try + { + File.Copy(tmpFilePath, foundPaths[0], true); + } + finally + { + File.Delete(tmpFilePath); + } + } + } + + /// + /// Ensures the dir exists. + /// + /// Directory to check. + public static void EnsureDirExists(string dir) + { + dir = SlashesToPlatformSeparator(dir); + if (!Directory.Exists(dir)) + { + Directory.CreateDirectory(dir); + } + } + + /// + /// Deletes the dir if exists. + /// + /// Directory to delete. + public static void DeleteDirIfExists(string dir) + { + dir = SlashesToPlatformSeparator(dir); + if (Directory.Exists(dir)) + { + Directory.Delete(dir, true); + } + } + + /// + /// Gets the Google Play Services library version. This is only + /// needed for Unity versions less than 5. + /// + /// The GPS version. + /// Lib proj path. + private static int GetGPSVersion(string libProjPath) + { + string versionFile = libProjPath + "/res/values/version.xml"; + + XmlTextReader reader = new XmlTextReader(new StreamReader(versionFile)); + bool inResource = false; + int version = -1; + + while (reader.Read()) + { + if (reader.Name == "resources") + { + inResource = true; + } + + if (inResource && reader.Name == "integer") + { + if ("google_play_services_version".Equals( + reader.GetAttribute("name"))) + { + reader.Read(); + Debug.Log("Read version string: " + reader.Value); + version = Convert.ToInt32(reader.Value); + } + } + } + + reader.Close(); + return version; + } + } +} diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSUtil.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSUtil.cs.meta new file mode 100644 index 0000000..7d2b895 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/GPGSUtil.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: fd01714f9ee99447996b878b1ac67540 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/Google.Play.Games.Editor.asmdef b/Assets/GooglePlayGames/com.google.play.games/Editor/Google.Play.Games.Editor.asmdef new file mode 100644 index 0000000..6dc51ca --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/Google.Play.Games.Editor.asmdef @@ -0,0 +1,9 @@ +{ + "name": "Google.Play.Games.Editor", + "references": [ + "Google.Play.Games" + ], + "includePlatforms": [ + "Editor" + ] +} diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/Google.Play.Games.Editor.asmdef.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/Google.Play.Games.Editor.asmdef.meta new file mode 100644 index 0000000..cb17582 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/Google.Play.Games.Editor.asmdef.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 9172e27a923a34eb8b02dc3ab88d3dcd +labels: +- gvh +- gvh_version-2.1.0 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPluginDependencies.xml b/Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPluginDependencies.xml new file mode 100644 index 0000000..6422381 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPluginDependencies.xml @@ -0,0 +1,13 @@ + + + + + + + Assets/GooglePlayGames/com.google.play.games/Editor/m2repository + + + + \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPluginDependencies.xml.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPluginDependencies.xml.meta new file mode 100644 index 0000000..ada360b --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPluginDependencies.xml.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 23be7d2a8d0784f2195988f3ee220ea2 +labels: +- gvh +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPlugin_v2.1.0.txt b/Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPlugin_v2.1.0.txt new file mode 100644 index 0000000..a658d5e --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPlugin_v2.1.0.txt @@ -0,0 +1,100 @@ +Assets/PlayServicesResolver/Editor/play-services-resolver_v1.2.137.0.txt +Assets/Plugins/Android/GooglePlayGamesManifest.androidlib/project.properties +Assets/ExternalDependencyManager/Editor/Google.VersionHandler.pdb +Assets/ExternalDependencyManager/Editor/LICENSE +Assets/ExternalDependencyManager/Editor/CHANGELOG.md +Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll +Assets/ExternalDependencyManager/Editor/README.md +Assets/ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.182_manifest.txt +Assets/ExternalDependencyManager/Editor/1.2.182/Google.PackageManagerResolver.pdb +Assets/ExternalDependencyManager/Editor/1.2.182/Google.VersionHandlerImpl.pdb +Assets/ExternalDependencyManager/Editor/1.2.182/Google.VersionHandlerImpl.dll +Assets/ExternalDependencyManager/Editor/1.2.182/Google.PackageManagerResolver.dll +Assets/ExternalDependencyManager/Editor/1.2.182/Google.JarResolver.pdb +Assets/ExternalDependencyManager/Editor/1.2.182/Google.IOSResolver.pdb +Assets/ExternalDependencyManager/Editor/1.2.182/Google.JarResolver.dll +Assets/ExternalDependencyManager/Editor/1.2.182/Google.IOSResolver.dll +Assets/GooglePlayGames/AssemblyInfo.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Google.Play.Games.asmdef +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/NearbyConnectionClientFactory.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidSavedGameClient.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidClient.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidSnapshotMetadata.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidJavaConverter.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidEventsClient.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidNearbyConnectionClient.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidHelperFragment.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidTaskUtils.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/PlayGamesClientFactory.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/PluginVersion.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/PlayGamesHelperObject.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/PlatformUtils.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/Logger.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/Misc.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/NearbyHelperObject.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesPlatform.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesScore.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesLeaderboard.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesUserProfile.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesLocalUser.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesAchievement.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Achievement.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/AuthScope.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/ScorePageToken.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/DummyClient.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/AuthResponse.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/RecallAccess.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/ISavedGameClient.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/ISavedGameMetadata.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/SavedGameMetadataUpdate.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/CommonStatusCodes.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/DummyNearbyConnectionClient.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/AdvertisingResult.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/EndpointDetails.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/ConnectionRequest.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/INearbyConnectionClient.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/ConnectionResponse.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/NearbyConnectionConfiguration.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/PlayerProfile.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/IPlayGamesClient.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/LeaderboardScoreData.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SignInInteractivity.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/Event.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/IEvent.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/IEventsClient.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Player.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SignInStatus.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/CommonTypes.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/PlayerStats.cs +Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/GameInfo.cs +Assets/GooglePlayGames/com.google.play.games/current-build/GooglePlayGamesPlugin-2.0.0.unitypackage +Assets/GooglePlayGames/com.google.play.games/package.json +Assets/GooglePlayGames/com.google.play.games/Proguard/games.txt +Assets/GooglePlayGames/com.google.play.games/Editor/template-AndroidManifest.txt +Assets/GooglePlayGames/com.google.play.games/Editor/NearbyConnectionUI.cs +Assets/GooglePlayGames/com.google.play.games/Editor/GPGSAndroidSetupUI.cs +Assets/GooglePlayGames/com.google.play.games/Editor/template-Constants.txt +Assets/GooglePlayGames/com.google.play.games/Editor/GPGSPostBuild.cs +Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPluginDependencies.xml +Assets/GooglePlayGames/com.google.play.games/Editor/GPGSUtil.cs +Assets/GooglePlayGames/com.google.play.games/Editor/template-GameInfo.txt +Assets/GooglePlayGames/com.google.play.games/Editor/Google.Play.Games.Editor.asmdef +Assets/GooglePlayGames/com.google.play.games/Editor/GPGSUpgrader.cs +Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha256 +Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml +Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha512 +Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha1 +Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.md5 +Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.md5 +Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha512 +Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha512 +Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom +Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar +Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha256 +Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha1 +Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha256 +Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.md5 +Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha1 +Assets/GooglePlayGames/com.google.play.games/Editor/GPGSStrings.cs +Assets/GooglePlayGames/com.google.play.games/Editor/GPGSDocsUI.cs +Assets/GooglePlayGames/com.google.play.games/Editor/GPGSProjectSettings.cs diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPlugin_v2.1.0.txt.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPlugin_v2.1.0.txt.meta new file mode 100644 index 0000000..1e73c50 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPlugin_v2.1.0.txt.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2cab45bef89b247bcb7a494b006fdf9b +labels: +- gvh +- gvh_manifest +- gvh_version-2.1.0 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/NearbyConnectionUI.cs b/Assets/GooglePlayGames/com.google.play.games/Editor/NearbyConnectionUI.cs new file mode 100644 index 0000000..f4cc487 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/NearbyConnectionUI.cs @@ -0,0 +1,153 @@ +// +// Copyright (C) 2014 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID + +namespace GooglePlayGames.Editor +{ + using UnityEngine; + using UnityEditor; + + public class NearbyConnectionUI : EditorWindow + { + private string mNearbyServiceId = string.Empty; + + [MenuItem("Window/Google Play Games/Setup/Nearby Connections setup...", false, 3)] + public static void MenuItemNearbySetup() + { + EditorWindow window = EditorWindow.GetWindow( + typeof(NearbyConnectionUI), true, GPGSStrings.NearbyConnections.Title); + window.minSize = new Vector2(400, 200); + } + + [MenuItem("Window/Google Play Games/Setup/Nearby Connections setup...", true)] + public static bool EnableNearbyMenuItem() + { +#if UNITY_ANDROID + return true; +#else + return false; +#endif + } + + public void OnEnable() + { + mNearbyServiceId = GPGSProjectSettings.Instance.Get(GPGSUtil.SERVICEIDKEY); + } + + public void OnGUI() + { + GUI.skin.label.wordWrap = true; + GUILayout.BeginVertical(); + GUILayout.Space(10); + GUILayout.Label(GPGSStrings.NearbyConnections.Blurb); + GUILayout.Space(10); + + GUILayout.Label(GPGSStrings.Setup.NearbyServiceId, EditorStyles.boldLabel); + GUILayout.Space(10); + GUILayout.Label(GPGSStrings.Setup.NearbyServiceBlurb); + mNearbyServiceId = EditorGUILayout.TextField(GPGSStrings.Setup.NearbyServiceId, + mNearbyServiceId, GUILayout.Width(350)); + + GUILayout.FlexibleSpace(); + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if (GUILayout.Button(GPGSStrings.Setup.SetupButton, + GUILayout.Width(100))) + { + DoSetup(); + } + + if (GUILayout.Button("Cancel", GUILayout.Width(100))) + { + this.Close(); + } + + GUILayout.FlexibleSpace(); + GUILayout.EndHorizontal(); + GUILayout.Space(20); + GUILayout.EndVertical(); + } + + private void DoSetup() + { + if (PerformSetup(mNearbyServiceId, true)) + { + EditorUtility.DisplayDialog(GPGSStrings.Success, + GPGSStrings.NearbyConnections.SetupComplete, GPGSStrings.Ok); + this.Close(); + } + } + + /// Provide static access to setup for facilitating automated builds. + /// The nearby connections service Id + /// true if building android + public static bool PerformSetup(string nearbyServiceId, bool androidBuild) + { + // check for valid app id + if (!GPGSUtil.LooksLikeValidServiceId(nearbyServiceId)) + { + if (EditorUtility.DisplayDialog( + "Remove Nearby connection permissions? ", + "The service Id is invalid. It must follow package naming rules. " + + "Do you want to remove the AndroidManifest entries for Nearby connections?", + "Yes", + "No")) + { + GPGSProjectSettings.Instance.Set(GPGSUtil.SERVICEIDKEY, null); + GPGSProjectSettings.Instance.Save(); + } + else + { + return false; + } + } + else + { + GPGSProjectSettings.Instance.Set(GPGSUtil.SERVICEIDKEY, nearbyServiceId); + GPGSProjectSettings.Instance.Save(); + } + + if (androidBuild) + { + // create needed directories + GPGSUtil.EnsureDirExists("Assets/Plugins"); + GPGSUtil.EnsureDirExists("Assets/Plugins/Android"); + + // Generate AndroidManifest.xml + GPGSUtil.GenerateAndroidManifest(); + + GPGSProjectSettings.Instance.Set(GPGSUtil.NEARBYSETUPDONEKEY, true); + GPGSProjectSettings.Instance.Save(); + + // Resolve the dependencies + Google.VersionHandler.VerboseLoggingEnabled = true; + Google.VersionHandler.UpdateVersionedAssets(forceUpdate: true); + Google.VersionHandler.Enabled = true; + AssetDatabase.Refresh(); + + Google.VersionHandler.InvokeStaticMethod( + Google.VersionHandler.FindClass( + "Google.JarResolver", + "GooglePlayServices.PlayServicesResolver"), + "MenuResolve", null); + } + + return true; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/NearbyConnectionUI.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/NearbyConnectionUI.cs.meta new file mode 100644 index 0000000..6e043af --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/NearbyConnectionUI.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: b64332a502e18436da5652adbf7e24a3 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository.meta new file mode 100644 index 0000000..b57f758 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: a1aac54589c4640cd89900056af3a094 +folderAsset: yes +timeCreated: 1515000812 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com.meta new file mode 100644 index 0000000..d0d5ab2 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 76a0a965afaf3450c92e9b41b493bbeb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google.meta new file mode 100644 index 0000000..8d48840 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6cb1e99a036f54817b99eeef873b6466 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games.meta new file mode 100644 index 0000000..ef941dd --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e98998ec335bb4358bc79e29457320ae +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support.meta new file mode 100644 index 0000000..81e51fc --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 227f33919ca3d4d60a6040a03cbaa5e9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0.meta new file mode 100644 index 0000000..fad4662 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 097e60ab202a04d96b15903958e8d21f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom new file mode 100644 index 0000000..74cd294 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom @@ -0,0 +1,20 @@ + + + 4.0.0 + com.google.games + gpgs-plugin-support + 2.1.0 + srcaar + + + com.google.android.gms + play-services-games-v2 + 21.0.0 + + + com.google.android.gms + play-services-nearby + 18.5.0 + + + diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.md5 b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.md5 new file mode 100644 index 0000000..3b82535 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.md5 @@ -0,0 +1 @@ +bd3bb3899a24c1a87d597832701e7bcf \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.md5.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.md5.meta new file mode 100644 index 0000000..4389a5d --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.md5.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6c7298e4e719d4b4385fdbd461a80e16 +labels: +- gvh +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.meta new file mode 100644 index 0000000..1f0373e --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 77c5e5feaf1bb418eb5dee0b81092649 +labels: +- gvh +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha1 b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha1 new file mode 100644 index 0000000..300fed1 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha1 @@ -0,0 +1 @@ +db337ca4a8846cf7b71dc54e408ef6702955ebd7 \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha1.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha1.meta new file mode 100644 index 0000000..b68d1fa --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha1.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8341b2c3a48474fa1844e4abb5680cb3 +labels: +- gvh +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha256 b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha256 new file mode 100644 index 0000000..1c3cebc --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha256 @@ -0,0 +1 @@ +a470877748a60d4edc3ec1773906e069a06dd1481fde054f700e4ab0ae698728 \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha256.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha256.meta new file mode 100644 index 0000000..cd39299 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha256.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e6b6a3e652c5a492ab2801cd91083291 +labels: +- gvh +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha512 b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha512 new file mode 100644 index 0000000..961c82e --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha512 @@ -0,0 +1 @@ +499a85fbba0d49e29f1bcbd369b691b0fc8f12b74c68e9d85ffc0e2264ae49081b4decac323579ebbde56523df194ddac932adcfd7169d59044e39f53a179833 \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha512.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha512.meta new file mode 100644 index 0000000..5c5da01 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom.sha512.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b240939517fec40b4865e09113e40a67 +labels: +- gvh +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar new file mode 100644 index 0000000000000000000000000000000000000000..6b9fc563e4bd0b2843ab35ad2bebfb0cb9216e14 GIT binary patch literal 31938 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 Mzvrgx_0OmO2T}X$761SM literal 0 HcmV?d00001 diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.md5 b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.md5 new file mode 100644 index 0000000..6353382 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.md5 @@ -0,0 +1 @@ +e894d7c1af62ede159e7606c32166717 \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.md5.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.md5.meta new file mode 100644 index 0000000..2b39b5c --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.md5.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: be12aa927c7cf4436b9e41baec85bc56 +labels: +- gvh +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.meta new file mode 100644 index 0000000..ac4c1a2 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b05cec21e440d40d292505bdd9f0872a +labels: +- gvh +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha1 b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha1 new file mode 100644 index 0000000..440bba1 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha1 @@ -0,0 +1 @@ +33458933461584ac9187cf85bef90da9c380856c \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha1.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha1.meta new file mode 100644 index 0000000..9212271 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha1.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7fad262fe84ae4755bb1e5992d0bb0fe +labels: +- gvh +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha256 b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha256 new file mode 100644 index 0000000..c826c16 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha256 @@ -0,0 +1 @@ +52ba335460015c31f4f2aec66a28f2ae1e6338741ed03f75a792fbc248d279bb \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha256.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha256.meta new file mode 100644 index 0000000..40222b7 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha256.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b355faca70a7f4859836cfd5bb5107db +labels: +- gvh +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha512 b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha512 new file mode 100644 index 0000000..ff6f0a8 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha512 @@ -0,0 +1 @@ +fba25ef5bc17ef310ad5b6b95c3e821e1e710b23167b9f3452cdd2ebe6b9dddbdc743fd23a9fa5a6565fee9a30562aa0e305579ca251966a8786dac50d6525a2 \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha512.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha512.meta new file mode 100644 index 0000000..7447cc8 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.srcaar.sha512.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7c8d8706ef3f5409d86d34690d62e5a7 +labels: +- gvh +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml new file mode 100644 index 0000000..c183b34 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml @@ -0,0 +1,13 @@ + + + com.google.games + gpgs-plugin-support + + 2.1.0 + 2.1.0 + + 2.1.0 + + 20250708083250 + + diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.md5 b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.md5 new file mode 100644 index 0000000..609a552 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.md5 @@ -0,0 +1 @@ +1a6ee98875ac2e9f5377a1927aad50bd \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.md5.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.md5.meta new file mode 100644 index 0000000..2ea5bd5 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.md5.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: df1b97918a3cb4607a87f7d357adfee7 +labels: +- gvh +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.meta new file mode 100644 index 0000000..97a5311 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5e7cbb11d2cd04f6380a65c16715e9a4 +labels: +- gvh +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha1 b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha1 new file mode 100644 index 0000000..af4f38d --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha1 @@ -0,0 +1 @@ +713cb8be9f9968cbf68130abde91a6a08147535f \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha1.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha1.meta new file mode 100644 index 0000000..db1e586 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha1.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a43cf6ce24a034a94bed8334f57647a7 +labels: +- gvh +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha256 b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha256 new file mode 100644 index 0000000..0e887f3 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha256 @@ -0,0 +1 @@ +8efe76e7d3745bc3722234db7e6922a89c5b2aa6620a5cfb532a8ddb87649bf9 \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha256.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha256.meta new file mode 100644 index 0000000..91642c2 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha256.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 42a80f9d5c82741178cc211096f64370 +labels: +- gvh +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha512 b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha512 new file mode 100644 index 0000000..9f45d5f --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha512 @@ -0,0 +1 @@ +add19f532d7d142f9f0a247a9c7e37dc4772b866c8672a05e881a7d6eba5bcff90c2119478e9a5965e4fd5b18bced11c27056eb78e06abb47e558f9c14b38997 \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha512.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha512.meta new file mode 100644 index 0000000..31cf8dc --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/maven-metadata.xml.sha512.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 22b2c04f6a22f4165aab5a886ce75b1e +labels: +- gvh +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/template-AndroidManifest.txt b/Assets/GooglePlayGames/com.google.play.games/Editor/template-AndroidManifest.txt new file mode 100644 index 0000000..d32616f --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/template-AndroidManifest.txt @@ -0,0 +1,27 @@ + + + + + __NEARBY_PERMISSIONS__ + + + + __NEARBY_SERVICE_ELEMENT__ + + + + + + + + + + + diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/template-AndroidManifest.txt.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/template-AndroidManifest.txt.meta new file mode 100644 index 0000000..9de8d79 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/template-AndroidManifest.txt.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 0e1f3c150256848b1ba98702cfb71220 +labels: +- gvh +- gvh_version-2.1.0 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/template-Constants.txt b/Assets/GooglePlayGames/com.google.play.games/Editor/template-Constants.txt new file mode 100644 index 0000000..a1a6180 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/template-Constants.txt @@ -0,0 +1,29 @@ +// +// Copyright (C) 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/// +/// This file is automatically generated DO NOT EDIT! +/// +/// These are the constants defined in the Play Games Console for Game Services +/// Resources. +/// + +__NameSpaceStart__ +public static class __Class__ +{ +__Constant_Properties__ +} +__NameSpaceEnd__ diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/template-Constants.txt.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/template-Constants.txt.meta new file mode 100644 index 0000000..4d142a6 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/template-Constants.txt.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 7f2719cb8be514661b7b6aa9986bfe5f +labels: +- gvh +- gvh_version-2.1.0 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/template-GameInfo.txt b/Assets/GooglePlayGames/com.google.play.games/Editor/template-GameInfo.txt new file mode 100644 index 0000000..47bb16a --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/template-GameInfo.txt @@ -0,0 +1,71 @@ +// +// Copyright (C) 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#if UNITY_ANDROID + +namespace GooglePlayGames { + /// + /// This file is automatically generated DO NOT EDIT! + /// + /// These are the constants defined in the Play Games Console for Game Services + /// Resources. + /// + /// + /// File containing information about the game. This is automatically updated by running the + /// platform-appropriate setup commands in the Unity editor (which does a simple search / replace + /// on the IDs in the form "__ID__"). We can check whether any particular field has been updated + /// by checking whether it still retains its initial value - we prevent the constants from being + /// replaced in the aforementioned search/replace by stripping off the leading and trailing "__". + /// + public static class GameInfo { + + private const string UnescapedApplicationId = "APP_ID"; + private const string UnescapedIosClientId = "IOS_CLIENTID"; + private const string UnescapedWebClientId = "WEB_CLIENTID"; + private const string UnescapedNearbyServiceId = "NEARBY_SERVICE_ID"; + + public const string ApplicationId = "__APP_ID__"; // Filled in automatically + public const string IosClientId = "__IOS_CLIENTID__"; // Filled in automatically + public const string WebClientId = "__WEB_CLIENTID__"; // Filled in automatically + public const string NearbyConnectionServiceId = "__NEARBY_SERVICE_ID__"; + + public static bool ApplicationIdInitialized() { + return !string.IsNullOrEmpty(ApplicationId) && !ApplicationId.Equals(ToEscapedToken(UnescapedApplicationId)); + } + + public static bool IosClientIdInitialized() { + return !string.IsNullOrEmpty(IosClientId) && !IosClientId.Equals(ToEscapedToken(UnescapedIosClientId)); + } + + public static bool WebClientIdInitialized() { + return !string.IsNullOrEmpty(WebClientId) && !WebClientId.Equals(ToEscapedToken(UnescapedWebClientId)); + } + + public static bool NearbyConnectionsInitialized() { + return !string.IsNullOrEmpty(NearbyConnectionServiceId) && + !NearbyConnectionServiceId.Equals(ToEscapedToken(UnescapedNearbyServiceId)); + } + + /// + /// Returns an escaped token (i.e. one flanked with "__") for the passed token + /// + /// The escaped token. + /// The Token + private static string ToEscapedToken(string token) { + return string.Format("__{0}__", token); + } + } +} +#endif diff --git a/Assets/GooglePlayGames/com.google.play.games/Editor/template-GameInfo.txt.meta b/Assets/GooglePlayGames/com.google.play.games/Editor/template-GameInfo.txt.meta new file mode 100644 index 0000000..2495e33 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Editor/template-GameInfo.txt.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: c6fa1c0456d174d298bf8dd66f584e9e +labels: +- gvh +- gvh_version-2.1.0 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Proguard.meta b/Assets/GooglePlayGames/com.google.play.games/Proguard.meta new file mode 100644 index 0000000..90a11ae --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Proguard.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 34de77d5a35fb46aeae90de4ad11647b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Proguard/games.txt b/Assets/GooglePlayGames/com.google.play.games/Proguard/games.txt new file mode 100644 index 0000000..63c7b08 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Proguard/games.txt @@ -0,0 +1,20 @@ +-keep class com.google.android.gms.games.leaderboard.** { *; } +-keep class com.google.android.gms.games.snapshot.** { *; } +-keep class com.google.android.gms.games.achievement.** { *; } +-keep class com.google.android.gms.games.event.** { *; } +-keep class com.google.android.gms.games.stats.** { *; } +-keep class com.google.android.gms.games.* { *; } +-keep class com.google.android.gms.common.api.ResultCallback { *; } +-keep class com.google.android.gms.signin.** { *; } +-keep class com.google.android.gms.dynamic.** { *; } +-keep class com.google.android.gms.dynamite.** { *; } +-keep class com.google.android.gms.tasks.** { *; } +-keep class com.google.android.gms.security.** { *; } +-keep class com.google.android.gms.base.** { *; } +-keep class com.google.android.gms.actions.** { *; } +-keep class com.google.games.bridge.** { *; } +-keep class com.google.android.gms.common.ConnectionResult { *; } +-keep class com.google.android.gms.common.GooglePlayServicesUtil { *; } +-keep class com.google.android.gms.common.api.** { *; } +-keep class com.google.android.gms.common.data.DataBufferUtils { *; } +-keep class com.google.android.gms.nearby.** { *; } diff --git a/Assets/GooglePlayGames/com.google.play.games/Proguard/games.txt.meta b/Assets/GooglePlayGames/com.google.play.games/Proguard/games.txt.meta new file mode 100644 index 0000000..283c644 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Proguard/games.txt.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3617310a589994e39a2cc011f0758cbf +labels: +- gvh +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime.meta new file mode 100644 index 0000000..989edc1 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cdb02382f873f45598f111dc70b3b47e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Google.Play.Games.asmdef b/Assets/GooglePlayGames/com.google.play.games/Runtime/Google.Play.Games.asmdef new file mode 100644 index 0000000..887a518 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Google.Play.Games.asmdef @@ -0,0 +1,7 @@ +{ + "name": "Google.Play.Games", + "includePlatforms": [ + "Android", + "Editor" + ] +} diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Google.Play.Games.asmdef.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Google.Play.Games.asmdef.meta new file mode 100644 index 0000000..1502fc2 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Google.Play.Games.asmdef.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 1ed07ff861e5f468287b0baef844706d +labels: +- gvh +- gvh_version-2.1.0 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts.meta new file mode 100644 index 0000000..ee8be37 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ee74fb8a25a6e4adea15f4675bac5756 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi.meta new file mode 100644 index 0000000..80e1ea0 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 0a565e85253b345878939982a360e0b6 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Achievement.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Achievement.cs new file mode 100644 index 0000000..738e6fb --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Achievement.cs @@ -0,0 +1,201 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID + +namespace GooglePlayGames.BasicApi +{ + using System; + + /// Data interface for retrieving achievement information. + /// + /// There are 3 states an achievement can be in: + /// + /// Hidden - indicating the name and description of the achievement is + /// not visible to the player. + /// + /// Revealed - indicating the name and description of the achievement is + /// visible to the player. + /// Unlocked - indicating the player has unlocked, or achieved, the achievment. + /// + /// Achievements has two types, standard which is unlocked in one step, + /// and incremental, which require multiple steps to unlock. + /// + /// + public class Achievement + { + static readonly DateTime UnixEpoch = + new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); + + private string mId = string.Empty; + private bool mIsIncremental = false; + private bool mIsRevealed = false; + private bool mIsUnlocked = false; + private int mCurrentSteps = 0; + private int mTotalSteps = 0; + private string mDescription = string.Empty; + private string mName = string.Empty; + private long mLastModifiedTime = 0; + private ulong mPoints; + private string mRevealedImageUrl; + private string mUnlockedImageUrl; + + /// + /// Returns a that represents the current . + /// + /// A that represents the current . + public override string ToString() + { + return string.Format( + "[Achievement] id={0}, name={1}, desc={2}, type={3}, revealed={4}, unlocked={5}, steps={6}/{7}", + mId, mName, mDescription, mIsIncremental ? "INCREMENTAL" : "STANDARD", + mIsRevealed, mIsUnlocked, mCurrentSteps, mTotalSteps); + } + + public Achievement() + { + } + + /// + /// Indicates whether this achievement is incremental. + /// + public bool IsIncremental + { + get { return mIsIncremental; } + + set { mIsIncremental = value; } + } + + /// + /// The number of steps the user has gone towards unlocking this achievement. + /// + public int CurrentSteps + { + get { return mCurrentSteps; } + + set { mCurrentSteps = value; } + } + + /// + /// The total number of steps needed to unlock this achievement. + /// + public int TotalSteps + { + get { return mTotalSteps; } + + set { mTotalSteps = value; } + } + + /// + /// Indicates whether the achievement is unlocked or not. + /// + public bool IsUnlocked + { + get { return mIsUnlocked; } + + set { mIsUnlocked = value; } + } + + /// + /// Indicates whether the achievement is revealed or not (hidden). + /// + public bool IsRevealed + { + get { return mIsRevealed; } + + set { mIsRevealed = value; } + } + + /// + /// The ID string of this achievement. + /// + public string Id + { + get { return mId; } + + set { mId = value; } + } + + /// + /// The description of this achievement. + /// + public string Description + { + get { return this.mDescription; } + + set { mDescription = value; } + } + + /// + /// The name of this achievement. + /// + public string Name + { + get { return this.mName; } + + set { mName = value; } + } + + /// + /// The date and time the state of the achievement was modified. + /// + /// + /// The value is invalid (-1 long) if the achievement state has + /// never been updated. + /// + public DateTime LastModifiedTime + { + get { return UnixEpoch.AddMilliseconds(mLastModifiedTime); } + + set + { + TimeSpan ts = value - UnixEpoch; + mLastModifiedTime = (long) ts.TotalMilliseconds; + } + } + + /// + /// The number of experience points earned for unlocking this Achievement. + /// + public ulong Points + { + get { return mPoints; } + + set { mPoints = value; } + } + + /// + /// The URL to the image to display when the achievement is revealed. + /// + public string RevealedImageUrl + { + get { return mRevealedImageUrl; } + + set { mRevealedImageUrl = value; } + } + + /// + /// The URL to the image to display when the achievement is unlocked. + /// + public string UnlockedImageUrl + { + get { return mUnlockedImageUrl; } + + set { mUnlockedImageUrl = value; } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Achievement.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Achievement.cs.meta new file mode 100644 index 0000000..4af8146 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Achievement.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: b20fc2fda369044ba962d1d9115c4c63 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/AuthResponse.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/AuthResponse.cs new file mode 100644 index 0000000..b33d6c2 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/AuthResponse.cs @@ -0,0 +1,104 @@ +// +// Copyright (C) 2025 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#if UNITY_ANDROID +namespace GooglePlayGames.BasicApi +{ + using System; + using System.Collections.Generic; + + /// + /// Represents the response received from Play Games Services when requesting a server-side OAuth 2.0 + /// authorization code for the signed-in player. + /// + public class AuthResponse + { + private readonly string _authCode; + private readonly List _grantedScopes; + + /// + /// Constructs an AuthResponse with the provided granted scopes and authentication code. + /// + /// The authentication code. + /// A list of AuthScope objects representing the granted scopes. + /// If grantedScopes is null. + public AuthResponse(string authCode, List grantedScopes) + { + if (grantedScopes == null) + { + throw new ArgumentNullException(nameof(grantedScopes), "Granted scopes list cannot be null"); + } + + _authCode = authCode; + _grantedScopes = grantedScopes; + } + + + /// + /// Gets the list of AuthScope permissions that the user has granted. + /// + /// + /// A list of the AuthScope permissions the user explicitly granted consent for (or + /// previously approved). The list will be empty if the user declines consent and none of the + /// requested AuthScope were previously granted. + /// + /// A List of AuthScope objects, representing the granted permissions. + public List GetGrantedScopes() + { + return _grantedScopes; + } + + /// + /// Gets the OAuth 2.0 authorization code. + /// + /// + /// This code is a short-lived credential that should be sent securely to your server to be + /// exchanged for an access token and conditionally a refresh token. + /// + /// A string containing the OAuth 2.0 authorization code. + public string GetAuthCode() + { + return _authCode; + } + + public override bool Equals(object obj) + { + if (ReferenceEquals(this, obj)) + { + return true; + } + + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + + var other = (AuthResponse)obj; + return _grantedScopes.Equals(other._grantedScopes) && _authCode == other._authCode; + } + + public override int GetHashCode() + { + return HashCode.Combine(_grantedScopes, _authCode); + } + + public override string ToString() + { + string grantedScopesText = _grantedScopes.Count > 0 ? string.Join(", ", _grantedScopes.ToArray()) : "[]"; + return $"AuthResponse {{ grantedScopes = {grantedScopesText}, authCode = {_authCode} }}"; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/AuthResponse.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/AuthResponse.cs.meta new file mode 100644 index 0000000..66605dd --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/AuthResponse.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: d31e1b3df27554441b81c35d645a008a +labels: +- gvh +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/AuthScope.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/AuthScope.cs new file mode 100644 index 0000000..ac2bee7 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/AuthScope.cs @@ -0,0 +1,102 @@ +// +// Copyright (C) 2025 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#if UNITY_ANDROID +namespace GooglePlayGames.BasicApi +{ + using System; + using System.Collections.Generic; + using System.Linq; + + /// + /// Represents type-safe constants for the specific OAuth 2.0 authorization scopes used when + /// requesting server-side access to Play Games Services web APIs. + /// + public enum AuthScope + { + /// + /// See your primary Google Account email address. + /// + EMAIL, + + /// + /// See your personal info, including any personal info you've made publicly available. + /// + PROFILE, + + /// + /// Associate you with your personal info on Google. + /// + OPEN_ID + } + + /// + /// Extensions for the AuthScope enum. + /// + /// These extensions are used to converting between the AuthScope enum and its string + /// representation. + /// + /// + public static class AuthScopeExtensions + { + /// + /// A map of AuthScope string values to their enum representations. + /// + private static readonly Dictionary _stringToEnumMap = + new Dictionary + { + { "EMAIL", AuthScope.EMAIL }, + { "PROFILE", AuthScope.PROFILE }, + { "OPEN_ID", AuthScope.OPEN_ID } + }; + + /// + /// A map of AuthScope enum values to their string representations. + /// + private static readonly Dictionary _enumToStringMap = + _stringToEnumMap.ToDictionary(pair => pair.Value, pair => pair.Key); + + /// + /// Returns the standard string representation of this OAuth 2.0 scope. + /// + /// The AuthScope enum value. + /// The string value used to represent this scope. + /// If the provided AuthScope is not valid. + public static string GetValue(this AuthScope authScope) + { + if (!_enumToStringMap.ContainsKey(authScope)) + { + throw new ArgumentException($"Invalid AuthScope: {authScope}"); + } + return _enumToStringMap[authScope]; + } + + /// + /// Returns the AuthScope enum value corresponding to the provided string. + /// + /// The string value used to represent the scope. + /// The AuthScope enum value corresponding to the provided string. + /// If the provided string is not a valid AuthScope. + public static AuthScope FromValue(string value) + { + if (!_stringToEnumMap.ContainsKey(value)) + { + throw new ArgumentException($"Invalid AuthScope: {value}"); + } + return _stringToEnumMap[value]; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/AuthScope.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/AuthScope.cs.meta new file mode 100644 index 0000000..81144fe --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/AuthScope.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 46024b30df48146d9a58760a6b9e188e +labels: +- gvh +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/CommonStatusCodes.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/CommonStatusCodes.cs new file mode 100644 index 0000000..a40cc4b --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/CommonStatusCodes.cs @@ -0,0 +1,100 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID + +namespace GooglePlayGames.BasicApi +{ + /// + /// Common status codes. + /// See https://developers.google.com/android/reference/com/google/android/gms/common/api/CommonStatusCodes + /// + public enum CommonStatusCodes + { + /// The operation was successful, but the device's cache was used. + SuccessCached = -1, + + /// The operation was successful. + Success = 0, + + /// Google Play services is missing on this device. + ServiceMissing = 1, + + /// The installed version of Google Play services is out of date. + ServiceVersionUpdateRequired = 2, + + /// The installed version of Google Play services has been disabled on this device. + ServiceDisabled = 3, + + /// The client attempted to connect to the service but the user is not signed in. + SignInRequired = 4, + + /// The client attempted to connect to the service with an invalid account name specified. + InvalidAccount = 5, + + /// Completing the operation requires some form of resolution. + ResolutionRequired = 6, + + /// A network error occurred. + NetworkError = 7, + + /// An internal error occurred. + InternalError = 8, + + /// The version of the Google Play services installed on this device is not authentic. + ServiceInvalid = 9, + + /// The application is misconfigured. + DeveloperError = 10, + + /// The application is not licensed to the user. + LicenseCheckFailed = 11, + + /// The operation failed with no more detailed information. + Error = 13, + + /// A blocking call was interrupted while waiting and did not run to completion. + Interrupted = 14, + + /// Timed out while awaiting the result. + Timeout = 15, + + /// The result was canceled either due to client disconnect or cancel(). + Canceled = 16, + + /// The client attempted to call a method from an API that failed to connect. + ApiNotConnected = 17, + + /// Invalid credentials were provided. + AuthApiInvalidCredentials = 3000, + + /// Access is forbidden. + AuthApiAccessForbidden = 3001, + + /// Error related to the client. + AuthApiClientError = 3002, + + /// Error related to the server. + AuthApiServerError = 3003, + + /// Error related to token. + AuthTokenError = 3004, + + /// Error related to auth URL resolution. + AuthUrlResolution = 3005 + } +} +#endif \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/CommonStatusCodes.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/CommonStatusCodes.cs.meta new file mode 100644 index 0000000..0df4b9d --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/CommonStatusCodes.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: cd54f7a2763f74ce191bdd3efa0a44d5 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/CommonTypes.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/CommonTypes.cs new file mode 100644 index 0000000..3c8579c --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/CommonTypes.cs @@ -0,0 +1,214 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace GooglePlayGames.BasicApi +{ + /// + /// A enum describing where game data can be fetched from. + /// + public enum DataSource + { + /// + /// Allow a read from either a local cache, or the network. + /// + /// Values from the cache may be + /// stale (potentially producing more write conflicts), but reading from cache may still + /// allow reads to succeed if the device does not have internet access and may complete more + /// quickly (as the reads can occur locally rather requiring network roundtrips). + /// + ReadCacheOrNetwork, + + /// + /// Only allow reads from network. + /// + /// This guarantees any returned values were current at the time + /// the read succeeded, but prevents reads from succeeding if the network is unavailable for + /// any reason. + /// + ReadNetworkOnly + } + + /// Native response status codes + /// These values are returned by the native SDK API. + /// NOTE: These values are different than the CommonStatusCodes. + /// + public enum ResponseStatus + { + /// The operation was successful. + Success = 1, + + /// The operation was successful, but the device's cache was used. + SuccessWithStale = 2, + + /// The application is not licensed to the user. + LicenseCheckFailed = -1, + + /// An internal error occurred. + InternalError = -2, + + /// The player is not authorized to perform the operation. + NotAuthorized = -3, + + /// The installed version of Google Play services is out of date. + VersionUpdateRequired = -4, + + /// Timed out while awaiting the result. + Timeout = -5, + + ///< summary> + /// Constant indicating that the developer does not have access to the friends list, but can + /// call the AskForLoadFriendsResolution API to show a consent dialog. + /// + ResolutionRequired = -6, + } + + /// Native response status codes for UI operations. + /// These values are returned by the native SDK API. + /// + public enum UIStatus + { + /// The result is valid. + Valid = 1, + + /// An internal error occurred. + InternalError = -2, + + /// The player is not authorized to perform the operation. + NotAuthorized = -3, + + /// The installed version of Google Play services is out of date. + VersionUpdateRequired = -4, + + /// Timed out while awaiting the result. + Timeout = -5, + + /// UI closed by user. + UserClosedUI = -6, + UiBusy = -12, + + /// An network error occurred. + NetworkError = -20, + } + + /// Values specifying the start location for fetching scores. + public enum LeaderboardStart + { + /// Start fetching scores from the top of the list. + TopScores = 1, + + /// Start fetching relative to the player's score. + PlayerCentered = 2, + } + + /// Values specifying which leaderboard timespan to use. + public enum LeaderboardTimeSpan + { + /// Daily scores. The day resets at 11:59 PM PST. + Daily = 1, + + /// Weekly scores. The week resets at 11:59 PM PST on Sunday. + Weekly = 2, + + /// All time scores. + AllTime = 3, + } + + /// Values specifying which leaderboard collection to use. + public enum LeaderboardCollection + { + /// Public leaderboards contain the scores of players who are sharing their gameplay publicly. + Public = 1, + + /// Social leaderboards contain the scores of players in the viewing player's circles. + Social = 2, + } + + /// Values specifying the visibility status of the friends list. + public enum FriendsListVisibilityStatus + { + ///< summary> + /// Constant indicating that currently it's unknown if the friends list is visible to the + /// game, game can ask for permission from user. + /// + Unknown = 0, + + /// Constant indicating that the friends list is currently visible to the game. + Visible = 1, + + ///< summary> + /// Constant indicating that the developer does not have access to the friends list, but can + /// call the AskForLoadFriendsResolution API to show a consent dialog. + /// + ResolutionRequired = 2, + + ///< summary> + /// Constant indicating that the friends list is currently unavailable for this user, and it + /// is not possible to request access at this time, either because the user has permanently + /// declined or the friends feature is not available to them. In this state, any attempts to + /// request + /// access to the friends list will be unsuccessful. + /// + Unavailable = 3, + + /// An network error occurred. + NetworkError = -4, + + /// The player is not authorized to perform the operation. + NotAuthorized = -5, + } + + /// Values specifying the status of the friends list. + public enum LoadFriendsStatus + { + /// An unknown value to return when loadFriends is not available. + Unknown = 0, + + /// All the friends have been loaded. + Completed = 1, + + /// There are more friends to load. + LoadMore = 2, + + /// + /// The game doesn't have permission to access the player's friends list. No friends loaded. + /// + ResolutionRequired = -3, + + /// An internal error occurred. + InternalError = -4, + + /// The player is not authorized to perform the operation. + NotAuthorized = -5, + + /// An network error occurred. + NetworkError = -6, + } + + /// + /// Utility class for common types. + /// This class checks if a response status is a success or not. + /// + public class CommonTypesUtil + { + /// + /// Checks if a response status is a success or not. + /// + public static bool StatusIsSuccess(ResponseStatus status) + { + return ((int) status) > 0; + } + } +} diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/CommonTypes.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/CommonTypes.cs.meta new file mode 100644 index 0000000..2f68f82 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/CommonTypes.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 1c5d1cb1974d14c0c8b32fcf00089556 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/DummyClient.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/DummyClient.cs new file mode 100644 index 0000000..af03d90 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/DummyClient.cs @@ -0,0 +1,495 @@ +// +// Copyright (C) 2014 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID + +namespace GooglePlayGames.BasicApi +{ + using System; + using System.Collections.Generic; + using GooglePlayGames.OurUtils; + using UnityEngine.SocialPlatforms; + + /// + /// Dummy client used in Editor. + /// + /// Google Play Game Services are not supported in the Editor + /// environment, so this client is used as a placeholder. + /// + public class DummyClient : IPlayGamesClient + { + /// + /// Authenticates the user. + /// + /// Callback to handle the sign-in status. + public void Authenticate(Action callback) + { + LogUsage(); + if (callback != null) + { + callback(SignInStatus.Canceled); + } + } + + /// + /// Manually authenticates the user. + /// + /// Callback to handle the sign-in status. + public void ManuallyAuthenticate(Action callback) + { + LogUsage(); + if (callback != null) + { + callback(SignInStatus.Canceled); + } + } + + /// + /// Checks if the user is authenticated. + /// + /// Returns false indicating user is not authenticated. + public bool IsAuthenticated() + { + LogUsage(); + return false; + } + + /// + /// Requests server-side access with a refresh token. + /// + /// Flag to force refresh the token. + /// Callback to handle the response. + public void RequestServerSideAccess(bool forceRefreshToken, Action callback) + { + LogUsage(); + if (callback != null) + { + callback(null); + } + } + + /// + /// Requests server-side access with specific scopes. + /// + /// Flag to force refresh the token. + /// List of requested authorization scopes. + /// Callback to handle the response. + public void RequestServerSideAccess(bool forceRefreshToken, List scopes, Action callback) + { + LogUsage(); + if (callback != null) + { + callback(null); + } + } + + /// + /// Requests recall of the access token. + /// + /// Callback to handle the recall response. + public void RequestRecallAccessToken(Action callback) + { + LogUsage(); + if (callback != null) + { + callback(null); + } + } + + /// + /// Retrieves the user ID. + /// + /// Returns a dummy user ID. + public string GetUserId() + { + LogUsage(); + return "DummyID"; + } + + /// + /// Retrieves the player statistics. + /// + /// Callback to handle the player stats response. + public void GetPlayerStats(Action callback) + { + LogUsage(); + callback(CommonStatusCodes.ApiNotConnected, new PlayerStats()); + } + + /// + /// Retrieves the user's display name. + /// + /// Returns a dummy display name. + public string GetUserDisplayName() + { + LogUsage(); + return "Player"; + } + + /// + /// Retrieves the user's image URL. + /// + /// Returns null since no image is available. + public string GetUserImageUrl() + { + LogUsage(); + return null; + } + + /// + /// Loads user profiles for the given user IDs. + /// + /// List of user IDs. + /// Callback to handle the user profile response. + public void LoadUsers(string[] userIds, Action callback) + { + LogUsage(); + if (callback != null) + { + callback.Invoke(null); + } + } + + /// + /// Loads achievements for the current user. + /// + /// Callback to handle the achievement response. + public void LoadAchievements(Action callback) + { + LogUsage(); + if (callback != null) + { + callback.Invoke(null); + } + } + + /// + /// Unlocks the specified achievement. + /// + /// The achievement ID to unlock. + /// Callback to handle the unlock result. + public void UnlockAchievement(string achId, Action callback) + { + LogUsage(); + if (callback != null) + { + callback.Invoke(false); + } + } + + /// + /// Reveals the specified achievement. + /// + /// The achievement ID to reveal. + /// Callback to handle the reveal result. + public void RevealAchievement(string achId, Action callback) + { + LogUsage(); + if (callback != null) + { + callback.Invoke(false); + } + } + + /// + /// Increments the specified achievement by a number of steps. + /// + /// The achievement ID to increment. + /// The number of steps to increment the achievement. + /// Callback to handle the increment result. + public void IncrementAchievement(string achId, int steps, Action callback) + { + LogUsage(); + if (callback != null) + { + callback.Invoke(false); + } + } + + /// + /// Sets the steps of the specified achievement to at least a certain number. + /// + /// The achievement ID to update. + /// The number of steps to set. + /// Callback to handle the result of setting the steps. + public void SetStepsAtLeast(string achId, int steps, Action callback) + { + LogUsage(); + if (callback != null) + { + callback.Invoke(false); + } + } + + /// + /// Displays the achievements UI. + /// + /// Callback to handle the UI status. + public void ShowAchievementsUI(Action callback) + { + LogUsage(); + if (callback != null) + { + callback.Invoke(UIStatus.VersionUpdateRequired); + } + } + + /// + /// Requests the load friends resolution UI. + /// + /// Callback to handle the UI status. + public void AskForLoadFriendsResolution(Action callback) + { + LogUsage(); + if (callback != null) + { + callback.Invoke(UIStatus.VersionUpdateRequired); + } + } + + /// + /// Retrieves the last load friends status. + /// + /// Returns the last known load friends status. + public LoadFriendsStatus GetLastLoadFriendsStatus() + { + LogUsage(); + return LoadFriendsStatus.Unknown; + } + + /// + /// Loads friends with paging options. + /// + /// The number of friends to load per page. + /// Flag to force reload of the friends list. + /// Callback to handle the load friends status. + public void LoadFriends(int pageSize, bool forceReload, + Action callback) + { + LogUsage(); + if (callback != null) + { + callback.Invoke(LoadFriendsStatus.Unknown); + } + } + + /// + /// Loads additional friends if available. + /// + /// The number of additional friends to load. + /// Callback to handle the load friends status. + public void LoadMoreFriends(int pageSize, Action callback) + { + LogUsage(); + if (callback != null) + { + callback.Invoke(LoadFriendsStatus.Unknown); + } + } + + /// + /// Displays the compare profile UI for a player. + /// + /// The user ID of the player to compare. + /// The in-game name of the other player. + /// The in-game name of the current player. + /// Callback to handle the UI status. + public void ShowCompareProfileWithAlternativeNameHintsUI(string userId, + string otherPlayerInGameName, + string currentPlayerInGameName, + Action callback) + { + LogUsage(); + if (callback != null) + { + callback.Invoke(UIStatus.VersionUpdateRequired); + } + } + + /// + /// Retrieves the visibility status of the friends list. + /// + /// Flag to force reload the friends list visibility. + /// Callback to handle the friends list visibility status. + public void GetFriendsListVisibility(bool forceReload, + Action callback) + { + LogUsage(); + if (callback != null) + { + callback.Invoke(FriendsListVisibilityStatus.Unknown); + } + } + + /// + /// Displays the leaderboard UI for a specific leaderboard. + /// + /// The ID of the leaderboard. + /// The time span for the leaderboard. + /// Callback to handle the UI status. + public void ShowLeaderboardUI( + string leaderboardId, + LeaderboardTimeSpan span, + Action callback) + { + LogUsage(); + if (callback != null) + { + callback.Invoke(UIStatus.VersionUpdateRequired); + } + } + + /// + /// Retrieves the maximum number of leaderboard results that can be loaded. + /// + /// Returns the maximum number of leaderboard results. + public int LeaderboardMaxResults() + { + return 25; + } + + /// + /// Loads the leaderboard scores based on the specified parameters. + /// + /// The ID of the leaderboard to load scores from. + /// The start position for loading scores. + /// The number of scores to load. + /// The collection type (e.g., public or social). + /// The time span for the leaderboard scores. + /// Callback to handle the leaderboard score data. + public void LoadScores( + string leaderboardId, + LeaderboardStart start, + int rowCount, + LeaderboardCollection collection, + LeaderboardTimeSpan timeSpan, + Action callback) + { + LogUsage(); + if (callback != null) + { + callback(new LeaderboardScoreData( + leaderboardId, + ResponseStatus.LicenseCheckFailed)); + } + } + + /// + /// Loads more leaderboard scores based on the provided pagination token. + /// + /// The token used for pagination. + /// The number of scores to load. + /// Callback to handle the leaderboard score data. + public void LoadMoreScores( + ScorePageToken token, + int rowCount, + Action callback) + { + LogUsage(); + if (callback != null) + { + callback(new LeaderboardScoreData( + token.LeaderboardId, + ResponseStatus.LicenseCheckFailed)); + } + } + + /// + /// Submits a score to a specific leaderboard. + /// + /// The ID of the leaderboard. + /// The score to submit. + /// Callback to handle the score submission result. + public void SubmitScore(string leaderboardId, long score, Action callback) + { + LogUsage(); + if (callback != null) + { + callback.Invoke(false); + } + } + + /// + /// Submits a score with additional metadata to a specific leaderboard. + /// + /// The ID of the leaderboard. + /// The score to submit. + /// Additional metadata to submit with the score. + /// Callback to handle the score submission result. + public void SubmitScore( + string leaderboardId, + long score, + string metadata, + Action callback) + { + LogUsage(); + if (callback != null) + { + callback.Invoke(false); + } + } + + /// + /// Retrieves the saved game client. + /// + /// Returns null since no saved game client is available. + public SavedGame.ISavedGameClient GetSavedGameClient() + { + LogUsage(); + return null; + } + + /// + /// Retrieves the events client. + /// + /// Returns null since no events client is available. + public GooglePlayGames.BasicApi.Events.IEventsClient GetEventsClient() + { + LogUsage(); + return null; + } + + /// + /// Loads friends with a simple boolean flag indicating success or failure. + /// + /// Callback to handle the load result. + public void LoadFriends(Action callback) + { + LogUsage(); + callback(false); + } + + /// + /// Retrieves the list of friends for the current user. + /// + /// Returns an empty array since no friends are loaded. + public IUserProfile[] GetFriends() + { + LogUsage(); + return new IUserProfile[0]; + } + + /// + /// Logs method usage for debugging purposes. + /// + private static void LogUsage() + { + Logger.d("Received method call on DummyClient - using stub implementation."); + } + + } +} +#endif diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/DummyClient.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/DummyClient.cs.meta new file mode 100644 index 0000000..73fdfdc --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/DummyClient.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 2c600182c9892457e92f885549bd838a +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events.meta new file mode 100644 index 0000000..fa1d608 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 672ea858ca3b74efb9d0981849563065 +folderAsset: yes +timeCreated: 1435699548 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/Event.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/Event.cs new file mode 100644 index 0000000..4938bce --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/Event.cs @@ -0,0 +1,53 @@ +namespace GooglePlayGames.BasicApi.Events +{ + internal class Event : IEvent + { + private string mId; + private string mName; + private string mDescription; + private string mImageUrl; + private ulong mCurrentCount; + private EventVisibility mVisibility; + + internal Event(string id, string name, string description, string imageUrl, + ulong currentCount, EventVisibility visibility) + { + mId = id; + mName = name; + mDescription = description; + mImageUrl = imageUrl; + mCurrentCount = currentCount; + mVisibility = visibility; + } + + public string Id + { + get { return mId; } + } + + public string Name + { + get { return mName; } + } + + public string Description + { + get { return mDescription; } + } + + public string ImageUrl + { + get { return mImageUrl; } + } + + public ulong CurrentCount + { + get { return mCurrentCount; } + } + + public EventVisibility Visibility + { + get { return mVisibility; } + } + } +} diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/Event.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/Event.cs.meta new file mode 100644 index 0000000..6dc3df2 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/Event.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: ce7f6801baead4bbda584bb96882e78b +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/IEvent.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/IEvent.cs new file mode 100644 index 0000000..73d8477 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/IEvent.cs @@ -0,0 +1,60 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +namespace GooglePlayGames.BasicApi.Events +{ + public enum EventVisibility + { + Hidden = 1, + Revealed = 2, + } + + /// + /// Data object representing an Event. for more. + /// + public interface IEvent + { + /// + /// The ID of the event. + /// + string Id { get; } + + /// + /// The name of the event. + /// + string Name { get; } + + /// + /// The description of the event. + /// + string Description { get; } + + /// + /// The URL of the image for the event. Empty if there is no image for this event. + /// + /// The image URL. + string ImageUrl { get; } + + /// + /// The current count for this event. + /// + ulong CurrentCount { get; } + + /// + /// The visibility of the event. + /// + EventVisibility Visibility { get; } + } +} diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/IEvent.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/IEvent.cs.meta new file mode 100644 index 0000000..1511d16 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/IEvent.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 7e4f4f47218d14208a8ae0f676e1bca4 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/IEventsClient.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/IEventsClient.cs new file mode 100644 index 0000000..b13f1c5 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/IEventsClient.cs @@ -0,0 +1,60 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#if UNITY_ANDROID +namespace GooglePlayGames.BasicApi.Events +{ + using System; + using System.Collections.Generic; + + /// + /// An interface for interacting with events. + /// + /// See online + /// documentation for Events for more information. + /// + /// All callbacks in this interface must be invoked on the game thread. + /// + public interface IEventsClient + { + /// + /// Fetches all events defined for this game. + /// + /// The source of the event (i.e. whether we can return stale cached + /// values). + /// A callback for the results of the request. The passed list will only + /// be non-empty if the request succeeded. This callback will be invoked on the game thread. + /// + void FetchAllEvents(DataSource source, Action> callback); + + /// + /// Fetches the event with the specified ID. + /// + /// The source of the event (i.e. whether we can return stale cached + /// values). + /// The ID of the event. + /// A callback for the result of the event. If the request failed, the + /// passed event will be null. This callback will be invoked on the game thread. + void FetchEvent(DataSource source, string eventId, Action callback); + + /// + /// Increments the indicated event. + /// + /// The ID of the event to increment. + /// The number of steps to increment by. + void IncrementEvent(string eventId, uint stepsToIncrement); + } +} +#endif diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/IEventsClient.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/IEventsClient.cs.meta new file mode 100644 index 0000000..7686e27 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Events/IEventsClient.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: da57ba264ec114c57b8352923847ec34 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/IPlayGamesClient.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/IPlayGamesClient.cs new file mode 100644 index 0000000..46be03f --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/IPlayGamesClient.cs @@ -0,0 +1,407 @@ +// +// Copyright (C) 2014 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID + +namespace GooglePlayGames.BasicApi +{ + using System; + using System.Collections.Generic; + using UnityEngine.SocialPlatforms; + + /// + /// Defines an abstract interface for a Play Games Client. + /// + /// Concrete implementations + /// might be, for example, the client for Android or for iOS. One fundamental concept + /// that implementors of this class must adhere to is stable authentication state. + /// This means that once Authenticate() returns true through its callback, the user is + /// considered to be forever after authenticated while the app is running. The implementation + /// must make sure that this is the case -- for example, it must try to silently + /// re-authenticate the user if authentication is lost or wait for the authentication + /// process to get fixed if it is temporarily in a bad state (such as when the + /// Activity in Android has just been brought to the foreground and the connection to + /// the Games services hasn't yet been established). To the user of this + /// interface, once the user is authenticated, they're forever authenticated. + /// Unless, of course, there is an unusual permanent failure such as the underlying + /// service dying, in which it's acceptable that API method calls will fail. + /// + /// All methods can be called from the game thread. The user of this interface + /// DOES NOT NEED to call them from the UI thread of the game. Transferring to the UI + /// thread when necessary is a responsibility of the implementors of this interface. + /// + /// CALLBACKS: all callbacks must be invoked in Unity's main thread. + /// Implementors of this interface must guarantee that (suggestion: use + /// ). + /// + public interface IPlayGamesClient + { + /// + /// Returns the result of the automatic sign-in attempt. + /// + /// This returns the result + /// + /// Callback + void Authenticate(Action callback); + + /// + /// Manually requests that your game performs sign in with Play Games Services. + /// + /// + /// Note that a sign-in attempt will be made automatically when your game's application + /// started. For this reason most games will not need to manually request to perform sign-in + /// unless the automatic sign-in attempt failed and your game requires access to Play Games + /// Services. + /// + /// + void ManuallyAuthenticate(Action callback); + + /// + /// Returns whether or not user is authenticated. + /// + /// true if the user is authenticated; otherwise, false. + bool IsAuthenticated(); + + /// + /// Requests server-side access to Player Games Services for the currently signed in player. + /// + /// When requested an authorization code is returned that can be used by your game-server to + /// exchange for an access token and conditionally a refresh token (when forceRefreshToken + /// is true). The access token may then be used by your game-server to access the Play Games + /// Services web APIs. This is commonly used to complete a sign-in flow by verifying the Play Games + /// Services player id. + /// + /// If forceRefreshToken is true, when exchanging the authorization code a refresh token + /// will be returned in addition to the access token. The refresh token allows the game-server to + /// request additional access tokens, allowing your game-server to continue accesses Play Games + /// Services while the user is not actively playing your app. + /// If true when the returned authorization code is exchanged a + /// refresh token will be included in addition to an access token. + /// + void RequestServerSideAccess(bool forceRefreshToken, Action callback); + + /// + /// Requests server-side access to Play Games Services for the currently signed in player. + /// + /// An authorization code is returned when requested. Your server can then exchange this code + /// for an access token (and conditionally a refresh token when forceRefreshToken is + /// true). The access token allows your server to access the Play Games Services web APIs, which + /// is often used to complete sign-in by verifying the Play Games Services player ID. + /// + /// When forceRefreshToken is true during authorization code exchange, a refresh + /// token is provided along with the access token. This refresh token enables your server to obtain + /// new access tokens and continue accessing Play Games Services even when the user isn't actively + /// playing. Note that refresh tokens are only generated for players who have auto sign-in setting + /// enabled. + /// + /// Scopes represent the {@link AuthScope} values requested such as AuthScope.EMAIL, + /// AuthScope.PROFILE, AuthScope.OPEN_ID. For new permissions, users will see a + /// consent screen upon the first request. Granting consent (or if permissions were already + /// granted) results in the {@link AuthResponse} listing the effectively granted {@link AuthScope}. + /// Declining permission results in an empty list of granted {@link AuthScope} in the {@link + /// AuthResponse} . Regardless of granted permissions, a successful request will always return the + /// authorization code. + /// If true when the returned authorization code is exchanged a + /// refresh token will be included in addition to an access token. + ///A list of {@link AuthScope} values representing the OAuth 2.0 permissions being + ///requested, such as AuthScope.EMAIL, AuthScope.PROFILE and + /// AuthScope.OPEN_ID. + /// + /// A {@link Task} that completes with an {@link AuthResponse} containing the OAuth 2.0 + /// authorization code as a string and a list of the {@link AuthScope}s that were effectively + /// granted by the user (see description for details on consent). This authorization code can + /// be exchanged by your server for an access token (and conditionally a refresh token) that + /// can be used to access the Play Games Services web APIs and other Google Identity APIs. + void RequestServerSideAccess(bool forceRefreshToken, List scopes, Action callback); + + /// + /// Requests Recall Access to Player Games Services for the currently signed in account + /// + /// When requested a session id is returned that can be used by your game-server to + /// use Recall Access APIs like LinkPerson , UnlinkPersona and get Details about Recall Tokens + /// and corresponding personas. See https://developer.android.com/games/pgs/recall?hl=en. + /// + /// + /// + /// + /// + void RequestRecallAccessToken(Action callback); + + /// + /// Returns the authenticated user's ID. Note that this value may change if a user signs + /// out and signs in with a different account. + /// + /// The user's ID, null if the user is not logged in. + string GetUserId(); + + /// + /// Loads friends of the authenticated user. This loads the entire list of friends. + /// + /// Callback invoked when complete. bool argument + /// indicates success. + void LoadFriends(Action callback); + + /// + /// Returns a human readable name for the user, if they are logged in. + /// + /// The user's human-readable name. null if they are not logged + /// in + string GetUserDisplayName(); + + /// + /// Returns the user's avatar url, if they are logged in and have an avatar. + /// + /// The URL to load the avatar image. null if they are not logged + /// in + string GetUserImageUrl(); + + /// Gets the player stats. + /// Callback for response. + void GetPlayerStats(Action callback); + + /// + /// Loads the users specified. This is mainly used by the leaderboard + /// APIs to get the information of a high scorer. + /// + /// User identifiers. + /// Callback. + void LoadUsers(string[] userIds, Action callback); + + /// + /// Loads the achievements for the current signed in user and invokes + /// the callback. + /// + void LoadAchievements(Action callback); + + /// + /// Unlocks the achievement with the passed identifier. + /// + /// If the operation succeeds, the callback + /// will be invoked on the game thread with true. If the operation fails, the + /// callback will be invoked with false. This operation will immediately fail if + /// the user is not authenticated (i.e. the callback will immediately be invoked with + /// false). If the achievement is already unlocked, this call will + /// succeed immediately. + /// + /// The ID of the achievement to unlock. + /// Callback used to indicate whether the operation + /// succeeded or failed. + void UnlockAchievement(string achievementId, Action successOrFailureCalllback); + + /// + /// Reveals the achievement with the passed identifier. + /// + /// If the operation succeeds, the callback + /// will be invoked on the game thread with true. If the operation fails, the + /// callback will be invoked with false. This operation will immediately fail if + /// the user is not authenticated (i.e. the callback will immediately be invoked with + /// false). If the achievement is already in a revealed state, this call will + /// succeed immediately. + /// + /// The ID of the achievement to reveal. + /// Callback used to indicate whether the operation + /// succeeded or failed. + void RevealAchievement(string achievementId, Action successOrFailureCalllback); + + /// + /// Increments the achievement with the passed identifier. + /// + /// If the operation succeeds, the + /// callback will be invoked on the game thread with true. If the operation + /// fails, the callback will be invoked with false. This operation will + /// immediately fail if the user is not authenticated (i.e. the callback will immediately be + /// invoked with false). + /// + /// The ID of the achievement to increment. + /// The number of steps to increment by. + /// Callback used to indicate whether the operation + /// succeeded or failed. + void IncrementAchievement(string achievementId, int steps, + Action successOrFailureCalllback); + + /// + /// Set an achievement to have at least the given number of steps completed. + /// + /// + /// Calling this method while the achievement already has more steps than + /// the provided value is a no-op. Once the achievement reaches the + /// maximum number of steps, the achievement is automatically unlocked, + /// and any further mutation operations are ignored. + /// + /// Ach identifier. + /// Steps. + /// Callback. + void SetStepsAtLeast(string achId, int steps, Action callback); + + /// + /// Shows the appropriate platform-specific achievements UI. + /// The callback to invoke when complete. If null, + /// no callback is called. + /// + void ShowAchievementsUI(Action callback); + + /// + /// Shows the appropriate platform-specific friends sharing UI. + /// The callback to invoke when complete. If null, + /// no callback is called. + /// + void AskForLoadFriendsResolution(Action callback); + + /// + /// Returns the latest LoadFriendsStatus obtained from loading friends. + /// + LoadFriendsStatus GetLastLoadFriendsStatus(); + + /// + /// Shows the Play Games Player Profile UI for a specific user identifier. + /// + /// User Identifier. + /// + /// The game's own display name of the player referred to by userId. + /// + /// + /// The game's own display name of the current player. + /// + /// Callback invoked upon completion. + void ShowCompareProfileWithAlternativeNameHintsUI( + string otherUserId, string otherPlayerInGameName, string currentPlayerInGameName, + Action callback); + + /// + /// Returns if the user has allowed permission for the game to access the friends list. + /// + /// If true, this call will clear any locally cached data and + /// attempt to fetch the latest data from the server. Normally, this should be set to + /// false to gain advantages of data caching. Callback + /// invoked upon completion. + void GetFriendsListVisibility(bool forceReload, Action callback); + + /// + /// Loads the first page of the user's friends + /// + /// + /// The number of entries to request for this initial page. Note that if cached + /// data already exists, the returned buffer may contain more than this size, but it is + /// guaranteed to contain at least this many if the collection contains enough records. + /// + /// + /// If true, this call will clear any locally cached data and attempt to + /// fetch the latest data from the server. This would commonly be used for something like a + /// user-initiated refresh. Normally, this should be set to false to gain advantages + /// of data caching. + /// Callback invoked upon completion. + void LoadFriends(int pageSize, bool forceReload, Action callback); + + /// + /// Loads the friends list page + /// + /// + /// The number of entries to request for this page. Note that if cached data already + /// exists, the returned buffer may contain more than this size, but it is guaranteed + /// to contain at least this many if the collection contains enough records. + /// + /// + void LoadMoreFriends(int pageSize, Action callback); + + /// + /// Shows the leaderboard UI for a specific leaderboard. + /// + /// If the passed ID is null, all leaderboards are displayed. + /// + /// The leaderboard to display. null to display + /// all. + /// Timespan to display for the leaderboard + /// If non-null, the callback to invoke when the + /// leaderboard is dismissed. + /// + void ShowLeaderboardUI(string leaderboardId, LeaderboardTimeSpan span, + Action callback); + + /// + /// Loads the score data for the given leaderboard. + /// + /// Leaderboard identifier. + /// Start indicating the top scores or player centric + /// max number of scores to return. non-positive indicates + /// no rows should be returned. This causes only the summary info to + /// be loaded. This can be limited + /// by the SDK. + /// leaderboard collection: public or social + /// leaderboard timespan + /// callback with the scores, and a page token. + /// The token can be used to load next/prev pages. + void LoadScores(string leaderboardId, LeaderboardStart start, int rowCount, + LeaderboardCollection collection, LeaderboardTimeSpan timeSpan, + Action callback); + + /// + /// Loads the more scores for the leaderboard. + /// + /// The token is accessed + /// by calling LoadScores() with a positive row count. + /// + /// Token for tracking the score loading. + /// max number of scores to return. + /// This can be limited by the SDK. + /// Callback. + void LoadMoreScores(ScorePageToken token, int rowCount, + Action callback); + + /// + /// Returns the max number of scores returned per call. + /// + /// The max results. + int LeaderboardMaxResults(); + + /// + /// Submits the passed score to the passed leaderboard. + /// + /// This operation will immediately fail + /// if the user is not authenticated (i.e. the callback will immediately be invoked with + /// false). + /// + /// Leaderboard identifier. + /// Score. + /// Callback used to indicate whether the operation + /// succeeded or failed. + void SubmitScore(string leaderboardId, long score, Action successOrFailureCalllback); + + /// + /// Submits the score for the currently signed-in player. + /// + /// Score. + /// leaderboard id. + /// metadata about the score. + /// Callback upon completion. + void SubmitScore(string leaderboardId, long score, string metadata, + Action successOrFailureCalllback); + + /// + /// Gets the saved game client. + /// + /// The saved game client. + SavedGame.ISavedGameClient GetSavedGameClient(); + + /// + /// Gets the events client. + /// + /// The events client. + Events.IEventsClient GetEventsClient(); + + IUserProfile[] GetFriends(); + } +} +#endif diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/IPlayGamesClient.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/IPlayGamesClient.cs.meta new file mode 100644 index 0000000..c7fe324 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/IPlayGamesClient.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 9138e04e4459148c680055b40ad324c0 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/LeaderboardScoreData.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/LeaderboardScoreData.cs new file mode 100644 index 0000000..032fc6c --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/LeaderboardScoreData.cs @@ -0,0 +1,174 @@ +// +// Copyright (C) 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID + +namespace GooglePlayGames.BasicApi +{ + using System.Collections.Generic; + using UnityEngine.SocialPlatforms; + + /// + /// Leaderboard score data. This is the callback data + /// when loading leaderboard scores. There are several SDK + /// API calls needed to be made to collect all the required data, + /// so this class is used to simplify the response. + /// + public class LeaderboardScoreData + { + private string mId; + private ResponseStatus mStatus; + private ulong mApproxCount; + private string mTitle; + private IScore mPlayerScore; + private ScorePageToken mPrevPage; + private ScorePageToken mNextPage; + private List mScores = new List(); + + /// + /// Initializes a new instance of the class. + /// + /// The identifier of the leaderboard. + internal LeaderboardScoreData(string leaderboardId) + { + mId = leaderboardId; + } + + /// + /// Initializes a new instance of the class with a specified status. + /// + /// The identifier of the leaderboard. + /// The response status of the leaderboard data. + internal LeaderboardScoreData(string leaderboardId, ResponseStatus status) + { + mId = leaderboardId; + mStatus = status; + } + + /// + /// Gets a value indicating whether the leaderboard data is valid. + /// + public bool Valid + { + get + { + return mStatus == ResponseStatus.Success || + mStatus == ResponseStatus.SuccessWithStale; + } + } + + /// + /// Gets or sets the status of the leaderboard data response. + /// + public ResponseStatus Status + { + get { return mStatus; } + + internal set { mStatus = value; } + } + + /// + /// Gets or sets the approximate count of scores in the leaderboard. + /// + public ulong ApproximateCount + { + get { return mApproxCount; } + + internal set { mApproxCount = value; } + } + + /// + /// Gets or sets the title of the leaderboard. + /// + public string Title + { + get { return mTitle; } + + internal set { mTitle = value; } + } + + /// + /// Gets or sets the unique identifier of the leaderboard. + /// + public string Id + { + get { return mId; } + + internal set { mId = value; } + } + + /// + /// Gets or sets the player's score in the leaderboard. + /// + public IScore PlayerScore + { + get { return mPlayerScore; } + + internal set { mPlayerScore = value; } + } + + /// + /// Gets an array of the scores in the leaderboard. + /// + public IScore[] Scores + { + get { return mScores.ToArray(); } + } + + /// + /// Adds a score to the leaderboard data. + /// + /// The score to add. + /// The count of scores after the addition. + internal int AddScore(PlayGamesScore score) + { + mScores.Add(score); + return mScores.Count; + } + + /// + /// Gets or sets the token for the previous page of scores. + /// + public ScorePageToken PrevPageToken + { + get { return mPrevPage; } + + internal set { mPrevPage = value; } + } + + /// + /// Gets or sets the token for the next page of scores. + /// + public ScorePageToken NextPageToken + { + get { return mNextPage; } + + internal set { mNextPage = value; } + } + + /// + /// Returns a string representation of the leaderboard score data. + /// + /// A string that represents the current object. + public override string ToString() + { + return string.Format("[LeaderboardScoreData: mId={0}, " + + " mStatus={1}, mApproxCount={2}, mTitle={3}]", + mId, mStatus, mApproxCount, mTitle); + } + } +} +#endif diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/LeaderboardScoreData.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/LeaderboardScoreData.cs.meta new file mode 100644 index 0000000..3f5c114 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/LeaderboardScoreData.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 8e369c64e8c9f4571a8847f37848c37e +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby.meta new file mode 100644 index 0000000..0286871 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c980790a380df4850b17a208e544d062 +folderAsset: yes +timeCreated: 1435699549 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/AdvertisingResult.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/AdvertisingResult.cs new file mode 100644 index 0000000..6c6419e --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/AdvertisingResult.cs @@ -0,0 +1,67 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace GooglePlayGames.BasicApi.Nearby +{ + using System; + using System.Collections.Generic; + using GooglePlayGames.OurUtils; + + /// + /// Represents the result of an attempt to start advertising for nearby connections. + /// + public struct AdvertisingResult + { + private readonly ResponseStatus mStatus; + private readonly string mLocalEndpointName; + + /// + /// Constructs a new . + /// + /// The result of the advertising attempt. + /// The name of the local endpoint. + /// If is null. + public AdvertisingResult(ResponseStatus status, string localEndpointName) + { + this.mStatus = status; + this.mLocalEndpointName = Misc.CheckNotNull(localEndpointName); + } + + /// + /// Gets a value indicating whether the advertising operation was successful. + /// + public bool Succeeded + { + get { return mStatus == ResponseStatus.Success; } + } + + /// + /// Gets the response status of the advertising operation. + /// + public ResponseStatus Status + { + get { return mStatus; } + } + + /// + /// Gets the name of the local endpoint used in the advertising operation. + /// + public string LocalEndpointName + { + get { return mLocalEndpointName; } + } + } +} \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/AdvertisingResult.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/AdvertisingResult.cs.meta new file mode 100644 index 0000000..8d791e6 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/AdvertisingResult.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 941324a6338664af6a9faf5b88cad408 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/ConnectionRequest.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/ConnectionRequest.cs new file mode 100644 index 0000000..585e46c --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/ConnectionRequest.cs @@ -0,0 +1,61 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace GooglePlayGames.BasicApi.Nearby +{ + using GooglePlayGames.OurUtils; + + /// + /// Represents a request to establish a connection with a remote endpoint. + /// Contains information about the remote endpoint and an optional payload. + /// + public struct ConnectionRequest + { + private readonly EndpointDetails mRemoteEndpoint; + private readonly byte[] mPayload; + + /// + /// Initializes a new instance of the struct. + /// + /// The ID of the remote endpoint requesting the connection. + /// The name of the remote endpoint. + /// The service ID the connection is targeting. + /// The payload associated with the connection request. + public ConnectionRequest(string remoteEndpointId, + string remoteEndpointName, string serviceId, byte[] payload) + { + Logger.d("Constructing ConnectionRequest"); + mRemoteEndpoint = new EndpointDetails(remoteEndpointId, remoteEndpointName, serviceId); + this.mPayload = Misc.CheckNotNull(payload); + } + + /// + /// Gets the details of the remote endpoint making the connection request. + /// + public EndpointDetails RemoteEndpoint + { + get { return mRemoteEndpoint; } + } + + /// + /// Gets the payload data included with the connection request. + /// + public byte[] Payload + { + get { return mPayload; } + } + } +} \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/ConnectionRequest.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/ConnectionRequest.cs.meta new file mode 100644 index 0000000..7d076a9 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/ConnectionRequest.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: c7f9bb6b249224f99ad05a87d3e4ee34 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/ConnectionResponse.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/ConnectionResponse.cs new file mode 100644 index 0000000..da8f614 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/ConnectionResponse.cs @@ -0,0 +1,174 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace GooglePlayGames.BasicApi.Nearby +{ + using GooglePlayGames.OurUtils; + + /// + /// Represents a response to a connection request, including status, payload, and identifying information. + /// + public struct ConnectionResponse + { + private static readonly byte[] EmptyPayload = new byte[0]; + + /// + /// Status codes representing the outcome of a connection request. + /// + public enum Status + { + /// + /// Indicates that the connection was accepted. + /// + Accepted, + + /// + /// Indicates that the connection was rejected. + /// + Rejected, + + /// + /// Indicates that an internal error occurred. + /// + ErrorInternal, + + /// + /// Indicates that the device is not connected to a network. + /// + ErrorNetworkNotConnected, + + /// + /// Indicates that the remote endpoint is not connected. + /// + ErrorEndpointNotConnected, + + /// + /// Indicates that the endpoints are already connected. + /// + ErrorAlreadyConnected + } + + private readonly long mLocalClientId; + private readonly string mRemoteEndpointId; + private readonly Status mResponseStatus; + private readonly byte[] mPayload; + + /// + /// Initializes a new instance of the struct. + /// + /// The ID of the local client. + /// The ID of the remote endpoint. + /// The status of the connection response. + /// The payload data included with the response. + private ConnectionResponse(long localClientId, string remoteEndpointId, Status code, + byte[] payload) + { + this.mLocalClientId = localClientId; + this.mRemoteEndpointId = Misc.CheckNotNull(remoteEndpointId); + this.mResponseStatus = code; + this.mPayload = Misc.CheckNotNull(payload); + } + + /// + /// Gets the ID of the local client. + /// + public long LocalClientId + { + get { return mLocalClientId; } + } + + /// + /// Gets the ID of the remote endpoint responding to the connection request. + /// + public string RemoteEndpointId + { + get { return mRemoteEndpointId; } + } + + /// + /// Gets the status of the connection response. + /// + public Status ResponseStatus + { + get { return mResponseStatus; } + } + + /// + /// Gets the payload sent with the connection response. + /// + public byte[] Payload + { + get { return mPayload; } + } + + /// + /// Creates a response indicating the connection was rejected. + /// + public static ConnectionResponse Rejected(long localClientId, string remoteEndpointId) + { + return new ConnectionResponse(localClientId, remoteEndpointId, Status.Rejected, + EmptyPayload); + } + + /// + /// Creates a response indicating the device is not connected to a network. + /// + public static ConnectionResponse NetworkNotConnected(long localClientId, string remoteEndpointId) + { + return new ConnectionResponse(localClientId, remoteEndpointId, Status.ErrorNetworkNotConnected, + EmptyPayload); + } + + /// + /// Creates a response indicating an internal error occurred. + /// + public static ConnectionResponse InternalError(long localClientId, string remoteEndpointId) + { + return new ConnectionResponse(localClientId, remoteEndpointId, Status.ErrorInternal, + EmptyPayload); + } + + /// + /// Creates a response indicating the remote endpoint is not connected. + /// + public static ConnectionResponse EndpointNotConnected(long localClientId, string remoteEndpointId) + { + return new ConnectionResponse(localClientId, remoteEndpointId, Status.ErrorEndpointNotConnected, + EmptyPayload); + } + + /// + /// Creates a response indicating the connection was accepted with a payload. + /// + public static ConnectionResponse Accepted(long localClientId, string remoteEndpointId, + byte[] payload) + { + return new ConnectionResponse(localClientId, remoteEndpointId, Status.Accepted, + payload); + } + + /// + /// Creates a response indicating the endpoints are already connected. + /// + public static ConnectionResponse AlreadyConnected(long localClientId, + string remoteEndpointId) + { + return new ConnectionResponse(localClientId, remoteEndpointId, + Status.ErrorAlreadyConnected, + EmptyPayload); + } + } +} \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/ConnectionResponse.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/ConnectionResponse.cs.meta new file mode 100644 index 0000000..f079fb2 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/ConnectionResponse.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: ad6611af8d0204d0d8922a327d3d9ec0 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/DummyNearbyConnectionClient.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/DummyNearbyConnectionClient.cs new file mode 100644 index 0000000..38f0b5a --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/DummyNearbyConnectionClient.cs @@ -0,0 +1,176 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID + +namespace GooglePlayGames.BasicApi.Nearby +{ + using UnityEngine; + + /// + /// Dummy implementation of INearbyConnectionClient. This class can be used for testing purposes. + /// It logs messages indicating that its methods have been called. + /// + public class DummyNearbyConnectionClient : INearbyConnectionClient + { + /// + /// The maximum size of an unreliable message payload. + /// + public int MaxUnreliableMessagePayloadLength() + { + return NearbyConnectionConfiguration.MaxUnreliableMessagePayloadLength; + } + + /// + /// The maximum size of a reliable message payload. + /// + public int MaxReliableMessagePayloadLength() + { + return NearbyConnectionConfiguration.MaxReliableMessagePayloadLength; + } + + /// + /// Logs the message about Reliable call from dummy implementation. + /// + public void SendReliable(System.Collections.Generic.List recipientEndpointIds, byte[] payload) + { + OurUtils.Logger.d("SendReliable called from dummy implementation"); + } + + /// + /// Logs the message about Unreliable call from dummy implementation. + /// + public void SendUnreliable(System.Collections.Generic.List recipientEndpointIds, byte[] payload) + { + OurUtils.Logger.d("SendUnreliable called from dummy implementation"); + } + + /// + /// Starts advertising for a service. + /// + public void StartAdvertising(string name, System.Collections.Generic.List appIdentifiers, + System.TimeSpan? advertisingDuration, System.Action resultCallback, + System.Action connectionRequestCallback) + { + AdvertisingResult obj = new AdvertisingResult(ResponseStatus.LicenseCheckFailed, string.Empty); + resultCallback.Invoke(obj); + } + + /// + /// Logs the message about StopAdvertising call from dummy implementation. + /// + public void StopAdvertising() + { + OurUtils.Logger.d("StopAvertising in dummy implementation called"); + } + + /// + /// Sends a connection request to the specified endpoint. + /// + public void SendConnectionRequest(string name, string remoteEndpointId, byte[] payload, + System.Action responseCallback, IMessageListener listener) + { + OurUtils.Logger.d("SendConnectionRequest called from dummy implementation"); + + if (responseCallback != null) + { + ConnectionResponse obj = ConnectionResponse.Rejected(0, string.Empty); + responseCallback.Invoke(obj); + } + } + + /// + /// Logs the message about accepts a connection request from the specified endpoint. + /// + public void AcceptConnectionRequest(string remoteEndpointId, byte[] payload, IMessageListener listener) + { + OurUtils.Logger.d("AcceptConnectionRequest in dummy implementation called"); + } + + /// + /// Logs the message about StartDiscovery call from dummy implementation. + /// + public void StartDiscovery(string serviceId, System.TimeSpan? advertisingTimeout, IDiscoveryListener listener) + { + OurUtils.Logger.d("StartDiscovery in dummy implementation called"); + } + + /// + /// Logs the message about StopDiscovery call from dummy implementation. + /// + public void StopDiscovery(string serviceId) + { + OurUtils.Logger.d("StopDiscovery in dummy implementation called"); + } + + /// + /// Logs the message about RejectConnectionRequest call from dummy implementation. + /// + public void RejectConnectionRequest(string requestingEndpointId) + { + OurUtils.Logger.d("RejectConnectionRequest in dummy implementation called"); + } + + /// + /// Logs the message about DisconnectFromEndpoint call from dummy implementation. + /// + public void DisconnectFromEndpoint(string remoteEndpointId) + { + OurUtils.Logger.d("DisconnectFromEndpoint in dummy implementation called"); + } + + /// + /// Logs the message about StopAllConnections call from dummy implementation. + /// + public void StopAllConnections() + { + OurUtils.Logger.d("StopAllConnections in dummy implementation called"); + } + + /// + /// Returns the local endpoint id string. + /// + public string LocalEndpointId() + { + return string.Empty; + } + + /// + /// Returns the local device id string. + /// + public string LocalDeviceId() + { + return "DummyDevice"; + } + + /// + /// Returns the app bundle id string. + /// + public string GetAppBundleId() + { + return "dummy.bundle.id"; + } + + /// + /// Returns the service id string. + /// + public string GetServiceId() + { + return "dummy.service.id"; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/DummyNearbyConnectionClient.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/DummyNearbyConnectionClient.cs.meta new file mode 100644 index 0000000..443da46 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/DummyNearbyConnectionClient.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 9b3f34a2bba13428789d02b53fd89a47 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/EndpointDetails.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/EndpointDetails.cs new file mode 100644 index 0000000..3f3713b --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/EndpointDetails.cs @@ -0,0 +1,67 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace GooglePlayGames.BasicApi.Nearby +{ + using GooglePlayGames.OurUtils; + + /// + /// Represents details of an endpoint involved in a Nearby Connections operation. + /// + public struct EndpointDetails + { + private readonly string mEndpointId; + private readonly string mName; + private readonly string mServiceId; + + /// + /// Initializes a new instance of the struct. + /// + /// The unique identifier of the endpoint. + /// The name of the endpoint. + /// The service ID associated with the endpoint. + public EndpointDetails(string endpointId, string name, string serviceId) + { + this.mEndpointId = Misc.CheckNotNull(endpointId); + this.mName = Misc.CheckNotNull(name); + this.mServiceId = Misc.CheckNotNull(serviceId); + } + + /// + /// Gets the unique identifier of the endpoint. + /// + public string EndpointId + { + get { return mEndpointId; } + } + + /// + /// Gets the name of the endpoint. + /// + public string Name + { + get { return mName; } + } + + /// + /// Gets the service ID associated with the endpoint. + /// + public string ServiceId + { + get { return mServiceId; } + } + } +} diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/EndpointDetails.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/EndpointDetails.cs.meta new file mode 100644 index 0000000..e1aaf46 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/EndpointDetails.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 9d9a087b0e20d4752b24f33a4a2bf977 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/INearbyConnectionClient.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/INearbyConnectionClient.cs new file mode 100644 index 0000000..51ed85c --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/INearbyConnectionClient.cs @@ -0,0 +1,177 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace GooglePlayGames.BasicApi.Nearby +{ + using System; + using System.Collections.Generic; + + // move this inside IMessageListener and IDiscoveryListener are always declared. +#if UNITY_ANDROID + + /// + /// Interface for managing connections and communications between devices using Nearby Connections. + /// + public interface INearbyConnectionClient + { + /// + /// Gets the maximum length of an unreliable message payload. + /// + /// Maximum length of an unreliable message payload. + int MaxUnreliableMessagePayloadLength(); + + /// + /// Gets the maximum length of a reliable message payload. + /// + /// Maximum length of a reliable message payload. + int MaxReliableMessagePayloadLength(); + + /// + /// Sends a reliable message to a list of recipients. + /// + /// List of recipient endpoint IDs. + /// The message payload to send. + void SendReliable(List recipientEndpointIds, byte[] payload); + + /// + /// Sends an unreliable message to a list of recipients. + /// + /// List of recipient endpoint IDs. + /// The message payload to send. + void SendUnreliable(List recipientEndpointIds, byte[] payload); + + /// + /// Starts advertising the local device to nearby devices. + /// + /// The name to advertise. + /// List of application identifiers. + /// Optional advertising duration. + /// Callback for advertising result. + /// Callback for incoming connection requests. + void StartAdvertising(string name, List appIdentifiers, + TimeSpan? advertisingDuration, Action resultCallback, + Action connectionRequestCallback); + + /// + /// Stops advertising the local device to nearby devices. + /// + void StopAdvertising(); + + /// + /// Sends a connection request to a remote endpoint. + /// + /// The name of the local device. + /// The ID of the remote endpoint. + /// The connection request payload. + /// Callback for the connection response. + /// Listener for message events. + void SendConnectionRequest(string name, string remoteEndpointId, byte[] payload, + Action responseCallback, IMessageListener listener); + + /// + /// Accepts a connection request from a remote endpoint. + /// + /// The ID of the remote endpoint. + /// The connection acceptance payload. + /// Listener for message events. + void AcceptConnectionRequest(string remoteEndpointId, byte[] payload, + IMessageListener listener); + + /// + /// Starts discovering nearby endpoints for a specific service. + /// + /// The service ID to discover. + /// Optional timeout for advertising discovery. + /// Listener for discovery events. + void StartDiscovery(string serviceId, TimeSpan? advertisingTimeout, + IDiscoveryListener listener); + + /// + /// Stops discovering endpoints for a specific service. + /// + /// The service ID to stop discovering. + void StopDiscovery(string serviceId); + + /// + /// Rejects a connection request from a remote endpoint. + /// + /// The ID of the endpoint that sent the request. + void RejectConnectionRequest(string requestingEndpointId); + + /// + /// Disconnects from a remote endpoint. + /// + /// The ID of the remote endpoint to disconnect from. + void DisconnectFromEndpoint(string remoteEndpointId); + + /// + /// Stops all connections to nearby endpoints. + /// + void StopAllConnections(); + + /// + /// Gets the app bundle ID. + /// + /// The app bundle ID. + string GetAppBundleId(); + + /// + /// Gets the service ID used for discovery and connection. + /// + /// The service ID. + string GetServiceId(); + } +#endif + + /// + /// Interface for receiving messages and notifications about remote endpoints. + /// + public interface IMessageListener + { + /// + /// Called when a message is received from a remote endpoint. + /// + /// The ID of the remote endpoint. + /// The data of the received message. + /// Indicates whether the message is reliable. + void OnMessageReceived(string remoteEndpointId, byte[] data, + bool isReliableMessage); + + /// + /// Called when a remote endpoint has disconnected. + /// + /// The ID of the disconnected endpoint. + void OnRemoteEndpointDisconnected(string remoteEndpointId); + } + + /// + /// Interface for receiving notifications about discovered endpoints. + /// + public interface IDiscoveryListener + { + /// + /// Called when an endpoint is found during discovery. + /// + /// The details of the discovered endpoint. + void OnEndpointFound(EndpointDetails discoveredEndpoint); + + /// + /// Called when an endpoint is lost during discovery. + /// + /// The ID of the lost endpoint. + void OnEndpointLost(string lostEndpointId); + } +} diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/INearbyConnectionClient.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/INearbyConnectionClient.cs.meta new file mode 100644 index 0000000..8b154f2 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/INearbyConnectionClient.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: cb64b5b444dd34de5bd308c7eed6e509 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/NearbyConnectionConfiguration.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/NearbyConnectionConfiguration.cs new file mode 100644 index 0000000..9bcc3c8 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/NearbyConnectionConfiguration.cs @@ -0,0 +1,91 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace GooglePlayGames.BasicApi.Nearby +{ + using System; + using GooglePlayGames.OurUtils; + + /// + /// Represents the configuration for a Nearby Connections operation. + /// Includes initialization status and client-specific configuration. + /// + public enum InitializationStatus + { + /// + /// Indicates that the initialization was successful. + /// + Success, + + /// + /// Signifies that a version update is required for nearby connections. + /// + VersionUpdateRequired, + + /// + /// Denotes that an internal error occurred during initialization. + /// + InternalError + } + + /// + /// Defines the configuration for establishing a Nearby connection. + /// This includes parameters like client ID and initialization callback. + /// + public struct NearbyConnectionConfiguration + { + /// + /// A constant integer representing the maximum payload length for unreliable messages. + /// + public const int MaxUnreliableMessagePayloadLength = 1168; + + /// + /// A constant integer representing the maximum payload length for reliable messages. + /// + public const int MaxReliableMessagePayloadLength = 4096; + + private readonly Action mInitializationCallback; + private readonly long mLocalClientId; + + /// + /// Initializes a new instance of the struct. + /// + /// A callback that will be invoked when initialization completes. + /// The unique identifier for the local client. + public NearbyConnectionConfiguration(Action callback, + long localClientId) + { + this.mInitializationCallback = Misc.CheckNotNull(callback); + this.mLocalClientId = localClientId; + } + + /// + /// Gets the unique identifier for the local client. + /// + public long LocalClientId + { + get { return mLocalClientId; } + } + + /// + /// Gets the callback to be invoked upon the completion of initialization. + /// + public Action InitializationCallback + { + get { return mInitializationCallback; } + } + } +} \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/NearbyConnectionConfiguration.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/NearbyConnectionConfiguration.cs.meta new file mode 100644 index 0000000..184b7f7 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Nearby/NearbyConnectionConfiguration.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 968ac90e4a9094a4a92df9da1ee1f884 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Player.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Player.cs new file mode 100644 index 0000000..204dd61 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Player.cs @@ -0,0 +1,39 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#if UNITY_ANDROID +namespace GooglePlayGames.BasicApi +{ + /// + /// Represents a player. A player is different from a participant! The participant is + /// an entity that takes part in a particular match; a Player is a real-world person + /// (tied to a Games account). The player exists across matches, the Participant + /// only exists in the context of a particular match. + /// + public class Player : PlayGamesUserProfile + { + /// + /// Constructor for Player. + /// + /// The display name of the player. + /// The player ID of the player. + /// The URL of the player's avatar. + internal Player(string displayName, string playerId, string avatarUrl) + : base(displayName, playerId, avatarUrl) + { + } + } +} +#endif diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Player.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Player.cs.meta new file mode 100644 index 0000000..17c4de3 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/Player.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 4e1630bdd0c7b490e8f006f9a24ef758 +labels: +- gvh +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/PlayerProfile.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/PlayerProfile.cs new file mode 100644 index 0000000..8fc0274 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/PlayerProfile.cs @@ -0,0 +1,35 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID + +namespace GooglePlayGames.BasicApi { + /// + /// Represents a player, a real-world person (tied to a Games account). + /// + public class PlayerProfile : PlayGamesUserProfile { + /// + /// Constructor for PlayerProfile. + /// + /// The display name of the player. + /// The player ID of the player. + /// The URL of the player's avatar. + /// Whether the player is a friend of the current player. + internal PlayerProfile(string displayName, string playerId, string avatarUrl, bool isFriend) + : base(displayName, playerId, avatarUrl, isFriend) {} + } +} +#endif diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/PlayerProfile.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/PlayerProfile.cs.meta new file mode 100644 index 0000000..e247772 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/PlayerProfile.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 547c7cbe798c749c7b389133ebabc40c +labels: +- gvh +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/PlayerStats.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/PlayerStats.cs new file mode 100644 index 0000000..a7e8c5f --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/PlayerStats.cs @@ -0,0 +1,268 @@ +// +// Copyright (C) 2015 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID + +namespace GooglePlayGames.BasicApi +{ + using System; + + /// + /// Player stats. See https://developers.google.com/games/services/android/stats + /// + public class PlayerStats + { + private static float UNSET_VALUE = -1.0f; + + public PlayerStats( + int numberOfPurchases, + float avgSessionLength, + int daysSinceLastPlayed, + int numberOfSessions, + float sessPercentile, + float spendPercentile, + float spendProbability, + float churnProbability, + float highSpenderProbability, + float totalSpendNext28Days) + { + mValid = true; + mNumberOfPurchases = numberOfPurchases; + mAvgSessionLength = avgSessionLength; + mDaysSinceLastPlayed = daysSinceLastPlayed; + mNumberOfSessions = numberOfSessions; + mSessPercentile = sessPercentile; + mSpendPercentile = spendPercentile; + mSpendProbability = spendProbability; + mChurnProbability = churnProbability; + mHighSpenderProbability = highSpenderProbability; + mTotalSpendNext28Days = totalSpendNext28Days; + } + + public PlayerStats() + { + mValid = false; + } + + private bool mValid; + private int mNumberOfPurchases; + private float mAvgSessionLength; + private int mDaysSinceLastPlayed; + private int mNumberOfSessions; + private float mSessPercentile; + private float mSpendPercentile; + private float mSpendProbability; + private float mChurnProbability; + private float mHighSpenderProbability; + private float mTotalSpendNext28Days; + + /// + /// If this PlayerStats object is valid (i.e. successfully retrieved from games services). + /// + /// + /// Note that a PlayerStats with all stats unset may still be valid. + /// + public bool Valid + { + get { return mValid; } + } + + /// + /// The number of in-app purchases. + /// + public int NumberOfPurchases + { + get { return mNumberOfPurchases; } + } + + /// + /// The length of the avg session in minutes. + /// + public float AvgSessionLength + { + get { return mAvgSessionLength; } + } + + /// + /// The days since last played. + /// + public int DaysSinceLastPlayed + { + get { return mDaysSinceLastPlayed; } + } + + /// + /// The number of sessions based on sign-ins. + /// + public int NumberOfSessions + { + get { return mNumberOfSessions; } + } + + /// + /// The approximation of sessions percentile for the player. + /// + /// + /// This value is given as a decimal value between 0 and 1 (inclusive). + /// It indicates how many sessions the current player has + /// played in comparison to the rest of this game's player base. + /// Higher numbers indicate that this player has played more sessions. + /// A return value less than zero indicates this value is not available. + /// + public float SessPercentile + { + get { return mSessPercentile; } + } + + /// + /// The approximate spend percentile of the player. + /// + /// + /// This value is given as a decimal value between 0 and 1 (inclusive). + /// It indicates how much the current player has spent in + /// comparison to the rest of this game's player base. Higher + /// numbers indicate that this player has spent more. + /// A return value less than zero indicates this value is not available. + /// + public float SpendPercentile + { + get { return mSpendPercentile; } + } + + /// + /// The approximate probability of the player choosing to spend in this game. + /// + /// + /// This value is given as a decimal value between 0 and 1 (inclusive). + /// Higher values indicate that a player is more likely to spend. + /// A return value less than zero indicates this value is not available. + /// + public float SpendProbability + { + get { return mSpendProbability; } + } + + /// + /// The approximate probability of the player not returning to play the game. + /// + /// + /// Higher values indicate that a player is less likely to return. + /// A return value less than zero indicates this value is not available. + /// + public float ChurnProbability + { + get { return mChurnProbability; } + } + + /// + /// The high spender probability of this player. + /// + public float HighSpenderProbability + { + get { return mHighSpenderProbability; } + } + + /// + /// The predicted total spend of this player over the next 28 days. + /// + public float TotalSpendNext28Days + { + get { return mTotalSpendNext28Days; } + } + + /// + /// Determines whether this instance has NumberOfPurchases. + /// + /// true if this instance has NumberOfPurchases; otherwise, false. + public bool HasNumberOfPurchases() + { + return NumberOfPurchases != (int) UNSET_VALUE; + } + + /// + /// Determines whether this instance has AvgSessionLength. + /// + /// true if this instance has AvgSessionLength; otherwise, false. + public bool HasAvgSessionLength() + { + return AvgSessionLength != UNSET_VALUE; + } + + /// + /// Determines whether this instance has DaysSinceLastPlayed. + /// + /// true if this instance has DaysSinceLastPlayed; otherwise, false. + public bool HasDaysSinceLastPlayed() + { + return DaysSinceLastPlayed != (int) UNSET_VALUE; + } + + /// + /// Determines whether this instance has NumberOfSessions. + /// + /// true if this instance has NumberOfSessions; otherwise, false. + public bool HasNumberOfSessions() + { + return NumberOfSessions != (int) UNSET_VALUE; + } + + /// + /// Determines whether this instance has SessPercentile. + /// + /// true if this instance has SessPercentile; otherwise, false. + public bool HasSessPercentile() + { + return SessPercentile != UNSET_VALUE; + } + + /// + /// Determines whether this instance has SpendPercentile. + /// + /// true if this instance has SpendPercentile; otherwise, false. + public bool HasSpendPercentile() + { + return SpendPercentile != UNSET_VALUE; + } + + /// + /// Determines whether this instance has ChurnProbability. + /// + /// true if this instance has ChurnProbability; otherwise, false. + public bool HasChurnProbability() + { + return ChurnProbability != UNSET_VALUE; + } + + /// + /// Determines whether this instance has HighSpenderProbability. + /// + /// true if this instance has HighSpenderProbability; otherwise, false. + public bool HasHighSpenderProbability() + { + return HighSpenderProbability != UNSET_VALUE; + } + + /// + /// Determines whether this instance has TotalSpendNext28Days. + /// + /// true if this instance has TotalSpendNext28Days; otherwise, false. + public bool HasTotalSpendNext28Days() + { + return TotalSpendNext28Days != UNSET_VALUE; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/PlayerStats.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/PlayerStats.cs.meta new file mode 100644 index 0000000..5ed6e61 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/PlayerStats.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 0cf73f44d6d524deab1717d6e71e2c6d +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/RecallAccess.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/RecallAccess.cs new file mode 100644 index 0000000..44a10c3 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/RecallAccess.cs @@ -0,0 +1,57 @@ +// +// Copyright (C) 2023 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID + +namespace GooglePlayGames.BasicApi +{ + using System.Collections.Generic; + using UnityEngine.SocialPlatforms; + + /// + /// Recall Access data. This is the callback data + /// when requesting Recall Access. + /// + + public class RecallAccess + { + + /// + /// The session ID for the Recall Access. + /// + private string mSessionId; + + /// + /// Constructs a new RecallAccess object with the given session ID. + /// + /// The session ID for the Recall Access. + internal RecallAccess(string sessionId) + { + mSessionId = sessionId; + } + + /// + /// The session ID for the Recall Access. + /// + public string sessionId + { + get { return mSessionId; } + + internal set { mSessionId = value; } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/RecallAccess.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/RecallAccess.cs.meta new file mode 100644 index 0000000..c23bc98 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/RecallAccess.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 218f296754c404d38844833c7742e8c2 +labels: +- gvh +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame.meta new file mode 100644 index 0000000..599cdc6 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1bc47bd5631b849f88f2785c2d44019b +folderAsset: yes +timeCreated: 1435699548 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/ISavedGameClient.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/ISavedGameClient.cs new file mode 100644 index 0000000..aff1bda --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/ISavedGameClient.cs @@ -0,0 +1,379 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace GooglePlayGames.BasicApi.SavedGame +{ + using System; + using System.Collections.Generic; + + /// + /// An enum for the different strategies that can be used to resolve saved game conflicts (i.e. + /// conflicts produced by two or more separate writes to the same saved game at once). + /// + public enum ConflictResolutionStrategy + { + /// + /// Choose which saved game should be used on the basis of which one has the longest recorded + /// play time. In other words, in the case of a conflicting write, the saved game with the + /// longest play time will be considered cannonical. If play time has not been provided by the + /// developer, or in the case of two saved games with equal play times, + /// will be used instead. + /// + UseLongestPlaytime, + + /// + /// Choose the version of the saved game that existed before any conflicting write occurred. + /// Consider the following case: + /// - An initial version of a save game ("X") is written from a device ("Dev_A") + /// - The save game X is downloaded by another device ("Dev_B"). + /// - Dev_A writes a new version of the save game to the cloud ("Y") + /// - Dev_B does not see the new save game Y, and attempts to write a new save game ("Z"). + /// - Since Dev_B is performing a write using out of date information, a conflict is generated. + /// + /// In this situation, we can resolve the conflict by declaring either keeping Y as the + /// canonical version of the saved game (i.e. choose "original" aka ), + /// or by overwriting it with conflicting value, Z (i.e. choose "unmerged" aka + /// ). + /// + /// + UseOriginal, + + /// + /// See the documentation for + /// + UseUnmerged, + + /// + /// Manual resolution, no automatic resolution is attempted. + /// + UseManual, + + /// + /// The use last known good snapshot to resolve conflicts automatically. + /// + UseLastKnownGood, + + /// + /// The use most recently saved snapshot to resolve conflicts automatically. + /// + UseMostRecentlySaved + } + + /// + /// An enum for the different statuses that can be returned by the saved game client. + /// + public enum SavedGameRequestStatus + { + Success = 1, + + /// + /// The request failed due to a timeout. + /// + /// + TimeoutError = -1, + + /// + /// An unexpected internal error. Check the log for error messages. + /// + /// + InternalError = -2, + + /// + /// A error related to authentication. This is probably due to the user being signed out + /// before the request could be issued. + /// + /// + AuthenticationError = -3, + + /// + /// The request failed because it was given bad input (e.g. a filename with 200 characters). + /// + /// + BadInputError = -4 + } + + /// + /// An enum for the different UI statuses that can be returned by the saved game client. + /// + public enum SelectUIStatus + { + /// + /// The user selected a saved game. + /// + SavedGameSelected = 1, + + /// + /// The user closed the UI without selecting a saved game. + /// + /// + UserClosedUI = 2, + + /// + /// An unexpected internal error. Check the log for error messages. + /// + /// + InternalError = -1, + + /// + /// There was a timeout while displaying the UI. + /// + /// + TimeoutError = -2, + + /// + /// An error related to authentication. This error could be due to the user being signed out + /// before the request could be issued. + /// + /// + AuthenticationError = -3, + + /// + /// The request failed due to invalid input. For example, the filename exceeded the 200 character limit.. + /// + /// + BadInputError = -4, + + UiBusy = -5 + } + + /// + /// + /// A delegate that is invoked when we encounter a conflict during execution of + /// . The caller must resolve the + /// conflict using the passed . All passed metadata is open. + /// If was invoked with + /// prefetchDataOnConflict set to true, the and + /// will be equal to the binary data of the "original" and + /// "unmerged" saved game respectively (and null otherwise). Since conflict files may be generated + /// by other clients, it is possible that neither of the passed saved games were originally written + /// by the current device. Consequently, any conflict resolution strategy should not rely on local + /// data that is not part of the binary data of the passed saved games - this data will not be + /// present if conflict resolution occurs on a different device. In addition, since a given saved + /// game may have multiple conflicts, this callback must be designed to handle multiple invocations. + /// + public delegate void ConflictCallback(IConflictResolver resolver, ISavedGameMetadata original, + byte[] originalData, ISavedGameMetadata unmerged, byte[] unmergedData); + + /// + /// The main entry point for interacting with saved games. Saved games are persisted in the cloud + /// along with several game-specific properties ( for more + /// information). There are several core concepts involved with saved games: + /// + /// Filenames - act as unique identifiers for saved games. Two devices + /// performing a read or write using the same filename will end up reading or modifying the same + /// file (i.e. filenames are not device specific). + /// + /// + /// Saved Game Metadata are represented by . + /// The instances allow access to metadata properties about the underlying saved game (e.g. + /// description). In addition, metadata functions as a handle that are required to read and + /// manipulate saved game contents. Lastly, metadata may be "Open". Open metadata instances are + /// required to manipulate the underlying binary data of the saved game. See method comments to + /// determine whether a specific method requires or returns an open saved game. + /// + /// + /// Conflicts occur when multiple devices attempt to write to the same file + /// at the same time. The saved game system guarantees that no conflicting writes will be lost or + /// silently overwritten. Instead, they must be handled the next time the file with a conflict is + /// Opened. Conflicts can be handled automatically ( + /// ) or can be manuallyhandled by the developer + /// (). See the Open methods for more discussion. + /// + /// + /// Saved games will generally be used in the following workflow: + /// + /// Determine which saved game to use (either using a hardcoded filename or + /// ShowSelectSavedGameUI) + /// Open the file using OpenWithManualConflictResolution or + /// OpenWithAutomaticConflictResolution + /// Read the binary data of the saved game using ReadBinaryData handle it + /// as appropriate for your game. + /// When you have updates, persist them in the cloud using CommitUpdate. Note + /// that writing to the cloud is relatively expensive, and shouldn't be done frequently. + /// + /// + /// + /// See online + /// documentation for Saved Games for more information. + /// + public interface ISavedGameClient + { + /// + /// Opens the file with the indicated name and data source. If the file has an outstanding + /// conflict, it will be resolved using the specified conflict resolution strategy. The + /// metadata returned by this method will be "Open" - it can be used as a parameter for + /// and . + /// + /// The name of the file to open. Filenames must consist of + /// only non-URL reserved characters (i.e. a-z, A-Z, 0-9, or the symbols "-", ".", "_", or "~") + /// be between 1 and 100 characters in length (inclusive). + /// The data source to use. for a description + /// of the available options here. + /// The conflict resolution that should be used if any + /// conflicts are encountered while opening the file. + /// for a description of these strategies. + /// The callback that is invoked when this operation finishes. The + /// returned metadata will only be non-null if the open succeeded. This callback will always + /// execute on the game thread and the returned metadata (if any) will be "Open". + void OpenWithAutomaticConflictResolution(string filename, DataSource source, + ConflictResolutionStrategy resolutionStrategy, + Action callback); + + /// + /// Opens the file with the indicated name and data source. If there is a conflict that + /// requires resolution, it will be resolved manually using the passed conflict callback. Once + /// all pending conflicts are resolved, the completed callback will be invoked with the + /// retrieved data. In the event of an error, the completed callback will be invoked with the + /// corresponding error status. All callbacks will be executed on the game thread. + /// + /// The name of the file to open. Filenames must consist of + /// only non-URL reserved characters (i.e. a-z, A-Z, 0-9, or the symbols "-", ".", "_", or "~") + /// be between 1 and 100 characters in length (inclusive). + /// The data source to use. for a description + /// of the available options here. + /// If set to true, the data for the two + /// conflicting files will be automatically retrieved and passed as parameters in + /// . If set to false, null binary data + /// will be passed into and the caller will have to fetch + /// it themselves. + /// The callback that will be invoked if one or more conflict is + /// encountered while executing this method. Note that more than one conflict may be present + /// and that this callback might be executed more than once to resolve multiple conflicts. + /// This callback is always executed on the game thread. + /// The callback that is invoked when this operation finishes. + /// The returned metadata will only be non-null if the open succeeded. If an error is + /// encountered during conflict resolution, that error will be reflected here. This callback + /// will always execute on the game thread and the returned metadata (if any) will be "Open". + /// + void OpenWithManualConflictResolution(string filename, DataSource source, + bool prefetchDataOnConflict, ConflictCallback conflictCallback, + Action completedCallback); + + /// + /// Reads the binary data of the passed saved game. The passed metadata must be opened (i.e. + /// returns true). The callback will always be executed + /// on the game thread. + /// + /// The metadata for the saved game whose binary data we want to read. + /// This metadata must be open. If it is not open, the method will immediately fail with status + /// . + /// + /// The callback that is invoked when the read finishes. If the + /// read completed without error, the passed status will be and the passed + /// bytes will correspond to the binary data for the file. In the case of + /// + void ReadBinaryData(ISavedGameMetadata metadata, + Action completedCallback); + + /// + /// Shows the select saved game UI with the indicated configuration. If the user selects a + /// saved game in that UI, it will be returned in the passed callback. This metadata will be + /// unopened and must be passed to either or + /// in order to retrieve the binary data. + /// The callback will always be executed on the game thread. + /// + /// The user-visible title of the displayed selection UI. + /// The maximum number of saved games the UI may display. + /// This value must be greater than 0. + /// If set to true, show UI that will allow the user to + /// create a new saved game. + /// If set to true show UI that will allow the user to + /// delete a saved game. + /// The callback that is invoked when an error occurs or if the user + /// finishes interacting with the UI. If the user selected a saved game, this will be passed + /// into the callback along with the status. This saved game + /// will not be Open, and must be opened before it can be written to or its binary data can be + /// read. If the user backs out of the UI without selecting a saved game, this callback will + /// receive and a null saved game. This callback will always execute + /// on the game thread. + void ShowSelectSavedGameUI(string uiTitle, uint maxDisplayedSavedGames, bool showCreateSaveUI, + bool showDeleteSaveUI, Action callback); + + /// + /// Durably commits an update to the passed saved game. When this method returns successfully, + /// the data is durably persisted to disk and will eventually be uploaded to the cloud (in + /// practice, this will happen very quickly unless the device does not have a network + /// connection). If an update to the saved game has occurred after the metadata was retrieved + /// from the cloud, this update will produce a conflict (this commonly occurs if two different + /// devices are writing to the cloud at the same time). All conflicts must be handled the next + /// time this saved game is opened. See and + /// for more information. + /// + /// The metadata for the saved game to update. This metadata must be + /// Open (i.e. returns true)."/> If it is not open, the + /// method will immediately fail with status + /// All updates that should be applied to the saved game + /// metadata. + /// The new binary content of the saved game + /// The callback that is invoked when this operation finishes. + /// The returned metadata will only be non-null if the commit succeeded. If an error is + /// encountered during conflict resolution, that error will be reflected here. This callback + /// will always execute on the game thread and the returned metadata (if any) will NOT be + /// "Open" (i.e. commiting an update closes the metadata). + void CommitUpdate(ISavedGameMetadata metadata, SavedGameMetadataUpdate updateForMetadata, + byte[] updatedBinaryData, Action callback); + + /// + /// Returns the metadata for all known saved games for this game. All returned saved games are + /// not open, and must be opened before they can be used for writes or binary data reads. The + /// callback will always occur on the game thread. + /// + /// The data source to use. for a description + /// of the available options here. + /// The callback that is invoked when this operation finishes. + /// The returned metadata will only be non-empty if the commit succeeded. If an error is + /// encountered during the fetch, that error will be reflected here. This callback + /// will always execute on the game thread and the returned metadata (if any) will NOT be + /// "Open". + void FetchAllSavedGames(DataSource source, + Action> callback); + + /// + /// Delete the specified snapshot. + /// This will delete the data of the snapshot locally and on the server. + /// + /// the saved game metadata identifying the data to + /// delete. + void Delete(ISavedGameMetadata metadata); + } + + /// + /// An interface that allows developers to resolve metadata conflicts that may be encountered while + /// opening saved games. + /// + public interface IConflictResolver + { + /// + /// Resolves the conflict by choosing the passed metadata to be canonical. The passed metadata + /// must be one of the two instances passed as parameters into - + /// this instance will be kept as the cannonical value in the cloud. + /// + /// The chosen metadata. This metadata must be open. If it is not + /// open, the invocation of that produced this + /// ConflictResolver will immediately fail with . + void ChooseMetadata(ISavedGameMetadata chosenMetadata); + + /// + /// Resolves the conflict and updates the data. + /// + /// Metadata for the chosen version. This is either the + /// original or unmerged metadata provided when the callback is invoked. + /// Metadata update, same as when committing changes. + /// Updated data to use when resolving the conflict. + void ResolveConflict(ISavedGameMetadata chosenMetadata, SavedGameMetadataUpdate metadataUpdate, + byte[] updatedData); + } +} \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/ISavedGameClient.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/ISavedGameClient.cs.meta new file mode 100644 index 0000000..6303390 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/ISavedGameClient.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 5d4ff89980bdd4c9780aa3ceee54a51b +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/ISavedGameMetadata.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/ISavedGameMetadata.cs new file mode 100644 index 0000000..7b80eac --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/ISavedGameMetadata.cs @@ -0,0 +1,77 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace GooglePlayGames.BasicApi.SavedGame +{ + using System; + + /// + /// Interface representing the metadata for a saved game. These instances are also used as handles + /// for reading and writing the content of the underlying file. + /// + public interface ISavedGameMetadata + { + /// + /// Returns true if this metadata can be used for operations related to raw file data (i.e. + /// the binary data contained in the underlying file). Metadata returned by Open operations + /// will be "Open". After an update to the file is committed or the metadata is used to resolve + /// a conflict, the corresponding Metadata is closed, and IsOpen will return false. + /// + /// + /// true if this instance is open; otherwise, false. + bool IsOpen { get; } + + /// + /// Returns the filename for this saved game. A saved game filename will only consist of + /// non-URL reserved characters (i.e. a-z, A-Z, 0-9, or the symbols "-", ".", "_", or "~") + /// and will between 1 and 100 characters in length (inclusive). + /// + /// The filename. + string Filename { get; } + + /// + /// Returns a human-readable description of what the saved game contains. This may be null. + /// + /// The description. + string Description { get; } + + /// + /// A URL corresponding to the PNG-encoded image corresponding to this saved game. null if + /// the saved game does not have a cover image. + /// + /// The cover image URL. + string CoverImageURL { get; } + + /// + /// Returns the total time played by the player for this saved game. This value is + /// developer-specified and may be tracked in any way that is appropriate to the game. Note + /// that this value is specific to this specific saved game (unless the developer intentionally + /// sets the same value on all saved games). If the value was not set, this will be equal to + /// TimeSpan.FromMilliseconds(0) + /// + /// The total time played. + TimeSpan TotalTimePlayed { get; } + + /// + /// A timestamp corresponding to the last modification to the underlying saved game. If the + /// saved game is newly created, this value will correspond to the time the first Open + /// occurred. Otherwise, this corresponds to time the last successful write occurred (either by + /// CommitUpdate or Resolve methods). + /// + /// The last modified timestamp. + DateTime LastModifiedTimestamp { get; } + } +} \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/ISavedGameMetadata.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/ISavedGameMetadata.cs.meta new file mode 100644 index 0000000..b65aa21 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/ISavedGameMetadata.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: a94650f478358403ea166d374b2a950c +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/SavedGameMetadataUpdate.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/SavedGameMetadataUpdate.cs new file mode 100644 index 0000000..967ce54 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/SavedGameMetadataUpdate.cs @@ -0,0 +1,160 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace GooglePlayGames.BasicApi.SavedGame +{ + using System; + using GooglePlayGames.OurUtils; + + /// + /// A struct representing the mutation of saved game metadata. Fields can either have a new value + /// or be untouched (in which case the corresponding field in the saved game metadata will be + /// untouched). Instances must be built using + /// and once created, these instances are immutable and threadsafe. + /// + public struct SavedGameMetadataUpdate + { + private readonly bool mDescriptionUpdated; + private readonly string mNewDescription; + private readonly bool mCoverImageUpdated; + private readonly byte[] mNewPngCoverImage; + private readonly TimeSpan? mNewPlayedTime; + + /// + /// Initializes a new instance of the struct using the specified builder. + /// + /// The builder used to initialize the saved game metadata update. + private SavedGameMetadataUpdate(Builder builder) + { + mDescriptionUpdated = builder.mDescriptionUpdated; + mNewDescription = builder.mNewDescription; + mCoverImageUpdated = builder.mCoverImageUpdated; + mNewPngCoverImage = builder.mNewPngCoverImage; + mNewPlayedTime = builder.mNewPlayedTime; + } + + /// + /// Gets whether the description has been updated in the metadata. + /// + public bool IsDescriptionUpdated + { + get { return mDescriptionUpdated; } + } + + /// + /// Gets the updated description for the saved game, if it has been changed. + /// + public string UpdatedDescription + { + get { return mNewDescription; } + } + + /// + /// Gets whether the cover image has been updated in the metadata. + /// + public bool IsCoverImageUpdated + { + get { return mCoverImageUpdated; } + } + + /// + /// Gets the updated PNG cover image, if it has been changed. + /// + public byte[] UpdatedPngCoverImage + { + get { return mNewPngCoverImage; } + } + + /// + /// Gets whether the played time has been updated in the metadata. + /// + public bool IsPlayedTimeUpdated + { + get { return mNewPlayedTime.HasValue; } + } + + /// + /// Gets the updated played time, if it has been changed. + /// + public TimeSpan? UpdatedPlayedTime + { + get { return mNewPlayedTime; } + } + + /// + /// A builder for constructing instances of . + /// + public struct Builder + { + internal bool mDescriptionUpdated; + internal string mNewDescription; + internal bool mCoverImageUpdated; + internal byte[] mNewPngCoverImage; + internal TimeSpan? mNewPlayedTime; + + /// + /// Sets the description to be updated in the saved game metadata. + /// + /// The new description to set. + /// The builder with the updated description. + public Builder WithUpdatedDescription(string description) + { + mNewDescription = Misc.CheckNotNull(description); + mDescriptionUpdated = true; + return this; + } + + /// + /// Sets the PNG cover image to be updated in the saved game metadata. + /// + /// The new PNG image data for the cover image. + /// The builder with the updated cover image. + public Builder WithUpdatedPngCoverImage(byte[] newPngCoverImage) + { + mCoverImageUpdated = true; + mNewPngCoverImage = newPngCoverImage; + return this; + } + + /// + /// Sets the played time to be updated in the saved game metadata. + /// + /// The new played time to set. + /// The builder with the updated played time. + /// Thrown if the played time exceeds the maximum allowed value. + public Builder WithUpdatedPlayedTime(TimeSpan newPlayedTime) + { + if (newPlayedTime.TotalMilliseconds > ulong.MaxValue) + { + throw new InvalidOperationException("Timespans longer than ulong.MaxValue " + + "milliseconds are not allowed"); + } + + mNewPlayedTime = newPlayedTime; + return this; + } + + /// + /// Builds a new instance with the configured updates. + /// + /// A new instance of . + public SavedGameMetadataUpdate Build() + { + return new SavedGameMetadataUpdate(this); + } + } + } +} \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/SavedGameMetadataUpdate.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/SavedGameMetadataUpdate.cs.meta new file mode 100644 index 0000000..cb2edf9 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SavedGame/SavedGameMetadataUpdate.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 602d9e1c90f0144e79536115f3614478 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/ScorePageToken.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/ScorePageToken.cs new file mode 100644 index 0000000..e0f9c1d --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/ScorePageToken.cs @@ -0,0 +1,112 @@ +// +// Copyright (C) 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID + +namespace GooglePlayGames.BasicApi +{ + /// + /// Enum representing the direction of score page navigation. + /// + public enum ScorePageDirection + { + /// + /// Represents the forward direction (next page). + /// + Forward = 1, + + /// + /// Represents the backward direction (previous page). + /// + Backward = 2, + } + + /// + /// Score page token. This holds the internal token used + /// to page through the score pages. The id, collection, and + /// timespan are added as a convenience, and not actually part of the + /// page token returned from the SDK. + /// + public class ScorePageToken + { + private string mId; + private object mInternalObject; + private LeaderboardCollection mCollection; + private LeaderboardTimeSpan mTimespan; + private ScorePageDirection mDirection; + + /// + /// Initializes a new instance of the class. + /// + /// The internal object representing the page token. + /// The leaderboard ID. + /// The leaderboard collection type. For example, public or social. + /// The timespan of the leaderboard. For example, daily or all-time. + /// The direction of the score page navigation, such as forward or backward. + internal ScorePageToken(object internalObject, string id, + LeaderboardCollection collection, LeaderboardTimeSpan timespan, + ScorePageDirection direction) + { + mInternalObject = internalObject; + mId = id; + mCollection = collection; + mTimespan = timespan; + mDirection = direction; + } + + /// + /// Gets the collection type of the leaderboard. For example, public or social. + /// + public LeaderboardCollection Collection + { + get { return mCollection; } + } + + /// + /// Gets the timespan of the leaderboard. For example, daily or all-time. + /// + public LeaderboardTimeSpan TimeSpan + { + get { return mTimespan; } + } + + /// + /// Gets the direction of the score page navigation. For example, forward or backward. + /// + public ScorePageDirection Direction + { + get { return mDirection; } + } + + /// + /// Gets the leaderboard ID associated with this token. + /// + public string LeaderboardId + { + get { return mId; } + } + + /// + /// Gets the internal object representing the page token. + /// This is an internal implementation detail and should not be accessed directly. + /// + internal object InternalObject + { + get { return mInternalObject; } + } + } +} +#endif diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/ScorePageToken.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/ScorePageToken.cs.meta new file mode 100644 index 0000000..2b9f8c5 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/ScorePageToken.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 3eade9d49f3e341ddb2ba8209e7ddf42 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SignInInteractivity.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SignInInteractivity.cs new file mode 100644 index 0000000..657c172 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SignInInteractivity.cs @@ -0,0 +1,29 @@ +namespace GooglePlayGames.BasicApi +{ + /// + /// Enum to specify the interactivity of the sign in flow. + /// + public enum SignInInteractivity + { + /// no UIs will be shown (if UIs are needed, it will fail rather than show them). + NoPrompt, + + /// + /// This may show UIs, consent dialogs, etc. + /// At the end of the process, callback will be invoked to notify of the result. + /// Once the callback returns true, the user is considered to be authenticated. + /// + CanPromptAlways, + + /// When this is selected, PlayGamesPlatform.Authenticate does the following in order: + /// 1. Attempt to silent sign in. + /// 2. If silent sign in fails, check if user has previously declined to sign in and don’t prompt interactive + /// sign in if they have. + /// 3. Check the internet connection and fail with NO_INTERNET_CONNECTION if there is no internet connection. + /// 4. Prompt interactive sign in. + /// 5. If the interactive sign in is not successful (user declines or cancels), then + /// remember this for step 2 the next time the user opens the game and don’t ask for sign-in. + /// + CanPromptOnce + } +} diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SignInInteractivity.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SignInInteractivity.cs.meta new file mode 100644 index 0000000..afaf0ce --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SignInInteractivity.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: f5c7733064f2b09dc8df0009b3bbb1d6 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SignInStatus.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SignInStatus.cs new file mode 100644 index 0000000..84a51e6 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SignInStatus.cs @@ -0,0 +1,17 @@ +namespace GooglePlayGames.BasicApi +{ + /// + /// Enum to specify the sign in status. + /// + public enum SignInStatus + { + /// The operation was successful. + Success, + + /// An internal error occurred. + InternalError, + + /// The sign in was canceled. + Canceled, + } +} diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SignInStatus.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SignInStatus.cs.meta new file mode 100644 index 0000000..5b8c624 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/BasicApi/SignInStatus.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 0992bc2597d741e59dc3f8c963a3ca25 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/GameInfo.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/GameInfo.cs new file mode 100644 index 0000000..176350c --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/GameInfo.cs @@ -0,0 +1,71 @@ +// +// Copyright (C) 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#if UNITY_ANDROID + +namespace GooglePlayGames { + /// + /// This file is automatically generated DO NOT EDIT! + /// + /// These are the constants defined in the Play Games Console for Game Services + /// Resources. + /// + /// + /// File containing information about the game. This is automatically updated by running the + /// platform-appropriate setup commands in the Unity editor (which does a simple search / replace + /// on the IDs in the form "__ID__"). We can check whether any particular field has been updated + /// by checking whether it still retains its initial value - we prevent the constants from being + /// replaced in the aforementioned search/replace by stripping off the leading and trailing "__". + /// + public static class GameInfo { + + private const string UnescapedApplicationId = "APP_ID"; + private const string UnescapedIosClientId = "IOS_CLIENTID"; + private const string UnescapedWebClientId = "WEB_CLIENTID"; + private const string UnescapedNearbyServiceId = "NEARBY_SERVICE_ID"; + + public const string ApplicationId = "794819463840"; // Filled in automatically + public const string IosClientId = "__IOS_CLIENTID__"; // Filled in automatically + public const string WebClientId = "794819463840-29f4mdui49adq6gq43dtmqiknljv1jrb.apps.googleusercontent.com"; // Filled in automatically + public const string NearbyConnectionServiceId = ""; + + public static bool ApplicationIdInitialized() { + return !string.IsNullOrEmpty(ApplicationId) && !ApplicationId.Equals(ToEscapedToken(UnescapedApplicationId)); + } + + public static bool IosClientIdInitialized() { + return !string.IsNullOrEmpty(IosClientId) && !IosClientId.Equals(ToEscapedToken(UnescapedIosClientId)); + } + + public static bool WebClientIdInitialized() { + return !string.IsNullOrEmpty(WebClientId) && !WebClientId.Equals(ToEscapedToken(UnescapedWebClientId)); + } + + public static bool NearbyConnectionsInitialized() { + return !string.IsNullOrEmpty(NearbyConnectionServiceId) && + !NearbyConnectionServiceId.Equals(ToEscapedToken(UnescapedNearbyServiceId)); + } + + /// + /// Returns an escaped token (i.e. one flanked with "__") for the passed token + /// + /// The escaped token. + /// The Token + private static string ToEscapedToken(string token) { + return string.Format("__{0}__", token); + } + } +} +#endif diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/GameInfo.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/GameInfo.cs.meta new file mode 100644 index 0000000..aa49e49 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/GameInfo.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: a722d413080904cc1bd07f4db21e1af1 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform.meta new file mode 100644 index 0000000..b7673b5 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: ef66268ee929544fb82bbef6ac13bafe +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesAchievement.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesAchievement.cs new file mode 100644 index 0000000..f9a65eb --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesAchievement.cs @@ -0,0 +1,371 @@ +// +// Copyright (C) 2014 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID + +namespace GooglePlayGames +{ + using System; + using GooglePlayGames.BasicApi; + using UnityEngine; +#if UNITY_2017_1_OR_NEWER + using UnityEngine.Networking; +#endif + using UnityEngine.SocialPlatforms; + + /// + /// Delegate for reporting achievement progress. + /// + /// The achievement ID. + /// The progress of the achievement (a value between 0.0 and 100.0). + /// A callback to be invoked with a boolean indicating success. + internal delegate void ReportProgress(string id, double progress, Action callback); + + /// + /// Represents a Google Play Games achievement. It can be used to report an achievement + /// to the API, offering identical functionality as . + /// Implements both the and interfaces. + /// + internal class PlayGamesAchievement : IAchievement, IAchievementDescription + { + /// + /// The callback for reporting progress. + /// + private readonly ReportProgress mProgressCallback; + + /// + /// The achievement's ID. + /// + private string mId = string.Empty; + + /// + /// A flag indicating if the achievement is incremental. + /// + private bool mIsIncremental = false; + + /// + /// The current steps completed for an incremental achievement. + /// + private int mCurrentSteps = 0; + + /// + /// The total steps required for an incremental achievement. + /// + private int mTotalSteps = 0; + + /// + /// The percentage of completion. + /// + private double mPercentComplete = 0.0; + + /// + /// A flag indicating if the achievement is completed (unlocked). + /// + private bool mCompleted = false; + + /// + /// A flag indicating if the achievement is hidden. + /// + private bool mHidden = false; + + /// + /// The last time the achievement was modified. + /// + private DateTime mLastModifiedTime = new DateTime(1970, 1, 1, 0, 0, 0, 0); + + /// + /// The title of the achievement. + /// + private string mTitle = string.Empty; + + /// + /// The URL for the revealed (locked) achievement image. + /// + private string mRevealedImageUrl = string.Empty; + + /// + /// The URL for the unlocked achievement image. + /// + private string mUnlockedImageUrl = string.Empty; +#if UNITY_2017_1_OR_NEWER + /// + /// The web request used to fetch the achievement image. + /// + private UnityWebRequest mImageFetcher = null; +#else + /// + /// The web request used to fetch the achievement image. + /// + private WWW mImageFetcher = null; +#endif + /// + /// The downloaded achievement image as a Texture2D. + /// + private Texture2D mImage = null; + + /// + /// The description of the achievement. + /// + private string mDescription = string.Empty; + + /// + /// The points awarded for unlocking the achievement. + /// + private ulong mPoints = 0; + + /// + /// Initializes a new instance of the class. + /// Uses the default progress reporting mechanism from . + /// + internal PlayGamesAchievement() + : this(PlayGamesPlatform.Instance.ReportProgress) + { + } + + /// + /// Initializes a new instance of the class with a custom progress callback. + /// + /// The callback to use for reporting progress. + internal PlayGamesAchievement(ReportProgress progressCallback) + { + mProgressCallback = progressCallback; + } + + /// + /// Initializes a new instance of the class from a object. + /// + /// The achievement data from the Basic API. + internal PlayGamesAchievement(Achievement ach) : this() + { + this.mId = ach.Id; + this.mIsIncremental = ach.IsIncremental; + this.mCurrentSteps = ach.CurrentSteps; + this.mTotalSteps = ach.TotalSteps; + if (ach.IsIncremental) + { + if (ach.TotalSteps > 0) + { + this.mPercentComplete = + ((double) ach.CurrentSteps / (double) ach.TotalSteps) * 100.0; + } + else + { + this.mPercentComplete = 0.0; + } + } + else + { + this.mPercentComplete = ach.IsUnlocked ? 100.0 : 0.0; + } + + this.mCompleted = ach.IsUnlocked; + this.mHidden = !ach.IsRevealed; + this.mLastModifiedTime = ach.LastModifiedTime; + this.mTitle = ach.Name; + this.mDescription = ach.Description; + this.mPoints = ach.Points; + this.mRevealedImageUrl = ach.RevealedImageUrl; + this.mUnlockedImageUrl = ach.UnlockedImageUrl; + } + + /// + /// Reveals, unlocks or increments the achievement. + /// + /// + /// This method is equivalent to calling . + /// The and properties should be set before calling this method. + /// + /// An action to be invoked with a value indicating whether the operation was successful. + public void ReportProgress(Action callback) + { + mProgressCallback.Invoke(mId, mPercentComplete, callback); + } + + /// + /// Asynchronously loads the achievement's image from its URL. + /// + /// The image once loaded; otherwise, null. + private Texture2D LoadImage() + { + if (hidden) + { + // Return null, as hidden achievements do not have images. + return null; + } + + string url = completed ? mUnlockedImageUrl : mRevealedImageUrl; + + // The URL can be null if no image is configured. + if (!string.IsNullOrEmpty(url)) + { + if (mImageFetcher == null || mImageFetcher.url != url) + { +#if UNITY_2017_1_OR_NEWER + mImageFetcher = UnityWebRequestTexture.GetTexture(url); +#else + mImageFetcher = new WWW(url); +#endif + mImage = null; + } + + // If we already have the texture, return it to avoid repeated downloads. + if (mImage != null) + { + return mImage; + } + + if (mImageFetcher.isDone) + { +#if UNITY_2017_1_OR_NEWER + mImage = DownloadHandlerTexture.GetContent(mImageFetcher); +#else + mImage = mImageFetcher.texture; +#endif + return mImage; + } + } + + // If there is no URL or the download is not complete, return null. + return null; + } + + + /// + /// Gets or sets the ID of this achievement. + /// + /// The achievement ID. + public string id + { + get { return mId; } + set { mId = value; } + } + + /// + /// Gets a value indicating whether this achievement is incremental. + /// + /// This value is set by . + /// true if incremental; otherwise, false. + public bool isIncremental + { + get { return mIsIncremental; } + } + + /// + /// Gets the current number of steps completed for this achievement. + /// + /// This value is only defined for incremental achievements and is set by . + /// The current steps. + public int currentSteps + { + get { return mCurrentSteps; } + } + + /// + /// Gets the total number of steps for this achievement. + /// + /// This value is only defined for incremental achievements and is set by . + /// The total steps. + public int totalSteps + { + get { return mTotalSteps; } + } + + /// + /// Gets or sets the completion percentage of this achievement. + /// + /// The percent completed (from 0.0 to 100.0). + public double percentCompleted + { + get { return mPercentComplete; } + set { mPercentComplete = value; } + } + + /// + /// Gets a value indicating whether this achievement is completed (unlocked). + /// + /// This value is set by . + /// true if completed; otherwise, false. + public bool completed + { + get { return this.mCompleted; } + } + + /// + /// Gets a value indicating whether this achievement is hidden. + /// + /// This value is set by . + /// true if hidden; otherwise, false. + public bool hidden + { + get { return this.mHidden; } + } + + /// + /// Gets the date and time this achievement was last reported. + /// + /// The last reported date. + public DateTime lastReportedDate + { + get { return mLastModifiedTime; } + } + + /// + /// Gets the title of the achievement. + /// + /// The title. + public String title + { + get { return mTitle; } + } + + /// + /// Gets the image for the achievement, loading it asynchronously if necessary. + /// + /// The achievement image as a . + public Texture2D image + { + get { return LoadImage(); } + } + + /// + /// Gets the description for the achieved state. + /// + /// The achieved description. + public string achievedDescription + { + get { return mDescription; } + } + + /// + /// Gets the description for the unachieved state. + /// + /// The unachieved description. + public string unachievedDescription + { + get { return mDescription; } + } + + /// + /// Gets the point value of the achievement. + /// + /// The points. + public int points + { + get { return (int) mPoints; } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesAchievement.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesAchievement.cs.meta new file mode 100644 index 0000000..fecc388 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesAchievement.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: e5354c32a5dc64372ba5102f7f787adf +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesLeaderboard.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesLeaderboard.cs new file mode 100644 index 0000000..d7306c3 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesLeaderboard.cs @@ -0,0 +1,303 @@ +// +// Copyright (C) 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID + +namespace GooglePlayGames +{ + using System.Collections.Generic; + using GooglePlayGames.BasicApi; + using UnityEngine; + using UnityEngine.SocialPlatforms; + + /// + /// Represents a Google Play Games leaderboard. The class provides a way to configure and store + /// data for a specific leaderboard. + /// Implements Unity's generic ILeaderboard interface. + /// + public class PlayGamesLeaderboard : ILeaderboard + { + /// + /// The ID of the leaderboard. + /// + private string mId; + + /// + /// The user scope for the leaderboard scores. For example, determines if scores are fetched + /// from all players (Global) or just the user's friends (FriendsOnly). + /// + private UserScope mUserScope; + + /// + /// Specifies the start rank and the number of scores to retrieve. + /// + private Range mRange; + + /// + /// Filters scores by time period. For example, AllTime, Weekly, Daily. + /// + private TimeScope mTimeScope; + + /// + /// An array of user IDs to filter the scores. + /// + private string[] mFilteredUserIds; + + /// + /// A boolean flag that is true while the scores are being loaded; otherwise, false. + /// + private bool mLoading; + + /// + /// The score of the local user. + /// + private IScore mLocalUserScore; + + /// + /// The approximate total number of scores in the leaderboard. + /// + private uint mMaxRange; + + /// + /// The list of loaded scores. + /// + private List mScoreList = new List(); + + /// + /// The title of the leaderboard. + /// + private string mTitle; + + /// + /// Initializes a new instance of the class. + /// + /// The leaderboard ID. + public PlayGamesLeaderboard(string id) + { + mId = id; + } + + #region ILeaderboard implementation + + /// + /// Sets a filter to load scores only for a specific set of users. + /// + /// The array of user IDs to filter by. + public void SetUserFilter(string[] userIDs) + { + mFilteredUserIds = userIDs; + } + + /// + /// Initiates the loading of scores from the Google Play Games platform. + /// + /// A callback that will be invoked with a boolean indicating the success of the operation. + public void LoadScores(System.Action callback) + { + PlayGamesPlatform.Instance.LoadScores(this, callback); + } + + /// + /// Gets a value indicating whether the leaderboard scores are currently loading. + /// + /// true if loading; otherwise, false. + public bool loading + { + get { return mLoading; } + internal set { mLoading = value; } + } + + /// + /// Gets or sets the leaderboard ID. + /// + /// The leaderboard ID. + public string id + { + get { return mId; } + set { mId = value; } + } + + /// + /// Gets or sets the user scope for the scores to be loaded. + /// + /// The user scope. + public UserScope userScope + { + get { return mUserScope; } + set { mUserScope = value; } + } + + /// + /// Gets or sets the rank range for the scores to be loaded. + /// + /// The rank range. + public Range range + { + get { return mRange; } + set { mRange = value; } + } + + /// + /// Gets or sets the time scope for the scores to be loaded. + /// + /// The time scope. + public TimeScope timeScope + { + get { return mTimeScope; } + set { mTimeScope = value; } + } + + /// + /// Gets the local user's score on this leaderboard. + /// + /// The local user's score. + public IScore localUserScore + { + get { return mLocalUserScore; } + } + + /// + /// Gets the approximate number of total scores in the leaderboard. + /// + /// The maximum range of scores. + public uint maxRange + { + get { return mMaxRange; } + } + + /// + /// Gets the array of loaded scores. + /// + /// The scores. + public IScore[] scores + { + get + { + PlayGamesScore[] arr = new PlayGamesScore[mScoreList.Count]; + mScoreList.CopyTo(arr); + return arr; + } + } + + /// + /// Gets the title of the leaderboard. + /// + /// The title. + public string title + { + get { return mTitle; } + } + + #endregion + + /// + /// Populates the leaderboard's properties from a object. + /// + /// The data object containing leaderboard information. + /// true if the data was valid and applied; otherwise, false. + internal bool SetFromData(LeaderboardScoreData data) + { + if (data.Valid) + { + OurUtils.Logger.d("Setting leaderboard from: " + data); + SetMaxRange(data.ApproximateCount); + SetTitle(data.Title); + SetLocalUserScore((PlayGamesScore) data.PlayerScore); + foreach (IScore score in data.Scores) + { + AddScore((PlayGamesScore) score); + } + + mLoading = data.Scores.Length == 0 || HasAllScores(); + } + + return data.Valid; + } + + /// + /// Sets the maximum range (approximate total number of scores). + /// + /// The value for the maximum range. + internal void SetMaxRange(ulong val) + { + mMaxRange = (uint) val; + } + + /// + /// Sets the title of the leaderboard. + /// + /// The title string. + internal void SetTitle(string value) + { + mTitle = value; + } + + /// + /// Sets the local user's score. + /// + /// The local user's score. + internal void SetLocalUserScore(PlayGamesScore score) + { + mLocalUserScore = score; + } + + /// + /// Adds a score to the internal list of scores. If a user filter is active, + /// the score will only be added if the user ID matches the filter. + /// + /// The score to add. + /// The new count of scores in the list. + internal int AddScore(PlayGamesScore score) + { + if (mFilteredUserIds == null || mFilteredUserIds.Length == 0) + { + mScoreList.Add(score); + } + else + { + foreach (string fid in mFilteredUserIds) + { + if (fid.Equals(score.userID)) + { + mScoreList.Add(score); + break; + } + } + } + + return mScoreList.Count; + } + + /// + /// Gets the number of scores currently loaded. + /// + /// The score count. + public int ScoreCount + { + get { return mScoreList.Count; } + } + + /// + /// Checks if all requested scores have been loaded. + /// + /// true if the number of loaded scores matches the requested range or the total number of scores; otherwise, false. + internal bool HasAllScores() + { + return mScoreList.Count >= mRange.count || mScoreList.Count >= maxRange; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesLeaderboard.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesLeaderboard.cs.meta new file mode 100644 index 0000000..6fdb4b4 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesLeaderboard.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: a027e4767bd0f41509b9ef6bd2f6080e +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesLocalUser.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesLocalUser.cs new file mode 100644 index 0000000..e77ac88 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesLocalUser.cs @@ -0,0 +1,227 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID + +namespace GooglePlayGames +{ + using System; + using GooglePlayGames.BasicApi; + using UnityEngine.SocialPlatforms; + + /// + /// Represents the Google Play Games local user, providing access to + /// authentication and user-specific functionality. Implements Unity's + /// ILocalUser interface. + /// + public class PlayGamesLocalUser : PlayGamesUserProfile, ILocalUser + { + /// + /// A reference to the active Play Games platform instance. + /// + internal PlayGamesPlatform mPlatform; + + /// + /// Cached player stats. + /// + private PlayerStats mStats; + + /// + /// Initializes a new instance of the class. + /// + /// The platform instance. + internal PlayGamesLocalUser(PlayGamesPlatform plaf) + : base("localUser", string.Empty, string.Empty) + { + mPlatform = plaf; + mStats = null; + } + + /// + /// Authenticates the local user. This is equivalent to calling + /// . + /// + /// A callback to invoke with a boolean indicating success. + public void Authenticate(Action callback) + { + mPlatform.Authenticate(status => callback(status == SignInStatus.Success)); + } + + /// + /// Authenticates the local user with an extended callback that includes the reason for failure. + /// This is equivalent to calling . + /// + /// + /// A callback to invoke with a boolean indicating success and a string containing the status. + /// + public void Authenticate(Action callback) + { + mPlatform.Authenticate(status => callback(status == SignInStatus.Success, status.ToString())); + } + + /// + /// Loads the friends of the authenticated user. + /// + /// A callback to invoke with a boolean indicating success. + public void LoadFriends(Action callback) + { + mPlatform.LoadFriends(this, callback); + } + + /// + /// Gets the local user's friends. This will be null until completes. + /// + /// An array of the user's friends, or null if not yet loaded. + public IUserProfile[] friends + { + get { return mPlatform.GetFriends(); } + } + + /// + /// Gets a value indicating whether the local user is authenticated to Google Play Games. + /// + /// true if authenticated; otherwise, false. + public bool authenticated + { + get { return mPlatform.IsAuthenticated(); } + } + + /// + /// Gets a value indicating whether the user is underage. + /// + /// This is not implemented and returns true as a placeholder. + public bool underage + { + get { return true; } + } + + + + /// + /// Gets the display name of the local user. + /// + /// The user's display name. + public new string userName + { + get + { + string retval = string.Empty; + if (authenticated) + { + retval = mPlatform.GetUserDisplayName(); + if (!base.userName.Equals(retval)) + { + ResetIdentity(retval, mPlatform.GetUserId(), mPlatform.GetUserImageUrl()); + } + } + + return retval; + } + } + + /// + /// Gets the user's Google ID (Player ID). + /// + /// + /// This ID is persistent and uniquely identifies the user across all games. + /// It is the preferred way to identify a player. + /// + /// The user's Google ID. + public new string id + { + get + { + string retval = string.Empty; + if (authenticated) + { + retval = mPlatform.GetUserId(); + if (!base.id.Equals(retval)) + { + ResetIdentity(mPlatform.GetUserDisplayName(), retval, mPlatform.GetUserImageUrl()); + } + } + + return retval; + } + } + + + /// + /// Gets a value indicating whether this user is a friend of the local user. + /// + /// Always returns true. + public new bool isFriend + { + get { return true; } + } + + /// + /// Gets the user's state. + /// + /// For the local user, this is always UserState.Online. + public new UserState state + { + get { return UserState.Online; } + } + + /// + /// Gets the URL of the user's avatar image. + /// + /// The avatar image URL. + public new string AvatarURL + { + get + { + string retval = string.Empty; + if (authenticated) + { + retval = mPlatform.GetUserImageUrl(); + if (!base.id.Equals(retval)) + { + ResetIdentity(mPlatform.GetUserDisplayName(), + mPlatform.GetUserId(), retval); + } + } + + return retval; + } + } + + /// + /// Gets the player's stats from the server. + /// + /// A callback to be invoked with the status code and the player's stats. + /// The stats may be cached from a previous call. + /// + public void GetStats(Action callback) + { + if (mStats == null || !mStats.Valid) + { + mPlatform.GetPlayerStats((rc, stats) => + { + mStats = stats; + callback(rc, stats); + }); + } + else + { + // Return cached stats with a success code. + callback(CommonStatusCodes.Success, mStats); + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesLocalUser.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesLocalUser.cs.meta new file mode 100644 index 0000000..f3c3d99 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesLocalUser.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 3b5f03fe051cb4a41a3b5489bd63c24c +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesPlatform.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesPlatform.cs new file mode 100644 index 0000000..95d8693 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesPlatform.cs @@ -0,0 +1,1404 @@ +// +// Copyright (C) 2014 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID + +namespace GooglePlayGames +{ + using System; + using System.Collections.Generic; + using GooglePlayGames.BasicApi; + using GooglePlayGames.BasicApi.Events; + using GooglePlayGames.BasicApi.Nearby; + using GooglePlayGames.BasicApi.SavedGame; + using GooglePlayGames.OurUtils; + using UnityEngine; + using UnityEngine.SocialPlatforms; + + /// + /// Provides access to the Google Play Games platform. This is an implementation of + /// UnityEngine.SocialPlatforms.ISocialPlatform. Activate this platform by calling + /// the method, then authenticate by calling + /// the method. After authentication + /// completes, you may call the other methods of this class. This is not a complete + /// implementation of the ISocialPlatform interface. Methods lacking an implementation + /// or whose behavior is at variance with the standard are noted as such. + /// + public class PlayGamesPlatform : ISocialPlatform + { + /// Singleton instance + private static volatile PlayGamesPlatform sInstance = null; + + /// status of nearby connection initialization. + private static volatile bool sNearbyInitializePending; + + /// Reference to the nearby client. + /// This is static since it can be used without using play game services. + private static volatile INearbyConnectionClient sNearbyConnectionClient; + + /// The local user. + private PlayGamesLocalUser mLocalUser = null; + + /// Reference to the platform specific implementation. + private IPlayGamesClient mClient = null; + + /// the default leaderboard we show on ShowLeaderboardUI + private string mDefaultLbUi = null; + + /// the mapping table from alias to leaderboard/achievement id. + private Dictionary mIdMap = new Dictionary(); + + /// + /// Initializes a new instance of the class. + /// + /// Implementation client to use for this instance. + internal PlayGamesPlatform(IPlayGamesClient client) + { + this.mClient = Misc.CheckNotNull(client); + this.mLocalUser = new PlayGamesLocalUser(this); + } + + /// + /// Initializes a new instance of the class. + /// + private PlayGamesPlatform() + { + GooglePlayGames.OurUtils.Logger.d("Creating new PlayGamesPlatform"); + this.mLocalUser = new PlayGamesLocalUser(this); + } + + /// + /// Gets or sets a value indicating whether debug logs are enabled. This property + /// may be set before calling method. + /// + /// + /// true if debug log enabled; otherwise, false. + /// + public static bool DebugLogEnabled + { + get { return GooglePlayGames.OurUtils.Logger.DebugLogEnabled; } + + set { GooglePlayGames.OurUtils.Logger.DebugLogEnabled = value; } + } + + /// + /// Gets the singleton instance of the Play Games platform. + /// + /// + /// The instance. + /// + public static PlayGamesPlatform Instance + { + get + { + if (sInstance == null) + { + OurUtils.Logger.d("Initializing the PlayGamesPlatform instance."); + sInstance = + new PlayGamesPlatform(PlayGamesClientFactory.GetPlatformPlayGamesClient()); + } + + return sInstance; + } + } + + /// + /// Gets the nearby connection client. NOTE: Can be null until the nearby client + /// is initialized. Call InitializeNearby to use callback to be notified when initialization + /// is complete. + /// + /// The nearby. + public static INearbyConnectionClient Nearby + { + get + { + if (sNearbyConnectionClient == null && !sNearbyInitializePending) + { + sNearbyInitializePending = true; + InitializeNearby(null); + } + + return sNearbyConnectionClient; + } + } + + /// Gets the saved game client object. + /// The saved game client. + public ISavedGameClient SavedGame + { + get { return mClient.GetSavedGameClient(); } + } + + /// Gets the events client object. + /// The events client. + public IEventsClient Events + { + get { return mClient.GetEventsClient(); } + } + + /// + /// Gets the local user. + /// + /// + /// The local user. + /// + public ILocalUser localUser + { + get { return mLocalUser; } + } + + /// + /// Initializes the nearby connection platform. + /// + /// This call initializes the nearby connection platform. This + /// is independent of the Play Game Services initialization. Multiple + /// calls to this method are ignored. + /// + /// Callback invoked when complete. + public static void InitializeNearby(Action callback) + { + OurUtils.Logger.d("Calling InitializeNearby!"); + if (sNearbyConnectionClient == null) + { +#if UNITY_ANDROID && !UNITY_EDITOR + NearbyConnectionClientFactory.Create(client => { + OurUtils.Logger.d("Nearby Client Created!!"); + sNearbyConnectionClient = client; + if (callback != null) { + callback.Invoke(client); + } + else { + OurUtils.Logger.d("Initialize Nearby callback is null"); + } + }); +#else + sNearbyConnectionClient = new DummyNearbyConnectionClient(); + if (callback != null) + { + callback.Invoke(sNearbyConnectionClient); + } + +#endif + } + else if (callback != null) + { + OurUtils.Logger.d("Nearby Already initialized: calling callback directly"); + callback.Invoke(sNearbyConnectionClient); + } + else + { + OurUtils.Logger.d("Nearby Already initialized"); + } + } + + /// + /// Activates the Play Games platform as the implementation of Social.Active. + /// After calling this method, you can call methods on Social.Active. For + /// example, Social.Active.Authenticate(). + /// + /// The singleton instance. + public static PlayGamesPlatform Activate() + { + GooglePlayGames.OurUtils.Logger.d("Activating PlayGamesPlatform."); + + Social.Active = PlayGamesPlatform.Instance; + GooglePlayGames.OurUtils.Logger.d( + "PlayGamesPlatform activated: " + Social.Active); + return PlayGamesPlatform.Instance; + } + + /// + /// Specifies that the ID fromId should be implicitly replaced by toId + /// on any calls that take a leaderboard or achievement ID. + /// + /// After a mapping is + /// registered, you can use fromId instead of toId when making a call. + /// For example, the following two snippets are equivalent: + /// ReportProgress("Cfiwjew894_AQ", 100.0, callback); + /// is equivalent to: + /// AddIdMapping("super-combo", "Cfiwjew894_AQ"); + /// ReportProgress("super-combo", 100.0, callback); + /// + /// + /// The identifier to map. + /// + /// + /// The identifier that fromId will be mapped to. + /// + public void AddIdMapping(string fromId, string toId) + { + mIdMap[fromId] = toId; + } + + /// + /// Returns the result of the automatic sign-in attempt. Play Games SDK automatically + /// prompts users to sign in when the game is started. This API is useful for understanding + /// if your game has access to Play Games Services and should be used when your game is + /// started in order to conditionally enable or disable your Play Games Services + /// integration. + /// + /// The callback to call when authentication finishes. + public void Authenticate(Action callback) + { + mClient.Authenticate(callback); + } + + /// + /// Provided for compatibility with ISocialPlatform. + /// + /// + /// Unused parameter for this implementation. + /// Callback invoked when complete. + public void Authenticate(ILocalUser unused, Action callback) + { + Authenticate(status => callback(status == SignInStatus.Success)); + } + + /// + /// Provided for compatibility with ISocialPlatform. + /// + /// + /// Unused parameter for this implementation. + /// Callback invoked when complete. + public void Authenticate(ILocalUser unused, Action callback) + { + Authenticate(status => callback(status == SignInStatus.Success, status.ToString())); + } + + /// + /// Manually requests that your game performs sign in with Play Games Services. + /// + /// + /// Note that a sign-in attempt will be made automatically when your game's application + /// started. For this reason most games will not need to manually request to perform sign-in + /// unless the automatic sign-in attempt failed and your game requires access to Play Games + /// Services. + /// + /// + public void ManuallyAuthenticate(Action callback) { + mClient.ManuallyAuthenticate(callback); + } + + /// + /// Determines whether the user is authenticated. + /// + /// + /// true if the user is authenticated; otherwise, false. + /// + public bool IsAuthenticated() + { + return mClient != null && mClient.IsAuthenticated(); + } + + /// + /// Requests server-side access to Player Games Services for the currently signed in player. + /// + /// When requested an authorization code is returned that can be used by your game-server to + /// exchange for an access token and conditionally a refresh token (when + /// forceRefreshToken is true). The access token may then be used by your game-server to + /// access the Play Games Services web APIs. This is commonly used to complete a sign-in flow + /// by verifying the Play Games Services player id. + /// + ///

If forceRefreshToken is true, when exchanging the authorization code a refresh + /// token will be returned in addition to the access token. The refresh token allows the + /// game-server to request additional access tokens, allowing your game-server to continue + /// accesses Play Games Services while the user is not actively playing your app.

+ /// If set to true, a refresh token will be returned along with the access token. + /// The callback to invoke with the server authorization code. + public void RequestServerSideAccess(bool forceRefreshToken, Action callback) + { + Misc.CheckNotNull(callback); + + if (!IsAuthenticated()) + { + OurUtils.Logger.e("RequestServerSideAccess() can only be called after authentication."); + InvokeCallbackOnGameThread(callback, null); + return; + } + + mClient.RequestServerSideAccess(forceRefreshToken, callback); + } + + /// + /// Requests server-side access to Player Games Services for the currently signed in player. + /// + /// When requested an authorization code is returned that can be used by your game-server to + /// exchange for an access token and conditionally a refresh token (when + /// forceRefreshToken is true). The access token may then be used by your game-server to + /// access the Play Games Services web APIs. This is commonly used to complete a sign-in flow + /// by verifying the Play Games Services player id. + /// + ///

If forceRefreshToken is true, when exchanging the authorization code a refresh + /// token will be returned in addition to the access token. The refresh token allows the + /// game-server to request additional access tokens, allowing your game-server to continue + /// accesses Play Games Services while the user is not actively playing your app.

+ /// If set to true, a refresh token will be returned along with the access token. + /// The OAuth 2.0 scopes to request access to. + /// The callback to invoke with the AuthResponse. + public void RequestServerSideAccess(bool forceRefreshToken, List scopes, Action callback) + { + Misc.CheckNotNull(callback); + + if (!IsAuthenticated()) + { + OurUtils.Logger.e("RequestServerSideAccess() can only be called after authentication."); + InvokeCallbackOnGameThread(callback, null); + return; + } + + mClient.RequestServerSideAccess(forceRefreshToken, scopes, callback); + } + + /// + /// Requests access to the recall API. + /// + /// The callback to invoke with the recall access. + public void RequestRecallAccess(Action callback) + { + Misc.CheckNotNull(callback); + + mClient.RequestRecallAccessToken(callback); + } + + /// + /// Loads the users. + /// + /// User identifiers. + /// Callback invoked when complete. + public void LoadUsers(string[] userIds, Action callback) + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e( + "GetUserId() can only be called after authentication."); + callback(new IUserProfile[0]); + + return; + } + + mClient.LoadUsers(userIds, callback); + } + + /// + /// Returns the user's Google ID. + /// + /// + /// The user's Google ID. No guarantees are made as to the meaning or format of + /// this identifier except that it is unique to the user who is signed in. + /// + public string GetUserId() + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e( + "GetUserId() can only be called after authentication."); + return "0"; + } + + return mClient.GetUserId(); + } + + /// + /// Gets the player stats. + /// + /// Callback invoked when completed. + public void GetPlayerStats(Action callback) + { + if (mClient != null && mClient.IsAuthenticated()) + { + mClient.GetPlayerStats(callback); + } + else + { + GooglePlayGames.OurUtils.Logger.e( + "GetPlayerStats can only be called after authentication."); + + callback(CommonStatusCodes.SignInRequired, new PlayerStats()); + } + } + + /// + /// Returns the user's display name. + /// + /// + /// The user display name. For example, "Bruno Oliveira" + /// + public string GetUserDisplayName() + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e( + "GetUserDisplayName can only be called after authentication."); + return string.Empty; + } + + return mClient.GetUserDisplayName(); + } + + /// + /// Returns the user's avatar URL if they have one. + /// + /// + /// The URL, or null if the user is not authenticated or does not have + /// an avatar. + /// + public string GetUserImageUrl() + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e( + "GetUserImageUrl can only be called after authentication."); + return null; + } + + return mClient.GetUserImageUrl(); + } + + /// + /// Reports the progress of an achievement (reveal, unlock or increment). This method attempts + /// to implement the expected behavior of ISocialPlatform.ReportProgress as closely as possible, + /// as described below. Although this method works with incremental achievements for compatibility + /// purposes, calling this method for incremental achievements is not recommended, + /// since the Play Games API exposes incremental achievements in a very different way + /// than the interface presented by ISocialPlatform.ReportProgress. The implementation of this + /// method for incremental achievements attempts to produce the correct result, but may be + /// imprecise. If possible, call instead. + /// + /// + /// The ID of the achievement to unlock, reveal or increment. This can be a raw Google Play + /// Games achievement ID (alphanumeric string), or an alias that was previously configured + /// by a call to . + /// + /// + /// Progress of the achievement. If the achievement is standard (not incremental), then + /// a progress of 0.0 will reveal the achievement and 100.0 will unlock it. Behavior of other + /// values is undefined. If the achievement is incremental, then this value is interpreted + /// as the total percentage of the achievement's progress that the player should have + /// as a result of this call (regardless of the progress they had before). So if the + /// player's previous progress was 30% and this call specifies 50.0, the new progress will + /// be 50% (not 80%). + /// + /// + /// Callback that will be called to report the result of the operation: true on + /// success, false otherwise. + /// + public void ReportProgress(string achievementID, double progress, Action callback) + { + callback = ToOnGameThread(callback); + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e( + "ReportProgress can only be called after authentication."); + callback.Invoke(false); + + return; + } + + // map ID, if it's in the dictionary + GooglePlayGames.OurUtils.Logger.d("ReportProgress, " + achievementID + ", " + progress); + achievementID = MapId(achievementID); + + // if progress is 0.0, we just want to reveal it + if (progress < 0.000001) + { + GooglePlayGames.OurUtils.Logger.d( + "Progress 0.00 interpreted as request to reveal."); + mClient.RevealAchievement(achievementID, callback); + return; + } + + mClient.LoadAchievements(ach => + { + for (int i = 0; i < ach.Length; i++) + { + if (ach[i].Id == achievementID) + { + if (ach[i].IsIncremental) + { + GooglePlayGames.OurUtils.Logger.d("Progress " + progress + + " interpreted as incremental target (approximate)."); + + if (progress >= 0.0 && progress <= 1.0) + { + // in a previous version, incremental progress was reported by using the range [0-1] + GooglePlayGames.OurUtils.Logger.w( + "Progress " + progress + + " is less than or equal to 1. You might be trying to use values in the range of [0,1], while values are expected to be within the range [0,100]. If you are using the latter, you can safely ignore this message."); + } + + mClient.SetStepsAtLeast(achievementID, progressToSteps(progress, ach[i].TotalSteps), callback); + } + else + { + if (progress >= 100) + { + // unlock it! + GooglePlayGames.OurUtils.Logger.d("Progress " + progress + " interpreted as UNLOCK."); + mClient.UnlockAchievement(achievementID, callback); + } + else + { + // not enough to unlock + GooglePlayGames.OurUtils.Logger.d( + "Progress " + progress + " not enough to unlock non-incremental achievement."); + callback.Invoke(false); + } + } + + return; + } + } + + // Achievement not found + GooglePlayGames.OurUtils.Logger.e("Unable to locate achievement " + achievementID); + callback.Invoke(false); + }); + } + + /// + /// Converts a progress value to a number of steps. + /// + /// + /// The progress value. + /// + /// + /// The total number of steps. + /// + /// + /// The number of steps. + /// + internal static int progressToSteps(double progress, int totalSteps) { + return (progress >= 100.0) ? totalSteps : (int) (progress * totalSteps / 100.0); + } + + /// + /// Reveals the achievement with the passed identifier. This is a Play Games extension of the ISocialPlatform API. + /// + /// If the operation succeeds, the callback + /// will be invoked on the game thread with true. If the operation fails, the + /// callback will be invoked with false. This operation will immediately fail if + /// the user is not authenticated (the callback will immediately be invoked with + /// false). If the achievement is already in a revealed state, this call will + /// succeed immediately. + /// + /// + /// The ID of the achievement to increment. This can be a raw Google Play + /// Games achievement ID (alphanumeric string), or an alias that was previously configured + /// by a call to . + /// + /// + /// The callback to call to report the success or failure of the operation. The callback + /// will be called with true to indicate success or false for failure. + /// + public void RevealAchievement(string achievementID, Action callback = null) + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e( + "RevealAchievement can only be called after authentication."); + if (callback != null) + { + callback.Invoke(false); + } + + return; + } + + // map ID, if it's in the dictionary + GooglePlayGames.OurUtils.Logger.d( + "RevealAchievement: " + achievementID); + achievementID = MapId(achievementID); + mClient.RevealAchievement(achievementID, callback); + } + + /// + /// Unlocks the achievement with the passed identifier. This is a Play Games extension of the ISocialPlatform API. + /// + /// If the operation succeeds, the callback + /// will be invoked on the game thread with true. If the operation fails, the + /// callback will be invoked with false. This operation will immediately fail if + /// the user is not authenticated (the callback will immediately be invoked with + /// false). If the achievement is already unlocked, this call will + /// succeed immediately. + /// + /// + /// The ID of the achievement to increment. This can be a raw Google Play + /// Games achievement ID (alphanumeric string), or an alias that was previously configured + /// by a call to . + /// + /// + /// The callback to call to report the success or failure of the operation. The callback + /// will be called with true to indicate success or false for failure. + /// + public void UnlockAchievement(string achievementID, Action callback = null) + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e( + "UnlockAchievement can only be called after authentication."); + if (callback != null) + { + callback.Invoke(false); + } + + return; + } + + // map ID, if it's in the dictionary + GooglePlayGames.OurUtils.Logger.d( + "UnlockAchievement: " + achievementID); + achievementID = MapId(achievementID); + mClient.UnlockAchievement(achievementID, callback); + } + + /// + /// Increments an achievement. This is a Play Games extension of the ISocialPlatform API. + /// + /// + /// The ID of the achievement to increment. This can be a raw Google Play + /// Games achievement ID (alphanumeric string), or an alias that was previously configured + /// by a call to . + /// + /// + /// The number of steps to increment the achievement by. + /// + /// + /// The callback to call to report the success or failure of the operation. The callback + /// will be called with true to indicate success or false for failure. + /// + public void IncrementAchievement(string achievementID, int steps, Action callback) + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e( + "IncrementAchievement can only be called after authentication."); + if (callback != null) + { + callback.Invoke(false); + } + + return; + } + + // map ID, if it's in the dictionary + GooglePlayGames.OurUtils.Logger.d( + "IncrementAchievement: " + achievementID + ", steps " + steps); + achievementID = MapId(achievementID); + mClient.IncrementAchievement(achievementID, steps, callback); + } + + /// + /// Set an achievement to have at least the given number of steps completed. + /// Calling this method while the achievement already has more steps than + /// the provided value is a no-op. Once the achievement reaches the + /// maximum number of steps, the achievement is automatically unlocked, + /// and any further mutation operations are ignored. + /// + /// + /// The ID of the achievement to increment. This can be a raw Google Play + /// Games achievement ID (alphanumeric string), or an alias that was previously configured + /// by a call to . + /// + /// + /// The number of steps to increment the achievement by. + /// + /// + /// The callback to call to report the success or failure of the operation. The callback + /// will be called with true to indicate success or false for failure. + /// + public void SetStepsAtLeast(string achievementID, int steps, Action callback) + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e( + "SetStepsAtLeast can only be called after authentication."); + if (callback != null) + { + callback.Invoke(false); + } + + return; + } + + // map ID, if it's in the dictionary + GooglePlayGames.OurUtils.Logger.d( + "SetStepsAtLeast: " + achievementID + ", steps " + steps); + achievementID = MapId(achievementID); + mClient.SetStepsAtLeast(achievementID, steps, callback); + } + + /// + /// Loads the Achievement descriptions. + /// + /// The callback to receive the descriptions + public void LoadAchievementDescriptions(Action callback) + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e( + "LoadAchievementDescriptions can only be called after authentication."); + if (callback != null) + { + callback.Invoke(null); + } + + return; + } + + mClient.LoadAchievements(ach => + { + IAchievementDescription[] data = new IAchievementDescription[ach.Length]; + for (int i = 0; i < data.Length; i++) + { + data[i] = new PlayGamesAchievement(ach[i]); + } + + callback.Invoke(data); + }); + } + + /// + /// Loads the achievement state for the current user. + /// + /// The callback to receive the achievements + public void LoadAchievements(Action callback) + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e("LoadAchievements can only be called after authentication."); + callback.Invoke(null); + + return; + } + + mClient.LoadAchievements(ach => + { + IAchievement[] data = new IAchievement[ach.Length]; + for (int i = 0; i < data.Length; i++) + { + data[i] = new PlayGamesAchievement(ach[i]); + } + + callback.Invoke(data); + }); + } + + /// + /// Creates an achievement object which may be subsequently used to report an + /// achievement. + /// + /// + /// The achievement object. + /// + public IAchievement CreateAchievement() + { + return new PlayGamesAchievement(); + } + + /// + /// Reports a score to a leaderboard. + /// + /// + /// The score to report. + /// + /// + /// The ID of the leaderboard on which the score is to be posted. This may be a raw + /// Google Play Games leaderboard ID or an alias configured through a call to + /// . + /// + /// + /// The callback to call to report the success or failure of the operation. The callback + /// will be called with true to indicate success or false for failure. + /// + public void ReportScore(long score, string board, Action callback) + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e("ReportScore can only be called after authentication."); + if (callback != null) + { + callback.Invoke(false); + } + + return; + } + + GooglePlayGames.OurUtils.Logger.d("ReportScore: score=" + score + ", board=" + board); + string leaderboardId = MapId(board); + mClient.SubmitScore(leaderboardId, score, callback); + } + + /// + /// Submits the score for the currently signed-in player + /// to the leaderboard associated with a specific id + /// and metadata (such as something the player did to earn the score). + /// + /// Score to report. + /// leaderboard id. + /// metadata about the score. + /// Callback invoked upon completion. + public void ReportScore(long score, string board, string metadata, Action callback) + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e("ReportScore can only be called after authentication."); + if (callback != null) + { + callback.Invoke(false); + } + + return; + } + + GooglePlayGames.OurUtils.Logger.d("ReportScore: score=" + score + + ", board=" + board + + " metadata=" + metadata); + string leaderboardId = MapId(board); + mClient.SubmitScore(leaderboardId, score, metadata, callback); + } + + /// + /// Loads the scores relative the player. + /// + /// This returns the 25 + /// (which is the max results returned by the SDK per call) scores + /// that are around the player's score on the Public, all time leaderboard. + /// Use the overloaded methods which are specific to GPGS to modify these + /// parameters. + /// + /// Leaderboard Id + /// Callback to invoke when completed. + public void LoadScores(string leaderboardId, Action callback) + { + LoadScores( + leaderboardId, + LeaderboardStart.PlayerCentered, + mClient.LeaderboardMaxResults(), + LeaderboardCollection.Public, + LeaderboardTimeSpan.AllTime, + (scoreData) => callback(scoreData.Scores)); + } + + /// + /// Loads the scores using the provided parameters. This call may fail when trying to load friends with + /// ResponseCode.ResolutionRequired if the user has not share the friends list with the game. In this case, use + /// AskForLoadFriendsResolution to request access. + /// + /// Leaderboard identifier. + /// Start either top scores, or player centered. + /// Row count. the number of rows to return. + /// Collection. social or public + /// Time span. daily, weekly, all-time + /// Callback to invoke when completed. + public void LoadScores( + string leaderboardId, + LeaderboardStart start, + int rowCount, + LeaderboardCollection collection, + LeaderboardTimeSpan timeSpan, + Action callback) + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e("LoadScores can only be called after authentication."); + callback(new LeaderboardScoreData( + leaderboardId, + ResponseStatus.NotAuthorized)); + return; + } + + mClient.LoadScores( + leaderboardId, + start, + rowCount, + collection, + timeSpan, + callback); + } + + /// + /// Loads more scores. This call may fail when trying to load friends with + /// ResponseCode.ResolutionRequired if the user has not share the friends list with the game. In this case, use + /// AskForLoadFriendsResolution to request access. + /// + /// This is used to load the next "page" of scores. + /// Token used to recording the loading. + /// Row count. + /// Callback invoked when complete. + public void LoadMoreScores( + ScorePageToken token, + int rowCount, + Action callback) + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e("LoadMoreScores can only be called after authentication."); + callback( + new LeaderboardScoreData( + token.LeaderboardId, + ResponseStatus.NotAuthorized)); + return; + } + + mClient.LoadMoreScores(token, rowCount, callback); + } + + /// + /// Returns a leaderboard object that can be configured to + /// load scores. + /// + /// The leaderboard object. + public ILeaderboard CreateLeaderboard() + { + return new PlayGamesLeaderboard(mDefaultLbUi); + } + + /// + /// Shows the standard Google Play Games achievements user interface, + /// which allows the player to browse their achievements. + /// + public void ShowAchievementsUI() + { + ShowAchievementsUI(null); + } + + /// + /// Shows the standard Google Play Games achievements user interface, + /// which allows the player to browse their achievements. + /// + /// If non-null, the callback is invoked when + /// the achievement UI is dismissed + public void ShowAchievementsUI(Action callback) + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e("ShowAchievementsUI can only be called after authentication."); + return; + } + + GooglePlayGames.OurUtils.Logger.d("ShowAchievementsUI callback is " + callback); + mClient.ShowAchievementsUI(callback); + } + + /// + /// Shows the standard Google Play Games leaderboards user interface, + /// which allows the player to browse their leaderboards. If you have + /// configured a specific leaderboard as the default through a call to + /// , the UI will show that + /// specific leaderboard only. Otherwise, a list of all the leaderboards + /// will be shown. + /// + public void ShowLeaderboardUI() + { + GooglePlayGames.OurUtils.Logger.d("ShowLeaderboardUI with default ID"); + ShowLeaderboardUI(MapId(mDefaultLbUi), null); + } + + /// + /// Shows the standard Google Play Games leaderboard UI for the given + /// leaderboard. + /// + /// + /// The ID of the leaderboard to display. This may be a raw + /// Google Play Games leaderboard ID or an alias configured through a call to + /// . + /// + public void ShowLeaderboardUI(string leaderboardId) + { + if (leaderboardId != null) + { + leaderboardId = MapId(leaderboardId); + } + + ShowLeaderboardUI(leaderboardId, LeaderboardTimeSpan.AllTime, null); + } + + /// + /// Shows the leaderboard UI and calls the specified callback upon + /// completion. + /// + /// leaderboard ID, can be null meaning all leaderboards. + /// Callback to call. If null, nothing is called. + public void ShowLeaderboardUI(string leaderboardId, Action callback) + { + ShowLeaderboardUI(leaderboardId, LeaderboardTimeSpan.AllTime, callback); + } + + /// + /// Shows the leaderboard UI and calls the specified callback upon + /// completion. + /// + /// leaderboard ID, can be null meaning all leaderboards. + /// Timespan to display scores in the leaderboard. + /// Callback to call. If null, nothing is called. + public void ShowLeaderboardUI( + string leaderboardId, + LeaderboardTimeSpan span, + Action callback) + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e("ShowLeaderboardUI can only be called after authentication."); + if (callback != null) + { + callback(UIStatus.NotAuthorized); + } + + return; + } + + GooglePlayGames.OurUtils.Logger.d("ShowLeaderboardUI, lbId=" + + leaderboardId + " callback is " + callback); + mClient.ShowLeaderboardUI(leaderboardId, span, callback); + } + + /// + /// Sets the default leaderboard for the leaderboard UI. After calling this + /// method, a call to will show only the specified + /// leaderboard instead of showing the list of all leaderboards. + /// + /// + /// The ID of the leaderboard to display on the default UI. This may be a raw + /// Google Play Games leaderboard ID or an alias configured through a call to + /// . + /// + public void SetDefaultLeaderboardForUI(string lbid) + { + GooglePlayGames.OurUtils.Logger.d("SetDefaultLeaderboardForUI: " + lbid); + if (lbid != null) + { + lbid = MapId(lbid); + } + + mDefaultLbUi = lbid; + } + + /// + /// Loads the friends that also play this game. See loadConnectedPlayers. + /// + /// This is a callback variant of LoadFriends. When completed, + /// the friends list set in the user object, so they can accessed via the + /// friends property as needed. + /// + /// The current local user + /// Callback invoked when complete. + public void LoadFriends(ILocalUser user, Action callback) + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e( + "LoadScores can only be called after authentication."); + if (callback != null) + { + callback(false); + } + + return; + } + + mClient.LoadFriends(callback); + } + + /// + /// Loads the leaderboard based on the constraints in the leaderboard + /// object. + /// + /// The leaderboard object. This is created by + /// calling CreateLeaderboard(), and then initialized appropriately. + /// Callback invoked when complete. + public void LoadScores(ILeaderboard board, Action callback) + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e("LoadScores can only be called after authentication."); + if (callback != null) + { + callback(false); + } + + return; + } + + LeaderboardTimeSpan timeSpan; + switch (board.timeScope) + { + case TimeScope.AllTime: + timeSpan = LeaderboardTimeSpan.AllTime; + break; + case TimeScope.Week: + timeSpan = LeaderboardTimeSpan.Weekly; + break; + case TimeScope.Today: + timeSpan = LeaderboardTimeSpan.Daily; + break; + default: + timeSpan = LeaderboardTimeSpan.AllTime; + break; + } + + ((PlayGamesLeaderboard) board).loading = true; + GooglePlayGames.OurUtils.Logger.d("LoadScores, board=" + board + + " callback is " + callback); + mClient.LoadScores( + board.id, + LeaderboardStart.PlayerCentered, + board.range.count > 0 ? board.range.count : mClient.LeaderboardMaxResults(), + board.userScope == UserScope.FriendsOnly ? LeaderboardCollection.Social : LeaderboardCollection.Public, + timeSpan, + (scoreData) => HandleLoadingScores( + (PlayGamesLeaderboard) board, scoreData, callback)); + } + + /// + /// Check if the leaderboard is currently loading. + /// + /// true, if loading was gotten, false otherwise. + /// The leaderboard to check for loading in progress + public bool GetLoading(ILeaderboard board) + { + return board != null && board.loading; + } + + /// + /// Shows the Player Profile UI for the given user identifier. + /// + /// User Identifier. + /// + /// The game's own display name of the player referred to by userId. + /// + /// + /// The game's own display name of the current player. + /// + /// Callback invoked upon completion. + public void ShowCompareProfileWithAlternativeNameHintsUI(string userId, + string otherPlayerInGameName, + string currentPlayerInGameName, + Action callback) + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e( + "ShowCompareProfileWithAlternativeNameHintsUI can only be called after authentication."); + InvokeCallbackOnGameThread(callback, UIStatus.NotAuthorized); + + return; + } + + GooglePlayGames.OurUtils.Logger.d( + "ShowCompareProfileWithAlternativeNameHintsUI, userId=" + userId + " callback is " + + callback); + mClient.ShowCompareProfileWithAlternativeNameHintsUI(userId, otherPlayerInGameName, + currentPlayerInGameName, callback); + } + + /// + /// Returns if the user has allowed permission for the game to access the friends list. + /// + /// If true, this call will clear any locally cached data and + /// attempt to fetch the latest data from the server. Normally, this should be set to + /// false to gain advantages of data caching. + /// Callback invoked upon completion. + public void GetFriendsListVisibility(bool forceReload, + Action callback) + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e( + "GetFriendsListVisibility can only be called after authentication."); + InvokeCallbackOnGameThread(callback, FriendsListVisibilityStatus.NotAuthorized); + return; + } + + GooglePlayGames.OurUtils.Logger.d("GetFriendsListVisibility, callback is " + callback); + mClient.GetFriendsListVisibility(forceReload, callback); + } + + /// + /// Shows the appropriate platform-specific friends sharing UI. + /// The callback to invoke when complete. If null, + /// no callback is called. + /// + public void AskForLoadFriendsResolution(Action callback) + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e( + "AskForLoadFriendsResolution can only be called after authentication."); + InvokeCallbackOnGameThread(callback, UIStatus.NotAuthorized); + return; + } + + GooglePlayGames.OurUtils.Logger.d("AskForLoadFriendsResolution callback is " + callback); + mClient.AskForLoadFriendsResolution(callback); + } + + /// + /// Gets status of the last call to load friends. + /// + public LoadFriendsStatus GetLastLoadFriendsStatus() + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e( + "GetLastLoadFriendsStatus can only be called after authentication."); + return LoadFriendsStatus.NotAuthorized; + } + + return mClient.GetLastLoadFriendsStatus(); + } + + /// + /// Loads the first page of the user's friends. + /// + /// + /// The number of entries to request for this initial page. Note that if cached + /// data already exists, the returned buffer may contain more than this size, but it is + /// guaranteed to contain at least this many if the collection contains enough records. + /// + /// + /// If true, this call will clear any locally cached data and attempt to + /// fetch the latest data from the server. This would commonly be used for something like a + /// user-initiated refresh. Normally, this should be set to false to gain advantages of data caching. + /// + /// Callback invoked upon completion with the status. + public void LoadFriends(int pageSize, bool forceReload, + Action callback) + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e( + "LoadFriends can only be called after authentication."); + InvokeCallbackOnGameThread(callback, LoadFriendsStatus.NotAuthorized); + return; + } + + mClient.LoadFriends(pageSize, forceReload, callback); + } + + /// + /// Loads the friends list page + /// + /// + /// The number of entries to request for this initial page. Note that if cached + /// data already exists, the returned buffer may contain more than this size, but it is + /// guaranteed to contain at least this many if the collection contains enough records. + /// + /// + public void LoadMoreFriends(int pageSize, Action callback) + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.e( + "LoadMoreFriends can only be called after authentication."); + InvokeCallbackOnGameThread(callback, LoadFriendsStatus.NotAuthorized); + return; + } + + mClient.LoadMoreFriends(pageSize, callback); + } + + /// + /// Handles the processing of scores during loading. + /// + /// leaderboard being loaded + /// Score data. + /// Callback invoked when complete. + internal void HandleLoadingScores( + PlayGamesLeaderboard board, + LeaderboardScoreData scoreData, + Action callback) + { + bool ok = board.SetFromData(scoreData); + if (ok && !board.HasAllScores() && scoreData.NextPageToken != null) + { + int rowCount = board.range.count - board.ScoreCount; + + // need to load more scores + mClient.LoadMoreScores( + scoreData.NextPageToken, + rowCount, + (nextScoreData) => + HandleLoadingScores(board, nextScoreData, callback)); + } + else + { + callback(ok); + } + } + + /// + /// Internal implmentation of getFriends.Gets the friends. + /// + /// The friends. + internal IUserProfile[] GetFriends() + { + if (!IsAuthenticated()) + { + GooglePlayGames.OurUtils.Logger.d("Cannot get friends when not authenticated!"); + return new IUserProfile[0]; + } + + return mClient.GetFriends(); + } + + /// + /// Maps the alias to the identifier. + /// + /// Alias to map + /// This maps an aliased ID to the actual id. The intent of + /// this method is to allow easy to read constants to be used instead of + /// the generated ids. + /// + /// The identifier, or null if not found. + private string MapId(string id) + { + if (id == null) + { + return null; + } + + if (mIdMap.ContainsKey(id)) + { + string result = mIdMap[id]; + GooglePlayGames.OurUtils.Logger.d("Mapping alias " + id + " to ID " + result); + return result; + } + + return id; + } + + private static void InvokeCallbackOnGameThread(Action callback, T data) + { + if (callback == null) + { + return; + } + + PlayGamesHelperObject.RunOnGameThread(() => { callback(data); }); + } + + private static Action ToOnGameThread(Action toConvert) + { + if (toConvert == null) + { + return delegate { }; + } + + return (val) => PlayGamesHelperObject.RunOnGameThread(() => toConvert(val)); + } + } +} +#endif diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesPlatform.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesPlatform.cs.meta new file mode 100644 index 0000000..994be87 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesPlatform.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: c1de7754a6e7f4fb08b76780a184b3ca +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesScore.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesScore.cs new file mode 100644 index 0000000..132a74e --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesScore.cs @@ -0,0 +1,149 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID + +namespace GooglePlayGames +{ + using System; + using UnityEngine.SocialPlatforms; + + /// + /// Represents a score on a Google Play Games leaderboard. Implements the Unity + /// IScore interface. + /// + public class PlayGamesScore : IScore + { + /// + /// The ID of the leaderboard this score belongs to. + /// + private string mLbId = null; + + /// + /// The numerical value of the score. + /// + private long mValue = 0; + + /// + /// The rank of this score on the leaderboard. + /// + private ulong mRank = 0; + + /// + /// The ID of the player who achieved this score. + /// + private string mPlayerId = string.Empty; + + /// + /// The metadata associated with this score (also known as a score tag). + /// + private string mMetadata = string.Empty; + + /// + /// The date and time when the score was achieved. + /// + private DateTime mDate = new DateTime(1970, 1, 1, 0, 0, 0); + + /// + /// Initializes a new instance of the class. + /// + /// The date the score was achieved. + /// The leaderboard ID. + /// The rank of the score. + /// The player's ID. + /// The numerical score value. + /// The metadata (score tag) associated with the score. + internal PlayGamesScore(DateTime date, string leaderboardId, + ulong rank, string playerId, ulong value, string metadata) + { + this.mDate = date; + mLbId = leaderboardID; + this.mRank = rank; + this.mPlayerId = playerId; + this.mValue = (long) value; + this.mMetadata = metadata; + } + + /// + /// Reports this score to the Google Play Games services. This is equivalent + /// to calling . + /// + /// A callback to be invoked with a boolean indicating the success of the operation. + public void ReportScore(Action callback) + { + PlayGamesPlatform.Instance.ReportScore(mValue, mLbId, mMetadata, callback); + } + + /// + /// Gets or sets the ID of the leaderboard this score is for. + /// + public string leaderboardID + { + get { return mLbId; } + set { mLbId = value; } + } + + /// + /// Gets or sets the score value. + /// + public long value + { + get { return mValue; } + set { mValue = value; } + } + + /// + /// Gets the date and time this score was achieved. + /// + public DateTime date + { + get { return mDate; } + } + + /// + /// Gets the score value as a formatted string. + /// + public string formattedValue + { + get { return mValue.ToString(); } + } + + /// + /// Gets the ID of the user who achieved this score. + /// + public string userID + { + get { return mPlayerId; } + } + + /// + /// Gets the rank of this score in the leaderboard. + /// + public int rank + { + get { return (int) mRank; } + } + + /// + /// Gets the metadata associated with this score (also known as a score tag). + /// + public string metaData + { + get { return mMetadata; } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesScore.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesScore.cs.meta new file mode 100644 index 0000000..e45e321 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesScore.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 2a6e2425305ab455a91061b1eb955b38 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesUserProfile.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesUserProfile.cs new file mode 100644 index 0000000..0f9440d --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesUserProfile.cs @@ -0,0 +1,299 @@ +// +// Copyright (C) 2014 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID + +namespace GooglePlayGames +{ + using System; + using System.Collections; + using GooglePlayGames.OurUtils; + using UnityEngine; +#if UNITY_2017_2_OR_NEWER + using UnityEngine.Networking; +#endif + using UnityEngine.SocialPlatforms; + + /// + /// Represents a Google Play Games user profile. Implements the Unity's IUserProfile + /// interface and is used as a base class for . + /// + public class PlayGamesUserProfile : IUserProfile + { + /// + /// The user's display name. + /// + private string mDisplayName; + + /// + /// The user's unique player ID. + /// + private string mPlayerId; + + /// + /// The URL for the user's avatar image. + /// + private string mAvatarUrl; + + /// + /// A flag indicating if this user is a friend of the local user. + /// + private bool mIsFriend; + + /// + /// A flag to prevent multiple concurrent image loading coroutines. + /// + private volatile bool mImageLoading = false; + + /// + /// The cached user avatar image. + /// + private Texture2D mImage; + + /// + /// Initializes a new instance of the class. + /// + /// The user's display name. + /// The user's player ID. + /// The URL of the user's avatar. + internal PlayGamesUserProfile(string displayName, string playerId, + string avatarUrl) + { + mDisplayName = displayName; + mPlayerId = playerId; + setAvatarUrl(avatarUrl); + mImageLoading = false; + mIsFriend = false; + } + + /// + /// Initializes a new instance of the class. + /// + /// The user's display name. + /// The user's player ID. + /// The URL of the user's avatar. + /// A flag indicating if the user is a friend. + internal PlayGamesUserProfile(string displayName, string playerId, string avatarUrl, + bool isFriend) + { + mDisplayName = displayName; + mPlayerId = playerId; + mAvatarUrl = avatarUrl; + mImageLoading = false; + mIsFriend = isFriend; + } + + /// + /// Resets the user's identity with new information. If the avatar URL has changed, + /// the old image is discarded. + /// + /// The new display name. + /// The new player ID. + /// The new avatar URL. + protected void ResetIdentity(string displayName, string playerId, + string avatarUrl) + { + mDisplayName = displayName; + mPlayerId = playerId; + mIsFriend = false; + if (mAvatarUrl != avatarUrl) + { + mImage = null; + setAvatarUrl(avatarUrl); + } + + mImageLoading = false; + } + + #region IUserProfile implementation + + /// + /// Gets the user's display name. + /// + /// The name of the user. + public string userName + { + get { return mDisplayName; } + } + + /// + /// Gets the user's unique player ID. + /// + /// The player ID. + public string id + { + get { return mPlayerId; } + } + + /// + /// Gets the user's game-specific identifier. In this implementation, it is the same as the player ID. + /// + public string gameId + { + get { return mPlayerId; } + } + + /// + /// Gets a value indicating whether this user is a friend of the local user. + /// + /// true if this user is a friend; otherwise, false. + public bool isFriend + { + get { return mIsFriend; } + } + + /// + /// Gets the user's current state. In this implementation, it always returns 'Online'. + /// + public UserState state + { + get { return UserState.Online; } + } + + /// + /// Gets the user's avatar image as a . + /// The image is loaded asynchronously. Returns null until the image has been loaded. + /// + /// The user's avatar image. + public Texture2D image + { + get + { + if (!mImageLoading && mImage == null && !string.IsNullOrEmpty(AvatarURL)) + { + OurUtils.Logger.d("Starting to load image: " + AvatarURL); + mImageLoading = true; + PlayGamesHelperObject.RunCoroutine(LoadImage()); + } + + return mImage; + } + } + + #endregion + + /// + /// Gets the URL of the user's avatar. + /// + public string AvatarURL + { + get { return mAvatarUrl; } + } + + /// + /// An enumerator that asynchronously loads the user's avatar image from the . + /// + /// An to be used with a coroutine. + internal IEnumerator LoadImage() + { + // The URL can be null if the user does not have an avatar configured. + if (!string.IsNullOrEmpty(AvatarURL)) + { +#if UNITY_2017_2_OR_NEWER + UnityWebRequest www = UnityWebRequestTexture.GetTexture(AvatarURL); + www.SendWebRequest(); +#else + WWW www = new WWW(AvatarURL); +#endif + while (!www.isDone) + { + yield return null; + } + + if (www.error == null) + { +#if UNITY_2017_2_OR_NEWER + this.mImage = DownloadHandlerTexture.GetContent(www); +#else + this.mImage = www.texture; +#endif + } + else + { + mImage = Texture2D.blackTexture; + OurUtils.Logger.e("Error downloading image: " + www.error); + } + + mImageLoading = false; + } + else + { + OurUtils.Logger.e("No URL found."); + mImage = Texture2D.blackTexture; + mImageLoading = false; + } + } + + /// + /// Determines whether the specified is equal to the current . + /// Equality is based on the player ID. + /// + /// The to compare with the current . + /// true if the specified object is equal to the current object; otherwise, false. + public override bool Equals(object obj) + { + if (obj == null) + { + return false; + } + + if (ReferenceEquals(this, obj)) + { + return true; + } + + PlayGamesUserProfile other = obj as PlayGamesUserProfile; + if (other == null) + { + return false; + } + + return StringComparer.Ordinal.Equals(mPlayerId, other.mPlayerId); + } + + /// + /// Serves as a hash function for a object. + /// + /// A hash code for this instance that is suitable for use in hashing algorithms and data structures such as a hash table. + public override int GetHashCode() + { + return typeof(PlayGamesUserProfile).GetHashCode() ^ mPlayerId.GetHashCode(); + } + + /// + /// Returns a that represents the current . + /// + /// A string representation of the object. + public override string ToString() + { + return string.Format("[Player: '{0}' (id {1})]", mDisplayName, mPlayerId); + } + + /// + /// Sets the avatar URL, ensuring it uses HTTPS. + /// + /// The avatar URL to set. + private void setAvatarUrl(string avatarUrl) + { + mAvatarUrl = avatarUrl; + if (!string.IsNullOrEmpty(mAvatarUrl) && !mAvatarUrl.StartsWith("https") && mAvatarUrl.StartsWith("http")) + { + mAvatarUrl = mAvatarUrl.Insert(4, "s"); + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesUserProfile.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesUserProfile.cs.meta new file mode 100644 index 0000000..70b194e --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/ISocialPlatform/PlayGamesUserProfile.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: ab1b90315f37e498a849765260dd436c +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils.meta new file mode 100644 index 0000000..01304aa --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: dc34e4ac2f7e6420da72898e7b511098 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/Logger.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/Logger.cs new file mode 100644 index 0000000..af8b8c3 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/Logger.cs @@ -0,0 +1,92 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace GooglePlayGames.OurUtils +{ + using System; + using UnityEngine; + + public class Logger + { + private static bool debugLogEnabled = false; + + public static bool DebugLogEnabled + { + get { return debugLogEnabled; } + + set { debugLogEnabled = value; } + } + + private static bool warningLogEnabled = true; + + public static bool WarningLogEnabled + { + get { return warningLogEnabled; } + + set { warningLogEnabled = value; } + } + + public static void d(string msg) + { + if (debugLogEnabled) + { + PlayGamesHelperObject.RunOnGameThread(() => + Debug.Log(ToLogMessage(string.Empty, "DEBUG", msg))); + } + } + + public static void w(string msg) + { + if (warningLogEnabled) + { + PlayGamesHelperObject.RunOnGameThread(() => + Debug.LogWarning(ToLogMessage("!!!", "WARNING", msg))); + } + } + + public static void e(string msg) + { + if (warningLogEnabled) + { + PlayGamesHelperObject.RunOnGameThread(() => + Debug.LogWarning(ToLogMessage("***", "ERROR", msg))); + } + } + + public static string describe(byte[] b) + { + return b == null ? "(null)" : "byte[" + b.Length + "]"; + } + + private static string ToLogMessage(string prefix, string logType, string msg) + { + string timeString = null; + try + { + timeString = DateTime.Now.ToString("MM/dd/yy H:mm:ss zzz"); + } + catch (Exception) + { + PlayGamesHelperObject.RunOnGameThread(() => + Debug.LogWarning("*** [Play Games Plugin " + PluginVersion.VersionString + "] ERROR: Failed to format DateTime.Now")); + timeString = string.Empty; + } + + return string.Format("{0} [Play Games Plugin " + PluginVersion.VersionString+ "] {1} {2}: {3}", + prefix, timeString, logType, msg); + } + } +} diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/Logger.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/Logger.cs.meta new file mode 100644 index 0000000..05bbca7 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/Logger.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: cde7cfd197b4a47edac2efe305e22e78 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/Misc.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/Misc.cs new file mode 100644 index 0000000..8af6ea8 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/Misc.cs @@ -0,0 +1,100 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace GooglePlayGames.OurUtils +{ + using System; + + public static class Misc + { + public static bool BuffersAreIdentical(byte[] a, byte[] b) + { + if (a == b) + { + // not only identical but the very same! + return true; + } + + if (a == null || b == null) + { + // one of them is null, the other one isn't + return false; + } + + if (a.Length != b.Length) + { + return false; + } + + for (int i = 0; i < a.Length; i++) + { + if (a[i] != b[i]) + { + return false; + } + } + + return true; + } + + public static byte[] GetSubsetBytes(byte[] array, int offset, int length) + { + if (array == null) + { + throw new ArgumentNullException("array"); + } + + if (offset < 0 || offset >= array.Length) + { + throw new ArgumentOutOfRangeException("offset"); + } + + if (length < 0 || (array.Length - offset) < length) + { + throw new ArgumentOutOfRangeException("length"); + } + + if (offset == 0 && length == array.Length) + { + return array; + } + + byte[] piece = new byte[length]; + Array.Copy(array, offset, piece, 0, length); + return piece; + } + + public static T CheckNotNull(T value) + { + if (value == null) + { + throw new ArgumentNullException(); + } + + return value; + } + + public static T CheckNotNull(T value, string paramName) + { + if (value == null) + { + throw new ArgumentNullException(paramName); + } + + return value; + } + } +} \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/Misc.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/Misc.cs.meta new file mode 100644 index 0000000..b4bca20 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/Misc.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: ee52269f55933442fa5ea52e688ebec2 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/NearbyHelperObject.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/NearbyHelperObject.cs new file mode 100644 index 0000000..3b09327 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/NearbyHelperObject.cs @@ -0,0 +1,104 @@ +#if UNITY_ANDROID + +namespace GooglePlayGames.OurUtils +{ + using BasicApi.Nearby; + using System; + using UnityEngine; + + public class NearbyHelperObject : MonoBehaviour + { + // our (singleton) instance + private static NearbyHelperObject instance = null; + + // timers to keep track of discovery and advertising + private static double mAdvertisingRemaining = 0; + private static double mDiscoveryRemaining = 0; + + // nearby client to stop discovery and to stop advertising + private static INearbyConnectionClient mClient = null; + + public static void CreateObject(INearbyConnectionClient client) + { + if (instance != null) + { + return; + } + + mClient = client; + if (Application.isPlaying) + { + // add an invisible game object to the scene + GameObject obj = new GameObject("PlayGames_NearbyHelper"); + DontDestroyOnLoad(obj); + instance = obj.AddComponent(); + } + else + { + instance = new NearbyHelperObject(); + } + } + + private static double ToSeconds(TimeSpan? span) + { + if (!span.HasValue) + { + return 0; + } + + if (span.Value.TotalSeconds < 0) + { + return 0; + } + + return span.Value.TotalSeconds; + } + + public static void StartAdvertisingTimer(TimeSpan? span) + { + mAdvertisingRemaining = ToSeconds(span); + } + + public static void StartDiscoveryTimer(TimeSpan? span) + { + mDiscoveryRemaining = ToSeconds(span); + } + + public void Awake() + { + DontDestroyOnLoad(gameObject); + } + + public void OnDisable() + { + if (instance == this) + { + instance = null; + } + } + + public void Update() + { + // check if currently advertising + if (mAdvertisingRemaining > 0) + { + mAdvertisingRemaining -= Time.deltaTime; + if (mAdvertisingRemaining < 0) + { + mClient.StopAdvertising(); + } + } + + // check if currently discovering + if (mDiscoveryRemaining > 0) + { + mDiscoveryRemaining -= Time.deltaTime; + if (mDiscoveryRemaining < 0) + { + mClient.StopDiscovery(mClient.GetServiceId()); + } + } + } + } +} +#endif \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/NearbyHelperObject.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/NearbyHelperObject.cs.meta new file mode 100644 index 0000000..2573b0d --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/NearbyHelperObject.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: b66cca4a5a1f4a5092a280c452185308 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/PlatformUtils.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/PlatformUtils.cs new file mode 100644 index 0000000..43ce29e --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/PlatformUtils.cs @@ -0,0 +1,42 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID +namespace GooglePlayGames.OurUtils +{ + using UnityEngine; + using System; + + public static class PlatformUtils + { + /// + /// Check if the Google Play Games platform is supported at runtime. + /// + /// If the platform is supported. + public static bool Supported + { + get + { +#if UNITY_EDITOR + return false; +#else + return true; +#endif + } + } + } +} +#endif //UNITY_ANDROID \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/PlatformUtils.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/PlatformUtils.cs.meta new file mode 100644 index 0000000..3b2ccfd --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/PlatformUtils.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 053811e778f3d4e3e98065f5db5bd005 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/PlayGamesHelperObject.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/PlayGamesHelperObject.cs new file mode 100644 index 0000000..6c8551c --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/PlayGamesHelperObject.cs @@ -0,0 +1,222 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace GooglePlayGames.OurUtils +{ + using System; + using System.Collections; + using UnityEngine; + using System.Collections.Generic; + + public class PlayGamesHelperObject : MonoBehaviour + { + // our (singleton) instance + private static PlayGamesHelperObject instance = null; + + // are we a dummy instance (used in the editor?) + private static bool sIsDummy = false; + + // queue of actions to run on the game thread + private static List sQueue = new List(); + + // member variable used to copy actions from the sQueue and + // execute them on the game thread. It is a member variable + // to help minimize memory allocations. + List localQueue = new List(); + + // flag that alerts us that we should check the queue + // (we do this just so we don't have to lock() the queue every + // frame to check if it's empty or not). + private volatile static bool sQueueEmpty = true; + + // callback for application pause and focus events + private static List> sPauseCallbackList = + new List>(); + + private static List> sFocusCallbackList = + new List>(); + + // Call this once from the game thread + public static void CreateObject() + { + if (instance != null) + { + return; + } + + if (Application.isPlaying) + { + // add an invisible game object to the scene + GameObject obj = new GameObject("PlayGames_QueueRunner"); + DontDestroyOnLoad(obj); + instance = obj.AddComponent(); + } + else + { + instance = new PlayGamesHelperObject(); + sIsDummy = true; + } + } + + public void Awake() + { + DontDestroyOnLoad(gameObject); + } + + public void OnDisable() + { + if (instance == this) + { + instance = null; + } + } + + public static void RunCoroutine(IEnumerator action) + { + if (instance != null) + { + RunOnGameThread(() => instance.StartCoroutine(action)); + } + } + + public static void RunOnGameThread(System.Action action) + { + if (action == null) + { + throw new ArgumentNullException("action"); + } + + if (sIsDummy) + { + return; + } + + lock (sQueue) + { + sQueue.Add(action); + sQueueEmpty = false; + } + } + + public void Update() + { + if (sIsDummy || sQueueEmpty) + { + return; + } + + // first copy the shared queue into a local queue + localQueue.Clear(); + lock (sQueue) + { + // transfer the whole queue to our local queue + localQueue.AddRange(sQueue); + sQueue.Clear(); + sQueueEmpty = true; + } + + // execute queued actions (from local queue) + // use a loop to avoid extra memory allocations using the + // forEach + for (int i = 0; i < localQueue.Count; i++) + { + localQueue[i].Invoke(); + } + } + + public void OnApplicationFocus(bool focused) + { + foreach (Action cb in sFocusCallbackList) + { + try + { + cb(focused); + } + catch (Exception e) + { + Logger.e("Exception in OnApplicationFocus:" + + e.Message + "\n" + e.StackTrace); + } + } + } + + public void OnApplicationPause(bool paused) + { + foreach (Action cb in sPauseCallbackList) + { + try + { + cb(paused); + } + catch (Exception e) + { + Logger.e("Exception in OnApplicationPause:" + + e.Message + "\n" + e.StackTrace); + } + } + } + + /// + /// Adds a callback that is called when the Unity method OnApplicationFocus + /// is called. + /// + /// + /// Callback. + public static void AddFocusCallback(Action callback) + { + if (!sFocusCallbackList.Contains(callback)) + { + sFocusCallbackList.Add(callback); + } + } + + /// + /// Removes the callback from the list to call when handling OnApplicationFocus + /// is called. + /// + /// true, if focus callback was removed, false otherwise. + /// Callback. + public static bool RemoveFocusCallback(Action callback) + { + return sFocusCallbackList.Remove(callback); + } + + /// + /// Adds a callback that is called when the Unity method OnApplicationPause + /// is called. + /// + /// + /// Callback. + public static void AddPauseCallback(Action callback) + { + if (!sPauseCallbackList.Contains(callback)) + { + sPauseCallbackList.Add(callback); + } + } + + /// + /// Removes the callback from the list to call when handling OnApplicationPause + /// is called. + /// + /// true, if focus callback was removed, false otherwise. + /// Callback. + public static bool RemovePauseCallback(Action callback) + { + return sPauseCallbackList.Remove(callback); + } + } +} \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/PlayGamesHelperObject.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/PlayGamesHelperObject.cs.meta new file mode 100644 index 0000000..b4be3e6 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/OurUtils/PlayGamesHelperObject.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 7dd6f93ee6cb54945aea72a87542f720 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms.meta new file mode 100644 index 0000000..dd9d70b --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 58fac82a81a11415b99606841f6040a6 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android.meta new file mode 100644 index 0000000..a8981c4 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5c9032ae026414e1bbe872da53708edd +folderAsset: yes +timeCreated: 1441206393 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidClient.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidClient.cs new file mode 100644 index 0000000..c25d19a --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidClient.cs @@ -0,0 +1,1128 @@ +// +// Copyright (C) 2014 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID +#pragma warning disable 0642 // Possible mistaken empty statement + +namespace GooglePlayGames.Android +{ + using GooglePlayGames.BasicApi; + using GooglePlayGames.BasicApi.Events; + using GooglePlayGames.BasicApi.SavedGame; + using GooglePlayGames.OurUtils; + using System; + using System.Collections.Generic; + using System.Linq; + using UnityEngine; + using UnityEngine.SocialPlatforms; + + public class AndroidClient : IPlayGamesClient + { + private enum AuthState + { + Unauthenticated, + Authenticated + } + + private readonly object GameServicesLock = new object(); + private readonly object AuthStateLock = new object(); + private readonly static String PlayGamesSdkClassName = + "com.google.android.gms.games.PlayGamesSdk"; + + private volatile ISavedGameClient mSavedGameClient; + private volatile IEventsClient mEventsClient; + private volatile Player mUser = null; + private volatile AuthState mAuthState = AuthState.Unauthenticated; + private IUserProfile[] mFriends = new IUserProfile[0]; + private LoadFriendsStatus mLastLoadFriendsStatus = LoadFriendsStatus.Unknown; + + AndroidJavaClass mGamesClass = new AndroidJavaClass("com.google.android.gms.games.PlayGames"); + private static string TasksClassName = "com.google.android.gms.tasks.Tasks"; + + private AndroidJavaObject mFriendsResolutionException = null; + + private readonly int mLeaderboardMaxResults = 25; // can be from 1 to 25 + + private readonly int mFriendsMaxResults = 200; // the maximum load friends page size + + internal AndroidClient() + { + PlayGamesHelperObject.CreateObject(); + InitializeSdk(); + } + + private static void InitializeSdk() { + using (var playGamesSdkClass = new AndroidJavaClass(PlayGamesSdkClassName)) { + playGamesSdkClass.CallStatic("initialize", AndroidHelperFragment.GetActivity()); + } + } + + public void Authenticate(Action callback) + { + Authenticate( /* isAutoSignIn= */ true, callback); + } + + public void ManuallyAuthenticate(Action callback) + { + Authenticate( /* isAutoSignIn= */ false, callback); + } + + private void Authenticate(bool isAutoSignIn, Action callback) + { + callback = AsOnGameThreadCallback(callback); + lock (AuthStateLock) + { + // If the user is already authenticated, just fire the callback, we don't need + // any additional work. + if (mAuthState == AuthState.Authenticated) + { + OurUtils.Logger.d("Already authenticated."); + InvokeCallbackOnGameThread(callback, SignInStatus.Success); + return; + } + } + + string methodName = isAutoSignIn ? "isAuthenticated" : "signIn"; + + OurUtils.Logger.d("Starting Auth using the method " + methodName); + using (var client = getGamesSignInClient()) + using ( + var task = client.Call(methodName)) + { + AndroidTaskUtils.AddOnSuccessListener(task, authenticationResult => + { + bool isAuthenticated = authenticationResult.Call("isAuthenticated"); + SignInOnResult(isAuthenticated, callback); + }); + + AndroidTaskUtils.AddOnFailureListener(task, exception => + { + OurUtils.Logger.e("Authentication failed - " + exception.Call("toString")); + callback(SignInStatus.InternalError); + }); + } + } + + private void SignInOnResult(bool isAuthenticated, Action callback) + { + if (isAuthenticated) + { + using (var signInTasks = new AndroidJavaObject("java.util.ArrayList")) + { + AndroidJavaObject taskGetPlayer = + getPlayersClient().Call("getCurrentPlayer"); + signInTasks.Call("add", taskGetPlayer); + + using (var tasks = new AndroidJavaClass(TasksClassName)) + using (var allTask = tasks.CallStatic("whenAll", signInTasks)) + { + AndroidTaskUtils.AddOnCompleteListener( + allTask, + completeTask => + { + if (completeTask.Call("isSuccessful")) + { + using (var resultObject = taskGetPlayer.Call("getResult")) + { + mUser = AndroidJavaConverter.ToPlayer(resultObject); + } + + lock (GameServicesLock) + { + mSavedGameClient = new AndroidSavedGameClient(this); + mEventsClient = new AndroidEventsClient(); + } + + mAuthState = AuthState.Authenticated; + InvokeCallbackOnGameThread(callback, SignInStatus.Success); + OurUtils.Logger.d("Authentication succeeded"); + LoadAchievements(ignore => { }); + } + else + { + if (completeTask.Call("isCanceled")) + { + InvokeCallbackOnGameThread(callback, SignInStatus.Canceled); + return; + } + + using (var exception = completeTask.Call("getException")) + { + OurUtils.Logger.e( + "Authentication failed - " + exception.Call("toString")); + InvokeCallbackOnGameThread(callback, SignInStatus.InternalError); + } + } + } + ); + } + } + } + else + { + lock (AuthStateLock) + { + OurUtils.Logger.e("Returning an error code."); + InvokeCallbackOnGameThread(callback, SignInStatus.Canceled); + } + } + } + + public void RequestServerSideAccess(bool forceRefreshToken, Action callback) + { + callback = AsOnGameThreadCallback(callback); + + if (!GameInfo.WebClientIdInitialized()) + { + throw new InvalidOperationException("Requesting server side access requires web " + + "client id to be configured."); + } + + using (var client = getGamesSignInClient()) + using (var task = client.Call("requestServerSideAccess", + GameInfo.WebClientId, forceRefreshToken)) + { + AndroidTaskUtils.AddOnSuccessListener( + task, + authCode => callback(authCode) + ); + + AndroidTaskUtils.AddOnFailureListener(task, exception => + { + OurUtils.Logger.e("Requesting server side access task failed - " + + exception.Call("toString")); + callback(null); + }); + } + } + + public void RequestServerSideAccess(bool forceRefreshToken, List scopes, Action callback) + { + callback = AsOnGameThreadCallback(callback); + + if (!GameInfo.WebClientIdInitialized()) + { + throw new InvalidOperationException("Requesting server-side access requires a web client ID to be configured."); + } + + if (scopes == null) + { + throw new ArgumentException("At least one scope must be provided."); + } + + var javaScopesList = new AndroidJavaObject("java.util.ArrayList"); + + foreach (var scope in scopes) + { + javaScopesList.Call("add", getJavaScopeEnum(scope)); + } + + using (var client = getGamesSignInClient()) + using (var task = client.Call( + "requestServerSideAccess", + GameInfo.WebClientId, + forceRefreshToken, + javaScopesList)) + { + AndroidTaskUtils.AddOnSuccessListener(task, result => callback(ToAuthResponse(result))); + + AndroidTaskUtils.AddOnFailureListener(task, exception => + { + OurUtils.Logger.e("Requesting server-side access with scopes task failed - " + exception.Call("toString")); + callback(new AuthResponse(null, new List())); // Return empty response on failure + }); + } + } + + private AuthResponse ToAuthResponse(AndroidJavaObject result) + { + string authCode = result.Call("getAuthCode"); + var grantedScopesObject = result.Call("getGrantedScopes"); + + var grantedScopesList = new List(); + if (grantedScopesObject != null) + { + int size = grantedScopesObject.Call("size"); + for (int i = 0; i < size; i++) + { + var javaScopeEnum = grantedScopesObject.Call("get", i); + string javaScopeName = javaScopeEnum.Call("name"); + if (Enum.TryParse(javaScopeName, out AuthScope grantedScope)) + { + grantedScopesList.Add(grantedScope); + } + else + { + OurUtils.Logger.w($"Unrecognized scope {javaScopeName} returned from java side."); + } + } + } + AuthResponse authResponse = new AuthResponse(authCode, grantedScopesList); + return authResponse; + } + + private AndroidJavaObject getJavaScopeEnum(AuthScope scope) + { + String AuthScopeClassName = "com.google.android.gms.games.gamessignin.AuthScope"; + var javaAuthScopeClass = new AndroidJavaClass(AuthScopeClassName); + return javaAuthScopeClass.CallStatic("valueOf", scope.GetValue()); + } + + + public void RequestRecallAccessToken(Action callback) + { + callback = AsOnGameThreadCallback(callback); + using (var client = getRecallClient()) + using (var task = client.Call("requestRecallAccess")) + { + AndroidTaskUtils.AddOnSuccessListener( + task, + recallAccess => { + var sessionId = recallAccess.Call("getSessionId"); + callback(new RecallAccess(sessionId)); + } + ); + + AndroidTaskUtils.AddOnFailureListener(task, exception => + { + OurUtils.Logger.e("Requesting Recall access task failed - " + + exception.Call("toString")); + callback(null); + }); + } + } + + private static Action AsOnGameThreadCallback(Action callback) + { + if (callback == null) + { + return delegate { }; + } + + return result => InvokeCallbackOnGameThread(callback, result); + } + + private static void InvokeCallbackOnGameThread(Action callback) + { + if (callback == null) + { + return; + } + + PlayGamesHelperObject.RunOnGameThread(() => { callback(); }); + } + + private static void InvokeCallbackOnGameThread(Action callback, T data) + { + if (callback == null) + { + return; + } + + PlayGamesHelperObject.RunOnGameThread(() => { callback(data); }); + } + + + private static Action AsOnGameThreadCallback( + Action toInvokeOnGameThread) + { + return (result1, result2) => + { + if (toInvokeOnGameThread == null) + { + return; + } + + PlayGamesHelperObject.RunOnGameThread(() => toInvokeOnGameThread(result1, result2)); + }; + } + + private static void InvokeCallbackOnGameThread(Action callback, T1 t1, T2 t2) + { + if (callback == null) + { + return; + } + + PlayGamesHelperObject.RunOnGameThread(() => { callback(t1, t2); }); + } + + public bool IsAuthenticated() + { + lock (AuthStateLock) + { + return mAuthState == AuthState.Authenticated; + } + } + + public void LoadFriends(Action callback) + { + LoadAllFriends(mFriendsMaxResults, /* forceReload= */ false, /* loadMore= */ false, callback); + } + + private void LoadAllFriends(int pageSize, bool forceReload, bool loadMore, + Action callback) + { + LoadFriendsPaginated(pageSize, loadMore, forceReload, result => + { + mLastLoadFriendsStatus = result; + switch (result) + { + case LoadFriendsStatus.Completed: + InvokeCallbackOnGameThread(callback, true); + break; + case LoadFriendsStatus.LoadMore: + // There are more friends to load. + LoadAllFriends(pageSize, /* forceReload= */ false, /* loadMore= */ true, callback); + break; + case LoadFriendsStatus.ResolutionRequired: + case LoadFriendsStatus.InternalError: + case LoadFriendsStatus.NotAuthorized: + InvokeCallbackOnGameThread(callback, false); + break; + default: + GooglePlayGames.OurUtils.Logger.d("There was an error when loading friends." + result); + InvokeCallbackOnGameThread(callback, false); + break; + } + }); + } + + public void LoadFriends(int pageSize, bool forceReload, + Action callback) + { + LoadFriendsPaginated(pageSize, /* isLoadMore= */ false, /* forceReload= */ forceReload, + callback); + } + + public void LoadMoreFriends(int pageSize, Action callback) + { + LoadFriendsPaginated(pageSize, /* isLoadMore= */ true, /* forceReload= */ false, + callback); + } + + private void LoadFriendsPaginated(int pageSize, bool isLoadMore, bool forceReload, + Action callback) + { + mFriendsResolutionException = null; + using (var playersClient = getPlayersClient()) + using (var task = isLoadMore + ? playersClient.Call("loadMoreFriends", pageSize) + : playersClient.Call("loadFriends", pageSize, + forceReload)) + { + AndroidTaskUtils.AddOnSuccessListener( + task, annotatedData => + { + using (var playersBuffer = annotatedData.Call("get")) + { + AndroidJavaObject metadata = playersBuffer.Call("getMetadata"); + var areMoreFriendsToLoad = metadata != null && + metadata.Call("getString", + "next_page_token") != null; + mFriends = AndroidJavaConverter.playersBufferToArray(playersBuffer); + mLastLoadFriendsStatus = areMoreFriendsToLoad + ? LoadFriendsStatus.LoadMore + : LoadFriendsStatus.Completed; + InvokeCallbackOnGameThread(callback, mLastLoadFriendsStatus); + } + }); + AndroidTaskUtils.AddOnFailureListener(task, exception => + { + AndroidHelperFragment.IsResolutionRequired(exception, resolutionRequired => + { + if (resolutionRequired) + { + mFriendsResolutionException = + exception.Call("getResolution"); + mLastLoadFriendsStatus = LoadFriendsStatus.ResolutionRequired; + mFriends = new IUserProfile[0]; + InvokeCallbackOnGameThread(callback, LoadFriendsStatus.ResolutionRequired); + } + else + { + mFriendsResolutionException = null; + + if (IsApiException(exception)) + { + var statusCode = exception.Call("getStatusCode"); + if (statusCode == /* GamesClientStatusCodes.NETWORK_ERROR_NO_DATA */ 26504) + { + mLastLoadFriendsStatus = LoadFriendsStatus.NetworkError; + InvokeCallbackOnGameThread(callback, LoadFriendsStatus.NetworkError); + return; + } + } + + mLastLoadFriendsStatus = LoadFriendsStatus.InternalError; + OurUtils.Logger.e("LoadFriends failed: " + + exception.Call("toString")); + InvokeCallbackOnGameThread(callback, LoadFriendsStatus.InternalError); + } + }); + return; + }); + } + } + + private static bool IsApiException(AndroidJavaObject exception) { + var exceptionClassName = exception.Call("getClass") + .Call("getName"); + return exceptionClassName == "com.google.android.gms.common.api.ApiException"; + } + + public LoadFriendsStatus GetLastLoadFriendsStatus() + { + return mLastLoadFriendsStatus; + } + + public void AskForLoadFriendsResolution(Action callback) + { + if (mFriendsResolutionException == null) + { + GooglePlayGames.OurUtils.Logger.d("The developer asked for access to the friends " + + "list but there is no intent to trigger the UI. This may be because the user " + + "has granted access already or the game has not called loadFriends() before."); + using (var playersClient = getPlayersClient()) + using ( + var task = playersClient.Call("loadFriends", /* pageSize= */ 1, + /* forceReload= */ false)) + { + AndroidTaskUtils.AddOnSuccessListener( + task, annotatedData => { InvokeCallbackOnGameThread(callback, UIStatus.Valid); }); + AndroidTaskUtils.AddOnFailureListener(task, exception => + { + AndroidHelperFragment.IsResolutionRequired(exception, resolutionRequired => + { + if (resolutionRequired) + { + mFriendsResolutionException = + exception.Call("getResolution"); + AndroidHelperFragment.AskForLoadFriendsResolution( + mFriendsResolutionException, AsOnGameThreadCallback(callback)); + return; + } + + if (IsApiException(exception)) + { + var statusCode = exception.Call("getStatusCode"); + if (statusCode == + /* GamesClientStatusCodes.NETWORK_ERROR_NO_DATA */ 26504) + { + InvokeCallbackOnGameThread(callback, UIStatus.NetworkError); + return; + } + } + + OurUtils.Logger.e("LoadFriends failed: " + + exception.Call("toString")); + InvokeCallbackOnGameThread(callback, UIStatus.InternalError); + }); + }); + } + } + else + { + AndroidHelperFragment.AskForLoadFriendsResolution(mFriendsResolutionException, + AsOnGameThreadCallback(callback)); + } + } + + public void ShowCompareProfileWithAlternativeNameHintsUI(string playerId, + string otherPlayerInGameName, + string currentPlayerInGameName, + Action callback) + { + AndroidHelperFragment.ShowCompareProfileWithAlternativeNameHintsUI( + playerId, otherPlayerInGameName, currentPlayerInGameName, + AsOnGameThreadCallback(callback)); + } + + public void GetFriendsListVisibility(bool forceReload, + Action callback) + { + using (var playersClient = getPlayersClient()) + using ( + var task = playersClient.Call("getCurrentPlayer", forceReload)) + { + AndroidTaskUtils.AddOnSuccessListener(task, annotatedData => + { + AndroidJavaObject currentPlayerInfo = + annotatedData.Call("get").Call( + "getCurrentPlayerInfo"); + int playerListVisibility = + currentPlayerInfo.Call("getFriendsListVisibilityStatus"); + InvokeCallbackOnGameThread(callback, + AndroidJavaConverter.ToFriendsListVisibilityStatus(playerListVisibility)); + }); + AndroidTaskUtils.AddOnFailureListener(task, exception => + { + InvokeCallbackOnGameThread(callback, FriendsListVisibilityStatus.NetworkError); + return; + }); + } + } + + public IUserProfile[] GetFriends() + { + return mFriends; + } + + public string GetUserId() + { + if (mUser == null) + { + return null; + } + + return mUser.id; + } + + public string GetUserDisplayName() + { + if (mUser == null) + { + return null; + } + + return mUser.userName; + } + + public string GetUserImageUrl() + { + if (mUser == null) + { + return null; + } + + return mUser.AvatarURL; + } + + public void GetPlayerStats(Action callback) + { + using (var playerStatsClient = getPlayerStatsClient()) + using (var task = playerStatsClient.Call("loadPlayerStats", /* forceReload= */ false)) + { + AndroidTaskUtils.AddOnSuccessListener( + task, + annotatedData => + { + using (var playerStatsJava = annotatedData.Call("get")) + { + int numberOfPurchases = playerStatsJava.Call("getNumberOfPurchases"); + float avgSessionLength = playerStatsJava.Call("getAverageSessionLength"); + int daysSinceLastPlayed = playerStatsJava.Call("getDaysSinceLastPlayed"); + int numberOfSessions = playerStatsJava.Call("getNumberOfSessions"); + float sessionPercentile = playerStatsJava.Call("getSessionPercentile"); + float spendPercentile = playerStatsJava.Call("getSpendPercentile"); + float spendProbability = playerStatsJava.Call("getSpendProbability"); + float churnProbability = playerStatsJava.Call("getChurnProbability"); + float highSpenderProbability = playerStatsJava.Call("getHighSpenderProbability"); + float totalSpendNext28Days = playerStatsJava.Call("getTotalSpendNext28Days"); + + PlayerStats result = new PlayerStats( + numberOfPurchases, + avgSessionLength, + daysSinceLastPlayed, + numberOfSessions, + sessionPercentile, + spendPercentile, + spendProbability, + churnProbability, + highSpenderProbability, + totalSpendNext28Days); + + InvokeCallbackOnGameThread(callback, CommonStatusCodes.Success, result); + } + }); + + AndroidTaskUtils.AddOnFailureListener(task, exception => + { + OurUtils.Logger.e("GetPlayerStats failed: " + exception.Call("toString")); + var statusCode = IsAuthenticated() + ? CommonStatusCodes.InternalError + : CommonStatusCodes.SignInRequired; + InvokeCallbackOnGameThread(callback, statusCode, new PlayerStats()); + }); + } + } + + public void LoadUsers(string[] userIds, Action callback) + { + if (!IsAuthenticated()) + { + InvokeCallbackOnGameThread(callback, new IUserProfile[0]); + return; + } + + using (var playersClient = getPlayersClient()) + { + object countLock = new object(); + int count = userIds.Length; + int resultCount = 0; + IUserProfile[] users = new IUserProfile[count]; + for (int i = 0; i < count; ++i) + { + using (var task = playersClient.Call("loadPlayer", userIds[i])) + { + AndroidTaskUtils.AddOnSuccessListener( + task, + annotatedData => + { + using (var player = annotatedData.Call("get")) + { + string playerId = player.Call("getPlayerId"); + for (int j = 0; j < count; ++j) + { + if (playerId == userIds[j]) + { + users[j] = AndroidJavaConverter.ToPlayer(player); + break; + } + } + + lock (countLock) + { + ++resultCount; + if (resultCount == count) + { + InvokeCallbackOnGameThread(callback, users); + } + } + } + }); + + AndroidTaskUtils.AddOnFailureListener(task, exception => + { + OurUtils.Logger.e("LoadUsers failed for index " + i + + " with: " + exception.Call("toString")); + lock (countLock) + { + ++resultCount; + if (resultCount == count) + { + InvokeCallbackOnGameThread(callback, users); + } + } + }); + } + } + } + } + + public void LoadAchievements(Action callback) + { + using (var achievementsClient = getAchievementsClient()) + using (var task = achievementsClient.Call("load", /* forceReload= */ false)) + { + AndroidTaskUtils.AddOnSuccessListener( + task, + annotatedData => + { + using (var achievementBuffer = annotatedData.Call("get")) + { + int count = achievementBuffer.Call("getCount"); + Achievement[] result = new Achievement[count]; + for (int i = 0; i < count; ++i) + { + Achievement achievement = new Achievement(); + using (var javaAchievement = achievementBuffer.Call("get", i)) + { + achievement.Id = javaAchievement.Call("getAchievementId"); + achievement.Description = javaAchievement.Call("getDescription"); + achievement.Name = javaAchievement.Call("getName"); + achievement.Points = javaAchievement.Call("getXpValue"); + + long timestamp = javaAchievement.Call("getLastUpdatedTimestamp"); + achievement.LastModifiedTime = AndroidJavaConverter.ToDateTime(timestamp); + + achievement.RevealedImageUrl = javaAchievement.Call("getRevealedImageUrl"); + achievement.UnlockedImageUrl = javaAchievement.Call("getUnlockedImageUrl"); + achievement.IsIncremental = + javaAchievement.Call("getType") == 1 /* TYPE_INCREMENTAL */; + if (achievement.IsIncremental) + { + achievement.CurrentSteps = javaAchievement.Call("getCurrentSteps"); + achievement.TotalSteps = javaAchievement.Call("getTotalSteps"); + } + + int state = javaAchievement.Call("getState"); + achievement.IsUnlocked = state == 0 /* STATE_UNLOCKED */; + achievement.IsRevealed = state == 1 /* STATE_REVEALED */; + } + + result[i] = achievement; + } + + achievementBuffer.Call("release"); + InvokeCallbackOnGameThread(callback, result); + } + }); + + AndroidTaskUtils.AddOnFailureListener(task, exception => + { + OurUtils.Logger.e("LoadAchievements failed: " + exception.Call("toString")); + InvokeCallbackOnGameThread(callback, new Achievement[0]); + }); + } + } + + public void UnlockAchievement(string achId, Action callback) + { + if (!IsAuthenticated()) + { + InvokeCallbackOnGameThread(callback, false); + return; + } + + using (var achievementsClient = getAchievementsClient()) + { + achievementsClient.Call("unlock", achId); + InvokeCallbackOnGameThread(callback, true); + } + } + + public void RevealAchievement(string achId, Action callback) + { + if (!IsAuthenticated()) + { + InvokeCallbackOnGameThread(callback, false); + return; + } + + using (var achievementsClient = getAchievementsClient()) + { + achievementsClient.Call("reveal", achId); + InvokeCallbackOnGameThread(callback, true); + } + } + + public void IncrementAchievement(string achId, int steps, Action callback) + { + if (!IsAuthenticated()) + { + InvokeCallbackOnGameThread(callback, false); + return; + } + + using (var achievementsClient = getAchievementsClient()) + { + achievementsClient.Call("increment", achId, steps); + InvokeCallbackOnGameThread(callback, true); + } + } + + public void SetStepsAtLeast(string achId, int steps, Action callback) + { + if (!IsAuthenticated()) + { + InvokeCallbackOnGameThread(callback, false); + return; + } + + using (var achievementsClient = getAchievementsClient()) + { + achievementsClient.Call("setSteps", achId, steps); + InvokeCallbackOnGameThread(callback, true); + } + } + + public void ShowAchievementsUI(Action callback) + { + if (!IsAuthenticated()) + { + InvokeCallbackOnGameThread(callback, UIStatus.NotAuthorized); + return; + } + + AndroidHelperFragment.ShowAchievementsUI(AsOnGameThreadCallback(callback)); + } + + public int LeaderboardMaxResults() + { + return mLeaderboardMaxResults; + } + + public void ShowLeaderboardUI(string leaderboardId, LeaderboardTimeSpan span, Action callback) + { + if (!IsAuthenticated()) + { + InvokeCallbackOnGameThread(callback, UIStatus.NotAuthorized); + return; + } + + if (leaderboardId == null) + { + AndroidHelperFragment.ShowAllLeaderboardsUI(AsOnGameThreadCallback(callback)); + } + else + { + AndroidHelperFragment.ShowLeaderboardUI(leaderboardId, span, + AsOnGameThreadCallback(callback)); + } + } + + public void LoadScores(string leaderboardId, LeaderboardStart start, + int rowCount, LeaderboardCollection collection, + LeaderboardTimeSpan timeSpan, + Action callback) + { + using (var client = getLeaderboardsClient()) + { + string loadScoresMethod = + start == LeaderboardStart.TopScores ? "loadTopScores" : "loadPlayerCenteredScores"; + using (var task = client.Call( + loadScoresMethod, + leaderboardId, + AndroidJavaConverter.ToLeaderboardVariantTimeSpan(timeSpan), + AndroidJavaConverter.ToLeaderboardVariantCollection(collection), + rowCount)) + { + AndroidTaskUtils.AddOnSuccessListener( + task, + annotatedData => + { + using (var leaderboardScores = annotatedData.Call("get")) + { + InvokeCallbackOnGameThread(callback, CreateLeaderboardScoreData( + leaderboardId, + collection, + timeSpan, + annotatedData.Call("isStale") + ? ResponseStatus.SuccessWithStale + : ResponseStatus.Success, + leaderboardScores)); + leaderboardScores.Call("release"); + } + }); + + AndroidTaskUtils.AddOnFailureListener(task, exception => + { + AndroidHelperFragment.IsResolutionRequired( + exception, resolutionRequired => + { + if (resolutionRequired) + { + mFriendsResolutionException = exception.Call( + "getResolution"); + InvokeCallbackOnGameThread( + callback, new LeaderboardScoreData(leaderboardId, + ResponseStatus.ResolutionRequired)); + } + else + { + mFriendsResolutionException = null; + } + }); + OurUtils.Logger.e("LoadScores failed: " + exception.Call("toString")); + InvokeCallbackOnGameThread( + callback, new LeaderboardScoreData(leaderboardId, + ResponseStatus.InternalError)); + }); + } + } + } + + public void LoadMoreScores(ScorePageToken token, int rowCount, + Action callback) + { + using (var client = getLeaderboardsClient()) + using (var task = client.Call("loadMoreScores", + token.InternalObject, rowCount, AndroidJavaConverter.ToPageDirection(token.Direction))) + { + AndroidTaskUtils.AddOnSuccessListener( + task, + annotatedData => + { + using (var leaderboardScores = annotatedData.Call("get")) + { + InvokeCallbackOnGameThread(callback, CreateLeaderboardScoreData( + token.LeaderboardId, + token.Collection, + token.TimeSpan, + annotatedData.Call("isStale") + ? ResponseStatus.SuccessWithStale + : ResponseStatus.Success, + leaderboardScores)); + leaderboardScores.Call("release"); + } + }); + + AndroidTaskUtils.AddOnFailureListener(task, exception => + { + AndroidHelperFragment.IsResolutionRequired(exception, resolutionRequired => + { + if (resolutionRequired) + { + mFriendsResolutionException = + exception.Call("getResolution"); + InvokeCallbackOnGameThread( + callback, new LeaderboardScoreData(token.LeaderboardId, + ResponseStatus.ResolutionRequired)); + } + else + { + mFriendsResolutionException = null; + } + }); + OurUtils.Logger.e("LoadMoreScores failed: " + exception.Call("toString")); + InvokeCallbackOnGameThread( + callback, new LeaderboardScoreData(token.LeaderboardId, + ResponseStatus.InternalError)); + }); + } + } + + private LeaderboardScoreData CreateLeaderboardScoreData( + string leaderboardId, + LeaderboardCollection collection, + LeaderboardTimeSpan timespan, + ResponseStatus status, + AndroidJavaObject leaderboardScoresJava) + { + LeaderboardScoreData leaderboardScoreData = new LeaderboardScoreData(leaderboardId, status); + var scoresBuffer = leaderboardScoresJava.Call("getScores"); + int count = scoresBuffer.Call("getCount"); + for (int i = 0; i < count; ++i) + { + using (var leaderboardScore = scoresBuffer.Call("get", i)) + { + long timestamp = leaderboardScore.Call("getTimestampMillis"); + System.DateTime date = AndroidJavaConverter.ToDateTime(timestamp); + + ulong rank = (ulong) leaderboardScore.Call("getRank"); + string scoreHolderId = ""; + using (var scoreHolder = leaderboardScore.Call("getScoreHolder")) + { + scoreHolderId = scoreHolder.Call("getPlayerId"); + } + + ulong score = (ulong) leaderboardScore.Call("getRawScore"); + string metadata = leaderboardScore.Call("getScoreTag"); + + leaderboardScoreData.AddScore(new PlayGamesScore(date, leaderboardId, + rank, scoreHolderId, score, metadata)); + } + } + + leaderboardScoreData.NextPageToken = new ScorePageToken(scoresBuffer, leaderboardId, collection, + timespan, ScorePageDirection.Forward); + leaderboardScoreData.PrevPageToken = new ScorePageToken(scoresBuffer, leaderboardId, collection, + timespan, ScorePageDirection.Backward); + + using (var leaderboard = leaderboardScoresJava.Call("getLeaderboard")) + using (var variants = leaderboard.Call("getVariants")) + using (var variant = variants.Call("get", 0)) + { + leaderboardScoreData.Title = leaderboard.Call("getDisplayName"); + if (variant.Call("hasPlayerInfo")) + { + System.DateTime date = AndroidJavaConverter.ToDateTime(0); + ulong rank = (ulong) variant.Call("getPlayerRank"); + ulong score = (ulong) variant.Call("getRawPlayerScore"); + string metadata = variant.Call("getPlayerScoreTag"); + leaderboardScoreData.PlayerScore = new PlayGamesScore(date, leaderboardId, + rank, mUser.id, score, metadata); + } + + leaderboardScoreData.ApproximateCount = (ulong) variant.Call("getNumScores"); + } + + return leaderboardScoreData; + } + + public void SubmitScore(string leaderboardId, long score, Action callback) + { + if (!IsAuthenticated()) + { + InvokeCallbackOnGameThread(callback, false); + } + + using (var client = getLeaderboardsClient()) + { + client.Call("submitScore", leaderboardId, score); + InvokeCallbackOnGameThread(callback, true); + } + } + + public void SubmitScore(string leaderboardId, long score, string metadata, + Action callback) + { + if (!IsAuthenticated()) + { + InvokeCallbackOnGameThread(callback, false); + } + + using (var client = getLeaderboardsClient()) + { + client.Call("submitScore", leaderboardId, score, metadata); + InvokeCallbackOnGameThread(callback, true); + } + } + + public ISavedGameClient GetSavedGameClient() + { + lock (GameServicesLock) + { + return mSavedGameClient; + } + } + + public IEventsClient GetEventsClient() + { + lock (GameServicesLock) + { + return mEventsClient; + } + } + + private AndroidJavaObject getAchievementsClient() + { + return mGamesClass.CallStatic("getAchievementsClient", + AndroidHelperFragment.GetActivity()); + } + + private AndroidJavaObject getPlayersClient() + { + return mGamesClass.CallStatic("getPlayersClient", AndroidHelperFragment.GetActivity()); + } + + private AndroidJavaObject getLeaderboardsClient() + { + return mGamesClass.CallStatic("getLeaderboardsClient", + AndroidHelperFragment.GetActivity()); + } + + private AndroidJavaObject getPlayerStatsClient() + { + return mGamesClass.CallStatic("getPlayerStatsClient", + AndroidHelperFragment.GetActivity()); + } + + private AndroidJavaObject getGamesSignInClient() + { + return mGamesClass.CallStatic("getGamesSignInClient", + AndroidHelperFragment.GetActivity()); + } + + private AndroidJavaObject getRecallClient() + { + return mGamesClass.CallStatic("getRecallClient", + AndroidHelperFragment.GetActivity()); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidClient.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidClient.cs.meta new file mode 100644 index 0000000..bc55a0a --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidClient.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 32e99ad5da22248a28a9ca51282b121f +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidEventsClient.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidEventsClient.cs new file mode 100644 index 0000000..799205d --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidEventsClient.cs @@ -0,0 +1,136 @@ +#if UNITY_ANDROID +namespace GooglePlayGames.Android +{ + using System; + using System.Collections.Generic; + using GooglePlayGames.BasicApi; + using GooglePlayGames.BasicApi.Events; + using GooglePlayGames.OurUtils; + using UnityEngine; + internal class AndroidEventsClient : IEventsClient + { + private volatile AndroidJavaObject mEventsClient; + + public AndroidEventsClient() + { + using (var gamesClass = new AndroidJavaClass("com.google.android.gms.games.PlayGames")) + { + mEventsClient = gamesClass.CallStatic("getEventsClient", + AndroidHelperFragment.GetActivity()); + } + } + + public void FetchAllEvents(DataSource source, Action> callback) + { + callback = ToOnGameThread(callback); + using (var task = + mEventsClient.Call("load", source == DataSource.ReadNetworkOnly ? true : false)) + { + AndroidTaskUtils.AddOnSuccessListener( + task, + annotatedData => + { + using (var buffer = annotatedData.Call("get")) + { + int count = buffer.Call("getCount"); + List result = new List(); + for (int i = 0; i < count; ++i) + { + using (var eventJava = buffer.Call("get", i)) + { + result.Add(CreateEvent(eventJava)); + } + } + buffer.Call("release"); + callback.Invoke( + annotatedData.Call("isStale") + ? ResponseStatus.SuccessWithStale + : ResponseStatus.Success, + result + ); + } + }); + AndroidTaskUtils.AddOnFailureListener( + task, + exception => + { + Debug.Log("FetchAllEvents failed"); + callback.Invoke(ResponseStatus.InternalError, null); + }); + } + } + + public void FetchEvent(DataSource source, string eventId, Action callback) + { + callback = ToOnGameThread(callback); + string[] ids = new string[1]; + ids[0] = eventId; + using (var task = mEventsClient.Call("loadByIds", + source == DataSource.ReadNetworkOnly ? true : false, ids)) + { + AndroidTaskUtils.AddOnSuccessListener( + task, + annotatedData => + { + using (var buffer = annotatedData.Call("get")) + { + int count = buffer.Call("getCount"); + if (count > 0) + { + using (var eventJava = buffer.Call("get", 0)) + { + callback.Invoke( + annotatedData.Call("isStale") + ? ResponseStatus.SuccessWithStale + : ResponseStatus.Success, + CreateEvent(eventJava) + ); + } + } + else + { + callback.Invoke( + annotatedData.Call("isStale") + ? ResponseStatus.SuccessWithStale + : ResponseStatus.Success, + null + ); + } + buffer.Call("release"); + } + }); + AndroidTaskUtils.AddOnFailureListener( + task, + exception => + { + Debug.Log("FetchEvent failed"); + callback.Invoke(ResponseStatus.InternalError, null); + }); + } + } + + public void IncrementEvent(string eventId, uint stepsToIncrement) + { + mEventsClient.Call("increment", eventId, (int) stepsToIncrement); + } + + private static Action ToOnGameThread(Action toConvert) + { + return (val1, val2) => PlayGamesHelperObject.RunOnGameThread(() => toConvert(val1, val2)); + } + + private static BasicApi.Events.Event CreateEvent(AndroidJavaObject eventJava) + { + string id = eventJava.Call("getEventId"); + string name = eventJava.Call("getName"); + string description = eventJava.Call("getDescription"); + string imageUrl = eventJava.Call("getIconImageUrl"); + ulong currentCount = (ulong) eventJava.Call("getValue"); + EventVisibility visibility = eventJava.Call("isVisible") + ? EventVisibility.Revealed + : EventVisibility.Hidden; + return new BasicApi.Events.Event(id, name, description, imageUrl, currentCount, visibility); + } + } +} +#endif diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidEventsClient.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidEventsClient.cs.meta new file mode 100644 index 0000000..96e8524 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidEventsClient.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 311e1761661a341bebebd422a144b5e8 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidHelperFragment.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidHelperFragment.cs new file mode 100644 index 0000000..4b770e1 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidHelperFragment.cs @@ -0,0 +1,223 @@ +// +// Copyright (C) 2015 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID +namespace GooglePlayGames.Android +{ + using GooglePlayGames.BasicApi; + using GooglePlayGames.BasicApi.SavedGame; + using OurUtils; + using UnityEngine; + using System; + using System.Collections.Generic; + + internal class AndroidHelperFragment + { + private const string HelperFragmentClass = "com.google.games.bridge.HelperFragment"; + + public static AndroidJavaObject GetActivity() + { + using (var jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) + { + return jc.GetStatic("currentActivity"); + } + } + + public static AndroidJavaObject GetDefaultPopupView() + { + using (var helperFragment = new AndroidJavaClass(HelperFragmentClass)) + using (var activity = AndroidHelperFragment.GetActivity()) + { + return helperFragment.CallStatic("getDecorView", activity); + } + } + + public static void ShowAchievementsUI(Action cb) + { + using (var helperFragment = new AndroidJavaClass(HelperFragmentClass)) + using (var task = + helperFragment.CallStatic("showAchievementUi", AndroidHelperFragment.GetActivity())) + { + AndroidTaskUtils.AddOnSuccessListener( + task, + uiCode => + { + OurUtils.Logger.d("ShowAchievementsUI result " + uiCode); + cb.Invoke((UIStatus) uiCode); + }); + + AndroidTaskUtils.AddOnFailureListener( + task, + exception => + { + OurUtils.Logger.e("ShowAchievementsUI failed with exception"); + cb.Invoke(UIStatus.InternalError); + }); + } + } + + public static void ShowCaptureOverlayUI() + { + using (var helperFragment = new AndroidJavaClass(HelperFragmentClass)) + { + helperFragment.CallStatic("showCaptureOverlayUi", AndroidHelperFragment.GetActivity()); + } + } + + public static void ShowAllLeaderboardsUI(Action cb) + { + using (var helperFragment = new AndroidJavaClass(HelperFragmentClass)) + using (var task = + helperFragment.CallStatic("showAllLeaderboardsUi", + AndroidHelperFragment.GetActivity())) + { + AndroidTaskUtils.AddOnSuccessListener( + task, + uiCode => + { + OurUtils.Logger.d("ShowAllLeaderboardsUI result " + uiCode); + cb.Invoke((UIStatus) uiCode); + }); + + AndroidTaskUtils.AddOnFailureListener( + task, + exception => + { + OurUtils.Logger.e("ShowAllLeaderboardsUI failed with exception"); + cb.Invoke(UIStatus.InternalError); + }); + } + } + + public static void ShowLeaderboardUI(string leaderboardId, LeaderboardTimeSpan timeSpan, Action cb) + { + using (var helperFragment = new AndroidJavaClass(HelperFragmentClass)) + using (var task = helperFragment.CallStatic("showLeaderboardUi", + AndroidHelperFragment.GetActivity(), leaderboardId, + AndroidJavaConverter.ToLeaderboardVariantTimeSpan(timeSpan))) + { + AndroidTaskUtils.AddOnSuccessListener( + task, + uiCode => + { + OurUtils.Logger.d("ShowLeaderboardUI result " + uiCode); + cb.Invoke((UIStatus) uiCode); + }); + + AndroidTaskUtils.AddOnFailureListener( + task, + exception => + { + OurUtils.Logger.e("ShowLeaderboardUI failed with exception"); + cb.Invoke(UIStatus.InternalError); + }); + } + } + + public static void ShowCompareProfileWithAlternativeNameHintsUI( + string playerId, string otherPlayerInGameName, string currentPlayerInGameName, + Action cb) + { + using (var helperFragment = new AndroidJavaClass(HelperFragmentClass)) + using ( + var task = helperFragment.CallStatic( + "showCompareProfileWithAlternativeNameHintsUI", + AndroidHelperFragment.GetActivity(), playerId, otherPlayerInGameName, + currentPlayerInGameName)) + { + AndroidTaskUtils.AddOnSuccessListener(task, uiCode => + { + OurUtils.Logger.d("ShowCompareProfileWithAlternativeNameHintsUI result " + uiCode); + cb.Invoke((UIStatus) uiCode); + }); + AndroidTaskUtils.AddOnFailureListener(task, exception => + { + OurUtils.Logger.e("ShowCompareProfileWithAlternativeNameHintsUI failed with exception"); + cb.Invoke(UIStatus.InternalError); + }); + } + } + + public static void IsResolutionRequired( + AndroidJavaObject friendsSharingConsentException, Action cb) + { + using (var helperFragment = new AndroidJavaClass(HelperFragmentClass)) + { + var isResolutionRequired = helperFragment.CallStatic( + "isResolutionRequired", friendsSharingConsentException); + cb.Invoke(isResolutionRequired); + } + } + + public static void AskForLoadFriendsResolution( + AndroidJavaObject friendsSharingConsentException, Action cb) + { + using (var helperFragment = new AndroidJavaClass(HelperFragmentClass)) + using ( + var task = helperFragment.CallStatic( + "askForLoadFriendsResolution", AndroidHelperFragment.GetActivity(), + friendsSharingConsentException)) + { + AndroidTaskUtils.AddOnSuccessListener(task, uiCode => + { + OurUtils.Logger.d("AskForLoadFriendsResolution result " + uiCode); + cb.Invoke((UIStatus) uiCode); + }); + + AndroidTaskUtils.AddOnFailureListener(task, exception => + { + OurUtils.Logger.e("AskForLoadFriendsResolution failed with exception"); + cb.Invoke(UIStatus.InternalError); + }); + } + } + + public static void ShowSelectSnapshotUI(bool showCreateSaveUI, bool showDeleteSaveUI, + int maxDisplayedSavedGames, string uiTitle, Action cb) + { + using (var helperFragment = new AndroidJavaClass(HelperFragmentClass)) + using (var task = helperFragment.CallStatic("showSelectSnapshotUi", + AndroidHelperFragment.GetActivity(), uiTitle, showCreateSaveUI, showDeleteSaveUI, + maxDisplayedSavedGames)) + { + AndroidTaskUtils.AddOnSuccessListener( + task, + result => + { + SelectUIStatus status = (SelectUIStatus) result.Get("status"); + OurUtils.Logger.d("ShowSelectSnapshotUI result " + status); + + AndroidJavaObject javaMetadata = result.Get("metadata"); + AndroidSnapshotMetadata metadata = + javaMetadata == null + ? null + : new AndroidSnapshotMetadata(javaMetadata, /* contents= */null); + + cb.Invoke(status, metadata); + }); + + AndroidTaskUtils.AddOnFailureListener( + task, + exception => + { + OurUtils.Logger.e("ShowSelectSnapshotUI failed with exception"); + cb.Invoke(SelectUIStatus.InternalError, null); + }); + } + } + } +} +#endif diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidHelperFragment.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidHelperFragment.cs.meta new file mode 100644 index 0000000..74a1dc1 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidHelperFragment.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 6eb353a6ffa554bacb374cfaf0cc45e7 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidJavaConverter.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidJavaConverter.cs new file mode 100644 index 0000000..f4bd067 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidJavaConverter.cs @@ -0,0 +1,165 @@ +// +// Copyright (C) 2015 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID +namespace GooglePlayGames.Android +{ + using GooglePlayGames.BasicApi; + using GooglePlayGames.BasicApi.SavedGame; + using OurUtils; + using UnityEngine; + using UnityEngine.SocialPlatforms; + using System; + using System.Collections.Generic; + + internal class AndroidJavaConverter + { + internal static System.DateTime ToDateTime(long milliseconds) + { + System.DateTime result = new System.DateTime(1970, 1, 1, 0, 0, 0, 0); + return result.AddMilliseconds(milliseconds); + } + + // Convert to LeaderboardVariant.java#TimeSpan + internal static int ToLeaderboardVariantTimeSpan(LeaderboardTimeSpan span) + { + switch (span) + { + case LeaderboardTimeSpan.Daily: + return 0 /* TIME_SPAN_DAILY */; + case LeaderboardTimeSpan.Weekly: + return 1 /* TIME_SPAN_WEEKLY */; + case LeaderboardTimeSpan.AllTime: + default: + return 2 /* TIME_SPAN_ALL_TIME */; + } + } + + // Convert to LeaderboardVariant.java#Collection + internal static int ToLeaderboardVariantCollection(LeaderboardCollection collection) + { + switch (collection) + { + case LeaderboardCollection.Social: + return 3 /* COLLECTION_FRIENDS */; + case LeaderboardCollection.Public: + default: + return 0 /* COLLECTION_PUBLIC */; + } + } + + // Convert to PageDirection.java#Direction + internal static int ToPageDirection(ScorePageDirection direction) + { + switch (direction) + { + case ScorePageDirection.Forward: + return 0 /* NEXT */; + case ScorePageDirection.Backward: + return 1 /* PREV */; + default: + return -1 /* NONE */; + } + } + + internal static Player ToPlayer(AndroidJavaObject player) + { + if (player == null) + { + return null; + } + + string displayName = player.Call("getDisplayName"); + string playerId = player.Call("getPlayerId"); + string avatarUrl = player.Call("getIconImageUrl"); + return new Player(displayName, playerId, avatarUrl); + } + + internal static PlayerProfile ToPlayerProfile(AndroidJavaObject player) { + if (player == null) { + return null; + } + + string displayName = player.Call("getDisplayName"); + string playerId = player.Call("getPlayerId"); + string avatarUrl = player.Call("getIconImageUrl"); + bool isFriend = + player.Call("getRelationshipInfo").Call("getFriendStatus") == + 4 /* PlayerFriendStatus.Friend*/; + return new PlayerProfile(displayName, playerId, avatarUrl, isFriend); + } + + internal static List ToStringList(AndroidJavaObject stringList) + { + if (stringList == null) + { + return new List(); + } + + int size = stringList.Call("size"); + List converted = new List(size); + + for (int i = 0; i < size; i++) + { + converted.Add(stringList.Call("get", i)); + } + + return converted; + } + + // from C#: List to Java: ArrayList + internal static AndroidJavaObject ToJavaStringList(List list) + { + AndroidJavaObject converted = new AndroidJavaObject("java.util.ArrayList"); + for (int i = 0; i < list.Count; i++) + { + converted.Call("add", list[i]); + } + + return converted; + } + + internal static FriendsListVisibilityStatus ToFriendsListVisibilityStatus(int playerListVisibility) { + switch (playerListVisibility) + { + case /* FriendsListVisibilityStatus.UNKNOWN */ 0: + return FriendsListVisibilityStatus.Unknown; + case /* FriendsListVisibilityStatus.VISIBLE */ 1: + return FriendsListVisibilityStatus.Visible; + case /* FriendsListVisibilityStatus.REQUEST_REQUIRED */ 2: + return FriendsListVisibilityStatus.ResolutionRequired; + case /* FriendsListVisibilityStatus.FEATURE_UNAVAILABLE */ 3: + return FriendsListVisibilityStatus.Unavailable; + default: + return FriendsListVisibilityStatus.Unknown; + } + } + + internal static IUserProfile[] playersBufferToArray(AndroidJavaObject playersBuffer) { + int count = playersBuffer.Call("getCount"); + IUserProfile[] users = new IUserProfile[count]; + for (int i = 0; i < count; ++i) { + using (var player = playersBuffer.Call("get", i)) { + users[i] = AndroidJavaConverter.ToPlayerProfile(player); + } + } + + playersBuffer.Call("release"); + return users; + } + } +} +#endif diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidJavaConverter.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidJavaConverter.cs.meta new file mode 100644 index 0000000..6c15f8b --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidJavaConverter.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: d498c17d61b504b4f984a99b4542d02f +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidNearbyConnectionClient.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidNearbyConnectionClient.cs new file mode 100644 index 0000000..654488c --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidNearbyConnectionClient.cs @@ -0,0 +1,443 @@ +#if UNITY_ANDROID +#pragma warning disable 0642 // Possible mistaken empty statement + +namespace GooglePlayGames.Android +{ + using System; + using System.Collections.Generic; + using GooglePlayGames.BasicApi; + using GooglePlayGames.BasicApi.Nearby; + using GooglePlayGames.OurUtils; + using UnityEngine; + + public class AndroidNearbyConnectionClient : INearbyConnectionClient + { + private volatile AndroidJavaObject mClient; + private readonly static long NearbyClientId = 0L; + private readonly static int ApplicationInfoFlags = 0x00000080; + private readonly static string ServiceId = ReadServiceId(); + protected IMessageListener mAdvertisingMessageListener; + + public AndroidNearbyConnectionClient() + { + PlayGamesHelperObject.CreateObject(); + NearbyHelperObject.CreateObject(this); + using (var nearbyClass = new AndroidJavaClass("com.google.android.gms.nearby.Nearby")) + { + mClient = nearbyClass.CallStatic("getConnectionsClient", + AndroidHelperFragment.GetActivity()); + } + } + + public int MaxUnreliableMessagePayloadLength() + { + return NearbyConnectionConfiguration.MaxUnreliableMessagePayloadLength; + } + + public int MaxReliableMessagePayloadLength() + { + return NearbyConnectionConfiguration.MaxReliableMessagePayloadLength; + } + + public void SendReliable(List recipientEndpointIds, byte[] payload) + { + InternalSend(recipientEndpointIds, payload); + } + + public void SendUnreliable(List recipientEndpointIds, byte[] payload) + { + InternalSend(recipientEndpointIds, payload); + } + + private void InternalSend(List recipientEndpointIds, byte[] payload) + { + Misc.CheckNotNull(recipientEndpointIds); + Misc.CheckNotNull(payload); + + using (var payloadClass = new AndroidJavaClass("com.google.android.gms.nearby.connection.Payload")) + using (var payloadObject = payloadClass.CallStatic("fromBytes", payload)) + using (var task = mClient.Call("sendPayload", + AndroidJavaConverter.ToJavaStringList(recipientEndpointIds), + payloadObject)) + ; + } + + public void StartAdvertising(string name, List appIdentifiers, + TimeSpan? advertisingDuration, Action resultCallback, + Action connectionRequestCallback) + { + Misc.CheckNotNull(resultCallback, "resultCallback"); + Misc.CheckNotNull(connectionRequestCallback, "connectionRequestCallback"); + + if (advertisingDuration.HasValue && advertisingDuration.Value.Ticks < 0) + { + throw new InvalidOperationException("advertisingDuration must be positive"); + } + + connectionRequestCallback = ToOnGameThread(connectionRequestCallback); + resultCallback = ToOnGameThread(resultCallback); + + AdvertisingConnectionLifecycleCallbackProxy callbackProxy = + new AdvertisingConnectionLifecycleCallbackProxy(resultCallback, connectionRequestCallback, this); + using (var connectionLifecycleCallback = + new AndroidJavaObject("com.google.games.bridge.ConnectionLifecycleCallbackProxy", callbackProxy)) + using (var advertisingOptions = CreateAdvertisingOptions()) + using (var task = mClient.Call("startAdvertising", name, GetServiceId(), + connectionLifecycleCallback, advertisingOptions)) + { + AndroidTaskUtils.AddOnSuccessListener( + task, + v => NearbyHelperObject.StartAdvertisingTimer(advertisingDuration) + ); + } + } + + private AndroidJavaObject CreateAdvertisingOptions() + { + using (var strategy = new AndroidJavaClass("com.google.android.gms.nearby.connection.Strategy") + .GetStatic("P2P_CLUSTER")) + using (var builder = + new AndroidJavaObject("com.google.android.gms.nearby.connection.AdvertisingOptions$Builder")) + using (builder.Call("setStrategy", strategy)) + { + return builder.Call("build"); + } + } + + private class AdvertisingConnectionLifecycleCallbackProxy : AndroidJavaProxy + { + private Action mResultCallback; + private Action mConnectionRequestCallback; + private AndroidNearbyConnectionClient mClient; + private string mLocalEndpointName; + + public AdvertisingConnectionLifecycleCallbackProxy(Action resultCallback, + Action connectionRequestCallback, AndroidNearbyConnectionClient client) : base( + "com/google/games/bridge/ConnectionLifecycleCallbackProxy$Callback") + { + mResultCallback = resultCallback; + mConnectionRequestCallback = connectionRequestCallback; + mClient = client; + } + + public void onConnectionInitiated(string endpointId, AndroidJavaObject connectionInfo) + { + mLocalEndpointName = connectionInfo.Call("getEndpointName"); + mConnectionRequestCallback(new ConnectionRequest(endpointId, mLocalEndpointName, mClient.GetServiceId(), + new byte[0])); + } + + public void onConnectionResult(string endpointId, AndroidJavaObject connectionResolution) + { + int statusCode; + using (var status = connectionResolution.Call("getStatus")) + { + statusCode = status.Call("getStatusCode"); + } + + if (statusCode == 0) // STATUS_OK + { + mResultCallback(new AdvertisingResult(ResponseStatus.Success, mLocalEndpointName)); + return; + } + + if (statusCode == 8001) // STATUS_ALREADY_ADVERTISING + { + mResultCallback(new AdvertisingResult(ResponseStatus.NotAuthorized, mLocalEndpointName)); + return; + } + + mResultCallback(new AdvertisingResult(ResponseStatus.InternalError, mLocalEndpointName)); + } + + public void onDisconnected(string endpointId) + { + if (mClient.mAdvertisingMessageListener != null) + { + mClient.mAdvertisingMessageListener.OnRemoteEndpointDisconnected(endpointId); + } + } + } + + public void StopAdvertising() + { + mClient.Call("stopAdvertising"); + mAdvertisingMessageListener = null; + } + + public void SendConnectionRequest(string name, string remoteEndpointId, byte[] payload, + Action responseCallback, IMessageListener listener) + { + Misc.CheckNotNull(listener, "listener"); + var listenerOnGameThread = new OnGameThreadMessageListener(listener); + DiscoveringConnectionLifecycleCallback cb = + new DiscoveringConnectionLifecycleCallback(responseCallback, listenerOnGameThread, mClient); + using (var connectionLifecycleCallback = + new AndroidJavaObject("com.google.games.bridge.ConnectionLifecycleCallbackProxy", cb)) + using (mClient.Call("requestConnection", name, remoteEndpointId, + connectionLifecycleCallback)) + ; + } + + public void AcceptConnectionRequest(string remoteEndpointId, byte[] payload, IMessageListener listener) + { + Misc.CheckNotNull(listener, "listener"); + mAdvertisingMessageListener = new OnGameThreadMessageListener(listener); + + using (var payloadCallback = new AndroidJavaObject("com.google.games.bridge.PayloadCallbackProxy", + new PayloadCallback(listener))) + using (mClient.Call("acceptConnection", remoteEndpointId, payloadCallback)) + ; + } + + private class PayloadCallback : AndroidJavaProxy + { + private IMessageListener mListener; + + public PayloadCallback(IMessageListener listener) : base( + "com/google/games/bridge/PayloadCallbackProxy$Callback") + { + mListener = listener; + } + + public void onPayloadReceived(String endpointId, AndroidJavaObject payload) + { + if (payload.Call("getType") != 1) // 1 for BYTES + { + return; + } + + mListener.OnMessageReceived(endpointId, payload.Call("asBytes"), /* isReliableMessage */ true); + } + } + + public void StartDiscovery(string serviceId, TimeSpan? advertisingDuration, + IDiscoveryListener listener) + { + Misc.CheckNotNull(serviceId, "serviceId"); + Misc.CheckNotNull(listener, "listener"); + + var listenerOnGameThread = new OnGameThreadDiscoveryListener(listener); + + if (advertisingDuration.HasValue && advertisingDuration.Value.Ticks < 0) + { + throw new InvalidOperationException("advertisingDuration must be positive"); + } + + using (var endpointDiscoveryCallback = new AndroidJavaObject( + "com.google.games.bridge.EndpointDiscoveryCallbackProxy", + new EndpointDiscoveryCallback(listenerOnGameThread))) + using (var discoveryOptions = CreateDiscoveryOptions()) + using (var task = mClient.Call("startDiscovery", serviceId, endpointDiscoveryCallback, + discoveryOptions)) + { + AndroidTaskUtils.AddOnSuccessListener( + task, + v => NearbyHelperObject.StartDiscoveryTimer(advertisingDuration) + ); + } + } + + private class DiscoveringConnectionLifecycleCallback : AndroidJavaProxy + { + private Action mResponseCallback; + private IMessageListener mListener; + private AndroidJavaObject mClient; + + public DiscoveringConnectionLifecycleCallback(Action responseCallback, + IMessageListener listener, AndroidJavaObject client) : base( + "com/google/games/bridge/ConnectionLifecycleCallbackProxy$Callback") + { + mResponseCallback = responseCallback; + mListener = listener; + mClient = client; + } + + public void onConnectionInitiated(string endpointId, AndroidJavaObject connectionInfo) + { + using (var payloadCallback = new AndroidJavaObject("com.google.games.bridge.PayloadCallbackProxy", + new PayloadCallback(mListener))) + using (mClient.Call("acceptConnection", endpointId, payloadCallback)) + ; + } + + public void onConnectionResult(string endpointId, AndroidJavaObject connectionResolution) + { + int statusCode; + using (var status = connectionResolution.Call("getStatus")) + { + statusCode = status.Call("getStatusCode"); + } + + if (statusCode == 0) // STATUS_OK + { + mResponseCallback(ConnectionResponse.Accepted(NearbyClientId, endpointId, new byte[0])); + return; + } + + if (statusCode == 8002) // STATUS_ALREADY_DISCOVERING + { + mResponseCallback(ConnectionResponse.AlreadyConnected(NearbyClientId, endpointId)); + return; + } + + mResponseCallback(ConnectionResponse.Rejected(NearbyClientId, endpointId)); + } + + public void onDisconnected(string endpointId) + { + mListener.OnRemoteEndpointDisconnected(endpointId); + } + } + + private AndroidJavaObject CreateDiscoveryOptions() + { + using (var strategy = + new AndroidJavaClass("com.google.android.gms.nearby.connection.Strategy").GetStatic( + "P2P_CLUSTER")) + using (var builder = + new AndroidJavaObject("com.google.android.gms.nearby.connection.DiscoveryOptions$Builder")) + using (builder.Call("setStrategy", strategy)) + { + return builder.Call("build"); + } + } + + private class EndpointDiscoveryCallback : AndroidJavaProxy + { + private IDiscoveryListener mListener; + + public EndpointDiscoveryCallback(IDiscoveryListener listener) : base( + "com/google/games/bridge/EndpointDiscoveryCallbackProxy$Callback") + { + mListener = listener; + } + + public void onEndpointFound(string endpointId, AndroidJavaObject endpointInfo) + { + mListener.OnEndpointFound(CreateEndPointDetails(endpointId, endpointInfo)); + } + + public void onEndpointLost(string endpointId) + { + mListener.OnEndpointLost(endpointId); + } + + private EndpointDetails CreateEndPointDetails(string endpointId, AndroidJavaObject endpointInfo) + { + return new EndpointDetails( + endpointId, + endpointInfo.Call("getEndpointName"), + endpointInfo.Call("getServiceId") + ); + } + } + + private class OnGameThreadMessageListener : IMessageListener + { + private readonly IMessageListener mListener; + + public OnGameThreadMessageListener(IMessageListener listener) + { + mListener = Misc.CheckNotNull(listener); + } + + public void OnMessageReceived(string remoteEndpointId, byte[] data, + bool isReliableMessage) + { + PlayGamesHelperObject.RunOnGameThread(() => mListener.OnMessageReceived( + remoteEndpointId, data, isReliableMessage)); + } + + public void OnRemoteEndpointDisconnected(string remoteEndpointId) + { + PlayGamesHelperObject.RunOnGameThread( + () => mListener.OnRemoteEndpointDisconnected(remoteEndpointId)); + } + } + + private class OnGameThreadDiscoveryListener : IDiscoveryListener + { + private readonly IDiscoveryListener mListener; + + public OnGameThreadDiscoveryListener(IDiscoveryListener listener) + { + mListener = listener; + } + + public void OnEndpointFound(EndpointDetails discoveredEndpoint) + { + PlayGamesHelperObject.RunOnGameThread(() => mListener.OnEndpointFound(discoveredEndpoint)); + } + + public void OnEndpointLost(string lostEndpointId) + { + PlayGamesHelperObject.RunOnGameThread(() => mListener.OnEndpointLost(lostEndpointId)); + } + } + + public void StopDiscovery(string serviceId) + { + mClient.Call("stopDiscovery"); + } + + public void RejectConnectionRequest(string requestingEndpointId) + { + Misc.CheckNotNull(requestingEndpointId, "requestingEndpointId"); + using (var task = mClient.Call("rejectConnection", requestingEndpointId)) ; + } + + public void DisconnectFromEndpoint(string remoteEndpointId) + { + mClient.Call("disconnectFromEndpoint", remoteEndpointId); + } + + public void StopAllConnections() + { + mClient.Call("stopAllEndpoints"); + mAdvertisingMessageListener = null; + } + + public string GetAppBundleId() + { + using (var activity = AndroidHelperFragment.GetActivity()) + { + return activity.Call("getPackageName"); + } + } + + public string GetServiceId() + { + return ServiceId; + } + + private static string ReadServiceId() + { + using (var activity = AndroidHelperFragment.GetActivity()) + { + string packageName = activity.Call("getPackageName"); + using (var pm = activity.Call("getPackageManager")) + using (var appInfo = + pm.Call("getApplicationInfo", packageName, ApplicationInfoFlags)) + using (var bundle = appInfo.Get("metaData")) + { + string sysId = bundle.Call("getString", + "com.google.android.gms.nearby.connection.SERVICE_ID"); + OurUtils.Logger.d("SystemId from Manifest: " + sysId); + return sysId; + } + } + } + + private static Action ToOnGameThread(Action toConvert) + { + return (val) => PlayGamesHelperObject.RunOnGameThread(() => toConvert(val)); + } + + private static Action ToOnGameThread(Action toConvert) + { + return (val1, val2) => PlayGamesHelperObject.RunOnGameThread(() => toConvert(val1, val2)); + } + } +} +#endif diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidNearbyConnectionClient.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidNearbyConnectionClient.cs.meta new file mode 100644 index 0000000..f0d961e --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidNearbyConnectionClient.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: d69ac0a61e8943ff82b14f7469f0fe97 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidSavedGameClient.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidSavedGameClient.cs new file mode 100644 index 0000000..0a0616f --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidSavedGameClient.cs @@ -0,0 +1,526 @@ +#if UNITY_ANDROID +#pragma warning disable 0642 // Possible mistaken empty statement + +namespace GooglePlayGames.Android +{ + using System; + using System.Collections.Generic; + using System.Text.RegularExpressions; + using GooglePlayGames.BasicApi; + using GooglePlayGames.BasicApi.SavedGame; + using GooglePlayGames.OurUtils; + using UnityEngine; + + internal class AndroidSavedGameClient : ISavedGameClient + { + // Regex for a valid filename. Valid file names are between 1 and 100 characters (inclusive) + // and only include URL-safe characters: a-z, A-Z, 0-9, or the symbols "-", ".", "_", or "~". + // This regex is guarded by \A and \Z which guarantee that the entire string matches this + // regex. If these were omitted, then illegal strings containing legal subsequences would be + // allowed (since the regex would match those subsequences). + private static readonly Regex ValidFilenameRegex = new Regex(@"\A[a-zA-Z0-9-._~]{1,100}\Z"); + + private volatile AndroidJavaObject mSnapshotsClient; + private volatile AndroidClient mAndroidClient; + + public AndroidSavedGameClient(AndroidClient androidClient) + { + mAndroidClient = androidClient; + using (var gamesClass = new AndroidJavaClass("com.google.android.gms.games.PlayGames")) + { + mSnapshotsClient = gamesClass.CallStatic("getSnapshotsClient", + AndroidHelperFragment.GetActivity()); + } + } + + public void OpenWithAutomaticConflictResolution(string filename, DataSource source, + ConflictResolutionStrategy resolutionStrategy, + Action completedCallback) + { + Misc.CheckNotNull(filename); + Misc.CheckNotNull(completedCallback); + bool prefetchDataOnConflict = false; + ConflictCallback conflictCallback = null; + completedCallback = ToOnGameThread(completedCallback); + + if (conflictCallback == null) + { + conflictCallback = (resolver, original, originalData, unmerged, unmergedData) => + { + switch (resolutionStrategy) + { + case ConflictResolutionStrategy.UseOriginal: + resolver.ChooseMetadata(original); + return; + case ConflictResolutionStrategy.UseUnmerged: + resolver.ChooseMetadata(unmerged); + return; + case ConflictResolutionStrategy.UseLongestPlaytime: + if (original.TotalTimePlayed >= unmerged.TotalTimePlayed) + { + resolver.ChooseMetadata(original); + } + else + { + resolver.ChooseMetadata(unmerged); + } + + return; + default: + OurUtils.Logger.e("Unhandled strategy " + resolutionStrategy); + completedCallback(SavedGameRequestStatus.InternalError, null); + return; + } + }; + } + + conflictCallback = ToOnGameThread(conflictCallback); + + if (!IsValidFilename(filename)) + { + OurUtils.Logger.e("Received invalid filename: " + filename); + completedCallback(SavedGameRequestStatus.BadInputError, null); + return; + } + + InternalOpen(filename, source, resolutionStrategy, prefetchDataOnConflict, conflictCallback, + completedCallback); + } + + public void OpenWithManualConflictResolution(string filename, DataSource source, bool prefetchDataOnConflict, + ConflictCallback conflictCallback, Action completedCallback) + { + Misc.CheckNotNull(filename); + Misc.CheckNotNull(conflictCallback); + Misc.CheckNotNull(completedCallback); + + conflictCallback = ToOnGameThread(conflictCallback); + completedCallback = ToOnGameThread(completedCallback); + + if (!IsValidFilename(filename)) + { + OurUtils.Logger.e("Received invalid filename: " + filename); + completedCallback(SavedGameRequestStatus.BadInputError, null); + return; + } + + InternalOpen(filename, source, ConflictResolutionStrategy.UseManual, prefetchDataOnConflict, + conflictCallback, completedCallback); + } + + private void InternalOpen(string filename, DataSource source, ConflictResolutionStrategy resolutionStrategy, + bool prefetchDataOnConflict, ConflictCallback conflictCallback, + Action completedCallback) + { + int conflictPolicy; // SnapshotsClient.java#RetentionPolicy + switch (resolutionStrategy) + { + case ConflictResolutionStrategy.UseLastKnownGood: + conflictPolicy = 2 /* RESOLUTION_POLICY_LAST_KNOWN_GOOD */; + break; + case ConflictResolutionStrategy.UseMostRecentlySaved: + conflictPolicy = 3 /* RESOLUTION_POLICY_MOST_RECENTLY_MODIFIED */; + break; + case ConflictResolutionStrategy.UseLongestPlaytime: + conflictPolicy = 1 /* RESOLUTION_POLICY_LONGEST_PLAYTIME*/; + break; + case ConflictResolutionStrategy.UseManual: + conflictPolicy = -1 /* RESOLUTION_POLICY_MANUAL */; + break; + default: + conflictPolicy = 3 /* RESOLUTION_POLICY_MOST_RECENTLY_MODIFIED */; + break; + } + + using (var task = + mSnapshotsClient.Call("open", filename, /* createIfNotFound= */ true, + conflictPolicy)) + { + AndroidTaskUtils.AddOnSuccessListener( + task, + dataOrConflict => + { + if (dataOrConflict.Call("isConflict")) + { + var conflict = dataOrConflict.Call("getConflict"); + AndroidSnapshotMetadata original = + new AndroidSnapshotMetadata(conflict.Call("getSnapshot")); + AndroidSnapshotMetadata unmerged = + new AndroidSnapshotMetadata( + conflict.Call("getConflictingSnapshot")); + + // Instantiate the conflict resolver. Note that the retry callback closes over + // all the parameters we need to retry the open attempt. Once the conflict is + // resolved by invoking the appropriate resolution method on + // AndroidConflictResolver, the resolver will invoke this callback, which will + // result in this method being re-executed. This recursion will continue until + // all conflicts are resolved or an error occurs. + AndroidConflictResolver resolver = new AndroidConflictResolver( + this, + mSnapshotsClient, + conflict, + original, + unmerged, + completedCallback, + () => InternalOpen(filename, source, resolutionStrategy, + prefetchDataOnConflict, + conflictCallback, completedCallback)); + + var originalBytes = original.JavaContents.Call("readFully"); + var unmergedBytes = unmerged.JavaContents.Call("readFully"); + conflictCallback(resolver, original, originalBytes, unmerged, unmergedBytes); + } + else + { + using (var snapshot = dataOrConflict.Call("getData")) + { + AndroidJavaObject metadata = snapshot.Call("freeze"); + completedCallback(SavedGameRequestStatus.Success, + new AndroidSnapshotMetadata(metadata)); + } + } + }); + + AndroidTaskUtils.AddOnFailureListener( + task, + exception => { + OurUtils.Logger.d("InternalOpen has failed: " + exception.Call("toString")); + var status = mAndroidClient.IsAuthenticated() ? + SavedGameRequestStatus.InternalError : + SavedGameRequestStatus.AuthenticationError; + completedCallback(status, null); + } + ); + } + } + + public void ReadBinaryData(ISavedGameMetadata metadata, + Action completedCallback) + { + Misc.CheckNotNull(metadata); + Misc.CheckNotNull(completedCallback); + completedCallback = ToOnGameThread(completedCallback); + + AndroidSnapshotMetadata convertedMetadata = metadata as AndroidSnapshotMetadata; + + if (convertedMetadata == null) + { + OurUtils.Logger.e("Encountered metadata that was not generated by this ISavedGameClient"); + completedCallback(SavedGameRequestStatus.BadInputError, null); + return; + } + + if (!convertedMetadata.IsOpen) + { + OurUtils.Logger.e("This method requires an open ISavedGameMetadata."); + completedCallback(SavedGameRequestStatus.BadInputError, null); + return; + } + + byte[] data = convertedMetadata.JavaContents.Call("readFully"); + if (data == null) + { + completedCallback(SavedGameRequestStatus.BadInputError, null); + } + else + { + completedCallback(SavedGameRequestStatus.Success, data); + } + } + + public void ShowSelectSavedGameUI(string uiTitle, uint maxDisplayedSavedGames, bool showCreateSaveUI, + bool showDeleteSaveUI, Action callback) + { + Misc.CheckNotNull(uiTitle); + Misc.CheckNotNull(callback); + + callback = ToOnGameThread(callback); + + if (!(maxDisplayedSavedGames > 0)) + { + OurUtils.Logger.e("maxDisplayedSavedGames must be greater than 0"); + callback(SelectUIStatus.BadInputError, null); + return; + } + + AndroidHelperFragment.ShowSelectSnapshotUI( + showCreateSaveUI, showDeleteSaveUI, (int) maxDisplayedSavedGames, uiTitle, callback); + } + + public void CommitUpdate(ISavedGameMetadata metadata, SavedGameMetadataUpdate updateForMetadata, + byte[] updatedBinaryData, Action callback) + { + Misc.CheckNotNull(metadata); + Misc.CheckNotNull(updatedBinaryData); + Misc.CheckNotNull(callback); + + callback = ToOnGameThread(callback); + + AndroidSnapshotMetadata convertedMetadata = metadata as AndroidSnapshotMetadata; + + if (convertedMetadata == null) + { + OurUtils.Logger.e("Encountered metadata that was not generated by this ISavedGameClient"); + callback(SavedGameRequestStatus.BadInputError, null); + return; + } + + if (!convertedMetadata.IsOpen) + { + OurUtils.Logger.e("This method requires an open ISavedGameMetadata."); + callback(SavedGameRequestStatus.BadInputError, null); + return; + } + + if (!convertedMetadata.JavaContents.Call("writeBytes", updatedBinaryData)) + { + OurUtils.Logger.e("This method requires an open ISavedGameMetadata."); + callback(SavedGameRequestStatus.BadInputError, null); + } + + using (var convertedMetadataChange = AsMetadataChange(updateForMetadata)) + using (var task = mSnapshotsClient.Call("commitAndClose", convertedMetadata.JavaSnapshot, + convertedMetadataChange)) + { + AndroidTaskUtils.AddOnSuccessListener( + task, + /* disposeResult= */ false, + snapshotMetadata => + { + OurUtils.Logger.d("commitAndClose.succeed"); + callback(SavedGameRequestStatus.Success, + new AndroidSnapshotMetadata(snapshotMetadata, /* contents= */null)); + }); + + AndroidTaskUtils.AddOnFailureListener( + task, + exception => + { + OurUtils.Logger.e("commitAndClose.failed: " + exception.Call("toString")); + var status = mAndroidClient.IsAuthenticated() ? + SavedGameRequestStatus.InternalError : + SavedGameRequestStatus.AuthenticationError; + callback(status, null); + }); + } + } + + public void FetchAllSavedGames(DataSource source, + Action> callback) + { + Misc.CheckNotNull(callback); + + callback = ToOnGameThread(callback); + + using (var task = + mSnapshotsClient.Call("load", /* forecReload= */ + source == DataSource.ReadNetworkOnly)) + { + AndroidTaskUtils.AddOnSuccessListener( + task, + annotatedData => + { + using (var buffer = annotatedData.Call("get")) + { + int count = buffer.Call("getCount"); + List result = new List(); + for (int i = 0; i < count; ++i) + { + using (var metadata = buffer.Call("get", i)) + { + result.Add(new AndroidSnapshotMetadata( + metadata.Call("freeze"), /* contents= */null)); + } + } + + buffer.Call("release"); + callback(SavedGameRequestStatus.Success, result); + } + }); + + AndroidTaskUtils.AddOnFailureListener( + task, + exception => { + OurUtils.Logger.d("FetchAllSavedGames failed: " + exception.Call("toString")); + var status = mAndroidClient.IsAuthenticated() ? + SavedGameRequestStatus.InternalError : + SavedGameRequestStatus.AuthenticationError; + callback(status, new List()); + } + ); + } + } + + public void Delete(ISavedGameMetadata metadata) + { + AndroidSnapshotMetadata androidMetadata = metadata as AndroidSnapshotMetadata; + Misc.CheckNotNull(androidMetadata); + using (mSnapshotsClient.Call("delete", androidMetadata.JavaMetadata)) ; + } + + private ConflictCallback ToOnGameThread(ConflictCallback conflictCallback) + { + return (resolver, original, originalData, unmerged, unmergedData) => + { + OurUtils.Logger.d("Invoking conflict callback"); + PlayGamesHelperObject.RunOnGameThread(() => + conflictCallback(resolver, original, originalData, unmerged, unmergedData)); + }; + } + + /// + /// A helper class that encapsulates the state around resolving a file conflict. It holds all + /// the state that is necessary to invoke as well as a + /// callback that will re-attempt to open the file after the resolution concludes. + /// + private class AndroidConflictResolver : IConflictResolver + { + private readonly AndroidJavaObject mSnapshotsClient; + private readonly AndroidJavaObject mConflict; + private readonly AndroidSnapshotMetadata mOriginal; + private readonly AndroidSnapshotMetadata mUnmerged; + private readonly Action mCompleteCallback; + private readonly Action mRetryFileOpen; + + private readonly AndroidSavedGameClient mAndroidSavedGameClient; + + internal AndroidConflictResolver(AndroidSavedGameClient androidSavedGameClient, AndroidJavaObject snapshotClient, AndroidJavaObject conflict, + AndroidSnapshotMetadata original, AndroidSnapshotMetadata unmerged, + Action completeCallback, Action retryOpen) + { + this.mAndroidSavedGameClient = androidSavedGameClient; + this.mSnapshotsClient = Misc.CheckNotNull(snapshotClient); + this.mConflict = Misc.CheckNotNull(conflict); + this.mOriginal = Misc.CheckNotNull(original); + this.mUnmerged = Misc.CheckNotNull(unmerged); + this.mCompleteCallback = Misc.CheckNotNull(completeCallback); + this.mRetryFileOpen = Misc.CheckNotNull(retryOpen); + } + + public void ResolveConflict(ISavedGameMetadata chosenMetadata, SavedGameMetadataUpdate metadataUpdate, + byte[] updatedData) + { + AndroidSnapshotMetadata convertedMetadata = chosenMetadata as AndroidSnapshotMetadata; + + if (convertedMetadata != mOriginal && convertedMetadata != mUnmerged) + { + OurUtils.Logger.e("Caller attempted to choose a version of the metadata that was not part " + + "of the conflict"); + mCompleteCallback(SavedGameRequestStatus.BadInputError, null); + return; + } + + using (var contentUpdate = mConflict.Call("getResolutionSnapshotContents")) + { + if (!contentUpdate.Call("writeBytes", updatedData)) + { + OurUtils.Logger.e("Can't update snapshot contents during conflict resolution."); + mCompleteCallback(SavedGameRequestStatus.BadInputError, null); + } + + using (var convertedMetadataChange = AsMetadataChange(metadataUpdate)) + using (var task = mSnapshotsClient.Call( + "resolveConflict", + mConflict.Call("getConflictId"), + convertedMetadata.JavaMetadata.Call("getSnapshotId"), + convertedMetadataChange, + contentUpdate)) + { + AndroidTaskUtils.AddOnSuccessListener( + task, + dataOrConflict => mRetryFileOpen()); + + AndroidTaskUtils.AddOnFailureListener( + task, + exception => { + OurUtils.Logger.d("ResolveConflict failed: " + exception.Call("toString")); + var status = mAndroidSavedGameClient.mAndroidClient.IsAuthenticated() ? + SavedGameRequestStatus.InternalError : + SavedGameRequestStatus.AuthenticationError; + mCompleteCallback(status, null); + } + ); + } + } + } + + public void ChooseMetadata(ISavedGameMetadata chosenMetadata) + { + AndroidSnapshotMetadata convertedMetadata = chosenMetadata as AndroidSnapshotMetadata; + + if (convertedMetadata != mOriginal && convertedMetadata != mUnmerged) + { + OurUtils.Logger.e("Caller attempted to choose a version of the metadata that was not part " + + "of the conflict"); + mCompleteCallback(SavedGameRequestStatus.BadInputError, null); + return; + } + + using (var task = mSnapshotsClient.Call( + "resolveConflict", mConflict.Call("getConflictId"), convertedMetadata.JavaSnapshot)) + { + AndroidTaskUtils.AddOnSuccessListener( + task, + dataOrConflict => mRetryFileOpen()); + + AndroidTaskUtils.AddOnFailureListener( + task, + exception => { + OurUtils.Logger.d("ChooseMetadata failed: " + exception.Call("toString")); + var status = mAndroidSavedGameClient.mAndroidClient.IsAuthenticated() ? + SavedGameRequestStatus.InternalError : + SavedGameRequestStatus.AuthenticationError; + mCompleteCallback(status, null); + } + ); + } + } + } + + internal static bool IsValidFilename(string filename) + { + if (filename == null) + { + return false; + } + + return ValidFilenameRegex.IsMatch(filename); + } + + private static AndroidJavaObject AsMetadataChange(SavedGameMetadataUpdate update) + { + using (var builder = + new AndroidJavaObject("com.google.android.gms.games.snapshot.SnapshotMetadataChange$Builder")) + { + if (update.IsCoverImageUpdated) + { + using (var bitmapFactory = new AndroidJavaClass("android.graphics.BitmapFactory")) + using (var bitmap = bitmapFactory.CallStatic( + "decodeByteArray", update.UpdatedPngCoverImage, /* offset= */0, + update.UpdatedPngCoverImage.Length)) + using (builder.Call("setCoverImage", bitmap)) + ; + } + + if (update.IsDescriptionUpdated) + { + using (builder.Call("setDescription", update.UpdatedDescription)) ; + } + + if (update.IsPlayedTimeUpdated) + { + using (builder.Call("setPlayedTimeMillis", + Convert.ToInt64(update.UpdatedPlayedTime.Value.TotalMilliseconds))) ; + } + + return builder.Call("build"); + } + } + + private static Action ToOnGameThread(Action toConvert) + { + return (val1, val2) => PlayGamesHelperObject.RunOnGameThread(() => toConvert(val1, val2)); + } + } +} +#endif diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidSavedGameClient.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidSavedGameClient.cs.meta new file mode 100644 index 0000000..e42a073 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidSavedGameClient.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: a52ca79a06d83464e89d0d052c9af7d9 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidSnapshotMetadata.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidSnapshotMetadata.cs new file mode 100644 index 0000000..23623fb --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidSnapshotMetadata.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID + +namespace GooglePlayGames.Android +{ + using System; + using System.Collections.Generic; + using GooglePlayGames.BasicApi; + using GooglePlayGames.BasicApi.SavedGame; + using UnityEngine; + + internal class AndroidSnapshotMetadata : ISavedGameMetadata + { + private AndroidJavaObject mJavaSnapshot; + private AndroidJavaObject mJavaMetadata; + private AndroidJavaObject mJavaContents; + + public AndroidSnapshotMetadata(AndroidJavaObject javaSnapshot) + { + mJavaSnapshot = javaSnapshot; + mJavaMetadata = javaSnapshot.Call("getMetadata"); + mJavaContents = javaSnapshot.Call("getSnapshotContents"); + } + + public AndroidSnapshotMetadata(AndroidJavaObject javaMetadata, AndroidJavaObject javaContents) + { + mJavaSnapshot = null; + mJavaMetadata = javaMetadata; + mJavaContents = javaContents; + } + + public AndroidJavaObject JavaSnapshot + { + get { return mJavaSnapshot; } + } + + public AndroidJavaObject JavaMetadata + { + get { return mJavaMetadata; } + } + + public AndroidJavaObject JavaContents + { + get { return mJavaContents; } + } + + public bool IsOpen + { + get + { + if (mJavaContents == null) + { + return false; + } + + return !mJavaContents.Call("isClosed"); + } + } + + public string Filename + { + get { return mJavaMetadata.Call("getUniqueName"); } + } + + public string Description + { + get { return mJavaMetadata.Call("getDescription"); } + } + + public string CoverImageURL + { + get { return mJavaMetadata.Call("getCoverImageUrl"); } + } + + public TimeSpan TotalTimePlayed + { + get { return TimeSpan.FromMilliseconds(mJavaMetadata.Call("getPlayedTime")); } + } + + public DateTime LastModifiedTimestamp + { + get + { + long timestamp = mJavaMetadata.Call("getLastModifiedTimestamp"); + System.DateTime lastModifiedTime = AndroidJavaConverter.ToDateTime(timestamp); + return lastModifiedTime; + } + } + } +} +#endif diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidSnapshotMetadata.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidSnapshotMetadata.cs.meta new file mode 100644 index 0000000..b6112b3 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidSnapshotMetadata.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 330ac7fa11d9a4bc099f0db5a3c26ad7 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidTaskUtils.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidTaskUtils.cs new file mode 100644 index 0000000..4740cae --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidTaskUtils.cs @@ -0,0 +1,111 @@ +#if UNITY_ANDROID +#pragma warning disable 0642 // Possible mistaken empty statement + +namespace GooglePlayGames.Android +{ + using UnityEngine; + using System; + + class AndroidTaskUtils + { + private AndroidTaskUtils() + { + } + + public static void AddOnSuccessListener(AndroidJavaObject task, Action callback) + { + using (task.Call("addOnSuccessListener", + new TaskOnSuccessProxy(callback, /* disposeResult= */ true))) ; + } + + public static void AddOnSuccessListener(AndroidJavaObject task, bool disposeResult, Action callback) + { + using (task.Call("addOnSuccessListener", + new TaskOnSuccessProxy(callback, disposeResult))) ; + } + + public static void AddOnFailureListener(AndroidJavaObject task, Action callback) + { + using (task.Call("addOnFailureListener", new TaskOnFailedProxy(callback))) ; + } + + public static void AddOnCompleteListener(AndroidJavaObject task, Action callback) + { + using (task.Call("addOnCompleteListener", new TaskOnCompleteProxy(callback))) ; + } + + private class TaskOnCompleteProxy : AndroidJavaProxy + { + private Action mCallback; + + public TaskOnCompleteProxy(Action callback) + : base("com/google/android/gms/tasks/OnCompleteListener") + { + mCallback = callback; + } + + public void onComplete(T result) + { + if (result is IDisposable) + { + using ((IDisposable) result) + { + mCallback(result); + } + } + else + { + mCallback(result); + } + } + } + + private class TaskOnSuccessProxy : AndroidJavaProxy + { + private Action mCallback; + private bool mDisposeResult; + + public TaskOnSuccessProxy(Action callback, bool disposeResult) + : base("com/google/android/gms/tasks/OnSuccessListener") + { + mCallback = callback; + mDisposeResult = disposeResult; + } + + public void onSuccess(T result) + { + if (result is IDisposable && mDisposeResult) + { + using ((IDisposable) result) + { + mCallback(result); + } + } + else + { + mCallback(result); + } + } + } + + private class TaskOnFailedProxy : AndroidJavaProxy + { + private Action mCallback; + + public TaskOnFailedProxy(Action callback) + : base("com/google/android/gms/tasks/OnFailureListener") + { + mCallback = callback; + } + + public void onFailure(AndroidJavaObject exception) + { + using (exception) + { + mCallback(exception); + } + } + } + } +} +#endif diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidTaskUtils.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidTaskUtils.cs.meta new file mode 100644 index 0000000..97db5a0 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/Android/AndroidTaskUtils.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 5d045a29538404b2da664bb55de949de +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/NearbyConnectionClientFactory.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/NearbyConnectionClientFactory.cs new file mode 100644 index 0000000..2122714 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/NearbyConnectionClientFactory.cs @@ -0,0 +1,41 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// Android only feature + +#if (UNITY_ANDROID) +namespace GooglePlayGames +{ + using UnityEngine; + using System; + using GooglePlayGames.OurUtils; + using GooglePlayGames.BasicApi.Nearby; + + public static class NearbyConnectionClientFactory + { + public static void Create(Action callback) + { + if (Application.isEditor) + { + GooglePlayGames.OurUtils.Logger.d("Creating INearbyConnection in editor, using DummyClient."); + callback.Invoke(new GooglePlayGames.BasicApi.Nearby.DummyNearbyConnectionClient()); + } + + callback.Invoke(new GooglePlayGames.Android.AndroidNearbyConnectionClient()); + } + } +} +#endif //UNITY_ANDROID \ No newline at end of file diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/NearbyConnectionClientFactory.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/NearbyConnectionClientFactory.cs.meta new file mode 100644 index 0000000..421f95d --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/NearbyConnectionClientFactory.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: ff1201bd0205943ba9c881e50e38156b +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/PlayGamesClientFactory.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/PlayGamesClientFactory.cs new file mode 100644 index 0000000..0c1ca52 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/PlayGamesClientFactory.cs @@ -0,0 +1,44 @@ +// +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#if UNITY_ANDROID + +namespace GooglePlayGames +{ + using UnityEngine; + using GooglePlayGames.BasicApi; + using GooglePlayGames.OurUtils; + + internal class PlayGamesClientFactory + { + internal static IPlayGamesClient GetPlatformPlayGamesClient() + { + if (Application.isEditor) + { + GooglePlayGames.OurUtils.Logger.d("Creating IPlayGamesClient in editor, using DummyClient."); + return new GooglePlayGames.BasicApi.DummyClient(); + } +#if UNITY_ANDROID + GooglePlayGames.OurUtils.Logger.d("Creating Android IPlayGamesClient Client"); + return new GooglePlayGames.Android.AndroidClient(); +#else + GooglePlayGames.OurUtils.Logger.d("Cannot create IPlayGamesClient for unknown platform, returning DummyClient"); + return new GooglePlayGames.BasicApi.DummyClient(); +#endif + } + } +} +#endif diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/PlayGamesClientFactory.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/PlayGamesClientFactory.cs.meta new file mode 100644 index 0000000..322e1f3 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/Platforms/PlayGamesClientFactory.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 435fc2d0dc0ba475e9c8b0796303d6dd +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/PluginVersion.cs b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/PluginVersion.cs new file mode 100644 index 0000000..becc1c2 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/PluginVersion.cs @@ -0,0 +1,26 @@ +// +// Copyright (C) 2014 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace GooglePlayGames +{ + public class PluginVersion + { + // Current Version. + public const int VersionInt = 0x20000; + public const string VersionString = "2.1.0"; + public const string VersionKey = "20100" ; + } +} diff --git a/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/PluginVersion.cs.meta b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/PluginVersion.cs.meta new file mode 100644 index 0000000..ff061ce --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/Runtime/Scripts/PluginVersion.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 4539142948daf4a26bf9cd6870ffa0b2 +labels: +- gvh +- gvh_version-2.1.0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/current-build.meta b/Assets/GooglePlayGames/com.google.play.games/current-build.meta new file mode 100644 index 0000000..fc87307 --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/current-build.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f6681e4838fac4335aefe237b6962051 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GooglePlayGames/com.google.play.games/package.json b/Assets/GooglePlayGames/com.google.play.games/package.json new file mode 100644 index 0000000..7a3461b --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/package.json @@ -0,0 +1,11 @@ +{ + "name": "com.google.play.games", + "displayName": "Google Play Games", + "description": "The Google Play Games plugin for Unity allows you to access the Google Play Games API through Unity's social interface.", + "version": "2.1.0", + "unity": "2018.4", + "author": { + "name": "Google LLC" + }, + "dependencies": {} +} diff --git a/Assets/GooglePlayGames/com.google.play.games/package.json.meta b/Assets/GooglePlayGames/com.google.play.games/package.json.meta new file mode 100644 index 0000000..a712c9b --- /dev/null +++ b/Assets/GooglePlayGames/com.google.play.games/package.json.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 51dd7d46faed94b31a71d5f4cec6ce14 +labels: +- gvh +- gvh_version-2.1.0 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Memo.txt b/Assets/Memo.txt index 332fb3d..92bec1b 100644 --- a/Assets/Memo.txt +++ b/Assets/Memo.txt @@ -28,7 +28,6 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// -세이브 데이터 암호화 -데이터 저장, 불러오기 (구글 플레이센터로 변경) +데이터 저장, 불러오기 (구글 플레이센터로 변경) - 확인 필요 원스토어 검수 빌드 후 원스토어 결제 추가 \ No newline at end of file diff --git a/Assets/Plugins/Android/GooglePlayGamesManifest.androidlib.meta b/Assets/Plugins/Android/GooglePlayGamesManifest.androidlib.meta new file mode 100644 index 0000000..fa07451 --- /dev/null +++ b/Assets/Plugins/Android/GooglePlayGamesManifest.androidlib.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: 44f4150f398dc4f22b230f8c74866383 +folderAsset: yes +timeCreated: 1504033921 +licenseType: Pro +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude Linux: 0 + Exclude Linux64: 0 + Exclude LinuxUniversal: 0 + Exclude OSXIntel: 0 + Exclude OSXIntel64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 0 + Exclude iOS: 0 + data: + first: + '': Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + OS: AnyOS + data: + first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARMv7 + data: + first: + Any: + second: + enabled: 1 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + data: + first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Linux + second: + enabled: 1 + settings: + CPU: x86 + data: + first: + Standalone: Linux64 + second: + enabled: 1 + settings: + CPU: x86_64 + data: + first: + Standalone: LinuxUniversal + second: + enabled: 1 + settings: {} + data: + first: + Standalone: OSXIntel + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXIntel64 + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: {} + data: + first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + data: + first: + iPhone: iOS + second: + enabled: 1 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/GooglePlayGamesManifest.androidlib/AndroidManifest.xml b/Assets/Plugins/Android/GooglePlayGamesManifest.androidlib/AndroidManifest.xml new file mode 100644 index 0000000..f5b4246 --- /dev/null +++ b/Assets/Plugins/Android/GooglePlayGamesManifest.androidlib/AndroidManifest.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/Assets/Plugins/Android/GooglePlayGamesManifest.androidlib/project.properties b/Assets/Plugins/Android/GooglePlayGamesManifest.androidlib/project.properties new file mode 100644 index 0000000..f438126 --- /dev/null +++ b/Assets/Plugins/Android/GooglePlayGamesManifest.androidlib/project.properties @@ -0,0 +1,2 @@ +target=android-16 +android.library=true diff --git a/Assets/Plugins/Android/mainTemplate.gradle b/Assets/Plugins/Android/mainTemplate.gradle index 60e0442..c0b6778 100644 --- a/Assets/Plugins/Android/mainTemplate.gradle +++ b/Assets/Plugins/Android/mainTemplate.gradle @@ -11,6 +11,7 @@ dependencies { implementation 'com.google.android.gms:play-services-ads:23.6.0' // Packages/com.google.ads.mobile/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml:7 implementation 'com.google.android.gms:play-services-auth:16+' // Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml:10 implementation 'com.google.android.ump:user-messaging-platform:3.1.0' // Packages/com.google.ads.mobile/GoogleMobileAds/Editor/GoogleUmpDependencies.xml:7 + implementation 'com.google.games:gpgs-plugin-support:2.1.0' // Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPluginDependencies.xml:11 implementation 'com.google.signin:google-signin-support:1.0.4' // Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml:9 implementation 'com.onestorecorp.sdk:sdk-iap:21.01.00' // Assets/OneStoreCorpPlugins/Purchase/Editor/PurchaseDependencies.xml:6 implementation 'com.onestorecorp.sdk:sdk-licensing:2.1.0' // Assets/OneStoreCorpPlugins/AppLicenseChecker/Editor/AppLicenseCheckerDependencies.xml:6 diff --git a/Assets/Plugins/Android/mainTemplate.gradle.backup3 b/Assets/Plugins/Android/mainTemplate.gradle.backup3 new file mode 100644 index 0000000..c08644e --- /dev/null +++ b/Assets/Plugins/Android/mainTemplate.gradle.backup3 @@ -0,0 +1,67 @@ +apply plugin: 'com.android.library' +apply from: '../shared/keepUnitySymbols.gradle' +**APPLY_PLUGINS** + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) +// Android Resolver Dependencies Start + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' // Packages/com.google.ads.mobile/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml:12 + implementation 'com.google.ads.mediation:facebook:6.18.0.0' // Packages/com.google.ads.mobile.mediation.metaaudiencenetwork/source/plugin/Assets/GoogleMobileAds/Mediation/MetaAudienceNetwork/Editor/MetaAudienceNetworkMediationDependencies.xml:24 + implementation 'com.google.ads.mediation:unity:4.12.3.0' // Assets/GoogleMobileAds/Mediation/UnityAds/Editor/UnityMediationDependencies.xml:25 + implementation 'com.google.android.gms:play-services-ads:23.6.0' // Packages/com.google.ads.mobile/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml:7 + implementation 'com.google.android.gms:play-services-auth:16+' // Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml:10 + implementation 'com.google.android.ump:user-messaging-platform:3.1.0' // Packages/com.google.ads.mobile/GoogleMobileAds/Editor/GoogleUmpDependencies.xml:7 + implementation 'com.google.games:gpgs-plugin-support:2.1.0' // Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPluginDependencies.xml:11 + implementation 'com.google.signin:google-signin-support:1.0.4' // Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml:9 + implementation 'com.onestorecorp.sdk:sdk-iap:21.01.00' // Assets/OneStoreCorpPlugins/Purchase/Editor/PurchaseDependencies.xml:6 + implementation 'com.onestorecorp.sdk:sdk-licensing:2.1.0' // Assets/OneStoreCorpPlugins/AppLicenseChecker/Editor/AppLicenseCheckerDependencies.xml:6 + implementation 'com.unity3d.ads:unity-ads:4.12.3' // Assets/GoogleMobileAds/Mediation/UnityAds/Editor/UnityMediationDependencies.xml:33 +// Android Resolver Dependencies End +**DEPS**} + +// Android Resolver Exclusions Start +android { + packagingOptions { + exclude ('/lib/armeabi/*' + '*') + exclude ('/lib/mips/*' + '*') + exclude ('/lib/mips64/*' + '*') + exclude ('/lib/x86/*' + '*') + exclude ('/lib/x86_64/*' + '*') + } +} +// Android Resolver Exclusions End +android { + ndkPath "**NDKPATH**" + + compileSdk **APIVERSION** + buildToolsVersion '**BUILDTOOLS**' + + compileOptions { + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 + } + + defaultConfig { + minSdk **MINSDK** + targetSdk **TARGETSDK** + ndk { + debugSymbolLevel **DEBUGSYMBOLLEVEL** + abiFilters **ABIFILTERS** + } + versionCode **VERSIONCODE** + versionName '**VERSIONNAME**' + consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD** + } + + lint { + abortOnError false + } + + androidResources { + noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ') + ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~" + }**PACKAGING** +} +**IL_CPP_BUILD_SETUP** +**SOURCE_BUILD_SETUP** +**EXTERNAL_SOURCES** diff --git a/Assets/Plugins/Android/mainTemplate.gradle.backup3.meta b/Assets/Plugins/Android/mainTemplate.gradle.backup3.meta new file mode 100644 index 0000000..84e868a --- /dev/null +++ b/Assets/Plugins/Android/mainTemplate.gradle.backup3.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 10885133b1498294eb547f60323118b9 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/settingsTemplate.gradle b/Assets/Plugins/Android/settingsTemplate.gradle index cc8205c..7ec1441 100644 --- a/Assets/Plugins/Android/settingsTemplate.gradle +++ b/Assets/Plugins/Android/settingsTemplate.gradle @@ -24,6 +24,9 @@ dependencyResolutionManagement { maven { url "https://repo.maven.apache.org/maven2/" // Assets/GoogleMobileAds/Mediation/UnityAds/Editor/UnityMediationDependencies.xml:25, Assets/GoogleMobileAds/Mediation/UnityAds/Editor/UnityMediationDependencies.xml:33, Packages/com.google.ads.mobile.mediation.metaaudiencenetwork/source/plugin/Assets/GoogleMobileAds/Mediation/MetaAudienceNetwork/Editor/MetaAudienceNetworkMediationDependencies.xml:24 } + maven { + url (unityProjectPath + "/Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository") // Assets/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPluginDependencies.xml:11 + } maven { url (unityProjectPath + "/Assets/GeneratedLocalRepo/GoogleSignIn/Editor/m2repository") // Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml:9 } diff --git a/Assets/Plugins/Easy Save 3/Resources/ES3/ES3Defaults.asset b/Assets/Plugins/Easy Save 3/Resources/ES3/ES3Defaults.asset index 61d7701..687a3f5 100644 --- a/Assets/Plugins/Easy Save 3/Resources/ES3/ES3Defaults.asset +++ b/Assets/Plugins/Easy Save 3/Resources/ES3/ES3Defaults.asset @@ -34,6 +34,7 @@ MonoBehaviour: - Assembly-CSharp-firstpass - CFXRDemo - CFXRRuntime + - Google.Play.Games - GoogleMobileAds.Mediation.UnityAds.Android - GoogleMobileAds.Mediation.UnityAds.Api - GoogleMobileAds.Mediation.UnityAds.Common diff --git a/Assets/Resources/Prefabs/Popups/CloudLoadCompletePopup.prefab b/Assets/Resources/Prefabs/Popups/CloudLoadCompletePopup.prefab new file mode 100644 index 0000000..e7e92f1 --- /dev/null +++ b/Assets/Resources/Prefabs/Popups/CloudLoadCompletePopup.prefab @@ -0,0 +1,634 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1324829693003538644 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3827274076957746089} + - component: {fileID: 4623288986574023431} + - component: {fileID: 6256073739779036531} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3827274076957746089 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324829693003538644} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3914003348280645851} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 84} + m_SizeDelta: {x: -50, y: 250} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4623288986574023431 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324829693003538644} + m_CullTransparentMesh: 1 +--- !u!114 &6256073739779036531 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324829693003538644} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\uB370\uC774\uD130\uB97C \uB0B4\uB824\uBC1B\uC558\uC2B5\uB2C8\uB2E4.\r\n\uAC8C\uC784\uC744 + \uC7AC\uC2DC\uC791 \uD574\uC8FC\uC138\uC694." + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} + m_sharedMaterial: {fileID: -6508382273668546854, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 40 + m_fontSizeBase: 40 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 0 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 0 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 0 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &2146986294350315589 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1313316559661637386} + - component: {fileID: 2903463085084729646} + - component: {fileID: 3511040308576275676} + - component: {fileID: 115976426752958718} + m_Layer: 5 + m_Name: AgreedButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1313316559661637386 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2146986294350315589} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6403968303874475723} + m_Father: {fileID: 3914003348280645851} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -138} + m_SizeDelta: {x: 250, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2903463085084729646 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2146986294350315589} + m_CullTransparentMesh: 1 +--- !u!114 &3511040308576275676 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2146986294350315589} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 6facc842ead05744184e7db7ba064b48, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &115976426752958718 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2146986294350315589} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 14a02640485dabf4d8eeab6b8d0e1f37, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1463953945109322297} + m_TargetAssemblyTypeName: CloudLoadPopup, Assembly-CSharp + m_MethodName: OnClick_Quit + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &5771424763395209068 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3770730671028469677} + - component: {fileID: 4583093844719226905} + - component: {fileID: 6672885542466119970} + m_Layer: 5 + m_Name: New Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3770730671028469677 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5771424763395209068} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 9007310997297665168} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4583093844719226905 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5771424763395209068} + m_CullTransparentMesh: 1 +--- !u!114 &6672885542466119970 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5771424763395209068} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 5f7fd8185eb11854b9a83301264d3454, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &6165355080912743286 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3914003348280645851} + - component: {fileID: 9204485070799621501} + - component: {fileID: 3864653881773320085} + m_Layer: 5 + m_Name: Box + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3914003348280645851 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6165355080912743286} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3827274076957746089} + - {fileID: 1313316559661637386} + m_Father: {fileID: 9007310997297665168} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 72} + m_SizeDelta: {x: 900, y: 500} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &9204485070799621501 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6165355080912743286} + m_CullTransparentMesh: 1 +--- !u!114 &3864653881773320085 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6165355080912743286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 5f7fd8185eb11854b9a83301264d3454, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &7406854172275695763 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9007310997297665168} + - component: {fileID: 2517309549320446724} + - component: {fileID: 6495025563002481046} + - component: {fileID: 4130399851895737701} + - component: {fileID: 1463953945109322297} + m_Layer: 5 + m_Name: CloudLoadCompletePopup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9007310997297665168 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3770730671028469677} + - {fileID: 3914003348280645851} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2517309549320446724 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_CullTransparentMesh: 1 +--- !u!223 &6495025563002481046 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &4130399851895737701 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1463953945109322297 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82ee710e8852a0848bf4835ead2706dc, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &7740939426781283448 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6403968303874475723} + - component: {fileID: 2313491179682301191} + - component: {fileID: 5779080122213389523} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6403968303874475723 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7740939426781283448} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1313316559661637386} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 5} + m_SizeDelta: {x: 0, y: -10} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2313491179682301191 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7740939426781283448} + m_CullTransparentMesh: 1 +--- !u!114 &5779080122213389523 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7740939426781283448} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\uB3D9\uC758" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: 1cd9f54883d04fa4a8273aaf06ef64e9, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 45 + m_fontSizeBase: 45 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 0 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 0 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 0 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} diff --git a/Assets/Resources/Prefabs/Popups/CloudLoadCompletePopup.prefab.meta b/Assets/Resources/Prefabs/Popups/CloudLoadCompletePopup.prefab.meta new file mode 100644 index 0000000..61e9d92 --- /dev/null +++ b/Assets/Resources/Prefabs/Popups/CloudLoadCompletePopup.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 023362dc80af9d240b589e1c9ce0751f +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Prefabs/Popups/CloudLoadFailPopup.prefab b/Assets/Resources/Prefabs/Popups/CloudLoadFailPopup.prefab new file mode 100644 index 0000000..71b29fa --- /dev/null +++ b/Assets/Resources/Prefabs/Popups/CloudLoadFailPopup.prefab @@ -0,0 +1,558 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1324829693003538644 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3827274076957746089} + - component: {fileID: 4623288986574023431} + - component: {fileID: 6256073739779036531} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3827274076957746089 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324829693003538644} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3914003348280645851} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 84} + m_SizeDelta: {x: -50, y: 250} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4623288986574023431 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324829693003538644} + m_CullTransparentMesh: 1 +--- !u!114 &6256073739779036531 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324829693003538644} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\uB370\uC774\uD130 \uB0B4\uB824\uBC1B\uAE30\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.\r\n\uB098\uC911\uC5D0 + \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694." + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} + m_sharedMaterial: {fileID: -6508382273668546854, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 40 + m_fontSizeBase: 40 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 0 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 0 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 0 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &4847793638731525687 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3691371889073614225} + - component: {fileID: 1386677856161751151} + - component: {fileID: 3037916600926297404} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3691371889073614225 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4847793638731525687} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6919250392876316429} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 5} + m_SizeDelta: {x: 0, y: -10} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1386677856161751151 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4847793638731525687} + m_CullTransparentMesh: 1 +--- !u!114 &3037916600926297404 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4847793638731525687} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\uB2EB\uAE30" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: 1cd9f54883d04fa4a8273aaf06ef64e9, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 45 + m_fontSizeBase: 45 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 0 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 0 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 0 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &6165355080912743286 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3914003348280645851} + - component: {fileID: 9204485070799621501} + - component: {fileID: 3864653881773320085} + m_Layer: 5 + m_Name: Box + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3914003348280645851 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6165355080912743286} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3827274076957746089} + - {fileID: 6919250392876316429} + m_Father: {fileID: 9007310997297665168} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 72} + m_SizeDelta: {x: 900, y: 500} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &9204485070799621501 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6165355080912743286} + m_CullTransparentMesh: 1 +--- !u!114 &3864653881773320085 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6165355080912743286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 5f7fd8185eb11854b9a83301264d3454, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &7406854172275695763 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9007310997297665168} + - component: {fileID: 2517309549320446724} + - component: {fileID: 6495025563002481046} + - component: {fileID: 4130399851895737701} + - component: {fileID: 1463953945109322297} + m_Layer: 5 + m_Name: CloudLoadFailPopup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9007310997297665168 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3914003348280645851} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2517309549320446724 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_CullTransparentMesh: 1 +--- !u!223 &6495025563002481046 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &4130399851895737701 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1463953945109322297 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82ee710e8852a0848bf4835ead2706dc, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &7796128296011831133 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6919250392876316429} + - component: {fileID: 8377537973582531916} + - component: {fileID: 5693105889486739670} + - component: {fileID: 4672751859202181045} + m_Layer: 5 + m_Name: CloseButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6919250392876316429 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796128296011831133} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3691371889073614225} + m_Father: {fileID: 3914003348280645851} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -138} + m_SizeDelta: {x: 250, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8377537973582531916 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796128296011831133} + m_CullTransparentMesh: 1 +--- !u!114 &5693105889486739670 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796128296011831133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 1c01f2ab08fa29249b1abe0a7243c0c0, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 2 +--- !u!114 &4672751859202181045 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796128296011831133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 14a02640485dabf4d8eeab6b8d0e1f37, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1463953945109322297} + m_TargetAssemblyTypeName: CloudLoadPopup, Assembly-CSharp + m_MethodName: OnClick_Cancel + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 diff --git a/Assets/Resources/Prefabs/Popups/CloudLoadFailPopup.prefab.meta b/Assets/Resources/Prefabs/Popups/CloudLoadFailPopup.prefab.meta new file mode 100644 index 0000000..692cb6f --- /dev/null +++ b/Assets/Resources/Prefabs/Popups/CloudLoadFailPopup.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4104469e9124e7049b80ba47ed4db859 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Prefabs/Popups/CloudLoadNoDataPopup.prefab b/Assets/Resources/Prefabs/Popups/CloudLoadNoDataPopup.prefab new file mode 100644 index 0000000..51c9ed8 --- /dev/null +++ b/Assets/Resources/Prefabs/Popups/CloudLoadNoDataPopup.prefab @@ -0,0 +1,558 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1324829693003538644 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3827274076957746089} + - component: {fileID: 4623288986574023431} + - component: {fileID: 6256073739779036531} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3827274076957746089 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324829693003538644} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3914003348280645851} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 84} + m_SizeDelta: {x: -50, y: 250} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4623288986574023431 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324829693003538644} + m_CullTransparentMesh: 1 +--- !u!114 &6256073739779036531 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324829693003538644} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\uC800\uC7A5\uB41C \uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.\r\n\uC800\uC7A5\uC744 + \uBA3C\uC800 \uD574\uC8FC\uC138\uC694." + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} + m_sharedMaterial: {fileID: -6508382273668546854, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 40 + m_fontSizeBase: 40 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 0 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 0 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 0 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &4847793638731525687 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3691371889073614225} + - component: {fileID: 1386677856161751151} + - component: {fileID: 3037916600926297404} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3691371889073614225 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4847793638731525687} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6919250392876316429} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 5} + m_SizeDelta: {x: 0, y: -10} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1386677856161751151 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4847793638731525687} + m_CullTransparentMesh: 1 +--- !u!114 &3037916600926297404 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4847793638731525687} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\uB2EB\uAE30" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: 1cd9f54883d04fa4a8273aaf06ef64e9, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 45 + m_fontSizeBase: 45 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 0 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 0 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 0 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &6165355080912743286 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3914003348280645851} + - component: {fileID: 9204485070799621501} + - component: {fileID: 3864653881773320085} + m_Layer: 5 + m_Name: Box + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3914003348280645851 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6165355080912743286} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3827274076957746089} + - {fileID: 6919250392876316429} + m_Father: {fileID: 9007310997297665168} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 72} + m_SizeDelta: {x: 900, y: 500} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &9204485070799621501 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6165355080912743286} + m_CullTransparentMesh: 1 +--- !u!114 &3864653881773320085 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6165355080912743286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 5f7fd8185eb11854b9a83301264d3454, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &7406854172275695763 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9007310997297665168} + - component: {fileID: 2517309549320446724} + - component: {fileID: 6495025563002481046} + - component: {fileID: 4130399851895737701} + - component: {fileID: 1463953945109322297} + m_Layer: 5 + m_Name: CloudLoadNoDataPopup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9007310997297665168 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3914003348280645851} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2517309549320446724 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_CullTransparentMesh: 1 +--- !u!223 &6495025563002481046 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &4130399851895737701 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1463953945109322297 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82ee710e8852a0848bf4835ead2706dc, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &7796128296011831133 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6919250392876316429} + - component: {fileID: 8377537973582531916} + - component: {fileID: 5693105889486739670} + - component: {fileID: 4672751859202181045} + m_Layer: 5 + m_Name: CloseButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6919250392876316429 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796128296011831133} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3691371889073614225} + m_Father: {fileID: 3914003348280645851} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -138} + m_SizeDelta: {x: 250, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8377537973582531916 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796128296011831133} + m_CullTransparentMesh: 1 +--- !u!114 &5693105889486739670 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796128296011831133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 1c01f2ab08fa29249b1abe0a7243c0c0, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 2 +--- !u!114 &4672751859202181045 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796128296011831133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 14a02640485dabf4d8eeab6b8d0e1f37, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1463953945109322297} + m_TargetAssemblyTypeName: CloudLoadPopup, Assembly-CSharp + m_MethodName: OnClick_Cancel + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 diff --git a/Assets/Resources/Prefabs/Popups/CloudLoadNoDataPopup.prefab.meta b/Assets/Resources/Prefabs/Popups/CloudLoadNoDataPopup.prefab.meta new file mode 100644 index 0000000..306694d --- /dev/null +++ b/Assets/Resources/Prefabs/Popups/CloudLoadNoDataPopup.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4c3ac99fc5d91ca41b06afb2aa16efb2 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Prefabs/Popups/AgreeConditionsPopup.prefab b/Assets/Resources/Prefabs/Popups/CloudLoadPopup.prefab similarity index 63% rename from Assets/Resources/Prefabs/Popups/AgreeConditionsPopup.prefab rename to Assets/Resources/Prefabs/Popups/CloudLoadPopup.prefab index 45fe0c3..d047dd7 100644 --- a/Assets/Resources/Prefabs/Popups/AgreeConditionsPopup.prefab +++ b/Assets/Resources/Prefabs/Popups/CloudLoadPopup.prefab @@ -34,7 +34,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.5} m_AnchorMax: {x: 1, y: 0.5} - m_AnchoredPosition: {x: 0, y: 106} + m_AnchoredPosition: {x: 0, y: 84} m_SizeDelta: {x: -50, y: 250} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &4623288986574023431 @@ -65,10 +65,9 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: "\uC9C4\uD589\uB41C \uB370\uC774\uD2B8\uB97C \uC800\uC7A5\uD558\uAE30 \uC704\uD574\uC11C\uB294 - \uACC4\uC815 \uB4F1\uB85D\uC744 \uD574\uC57C \uD569\uB2C8\uB2E4.\n\uACC4\uC815 - \uB4F1\uB85D\uC5D0 \uD544\uC694\uD55C \uC57D\uAD00\uC5D0 \uB3D9\uC758\uB97C \uD558\uC2DC\uBA74 - \uB3D9\uC758\uD558\uAE30 \uBC84\uD2BC\uC744 \uC120\uD0DD\uD574 \uC8FC\uC2ED\uC2DC\uC624." + m_text: "\uB85C\uADF8\uC778 \uD6C4 \uD074\uB77C\uC6B0\uB4DC \uB370\uC774\uD130\uB97C + \uB0B4\uB824\uBC1B\uC2B5\uB2C8\uB2E4.\r\n\uC644\uB8CC \uD6C4 \uAC8C\uC784\uC744 + \uC7AC\uC2DC\uC791 \uD574\uC8FC\uC138\uC694." m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} m_sharedMaterial: {fileID: -6508382273668546854, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} @@ -77,8 +76,8 @@ MonoBehaviour: m_fontMaterials: [] m_fontColor32: serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} m_enableVertexGradient: 0 m_colorMode: 3 m_fontColorGradient: @@ -102,158 +101,26 @@ MonoBehaviour: m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 0 - m_HorizontalAlignment: 1 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 0 - m_parseCtrlCharacters: 0 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 0 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!1 &1729771318282731778 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6108701293695219724} - - component: {fileID: 734259679684768732} - - component: {fileID: 3682277623935672778} - m_Layer: 5 - m_Name: Text (TMP) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6108701293695219724 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1729771318282731778} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 7955650568122257587} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 5} - m_SizeDelta: {x: 0, y: -10} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &734259679684768732 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1729771318282731778} - m_CullTransparentMesh: 1 ---- !u!114 &3682277623935672778 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1729771318282731778} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 0 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_text: "\uAC1C\uC778\uC815\uBCF4\uCC98\uB9AC\uBC29\uCE68, \uC774\uC6A9\uC57D\uAD00" - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} - m_sharedMaterial: {fileID: 2100000, guid: 1cd9f54883d04fa4a8273aaf06ef64e9, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 45 - m_fontSizeBase: 45 - m_fontWeight: 400 - m_enableAutoSizing: 0 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 m_HorizontalAlignment: 2 m_VerticalAlignment: 512 m_textAlignment: 65535 m_characterSpacing: 0 m_wordSpacing: 0 - m_lineSpacing: 0 + m_lineSpacing: 30 m_lineSpacingMax: 0 m_paragraphSpacing: 0 m_charWidthMaxAdj: 0 - m_enableWordWrapping: 0 + m_TextWrappingMode: 1 m_wordWrappingRatios: 0.4 m_overflowMode: 0 m_linkedTextComponent: {fileID: 0} parentLinkedComponent: {fileID: 0} - m_enableKerning: 0 + m_enableKerning: 1 + m_ActiveFontFeatures: 6e72656b m_enableExtraPadding: 0 checkPaddingRequired: 0 m_isRichText: 0 + m_EmojiFallbackSupport: 1 m_parseCtrlCharacters: 0 m_isOrthographic: 1 m_isCullingEnabled: 0 @@ -307,8 +174,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 171, y: -292} - m_SizeDelta: {x: 250, y: 120} + m_AnchoredPosition: {x: 171, y: -138} + m_SizeDelta: {x: 250, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &2903463085084729646 CanvasRenderer: @@ -338,8 +205,8 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: cb37917483ee24fea8fab306393441e5, type: 3} - m_Type: 1 + m_Sprite: {fileID: 21300000, guid: 6facc842ead05744184e7db7ba064b48, type: 3} + m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 m_FillMethod: 4 @@ -347,7 +214,7 @@ MonoBehaviour: m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 2 + m_PixelsPerUnitMultiplier: 1 --- !u!114 &115976426752958718 MonoBehaviour: m_ObjectHideFlags: 0 @@ -365,115 +232,9 @@ MonoBehaviour: callback: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 778818077049193411} - m_TargetAssemblyTypeName: AgreeConditionsPopup, Assembly-CSharp - m_MethodName: ClickAgreedButton - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 ---- !u!1 &3312392719446229288 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7955650568122257587} - - component: {fileID: 7221257200398869766} - - component: {fileID: 6518562206873050239} - - component: {fileID: 1037621559045878288} - m_Layer: 5 - m_Name: PrivacyPolicyButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &7955650568122257587 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3312392719446229288} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 6108701293695219724} - m_Father: {fileID: 3914003348280645851} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: -127} - m_SizeDelta: {x: 570, y: 120} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &7221257200398869766 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3312392719446229288} - m_CullTransparentMesh: 1 ---- !u!114 &6518562206873050239 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3312392719446229288} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 804461bef59b141dba258fc997c8ca15, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 2 ---- !u!114 &1037621559045878288 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3312392719446229288} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 14a02640485dabf4d8eeab6b8d0e1f37, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Delegates: - - eventID: 4 - callback: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 778818077049193411} - m_TargetAssemblyTypeName: AgreeConditionsPopup, Assembly-CSharp - m_MethodName: ClickPrivacyPolicyButton + - m_Target: {fileID: 1463953945109322297} + m_TargetAssemblyTypeName: CloudLoadPopup, Assembly-CSharp + m_MethodName: OnClick_OK m_Mode: 1 m_Arguments: m_ObjectArgument: {fileID: 0} @@ -591,149 +352,17 @@ MonoBehaviour: m_lineSpacingMax: 0 m_paragraphSpacing: 0 m_charWidthMaxAdj: 0 - m_enableWordWrapping: 0 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 0 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 0 - m_parseCtrlCharacters: 0 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 0 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!1 &5942974085134851686 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5820604775903360758} - - component: {fileID: 8265334662623583627} - - component: {fileID: 7263975805417817899} - m_Layer: 5 - m_Name: Title - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &5820604775903360758 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5942974085134851686} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3914003348280645851} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 323} - m_SizeDelta: {x: 200, y: 50} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &8265334662623583627 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5942974085134851686} - m_CullTransparentMesh: 1 ---- !u!114 &7263975805417817899 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5942974085134851686} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 0 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_text: "\uC57D\uAD00\uC5D0 \uB3D9\uC758\uD558\uACE0 \uACC4\uC815 \uB4F1\uB85D\uD558\uAE30" - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} - m_sharedMaterial: {fileID: 2100000, guid: 1cd9f54883d04fa4a8273aaf06ef64e9, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 50 - m_fontSizeBase: 50 - m_fontWeight: 400 - m_enableAutoSizing: 0 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 0 + m_TextWrappingMode: 0 m_wordWrappingRatios: 0.4 m_overflowMode: 0 m_linkedTextComponent: {fileID: 0} parentLinkedComponent: {fileID: 0} m_enableKerning: 0 + m_ActiveFontFeatures: m_enableExtraPadding: 0 checkPaddingRequired: 0 m_isRichText: 0 + m_EmojiFallbackSupport: 1 m_parseCtrlCharacters: 0 m_isOrthographic: 1 m_isCullingEnabled: 0 @@ -781,17 +410,15 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 5820604775903360758} - {fileID: 3827274076957746089} - {fileID: 1313316559661637386} - {fileID: 6919250392876316429} - - {fileID: 7955650568122257587} m_Father: {fileID: 9007310997297665168} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} m_AnchoredPosition: {x: 0, y: 72} - m_SizeDelta: {x: 900, y: 800} + m_SizeDelta: {x: 900, y: 500} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &9204485070799621501 CanvasRenderer: @@ -821,7 +448,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: eb3db5b0868bc4f348e3d3a1dfbf32a8, type: 3} + m_Sprite: {fileID: 21300000, guid: 5f7fd8185eb11854b9a83301264d3454, type: 3} m_Type: 1 m_PreserveAspect: 0 m_FillCenter: 1 @@ -843,9 +470,9 @@ GameObject: - component: {fileID: 2517309549320446724} - component: {fileID: 6495025563002481046} - component: {fileID: 4130399851895737701} - - component: {fileID: 778818077049193411} + - component: {fileID: 1463953945109322297} m_Layer: 5 - m_Name: AgreeConditionsPopup + m_Name: CloudLoadPopup m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -919,7 +546,7 @@ MonoBehaviour: m_BlockingMask: serializedVersion: 2 m_Bits: 4294967295 ---- !u!114 &778818077049193411 +--- !u!114 &1463953945109322297 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -928,10 +555,9 @@ MonoBehaviour: m_GameObject: {fileID: 7406854172275695763} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9c1b79bfe5b04b846bfc6231a1f9e3da, type: 3} + m_Script: {fileID: 11500000, guid: 82ee710e8852a0848bf4835ead2706dc, type: 3} m_Name: m_EditorClassIdentifier: - type: 0 --- !u!1 &7740939426781283448 GameObject: m_ObjectHideFlags: 0 @@ -1040,15 +666,17 @@ MonoBehaviour: m_lineSpacingMax: 0 m_paragraphSpacing: 0 m_charWidthMaxAdj: 0 - m_enableWordWrapping: 0 + m_TextWrappingMode: 0 m_wordWrappingRatios: 0.4 m_overflowMode: 0 m_linkedTextComponent: {fileID: 0} parentLinkedComponent: {fileID: 0} m_enableKerning: 0 + m_ActiveFontFeatures: m_enableExtraPadding: 0 checkPaddingRequired: 0 m_isRichText: 0 + m_EmojiFallbackSupport: 1 m_parseCtrlCharacters: 0 m_isOrthographic: 1 m_isCullingEnabled: 0 @@ -1102,8 +730,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -171, y: -292} - m_SizeDelta: {x: 250, y: 120} + m_AnchoredPosition: {x: -171, y: -138} + m_SizeDelta: {x: 250, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &8377537973582531916 CanvasRenderer: @@ -1133,8 +761,8 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 2bc701b63b63f40e0893a9fabeaa0a78, type: 3} - m_Type: 1 + m_Sprite: {fileID: 21300000, guid: 1c01f2ab08fa29249b1abe0a7243c0c0, type: 3} + m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 m_FillMethod: 4 @@ -1160,9 +788,9 @@ MonoBehaviour: callback: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 778818077049193411} - m_TargetAssemblyTypeName: AgreeConditionsPopup, Assembly-CSharp - m_MethodName: ClickCloseButton + - m_Target: {fileID: 1463953945109322297} + m_TargetAssemblyTypeName: CloudLoadPopup, Assembly-CSharp + m_MethodName: OnClick_Cancel m_Mode: 1 m_Arguments: m_ObjectArgument: {fileID: 0} diff --git a/Assets/Resources/Prefabs/Popups/CloudLoadPopup.prefab.meta b/Assets/Resources/Prefabs/Popups/CloudLoadPopup.prefab.meta new file mode 100644 index 0000000..59206aa --- /dev/null +++ b/Assets/Resources/Prefabs/Popups/CloudLoadPopup.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: dd5cdfdf4e3dc59478c53011cc0ecab7 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Prefabs/Popups/CloudSaveCompletePopup.prefab b/Assets/Resources/Prefabs/Popups/CloudSaveCompletePopup.prefab new file mode 100644 index 0000000..5ba7a6b --- /dev/null +++ b/Assets/Resources/Prefabs/Popups/CloudSaveCompletePopup.prefab @@ -0,0 +1,557 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1324829693003538644 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3827274076957746089} + - component: {fileID: 4623288986574023431} + - component: {fileID: 6256073739779036531} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3827274076957746089 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324829693003538644} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3914003348280645851} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 84} + m_SizeDelta: {x: -50, y: 250} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4623288986574023431 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324829693003538644} + m_CullTransparentMesh: 1 +--- !u!114 &6256073739779036531 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324829693003538644} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\uD074\uB77C\uC6B0\uB4DC \uC800\uC7A5\uC774 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4." + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} + m_sharedMaterial: {fileID: -6508382273668546854, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 40 + m_fontSizeBase: 40 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 0 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 0 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 0 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &4847793638731525687 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3691371889073614225} + - component: {fileID: 1386677856161751151} + - component: {fileID: 3037916600926297404} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3691371889073614225 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4847793638731525687} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6919250392876316429} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 5} + m_SizeDelta: {x: 0, y: -10} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1386677856161751151 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4847793638731525687} + m_CullTransparentMesh: 1 +--- !u!114 &3037916600926297404 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4847793638731525687} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\uB2EB\uAE30" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: 1cd9f54883d04fa4a8273aaf06ef64e9, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 45 + m_fontSizeBase: 45 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 0 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 0 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 0 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &6165355080912743286 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3914003348280645851} + - component: {fileID: 9204485070799621501} + - component: {fileID: 3864653881773320085} + m_Layer: 5 + m_Name: Box + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3914003348280645851 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6165355080912743286} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3827274076957746089} + - {fileID: 6919250392876316429} + m_Father: {fileID: 9007310997297665168} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 72} + m_SizeDelta: {x: 900, y: 500} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &9204485070799621501 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6165355080912743286} + m_CullTransparentMesh: 1 +--- !u!114 &3864653881773320085 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6165355080912743286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 5f7fd8185eb11854b9a83301264d3454, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &7406854172275695763 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9007310997297665168} + - component: {fileID: 2517309549320446724} + - component: {fileID: 6495025563002481046} + - component: {fileID: 4130399851895737701} + - component: {fileID: 4263868023533981332} + m_Layer: 5 + m_Name: CloudSaveCompletePopup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9007310997297665168 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3914003348280645851} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2517309549320446724 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_CullTransparentMesh: 1 +--- !u!223 &6495025563002481046 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &4130399851895737701 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &4263868023533981332 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 03d765c5d298d664e9a000eb38547051, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &7796128296011831133 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6919250392876316429} + - component: {fileID: 8377537973582531916} + - component: {fileID: 5693105889486739670} + - component: {fileID: 4672751859202181045} + m_Layer: 5 + m_Name: CloseButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6919250392876316429 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796128296011831133} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3691371889073614225} + m_Father: {fileID: 3914003348280645851} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -138} + m_SizeDelta: {x: 250, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8377537973582531916 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796128296011831133} + m_CullTransparentMesh: 1 +--- !u!114 &5693105889486739670 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796128296011831133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 1c01f2ab08fa29249b1abe0a7243c0c0, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 2 +--- !u!114 &4672751859202181045 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796128296011831133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 14a02640485dabf4d8eeab6b8d0e1f37, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 4263868023533981332} + m_TargetAssemblyTypeName: CloudSavePopup, Assembly-CSharp + m_MethodName: OnClick_Cancel + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 diff --git a/Assets/Resources/Prefabs/Popups/CloudSaveCompletePopup.prefab.meta b/Assets/Resources/Prefabs/Popups/CloudSaveCompletePopup.prefab.meta new file mode 100644 index 0000000..b139d2e --- /dev/null +++ b/Assets/Resources/Prefabs/Popups/CloudSaveCompletePopup.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 601c9fcfccaa05a4f92d2ae5cb5e328e +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Prefabs/Popups/CloudSaveFailPopup.prefab b/Assets/Resources/Prefabs/Popups/CloudSaveFailPopup.prefab new file mode 100644 index 0000000..8228644 --- /dev/null +++ b/Assets/Resources/Prefabs/Popups/CloudSaveFailPopup.prefab @@ -0,0 +1,558 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1324829693003538644 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3827274076957746089} + - component: {fileID: 4623288986574023431} + - component: {fileID: 6256073739779036531} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3827274076957746089 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324829693003538644} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3914003348280645851} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 84} + m_SizeDelta: {x: -50, y: 250} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4623288986574023431 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324829693003538644} + m_CullTransparentMesh: 1 +--- !u!114 &6256073739779036531 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324829693003538644} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\uD074\uB77C\uC6B0\uB4DC \uC800\uC7A5\uC5D0 \uC2E4\uD328\uD558\uC600\uC2B5\uB2C8\uB2E4.\n\uB098\uC911\uC5D0 + \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694." + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} + m_sharedMaterial: {fileID: -6508382273668546854, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 40 + m_fontSizeBase: 40 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 0 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 0 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 0 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &4847793638731525687 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3691371889073614225} + - component: {fileID: 1386677856161751151} + - component: {fileID: 3037916600926297404} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3691371889073614225 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4847793638731525687} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6919250392876316429} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 5} + m_SizeDelta: {x: 0, y: -10} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1386677856161751151 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4847793638731525687} + m_CullTransparentMesh: 1 +--- !u!114 &3037916600926297404 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4847793638731525687} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\uB2EB\uAE30" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: 1cd9f54883d04fa4a8273aaf06ef64e9, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 45 + m_fontSizeBase: 45 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 0 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 0 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 0 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &6165355080912743286 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3914003348280645851} + - component: {fileID: 9204485070799621501} + - component: {fileID: 3864653881773320085} + m_Layer: 5 + m_Name: Box + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3914003348280645851 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6165355080912743286} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3827274076957746089} + - {fileID: 6919250392876316429} + m_Father: {fileID: 9007310997297665168} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 72} + m_SizeDelta: {x: 900, y: 500} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &9204485070799621501 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6165355080912743286} + m_CullTransparentMesh: 1 +--- !u!114 &3864653881773320085 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6165355080912743286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 5f7fd8185eb11854b9a83301264d3454, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &7406854172275695763 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9007310997297665168} + - component: {fileID: 2517309549320446724} + - component: {fileID: 6495025563002481046} + - component: {fileID: 4130399851895737701} + - component: {fileID: 4263868023533981332} + m_Layer: 5 + m_Name: CloudSaveFailPopup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9007310997297665168 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3914003348280645851} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2517309549320446724 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_CullTransparentMesh: 1 +--- !u!223 &6495025563002481046 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &4130399851895737701 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &4263868023533981332 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 03d765c5d298d664e9a000eb38547051, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &7796128296011831133 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6919250392876316429} + - component: {fileID: 8377537973582531916} + - component: {fileID: 5693105889486739670} + - component: {fileID: 4672751859202181045} + m_Layer: 5 + m_Name: CloseButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6919250392876316429 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796128296011831133} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3691371889073614225} + m_Father: {fileID: 3914003348280645851} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -138} + m_SizeDelta: {x: 250, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8377537973582531916 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796128296011831133} + m_CullTransparentMesh: 1 +--- !u!114 &5693105889486739670 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796128296011831133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 1c01f2ab08fa29249b1abe0a7243c0c0, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 2 +--- !u!114 &4672751859202181045 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796128296011831133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 14a02640485dabf4d8eeab6b8d0e1f37, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 4263868023533981332} + m_TargetAssemblyTypeName: CloudSavePopup, Assembly-CSharp + m_MethodName: OnClick_Cancel + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 diff --git a/Assets/Resources/Prefabs/Popups/CloudSaveFailPopup.prefab.meta b/Assets/Resources/Prefabs/Popups/CloudSaveFailPopup.prefab.meta new file mode 100644 index 0000000..7311c78 --- /dev/null +++ b/Assets/Resources/Prefabs/Popups/CloudSaveFailPopup.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a50fc59a68458404995a5eafa7912dd0 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Prefabs/Popups/CloudSavePopup.prefab b/Assets/Resources/Prefabs/Popups/CloudSavePopup.prefab new file mode 100644 index 0000000..3713267 --- /dev/null +++ b/Assets/Resources/Prefabs/Popups/CloudSavePopup.prefab @@ -0,0 +1,801 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1324829693003538644 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3827274076957746089} + - component: {fileID: 4623288986574023431} + - component: {fileID: 6256073739779036531} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3827274076957746089 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324829693003538644} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3914003348280645851} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 84} + m_SizeDelta: {x: -50, y: 250} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4623288986574023431 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324829693003538644} + m_CullTransparentMesh: 1 +--- !u!114 &6256073739779036531 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1324829693003538644} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\uB85C\uADF8\uC778 \uD6C4 \uD074\uB77C\uC6B0\uB4DC \uC800\uC7A5\uC744 + \uD569\uB2C8\uB2E4.\n\uACC4\uC18D\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} + m_sharedMaterial: {fileID: -6508382273668546854, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 40 + m_fontSizeBase: 40 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 0 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 0 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 0 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &2146986294350315589 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1313316559661637386} + - component: {fileID: 2903463085084729646} + - component: {fileID: 3511040308576275676} + - component: {fileID: 115976426752958718} + m_Layer: 5 + m_Name: AgreedButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1313316559661637386 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2146986294350315589} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6403968303874475723} + m_Father: {fileID: 3914003348280645851} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 171, y: -138} + m_SizeDelta: {x: 250, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2903463085084729646 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2146986294350315589} + m_CullTransparentMesh: 1 +--- !u!114 &3511040308576275676 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2146986294350315589} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 6facc842ead05744184e7db7ba064b48, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &115976426752958718 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2146986294350315589} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 14a02640485dabf4d8eeab6b8d0e1f37, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 4263868023533981332} + m_TargetAssemblyTypeName: CloudSavePopup, Assembly-CSharp + m_MethodName: OnClick_OK + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &4847793638731525687 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3691371889073614225} + - component: {fileID: 1386677856161751151} + - component: {fileID: 3037916600926297404} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3691371889073614225 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4847793638731525687} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6919250392876316429} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 5} + m_SizeDelta: {x: 0, y: -10} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1386677856161751151 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4847793638731525687} + m_CullTransparentMesh: 1 +--- !u!114 &3037916600926297404 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4847793638731525687} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\uB2EB\uAE30" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: 1cd9f54883d04fa4a8273aaf06ef64e9, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 45 + m_fontSizeBase: 45 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 0 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 0 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 0 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &6165355080912743286 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3914003348280645851} + - component: {fileID: 9204485070799621501} + - component: {fileID: 3864653881773320085} + m_Layer: 5 + m_Name: Box + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3914003348280645851 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6165355080912743286} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3827274076957746089} + - {fileID: 1313316559661637386} + - {fileID: 6919250392876316429} + m_Father: {fileID: 9007310997297665168} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 72} + m_SizeDelta: {x: 900, y: 500} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &9204485070799621501 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6165355080912743286} + m_CullTransparentMesh: 1 +--- !u!114 &3864653881773320085 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6165355080912743286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 5f7fd8185eb11854b9a83301264d3454, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &7406854172275695763 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9007310997297665168} + - component: {fileID: 2517309549320446724} + - component: {fileID: 6495025563002481046} + - component: {fileID: 4130399851895737701} + - component: {fileID: 4263868023533981332} + m_Layer: 5 + m_Name: CloudSavePopup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9007310997297665168 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3914003348280645851} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2517309549320446724 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_CullTransparentMesh: 1 +--- !u!223 &6495025563002481046 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &4130399851895737701 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &4263868023533981332 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7406854172275695763} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 03d765c5d298d664e9a000eb38547051, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &7740939426781283448 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6403968303874475723} + - component: {fileID: 2313491179682301191} + - component: {fileID: 5779080122213389523} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6403968303874475723 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7740939426781283448} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1313316559661637386} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 5} + m_SizeDelta: {x: 0, y: -10} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2313491179682301191 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7740939426781283448} + m_CullTransparentMesh: 1 +--- !u!114 &5779080122213389523 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7740939426781283448} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\uB3D9\uC758" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: 1cd9f54883d04fa4a8273aaf06ef64e9, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 45 + m_fontSizeBase: 45 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 0 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 0 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 0 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &7796128296011831133 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6919250392876316429} + - component: {fileID: 8377537973582531916} + - component: {fileID: 5693105889486739670} + - component: {fileID: 4672751859202181045} + m_Layer: 5 + m_Name: CloseButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6919250392876316429 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796128296011831133} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3691371889073614225} + m_Father: {fileID: 3914003348280645851} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -171, y: -138} + m_SizeDelta: {x: 250, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8377537973582531916 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796128296011831133} + m_CullTransparentMesh: 1 +--- !u!114 &5693105889486739670 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796128296011831133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 1c01f2ab08fa29249b1abe0a7243c0c0, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 2 +--- !u!114 &4672751859202181045 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796128296011831133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 14a02640485dabf4d8eeab6b8d0e1f37, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 4263868023533981332} + m_TargetAssemblyTypeName: CloudSavePopup, Assembly-CSharp + m_MethodName: OnClick_Cancel + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 diff --git a/Assets/Resources/Prefabs/Popups/AgreeConditionsPopup.prefab.meta b/Assets/Resources/Prefabs/Popups/CloudSavePopup.prefab.meta similarity index 100% rename from Assets/Resources/Prefabs/Popups/AgreeConditionsPopup.prefab.meta rename to Assets/Resources/Prefabs/Popups/CloudSavePopup.prefab.meta diff --git a/Assets/Resources/Prefabs/Popups/SettingPopup.prefab b/Assets/Resources/Prefabs/Popups/SettingPopup.prefab index 17f392b..9d0ac1f 100644 --- a/Assets/Resources/Prefabs/Popups/SettingPopup.prefab +++ b/Assets/Resources/Prefabs/Popups/SettingPopup.prefab @@ -2915,7 +2915,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: [] m_Sprite: {fileID: 21300000, guid: 6facc842ead05744184e7db7ba064b48, type: 3} - m_Type: 0 + m_Type: 1 m_PreserveAspect: 0 m_FillCenter: 1 m_FillMethod: 4 @@ -3157,7 +3157,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: [] m_Sprite: {fileID: 21300000, guid: 6facc842ead05744184e7db7ba064b48, type: 3} - m_Type: 0 + m_Type: 1 m_PreserveAspect: 0 m_FillCenter: 1 m_FillMethod: 4 diff --git a/Assets/Resources/VersionCode.txt b/Assets/Resources/VersionCode.txt index d8263ee..e440e5c 100644 --- a/Assets/Resources/VersionCode.txt +++ b/Assets/Resources/VersionCode.txt @@ -1 +1 @@ -2 \ No newline at end of file +3 \ No newline at end of file diff --git a/Assets/Scenes/Title.unity b/Assets/Scenes/Title.unity index 5a8107e..0580c72 100644 --- a/Assets/Scenes/Title.unity +++ b/Assets/Scenes/Title.unity @@ -6437,6 +6437,7 @@ GameObject: m_Component: - component: {fileID: 1711243446} - component: {fileID: 1711243445} + - component: {fileID: 1711243447} m_Layer: 0 m_Name: Time m_TagString: Untagged @@ -6471,6 +6472,18 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1711243447 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1711243444} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 49032e4e4cb45df43ad8eb85861bc35f, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &1732641636 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/My/GPGSInfo.cs b/Assets/Scripts/My/GPGSInfo.cs new file mode 100644 index 0000000..41af93c --- /dev/null +++ b/Assets/Scripts/My/GPGSInfo.cs @@ -0,0 +1,128 @@ +using CodeJay.Classes; +using GooglePlayGames; +using GooglePlayGames.BasicApi; +using GooglePlayGames.BasicApi.SavedGame; +using Newtonsoft.Json; +using System; +using UnityEngine; + +public class GPGSInfo : MonoBehaviour +{ + public static GPGSInfo Ins; + private void Awake() { Ins = this; } + + private ISavedGameClient savedGameClient; + + string str_savedata; + Action act_save, act_load; + string gamedataname = "mygamedata"; + + void Run_act(int status) + { + if (act_save != null) act_save(status); + act_save = null; + + if (act_load != null) act_load(status); + act_load = null; + } + + internal void ProcessAuthentication(SignInStatus status) + { + if (status == SignInStatus.Success) + { + // Continue with Play Games Services + savedGameClient = PlayGamesPlatform.Instance.SavedGame; + if (act_save != null) SaveGameAfterLogin(); + else if (act_load != null) LoadGameAfterLogin(); + } + else + { + // Disable your integration with Play Games Services or show a login button + // to ask users to sign-in. Clicking it should call + // PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication). + + Run_act(-1); + } + } + + public void SaveGame(string data, Action act) + { + str_savedata = data; + act_save = act; + act_load = null; + PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication); + } + void SaveGameAfterLogin() + { + if (savedGameClient != null) + { + byte[] byteData = System.Text.Encoding.UTF8.GetBytes(str_savedata); + + savedGameClient.OpenWithAutomaticConflictResolution( + gamedataname, + DataSource.ReadCacheOrNetwork, + ConflictResolutionStrategy.UseLongestPlaytime, + (status, metadata) => OnSavedGameOpenedForSave(status, metadata, byteData)); + } + else + Run_act(-1); + } + + private void OnSavedGameOpenedForSave(SavedGameRequestStatus status, ISavedGameMetadata game, byte[] data) + { + if (status == SavedGameRequestStatus.Success) + savedGameClient.CommitUpdate(game, new SavedGameMetadataUpdate.Builder().Build(), data, OnGameSaved); + else + Run_act(-1); + } + + private void OnGameSaved(SavedGameRequestStatus status, ISavedGameMetadata game) + { + Run_act(status == SavedGameRequestStatus.Success ? 0 : -1); + } + + public void LoadGame(Action act) + { + act_save = null; + act_load = act; + PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication); + } + void LoadGameAfterLogin() + { + if (savedGameClient != null) + { + savedGameClient.OpenWithAutomaticConflictResolution( + gamedataname, + DataSource.ReadCacheOrNetwork, + ConflictResolutionStrategy.UseLongestPlaytime, + (status, metadata) => OnSavedGameOpenedForLoad(status, metadata)); + } + else + Run_act(-1); + } + + private void OnSavedGameOpenedForLoad(SavedGameRequestStatus status, ISavedGameMetadata game) + { + if (status == SavedGameRequestStatus.Success) + savedGameClient.ReadBinaryData(game, OnGameLoaded); + else + Run_act(-1); + } + + private void OnGameLoaded(SavedGameRequestStatus status, byte[] data) + { + if (status == SavedGameRequestStatus.Success) + { + if (data != null && data.Length > 0) + { + string loadedData = System.Text.Encoding.UTF8.GetString(data); + GameManager.DB.Set_SaveData(JsonConvert.DeserializeObject(loadedData)); + Run_act(0); + } + else + Run_act(-2); + } + else + Run_act(-1); + } +} diff --git a/Assets/Scripts/My/GPGSInfo.cs.meta b/Assets/Scripts/My/GPGSInfo.cs.meta new file mode 100644 index 0000000..1e9e8ea --- /dev/null +++ b/Assets/Scripts/My/GPGSInfo.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 49032e4e4cb45df43ad8eb85861bc35f \ No newline at end of file diff --git a/Assets/Scripts/SingletonManagers/Managers/DBManager.cs b/Assets/Scripts/SingletonManagers/Managers/DBManager.cs index b2c590b..42743c4 100644 --- a/Assets/Scripts/SingletonManagers/Managers/DBManager.cs +++ b/Assets/Scripts/SingletonManagers/Managers/DBManager.cs @@ -1,6 +1,7 @@ using BansheeGz.BGDatabase; using CodeJay.Classes; using CodeJay.Defines; +using Newtonsoft.Json; using System; using System.Collections; using System.Collections.Generic; @@ -309,6 +310,9 @@ public partial class DBManager : MonoBehaviour } } + public string Get_SaveData() { return JsonConvert.SerializeObject(saveData); } + public void Set_SaveData(SaveData saveData) { this.saveData = saveData; SaveDatas(); } + private void LoadDatas() { StartCoroutine(eLoadDatas()); diff --git a/Assets/Scripts/SingletonManagers/Managers/UIManager.cs b/Assets/Scripts/SingletonManagers/Managers/UIManager.cs index 0e615dc..c30426d 100644 --- a/Assets/Scripts/SingletonManagers/Managers/UIManager.cs +++ b/Assets/Scripts/SingletonManagers/Managers/UIManager.cs @@ -44,6 +44,13 @@ public enum EPopupType PreViewPopup, PreViewUIPopup, MissionOpenPopup, + CloudSavePopup, + CloudSaveCompletePopup, + CloudSaveFailPopup, + CloudLoadPopup, + CloudLoadCompletePopup, + CloudLoadFailPopup, + CloudLoadNoDataPopup, } public enum EGraphicRaycasterType @@ -396,6 +403,22 @@ public class UIManager : MonoBehaviour return Instantiate(Resources.Load(path + "PreViewUIPopup"), PopupCanvasTransform); case EPopupType.MissionOpenPopup: return Instantiate(Resources.Load(path + "MissionOpenPopup"), PopupCanvasTransform); + + case EPopupType.CloudSavePopup: + return Instantiate(Resources.Load(path + "CloudSavePopup"), PopupCanvasTransform); + case EPopupType.CloudSaveCompletePopup: + return Instantiate(Resources.Load(path + "CloudSaveCompletePopup"), PopupCanvasTransform); + case EPopupType.CloudSaveFailPopup: + return Instantiate(Resources.Load(path + "CloudSaveFailPopup"), PopupCanvasTransform); + case EPopupType.CloudLoadPopup: + return Instantiate(Resources.Load(path + "CloudLoadPopup"), PopupCanvasTransform); + case EPopupType.CloudLoadCompletePopup: + return Instantiate(Resources.Load(path + "CloudLoadCompletePopup"), PopupCanvasTransform); + case EPopupType.CloudLoadFailPopup: + return Instantiate(Resources.Load(path + "CloudLoadFailPopup"), PopupCanvasTransform); + case EPopupType.CloudLoadNoDataPopup: + return Instantiate(Resources.Load(path + "CloudLoadNoDataPopup"), PopupCanvasTransform); + default: return null; } diff --git a/Assets/Scripts/UI/Popup/CloudLoadPopup.cs b/Assets/Scripts/UI/Popup/CloudLoadPopup.cs new file mode 100644 index 0000000..071f319 --- /dev/null +++ b/Assets/Scripts/UI/Popup/CloudLoadPopup.cs @@ -0,0 +1,19 @@ +public class CloudLoadPopup : PopupBase +{ + public void OnClick_OK() + { + GPGSInfo.Ins.LoadGame(status => + { + OnClick_Cancel(); + if (status == 0) + GameManager.UI.ShowNStackPopup(EPopupType.CloudLoadCompletePopup); + else if (status == -1) + GameManager.UI.ShowNStackPopup(EPopupType.CloudLoadFailPopup); + else + GameManager.UI.ShowNStackPopup(EPopupType.CloudLoadNoDataPopup); + }); + } + + public void OnClick_Cancel() { GameManager.UI.HideTopPopup(); } + public void OnClick_Quit() { DSUtil.Quit(); } +} \ No newline at end of file diff --git a/Assets/Scripts/UI/Popup/CloudLoadPopup.cs.meta b/Assets/Scripts/UI/Popup/CloudLoadPopup.cs.meta new file mode 100644 index 0000000..a3f1e3e --- /dev/null +++ b/Assets/Scripts/UI/Popup/CloudLoadPopup.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 82ee710e8852a0848bf4835ead2706dc \ No newline at end of file diff --git a/Assets/Scripts/UI/Popup/CloudSavePopup.cs b/Assets/Scripts/UI/Popup/CloudSavePopup.cs new file mode 100644 index 0000000..6d3f98e --- /dev/null +++ b/Assets/Scripts/UI/Popup/CloudSavePopup.cs @@ -0,0 +1,17 @@ +public class CloudSavePopup : PopupBase +{ + public void OnClick_OK() + { + GameManager.DB.SaveDatas(); + GPGSInfo.Ins.SaveGame(GameManager.DB.Get_SaveData(), status => + { + OnClick_Cancel(); + if (status == 0) + GameManager.UI.ShowNStackPopup(EPopupType.CloudSaveCompletePopup); + else + GameManager.UI.ShowNStackPopup(EPopupType.CloudSaveFailPopup); + }); + } + + public void OnClick_Cancel() { GameManager.UI.HideTopPopup(); } +} \ No newline at end of file diff --git a/Assets/Scripts/UI/Popup/CloudSavePopup.cs.meta b/Assets/Scripts/UI/Popup/CloudSavePopup.cs.meta new file mode 100644 index 0000000..8dab6c7 --- /dev/null +++ b/Assets/Scripts/UI/Popup/CloudSavePopup.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 03d765c5d298d664e9a000eb38547051 \ No newline at end of file diff --git a/Assets/Scripts/UI/Popup/SettingPopup.cs b/Assets/Scripts/UI/Popup/SettingPopup.cs index c2fca10..dcb74fb 100644 --- a/Assets/Scripts/UI/Popup/SettingPopup.cs +++ b/Assets/Scripts/UI/Popup/SettingPopup.cs @@ -149,7 +149,7 @@ public class SettingPopup : PopupBase public void ClickSaveButton() { GameManager.Sound.PlaySFX(ESFXType.Button_Hit); - GameManager.DB.SaveDatas(); + GameManager.UI.ShowNStackPopup(EPopupType.CloudSavePopup); //if (GameManager.Account.IsUserLogin == false) //{ @@ -168,6 +168,7 @@ public class SettingPopup : PopupBase public void ClickDataLoadButton() { GameManager.Sound.PlaySFX(ESFXType.Button_Hit); + GameManager.UI.ShowNStackPopup(EPopupType.CloudLoadPopup); //if (GameManager.Account.IsUserLogin == false) //{ diff --git a/Assets/UI/고스톱 수집 목록 스샷.png b/Assets/UI/고스톱 수집 목록 스샷.png deleted file mode 100644 index 5382c2c8013e7d92befd189d83f81020f4eeb98f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 969642 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¥|1*TZ{NFHxBhf7|Ha3j-MVbbYJ75W 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Îy?*EJ>3i>=952Es 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%0AQvH*q~7ejL7(9In-Lo;oEXud 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

&=Mc_^K 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%0D&ylv_|j|tJ>oS4FE_j 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

QLAyZ|qt=NaZ45~?f|w@= z0dr4uCIi7Fn%HQ+6#yZo)V3`FdN#Ek6|J%d2tm^JRuuv!P!tV- z%7t^qvYCJQ*=J897P|jC6=^+1Me-k@nSCjX)phj?yIBd;r7nX4h(LC^fS`(^uxdu` zqG%OwIs@No{$=pgPewpdLbO<4K|w`DPzEq(I(6Qq?A8G>NCqh(2xMYPK@hVpWezj~ zavi*}fHdx&NVB4-{m*WL)0Otuzc5sob=NKf8+v+c$kYgg!m3UcjiuUX+)x?8A-FS+ z8nkMsh~@>)hKC+K_dSId%7L$X^SoNEXJ6y_cOO^7*FSs0acg@2Q=*}-KO7N335ZY# z0fi{1*$@Irc9-?HuOO-_nh*h1l5NcvZn2uWlI=-ImZJdxN@SrzW@5_rd(jTBoO!(N zJ(I||7Wa=UNYveZCtcP~bPn~M|MNmjyWUS7inG;=IdrD`m)G^<__nVnfJCH#C#T1f z65u*+JNJzz4$Fn@+hj#kwO}V)*0qQbk))mx*fba0(Rwqi4P0Jo1QbFj*nQ_auYK~- zho8Rl4{v|?`5*r9J6tp=ED#bP8O;ggO4itIi6-jEP%`r&eb)isG8zf%vuS-&2d*mRqT1Ma{?+eoUw;mgHV^Jdl%exZeUaKi;?8Ko zjs+=-j)uE2G@f}dC=17%li~i(W&@3*ghIU~B+u!*gRSi%c{uvnL;1IyH;v_9?+?e$ zMVE~dkPDGmT0^Ixtj@oFxva6TVw1rp2_jg)sY*YgyJeUed-CDf$$98Pn9NV4c@a0E zjhdWihio=AA}l;rg+Do*D!3P4dF}4~M_=6i^3loh?%oSUQNH;*zul(x(U*6Jl`jjf zonI){u{k_F*~0N?FmME{=)egAMiG}%)XF(Gbjzk~Vj=`ZO-UMzK9{vaFfr5Vd4NEU z3c?se8zVO2d{LE^cfP6XV2*H5t0LE%%&@n1*dD2=jiC*}wtdQ+NPYnM5UOB4*5y-cWi3Oeuz<^i^3st$+XkP%}j# zQq$CJ2t;JL(QsZwbnjV)2>>`d4iRZlFRx#}_U4a%^cVm3U;o`dymRZubvGENdQK@p zXa52?CnXRSAls`YN2h@?Y#;zCp#l*)1xP5%W|@xK6k435;U-+(-+=JUM&W+3we{Bf zpS=CWC&$avSFhZ-wY@hiJ=cOU5J3yHAewtuT)M1#n;VVlV&P**B1sVmTcSF6UsctW z&GFt9m>!3NFHauax%2S8zjwbt^-Pn^YUj#6mqT>ra5Th%=b>pNA>({8pC2!mv-V_B z2llS4sH(2N@apv!zvGMH^5`H$ERcLzmLM)R6F;g7uf$PdSZ#)lk`$^zSvnpK%KhCf zEHPor_|zf-U=91&7j#`6TrKq+7nBWNCLoO8y@RsW_5F^Rzjx+x7mEn^8WEwLh*-0* zC_wL|fSl0-L=;jCv2}yWGn0~_AZp>b@En>nJ6*o;>T5S{-~asfr?>CkdEw<3wl80P zm8p^TgSXxW!O5U1e3~Q0W_dK5DavF#DjX4DA*=`#Rb5I!JrfVAx(#(3Dc8e+Hbo0Z z#m7Yi05W=Vlwun~Y#LXT-h0O`v~AM{Q~41{MajqmjB>;TFQOobN=%_mnvysx#ERy@ z?2dyjM$;q=q9R3U1*Gx?nLd?G3?xWRXqy-mk-+6qW~K0bN>d$EiU(>qnTQ7QjPG?vbJzot_E;{flFv?Tooz)irz#^i}hCr4RfdoK`j7UoM z+IH!Vgwa%*lnpfs*!eXC)ExZ)f&c`l*v(uri@(}&*rA*rvlxm|UB&r#NM>~$0IWeB z$gxwl9ZL4gpV9u#^$0%cFYOf(T#v-j9@Xf&=e-A0&@I+3Xbyo8R0Tl1E6#)m{l@Lv z3`Ijg3qlJa5>R%IY92i+TMy@t$_u+@{-uvQoF@NdOwP$zs#?>G-b;K08n5oL<_Go)Y9B)j9#h`!?5@?7q zgdhpQyFesR4a#A;xwUcm`o_(d!t7x2=>GEHAcjSAQr|hajS9epvWp<8AayPxM^)zs zKpVyO@Y1!byO*wPZEc{)!;jv&^UmATkKZ0HPhP&dck}XdlkvcNmJm{uL@ufjBcoPD zF&d7%_XU$`&{zXAq61O|1X`CD7iQwFj14*Jqw~50^s^CGlHL@QE*}oN5hv*9GJ>L_ z^a`Qs04ZrmB8bE;m#$P0 za^MRh#8|hB+5FWv-Z(iq_^ZGA>tFrit!HjMR}|IG>MZ<15QLyjk~9H%6+}?)sVD$7G2{Nu{*_Dn-&90^ zl9d-XyXWH~LIv27h@_ajcQJ{@_X{LcLSTui4Bvg@jd$O9_pSHed;P_a-gx=hl%|{s zs5;1N6HV7Qx`fb`XUOxA00G#hk|`?)%$!KtI6Ik15^>=c5naJ$Ua|ba?01=IF)OU)k9jm!;Q~QiusS0ssNy#5*1hhGkin&H)I>5*QFU zr=dKZi0D;DLoI6n;t5hhr9T{jEEFtTnGrzksw;(cB_hB`t7z>`zE(sKbZ4Ozf-+eI z3Myu8M+D*|8buU;0k|UH5m-FT3=EjeH`v-@I_uhHyomXCc?bfrms;%_B z@4p%A`04u}`WOeLL#>udL6%3$MIhK7jVdHaN`R#UB8(!E0x}ND5|Ep=jhZ3?s3d6> zxS-CH*oz2IR8&=D^5ok(v~}&g_w1^oa_mD0A*KWZnmY(>w*xb45R;1uL@|k&!`#Sl zET+p2WFSI^fB;6^8-z)b0~bF!4Oq!mKy ztJxrR7MVWDM+ga3D5Df1!$;XwslBypb-OD044~M@o}B?U(nq6F{>ZKm46DQ&CRk;Q zta2ovU-7uM^z(ARV2HnQd%}>OKdFAz8&7*1nk_GY+7-$?fAC7$SvUwH5vpj;oCRbh zQe-8oQG}~0EJ+h8pqRRXfDje>lAMx-9T{r3Di4Z+WEMUG$|j-SBY6=3!Ii!R0C{5f z?_(FVh+skmvWW;fyR{;8{-HddE@~INpT!NHMK!Yi(PQU8fK^RlLIh>xYHQOmXP-Mh zHeBBv@_cK+#yEjgplKV+V3urQ$p=_wggL`fN_Eo=T$NHnL?#q~q+oncD(Ts0pLyw( zSKt2W-~RIL4>o`6JB9Np1u-k3sU!x7@@Ci>=rG&n>{1F@>L~({pc>tcA~-}1A)cI^ z#uSEJIY)6mn+*I9UVpKuig!Q!n;5(! zrJ?{V3T@gDlOj1$5};PvsOYPma=gdz?Bv?X#_SlDCt)$yHln6BX#`gi7iB@ip_U^o zxEc+7Rh8(5-ebL--TvavJ3o2w!LO?3^tsL9Yu|b1wHKeidhIF|+$@)ej}Ai91R?3w zUR9J@+ZM~h6N)<2%z|?!PPW@2R;@R`tXWEW!MVa50BaUc>Bu$1vGLZ!D2=M{qrnzua*#5Q7XWV3`Ng|=-{2(~@gdSl0ff(a5i zlGu)h?nl4-{o8lHeD~cCUwG-G?|%P#H8gwIZocv6n?L*U-?q)t5ta@WU4umv!_joE zNjA%2L5@ifp!5z9ru8zWSa6|b1w<*=A^lMWZ4!V@WB7*fxox z^Og7BF}E?cF}A4{5hR!Gbe#v6m{P)I`xk&EgLYVyJJ(j;^vJ@y0YeBX;7Sk3R)j?q zfH5Xn*0l;CImlr`iVC4^gSL_s8IjpBmmV3@#%Oe9Z+B}v91Y5+7ZC_ZOaR!_Z3t1< zKp1ZIxcx^7(IEyCUbLFU<0Pnbg3-r9WQ2jBlUpMU(5pTB+M(%z&fG%f{bZN4gH zEjFX>m1Xb(DS?WDf{1Lhm$8tPrn6bluu+YeFvW%eUViRsQTkuJ`~HJRC%?S=<;i^h z@|7Dmw{}>HI_bmZY(Ci;kGHujp=ms$79IfvFu0-#k;o?n1(!4~L|ZP4y-k1lnQA#5 zo*qGcB8yq58xl>D8YLvpp8as7)ewE*hrS$+3i1PXUQ>Jc=*~yK`tq%xq@#P6hwi0Y zSHJtp^S5r@9E?XHv_}Vr%h@a@h=>5nCL%Cu8x@Mevnr7w@VZ|RzJZ8XTeM##CC+V2 zeLw{E+t`|a=X;|P5^8BeWX7uSh_sB$l#F*GMG$o0m~mwf)?P$d(qK^*5@U#=4$&2bbA@y4 zf{BO_BqB1HHKN1y2Hr%_YEL5|6RL&BAgKkdb-FVFm`^6gHpS$fM|Rj%tpP?+ST;?H z35bn#-Xg+kU%( zJJNd!SDM%g5O)C_9XhdCMFdcV1i4HNprEMa7$QXg?xxM-Q*~`h!>R^sRs=H$Lj)!e zfFxP@HA4�B2q{!Ca_by1+Q?mrY*>7a`MkWJGR)OGyb;Ey)-`P^m{OIRdROK$eGJ zEW!>|iIfz&%AvrZjKUzK!p4xMi2y7-&lu8j710jQu(@u!lyO{(Qay)i&c~#665)(w zSbe4!y|W%=$P2s8OC0A}J{l;5s5DMKh8SSg3yN z?CFTII%fpXKGz1-;w*CB4Wd;)uwwFGsySjx40@@eNGycTBGrP5Dw`8zT35gJhln|?;7?edxM6?RAcx)kl zV`TF!lLv^V5Q2zg`I7r4o6hVxQ%XcwFKcFE=R_hhtB@)oC}?b38jZ%Uedl}czx&Qx zAAb7ki#KoVk3t=CxyTGayErriv{ZEkK(k_7w-A5=N_HWbl?ezWrEGqXl;ree-ns;; z9$l#G0*lvQexWRf@4WlL>0`s-c!m~GBC!o}EdD=WWXy>Pg zpM7-v#m98=;6_z^|95`y-Pd2fdGpeEP^krPj)y35c5)h$0tgbM6satSlQBD9oSddM zI_J;|fp<29yg2h(z_W5edyx&D)mAYXSqcj^a_u6fKlWyNCMS1~65YYV!QSvg`5 zvJ^feQ~HcLI}P?hZAgX$O!L+ZaG@g&00dw}&BhJ{pb%n`K!kuKqKfL6hh^nZV+zAz z=^R|%z5M%s^oRfb|LfoW_{Trp+P%E9w>fR<{Tnx4m>qxq!Fy@BL>5ON;FEf3>yznR zqD%(Es&u5v2*c7N>!&p0Ew(XWN%Uf1WOOqu5Nedl0ZO`q$vm!J7SewyD}jv z^0HmFF%hwJsmA~)Db2$iKr^Ebl4J5tD|UOEo0qn?ohH=yO+|#Ngb-3neT33E5dnZE zBHE^1E*51q5DCJlfNI-{L;*_TUwZN7U)+5DgHPZ7zjiDnE*t@2{=boRYd|zt*WJ&w?}tRPmUK4?mYVBy?AhEQ^TvTJon}gzWe<1*S9uD z1Y~)`4)qwNX`+H6sidgP)nr@^2ladw<~1`D;5QW!y(9q3cUVb;PD{1*T4IE04g^&U;55#?`xPJ9xx?F^}r}YN$q^mNR-Xt zXgDYsh(St6I2xYL=XKjSD#0<5r#6HblRyI15JjPItcaM6t(Hfe&B+Q%%$}hQ(zb1k zsVtmxj1D;xMT#+rBmg9JouSX_^%?;YTTu=3VG^h!=a?@*&MF(KLJWdHo}JOJf@lH& z=B91yHUL<}W~XTh)XS!ZB>_^l@w0bW5N;30mv?t6W|HtEQP68ES<%nv)`mt@MN{Tc z?ozDsF*(;zE$a5H(*^--f5nbTt&1NLgGKr5Kp-MWC`uh|Mn3J6?l<3oy+Q;tv`g-2 zBtlX9*#R5v&|CJ1sgg=o|8mj|8LL4Lmdu*n$wbWF9VI{l?ed3vVAGqstb3^clfY1l z5*V-nLS;*>0VNPp`^N}^Dg;1kN+)#nZ4fgZ77=A&qn(5}JC0}Y&4pv!$@X3t^nQkQ zWb+uv`Q~k1rOqcj15nn6@GHK47I|ic9F2|#Y~v;Di#hEFI@P=DXgxQ~0EiZKhNdE$caoG5J<-7XK~Z1|2AgeZucvhW zdhOfGu@L~&*v1f&h!ULgKoMZkv<{J}aHw^P z0PTxcuMAY*`uLLv^W_)K{P6aN&&B2Tl}o!}FbgO6=u@}cEGlHCRwz)B5-S(3C<@0# z>D6%yPC*p}qd?TyXkGepb37Uj5CsS%fkt5jibGU9+9EAGhsVE)Agb9^`AC;G0e13505`x_Q;G>71 ze94ltMGamk_sAXAL(JBONYDLkud)Te-a>*dm=m(|*0!5YL+!kr(5;gBjkB7#-pqhwk&;Q_$e_x3L;N@puOriPW<4;jqj7me?iW*J&! zQv}2oDJqJp2slTMJt;au&qxB5b0hDyZA22LHE8>_B0>QKQcNL)lw>Vr`w1cfVL4wQ zkSo}-jzrXydZK`HdAZAQUhtl2=2qxrNeXksEE zJGHX9tpG~KUI1p1BLS#Gbby4;Q5j;}HjB$!lk(-4-e&sr;OI!=&+gs6-!7kj{<)3a z@fNi1_%=Z*hRzr41q1mgPQX!7de5cv>|KLslx>=XVvMb}O1inRu{m*sib)hTDyg!n zE>2~7lujPC^W*vS;ql$u^}~BIKiQj%-uS^QZ+z#q=U%+EeR+>OwoR>VE6p-4YeXqZ z2OtnZF`&oYo7X2dZB_>n&`v|! z#27=2`@4H@zWM!o_x}A)fAaI~y}jMbJ15KKVE@XqFE^jO`*uB>l13Migp(^1;=FB} zc(Ng*t?>W>Nu@yC7z|i-+0+cKa_kFQ3N1nir~*lXY7+MBcug52vH)L5Rt%P0;WR{T zLz4nI@4PF0LC%~vF$UF+A&n5T60Hgfgp5om$=J+5jW`Wh0TGfY0L2s~B!|qzD5{cF z0f^cV=XIk5np5+$h)~reN{sA0DKUa)VgN5NDJx7#Vn8k~mImtso|htYH>P5KxX!7o zHtLlr%RKTk5}U)-=;(2sp^kLNT4Kt+|iKzFqK2QWH2NFmmX#b7j`Owpn-BqU@{DYe64b@lr7+aJFB;L%Y`&v zB3TF{DJZVl?V#J^vhl79bwJaQ5fF?DUvjZZ%^J9Q;58W*FC2sju_lQ(FYRMlzWwQ^ zC-Yeg{Ncj~H!Hk#Wp8-t>R{UoHC$k9+hx>Qi;D)6Bw{4ygb-7T%E-Pf+^F;*+Qzi$ zTv{w~c33&k7#E9XIh)015l>I*hxgj!2WfGNkO0$8S?t}q`n@+^ef@jiy>|7oA2L8_ zV;kB;j!AiWSWgcRq*?ZsR!zW6WmUML2h>Y9F3%57+mi*cBV?3l+ZZ5A-Y+bRx^sH< zJ$b$vjDeNt$neHeS~BE;ye#Z5UCD=TxkBb>&P{W2Kddah{oC0IW4RYAdyB3#q0ZzB zpqe_eqg)9Xv*cA&P{~$WBJ<`dDzIYZ3(u?}oSYmzy8r0pWLB1=?d^@xWcV*Jc&V>Zk9Ms2-89ib4yn9C; z07F}js=_%92}mxA-T2Bz7-I@;><0d8M1%?~7xN(v9XJchk(4B9;Vs-wuU)@djVJdX z9xm#3d+1v$KZT^w1-#p?fh%ps3`o{NW<@e-U`#Z&CNS&JD8K-KW@iOJ??@xYAkB1l zJoxS_ui)pO-#vKP3Vv~NlJ4H#yR!FNdzVL-#_EHsRKmQ8GK(;;DMSHMW>%tBQV;+t zym!OGmF()aRc1g+52l3!2eMo=i}|9N&(d<%JbKU`+>482h%Jze9o^j9eChYz`2G*S zf9uw*;YJA*V~ll3K*)s;v)RevQM;JhV=ICraD+wSih+j#Z(rS?A08in@laHWy`@rs zswEMK3IH;oafksx=f=BeOill}NJ>C90Ola?PD-q4HwqomFm{S z^3Q%`&h;(^BQptS^-(O^N1z~Ad5<8A#q8nzhfPRCt}NW{{?6Tdhwr@o{u|Zz15gmG z_O4!iHhl5P`-_u95M@Iszv!}o zS34y|HJKzJ64BVUDaEoVNwF6ZQDt5)q9kAhrCvmU0z2|tm_daU98>8?+uB!tP-Y0yv0!I4Sv6#12gj_}d6$l~a4GT3xPeepD?!mmr zSR6Pa07fK5ae2-{1ONvDhytvtl#>C?bf5?Tgq9!L*9J8J-zKoJD69}cm6(jX)0%YJt%WCv+3=KzP*mEwDTNW{qj8X``t8s9MfXZh!Le!NH@tUe4$9 zww1yc1-n7v*?D!29JkAsG**rwgtn<;j1octvgu%JqujXl%*M|4&hF0s)vJ3qZtPs! zr-GqfwrSp^2qKIK3U%Go%VlUA4T*pOAOWD#Y_@#x$?eO;erxQCa(id%aM^0==#LSM z_z7qw-vRo$^Of=ibI)}q?ffQow1qYhSy`t}cy$T#mTAhdmjwO6E3+?9S%44ZoSwv^_QP~NHIAgzyyfE9tfHkADx`E)o^bz9&iDg2Hw-A zpU-BC<)W43d^H|b+~9Iq2hoU80;i}2b7AYb3+-kA1QbOT5Kv)qL?TII3N1KislZ4D zgRoez0tH1$B8nD{W?DfW48)F^M^~XENfJAw4Txr(iJIokGD!kr5sT0_{$sGTAjr## z**Qjq)DEg*cW1ls4pUSl#cv`&5J4b>C?Z5>X45$lp&5CZ#}V4P(LxJfCP+3Vq?P1= zJWs}>vZ|KtGR1&609|ut16bAoB0=50UuT2rRp)gJ6=dUnHgtC)LJ>e>uI`=Hs>pyP zdh`eoVr)}A9FD&8+^r$$ox|hC4IUlLmrZzaw58MIicfcn9U+`)7?R_S5;T7K=_mK^ z-&rh{i^Y7gXq+ob=L_blDiSc2USf*NdQdVa2~8bBNHKDXV+U6TZtKeB$@bRv?(W{@ zOZzu&>|VcIOokAf)J|&&NfHAxU`x|>q99Gov^k!5c8l4x z4mG-RF!1D%me8~@L6W3Nv>+}VGa=<5+b(Q3;|dib^5j({#?VHmz~mSZ3-*Zxydqk~ zv>?d<9bu>3C;*DZuw+D`goFr^BqE`69ubU_L_im9-NsgdR0u&V&=CQc*|X&m2q+Od z#{{Wm)V8`seyo zT3MXCgP#y~v$C~yGwPy4^vq;l>Ar-dIi`^mm9qh#@)XQygp3*n(fnqbdG9qR+9;W` z$;xPAh9y9Vl+9ti)27R_?1IFw)3%=gY^=^IqS18;=1K@EU5=xIS$uQmU0%qLRrROA zBVXCpvCTTBd@|nndIk4M;e-0*zaGOdaApRbKaWjC%r~FSZzfXAaF&%#!!{jTkphSn zCBe*V1*im|2~bfWYA#s;pb3>SO+e1Qv5_?52_%5j(Jprv@W} zDk0|Fm<#!Bvn}!-WO$o&N3av=8Xb$ zIAtw$Fgu9AplLQ1cEKo+6NT-%07M|kw6=bk8Goqvg#-mmDy=l((s)qZy7k_dcOITL zk^F;)rw@Pplgjz+YB<;!CV*v=%HinRwaeG8TzdA6R~Ge+)7j}_u?S5oO&jZ0Vr1{B zD4k~p08IsA<(&8E9S^E?q8hFR(Jd`CQP4!YFMs$gRMOX#eP*3NJ z(t`u;>)pmN zn_&AzBp|lVQ8H3rsW$zp%3seJZs%90jZ{a~b=D-I(5WxFb~lJ9k~4?JLJt{%K$CK= ziUCDg_^LF;A3#CVpejbgAs(JgPfkMH4##6hbp7g;dv_n6o-R&Kjz9nGvlm``o`@I9 zgVD~dm%l3^e)jRlUZQtaJqd(dN*H6%#lnHmWKxx-qK;K3o8!}hPnXMiyI^)3-j_I@ z*7c%Y1`QE7Mwh@9j$Ph01QAGk^4iRDtBA}_MC-P3?7ZhLOAHmjF(-{N(_fpuBMMzj zE}Q9;3s4|vln9Vj7E4S>NOj$YlmHpjOvIo`9JBMzvrEQs0cM9(&@>thZd|@R84n=@ z1kKz&Pu&nOgxIvL`ylXp~>#b`VpZ;U5fj%hhx&Q4BK6H!Tp za&$H*DlJduk8a;%a)ZrL<#;qG(=tR9wUlII-%#RjAR^$bl;{}_dl1tpk-3A-D4a(i zA7)qRRaWTDo#(FejYI@?p-X7=>1s759Vw%VaE1!vy(_DVm^DTK02R-EJRUiu<$Si7 z&G`ydB@PC|`Mkb&_hG$U+`fH#G#XZuVV#ot(WPfzhL}Eh`>n-dUKMP?jNn-W+89#P zGMv(6G9C#J=xnzXY!J$m$jAnT3 z{9w|V|FsV)U#&XZ#yd=y|L=m(pR6xD^^S1v92cBYSHIVgE9hef{Mzjsod8$;kO{@9 z-zxwV`hCOdlH^cp0u)3BH1`g7L5Eoc3MeEH%pBrkkzoR4Hcrd8Kt+KZqL!ib*J7J~ z*HVDq;of_Fpu^>B3WJ_;3axcfzTDa??YB((ojC(mm(QojfKV}$ha*{(BZ6o4-gjvO zYnQ{WlmGt&*hrFPT}u*XmM-P5`!EaAy!jZkHJ3IjA*U2Yr7SBzP!d1|bgICPnFzbY zD_z<6pbvFhyG-`gbe6n+$pZAA=e(eEL5pN{5)c58yDgENqcTC=Isj>OG8n$}%uW3A z!M&qdR5&?0t?TBI_efd|hBt1$;1xf3>sKGWh2MYUJHPiQzklh)TX8W<^LcC<2?5Y3 zs~jSs3Z_7yo{6kzAOe&Hc-NV95Hv}gr_)o$l3l^*7|07D3#0}CtHL8e2*HtqP6t*% zM?S@Lc=v%v+Su9DHW|-ELJ;axk@7B}XZ8ieevB??xcar`9<K+dQ`Nd@LI^p`<|#x3=9n~6)w)@hWd(@9Dw+tLs34JZjLFQMd1hGoeH&q9o76j5!wHdnmnSUjiYh zXj;a_oP^m`Fc5|}1Svn6o8j|-#;fs^`tPM4@pHv0X zU|!GLn4)M(5|gXEE4*XQ>4ox29|QF-%L=omN@dvp8>E%s>Vsq$66u3gZXU!$u( z=`($bV}9M%376dR9a0BT&>&(4H2|H;lPzPJmkx!L6m#edWG*y-&f}Jh2|C#Yb5O5Q zrIGaYJW)Cz(xH|fgq(Z+C+KiJ%k#R0IkRfmJyRF6eZc_dHM72p_P-SrI#jbRgCWPz zfJJDU3lYub=!m>$ro5-2s)%&Bx;w>hHk{uYuxZ=S)D78#m>o2ak_F}g0Av~w1psq? zqmfSnf{M0H>l~9OA}xqXAT>e666_Q(CoKYicBwOc7>V73=FJZw`*c>5GDl9W#vZNL zGgGLkP@;<9N=n2Ej_RZ_X>5niKX>&qqUYXi&|VLp@CI)?z7f&>*T z*?E@~*&#bx953rxT@D82aLCM=3rrFyPR8T7yL%WVG!1qcLy#>)6zk^j{zGXa0ZLL- zprl_P*EhZ1w^X5o8zs~=+Sa{^6>ET zrOU3M5b9gEuD3D%{mYs?5%L^YRL zQ&9mRk4%iav)gxosNC6^&6mj1*0CIp|H(i5vo_R!^H+cKm;d?4 zKmWxq{@Vxt;t&7)&v<)_PflPoAaB+>h^h&MMQFZAi+S7DgvyL5q#&Y>TP5d6d*k2~hwdhVQ&~=k~eu4z)}NwBEjnh=5hpp<-`Ev0a0ZlI61!CxH-R z3?YUnlGtkNf}+T{s`fWGrwC!cL@O?EF` zZcyhTk{{f9?ez%hqqlz5G)>{r0YRSDE+R@w_33QchPoO~2IXK_`l{G0i*is+=hKt< z5`v5z7u9Il#90%Q#2_I_iV`bdFf%iu0xA)jZC4#3Dntcg666$O8$yz3gb1pDip-u{ zLCI`fnQ;phNF{-)CXob+3Q+>0Izkf?irBUx#Hhr1(-j2OqHu*HBWqwnR@NklI2jDC z?d@%EPBb(Enlt4@9+&oOS`l`;Nauf3Rn-(lk{}z_$sd5FNp=YP@pGPa|Mnqny86Pm zt@-9NcNaF$Zh=UosLG_mW~3reAOYdLVF?3(Dt1IB-OUN15G#W)G9fzzN9aHa&;c@_ z%T62PJJH_#f_d?RrP<_k4@AQ@h=4g)r_DSYAO1vsXsD@`s$kdMbL`f z*l}b&9krlFW5U87kDN(@ISU6?H~ly~Ig8P;6U{59O^47g>?HG(=AfL8mTwptI&0 z_nc(T-PKvxv4a9a4GfZ^#x(Z+rE8ZVv=8RZwX2sym>e7&CBP5fee0PQo_XcF-zx{> zzbpqo{_DRyynE;W_<#C8eD_B`WPqeGHmWIC8AHafY{SvCogUYV8KuOip@~5f7F<*n zI}a)eq*=Dh*%Ap|Rj~8ysdT>Z9+;V_8jh|!Qyf1!JUKjOAe)yKE5hVM(;gol7QP5k zOmig3-ag4$hJDoJ6J?1BK83Sh`ZWy(0M<+f{W<})INfZwI(zb*NYPn?a5bB|*ftm zDwT7BP!{l=mtVT~<%7>|e{uKA+r!D^r59f&)f!xgX=7vi#qYi;4IJISBW>dxi6kXe zDn$yS2og^g^V7v_P`d5St?^(`F>g*LRZ$J*i`i_}#75DLs*)Vnp$(ealq{3J@ZO@o zav&}t7$d7BP>xM+lSzL1RjwDk@0m9BT&!+Z01= zQ88DzKyZp>;l1-{af1XZNmHtPacOsZcW0|$7utqY)L}}d33Gb-O$;D3P208|7n**p zh*+Pe77m;wnytDl3uD2Yo=)4k-kwy2cVgegRTLG#1yUlj1Y~fGnGL%01a=NV&EDKB zB4j;j5EK~El|_mPSQ3cFmdQQ4zeAz@@XmwX-SN%+orez}r2_AL`Pp0Vy!Cs3@P~i& zr~h;~82`op^#A$4{-6IZ(}RP5_Fw&TW)MuVMM=qur~pBV(wxkj=+5xGo|9yA;r`77>tviJqMT=d2;?8)c^#fQqQC%JUI!y@=3XQ$#=(5uLTeuBVoS zo^v1+0f^9Qd;lOCOf`572!f~s@3%L`#iN7y>FInnyLR(hNU`wv%=IfrkDfa{JU%&i z@WJ~Z7R9g}4(CcoLB`eK#>=n8I(_-!2eFxX*HNdF7xYAlDJ`3@s1N-NwkI1KlgWVH za8Q-L7?kztbXqqxC_+&nyJcuYiV-9=653c6g^38Zegaj|lo)VlbK}z9 z&Zrv1&{9g|QBp!sAdDA_h%UBl^+q0QQHe2F#(Gxv4b^mMgRtgExbVblifXq{$Z9S; z@msh)c`s_KsoJX>D_s!@K@|n9W(g9J3M(ogTXIbj$q2^;lmHM)Up3V3ExT(7gi!Op zM1<-v0~_B_Nn0SWQNFA(q;=l49AANbn!{RA(9V_vy+2Gb$KLAs)qK9op2C#%G}z`T zVa&N(`Cqj4n+RGes%bf^fg`XWLjVFYG6}V;DMe5g1qMLuiVZ9Tr?oCj{kGh$B%+FZ)|VhxOx4`mCLI1^Pm0f_QxOZkH?$CvTbG>0!Y#}V2seV+B7K!M%5T%-L&(1 zc6z#;P22f=emo7!rGx-&!U!NDp>66WHchCTxLAg|iEY!it$>UtV^_Gve4!FE*fwfL zc1Wa2+7OKa4!Y%+nZ$FioW(0>k)bw3E76t<4ukcYsepMQSijkaopm&KF6GpbwWhuL z-N8+?wBq$US{>a_>TX9?FiTkHy3C3;;Xk&A8XH$t2P!rN* zFxcJNWYiej#bP0v00F@hmJCdYf)G%aAx!7X`FvhCO-KUF&bg8caz3g?iAcyyh&hQa zr4(X_A!mA!tH~lB%jKi$assbt6X1lC37_3#Tz6 zVBrd*8HxbQx{X#Y8>j()s<}o&B9Hk02?=lorbch_G`>wFTU} ze)HBVuL3~RG>gUJLJ={UOp2lafQMh)nNMfLWCp9R5D}Q^p7FehFsGbIRd{kv6+ijx zv(G>I;KttO>o43S2^Pj`GQ6Ks=cGi3YWfLAtEtxIf7mqaMMNh+&WH$6qy#7+s)T@| zpg5e26|r5;ukP=Rt3lJ$%=E#BACvbtZeG81X@6^L`@Ii7eCy{wuLv(~Z^f`kO^qo@ zXrT=lqt=bIEvS%6Sk__LET*&h^t74Jm#4F4I+qYML<|a|8bez*ZPUcM3ClVzYD14P zg=$a@MuWC(LtAIfr56#*AR1yy0;U3e6A^Jn`{@Kk=WjbJC7_elnj>%WX)`bR84yb3UW3K{^^l|TIBe+&SsdUSNOHmzWVG!zhFG8u;u z!?Hd(JZ9n?2hcZLgPKdL`X81S(dlCHpt5R3&CpSl0Wyu7I=m_mpi7 zX`NX$_PdKh>d{=U4MXR0u^R&eDulpRd*EwwNck^boB^l)Xb-Z7*E%a>mU{TA5Us}!K>f=9#$u{&gkmPiE5JWr{sEh z(vMu8b6I;wG=DH6GFZxL_KrgT6MET1{glg7dF>E;ysW?W>jM^(6Pvq`tE3jqMGUAuPi;GJ#X8nF5F?f0Gcy>Te-kd~RZW-*eKIhPR3y02u~vkf(X z^IR6CFN(v1<6r&5FJyW8{g=Zmr`L)$iWZL1@vf}+(qB?Pkin%E~4tmy~q!dJVT5zMo5)ma_GRCZ_e z>&Xt+t~1r@M|4N6ndH}6A7-NK?_JoiH@fxXOj$$1o;D&ceN}U~fdV^5CO~3EL_V4= zKK|nFqHg#0b|=FDNdh$Oj@bDqdUSGfvRpXt_xASyF{PMdv$wN>ga-#lb<-~E=GxUO zTa%%xCUUAYEQ;}XSe1?trENpgs0yM5%Az7L7r@0L#<~g1ww=}WX}wr1moce;Qzjxt zK+6gRKw#hvT1;O zrwgEx_YP8YxnQY?Dv{O%CDG?$-9^CZ%L%;N#QNlamwA zz9=gNUM$;gfTA2|z(_bfBNdPS6_POiZpd^>*?y4bZ6BrEGS1mVJ{!@mXbeSZ6~-cB35Fj6A=I;1}`&l zm1vtpgm5w%fTYvo<173709r4XBJ$x!ACD%Z&F!sfGMQ}beDcvJ@4WTacu;PX@PDpgp<^H+)p$kw86yj0JMh+ZYk7NM0{9DCDT$1$v(C24&J@4NWh z5D|7inngsmLP}CmRRLmR#|CUjsSfh#o%;`uP9~F$y`626h$MhYfJ6?6Pp9+4)6>Mb zy|pzQ4%@bs)Q*PbcrrXbKAleI%ch-dY+Svx>jcn2FYrY5~*s8scl1>Bt(fR1(cYnHWZ9K z%hU#DX0M{ED8x+&F|^+EuqY8=*|bpwiE^@qqGN|34Cu%Ks4@qTI^@ExfNB&2o~d#^ z@0Ug-o8r#qczP@uKH^?G>=5iVO2N-Z1Vd#NH%*I zI#jd5E}bfi9c1Ztn6JLJ9$kYGX98QB}|`dNE79Rrh9U5TLc-h3-`j(!oBt7$FCK*w)*{V0U_rA_B3H z5IU!jAOJaGh#G0+=q{fEbMKDu>zUt=U}AAJ7#zx~($`uG3%Pqr^z`RzacBO>?r z|M4&W&AlqjFezS4fhOViZ{}8%?#Suy=#e zs3;3mtGEy)iPiy-LlYf2hd%Rds4Ys#wjgtdt7eMq)&6g5W3^Fa%~EBh(&hflAFTd@ zUUM-er1QeqnpkDosAO*L?wcKy?|f;{g>nMonRVDT?QXHtbykOI7ifxVAqqw$fl5e> z1Yn%bc1J`=DTxHJ3Q?9NpEO}=M^!l*6y;+1;LeweS6;e&{Yr>|pjj-BpS^kG%5fc82z(sFi~l23R&Ag08o_dcSmy@^&&!h5di>-ETllp z;88F8&i~#2@UQ>ipZt>>&%OBEYp<~L|NdY7 ztN-`^_#XykdF#?ny*LpOWOg0_KmZuYIYPt`6Ct?LPk18*Ns`)>+7O$%6;WWUhQn%5 zu_F-?i6YWA!6}3`#zq*J$R&(=Rz%ot@iZdBj$O~pTl;lplRFC~p;JszK?y;D0Ihm9 zND`z>^3emFJZOEr_+LvzWCYcLQ-xeW%T#nmW}uXnJOTtJ644Y=<~~6bA`t}%1@p#u zP#w_X=;Y!3`!{Z0BM*>5)0}K>Y`p&B%k$YU9-SV2_|~t6-e0|OGYHN_7QkZ%n@-EJ z*ceY{hleM}$0xICNVS#)p%*0(C077piV{_&R+hvXn3n9=IY-L2jM*V7BMLGpp`gY# z)geMih)EkI^bUcU9kC-MA|kWhTZu0;4kk19B@kysv>kd+YV`P;6WTx(Q54${qiU{K zssNGz!LzeL69gbiZ8IqS*49SBm{LlB)064R$+09E4_z(lm}j%a!|BmulHk0as%PKp zqM`sgYQqj(uWV*!TUh%_|A|?(yV#9vNnVvU1YOq&&(7P`r(fGTApUp`w>glq5uZp! z39TTwT4_|<8$|&%*%c)rXby}7zyt^a=rs2QC|J#E%0_$4G|ZMeNYEKJdmYBWl6Ic0 zHM3E_vQ3{-OTEhdrM;wEAChb)_%)iI>)drH^Y{rbeDmzt)?a<)vFFb9b*KL7L(V?~ zo_Ud{nW|cyiB+AX3=~0)au@rGxE2@>+1Nul7X=74p(FrRG$L-hiU5#+5+>=hpRk{) zeTv0e#>@JXJk`kcPv1%Hb6;D%x8|!F|&7NRiuQIrqYefDD^hrVn#$VRG;_cj8&$8jbPC`ZePuo5 zeI+C@Q$Vb8JG-F6GXk;m=~&*jrRsJR$LHGlZAZ_`GR@b>?^_h7BBBV|?wb-b`_c=F zs0v_G1`w|jQz$C8xiLDOEskf?Pd@tS>WwR-(ICYLDYznj|FxH!*~!};mc460~GTSP=4c1TtjK@+hh&p;xJxnLr46h)A@ z%WzUiYJ^*wR2AE%iEUKmY_tO<1n-=4jEaO1QAMLi*xJ})pqNq<<@n_Ebb1OZrLPDn zq;xu4JUBUhA+74Jer?N~C}vi8f`~9e7$$Pe-np{$NyMZ?+cu&~gvG#H%I%|v4~`EX zZA}LIyW1(HYyw(?GEbHgy87KqiLCoe77;dAL5*lPH_KViQUsL|JvqQufIu-t4=KjP zhu^R2kYp^q(l}G0&8+ZLA$aHtFJ;| zPGKb?vf}kv`&toUr$g-aegLy>7-iGU;^M&}5Vs(A)XU?(AqUsF}Z5JFqGssy~Ead6Du z%GMwtLV}o5*xJ}BxJXG7z;wDeJU)skl;kZfZ62CC2Zt>@SwyTfXI;IerYWrc>}DYX zfQVQ<(6zbQDejM{bJ{y4Bs(#B)qiE7IIDfFPIHm8cw#ezlj9~8Ae-U=jeXu~0C&Kq z&rHjAEod1R(w)jaGSHJ9E1VyLQ3Zv7O*O`Bh3EsLR(GCN(Y4R)fzJUO$X(Pald$^a z%mDqm?M!Ft+RZ&ZwE21%^Htw|(g$CUb+j9d^>1PCPEh~^?MjYlx0e{jU>2UJqF@CG zK_TZkDIx;pod?PA1|YW7h4>J&G$jt<@u4h-%iQ<8O#k&z^G~ zZt7WVbEf08%gj-gE+H6+G$pN@dfCR5!~eQv`R2iep%c0S@f;)H6!%Dk2e}pJv+YGOH-U zwZCxn6{Ieg3)E;E5dj#J5y&f(s-h?WL{b$Q4!r8%^yF}N|I+21O*)$1ytMn-XCJ@w z%U}NR_x@2a9{lc~{^Lb6|LdRq?DF2$kG}gV`BvK&6&Ohc1kG$2$r8l@qAF^FOn8Dy z=Ej4NAT;#?)D>PesS#9*hPJV#!UWXQ)2f9H*dyebudB|<&)tP+cJz+D#m? zGf%bGNc#Tl>{|jv*p>0_RvF^Tpw+87S&uZOTC!9)=ki|1>D~AG3))5PUVGAq&hwj@ zILvEoPn1BBfY6Dilr)ks3VYhw-aI@$4FsQm`swq}J^#|HFV+H16V%gTwefpD_-<1l ze|qoXz0W^LVg94vd2@eb`(WNKfFln#CWD=_TrdEps)XH*$?dG2%s9#+&Vb|3aRj3eOVT58vwyEfkF~_aR0%4dVKB5 z#@5Clr8af5vGdr#lcfaaMWDKx{@ql9Zd#uc5el|)QFC4jk_|P3GAF}Cs!A#<>IH z)}!N-a!}m3y#M9>hc8~c^2?7u{rkWDt3Ul;|5seOXTS5xKMw!=FaC%B$6x%Hzy240 z_9w0wq-J5nI1VuxS7b_7HdG0tDrmB)o)eFV3x<$XBrfN3SC&X1$-G+{rmgum34wD| zL?dIz71a z^S}G6@4xxIXP&(^ZREHP0ZXXL$@Rg&F=O&RZB7QK)8(|TPwF~mb%-6h5Ta6x4B!x< z5XYbzt%5Ef19iqCR8&DALT6f0iUN{Ul0wG-pW_fz!2->?t^-YqY`Lun&=K&k5fo=8 zR?MpslSEMwrJUvr$b>~v5HkTPL5!(wW*g(lU^oE9R`lTb_;k8Z00LiB6}loOcyxSp zyqFC(HsP`MB(2%x7E_;;qDmd;UZVgxH|mcmQ<@ckmD47xOZ4460xL?5EdnJ#*!mn;Y9(fApvS^nW~f_@DmMk1vf!&)&S8l1Peb zT##ZJwiYZv#MF&x$8>A9Rdxk~sz^$qv2jP@9J51gIsw=;Ct`DNN=6G=JLyd{+Lf~D zx^2}#>z%pQI`aYMK0AnQd$W>v+Mkw!iv^(qZ$FK>r?AX~Pv z1_IFdO8a&QBfcjMdgR1R_J8DJgt}FNa-;#_T7ar*WC2YOiGWEAO)5LKihDu48_eFJDF9S+TJh^;jT=9cXKW-Pz z?qp+Ydw0?_4-OuloSrIRK}>~&p6R^4VLOpjt zJKNii++w*nIz2sF&V{^3_Q=(ElE^RX_GmhdjESEpB3Alg4}<%7F;S$xY*7bo5PO$M zrz@X5IpRt$>VD!Hw&|q83L||3`SpZnSgU%7CWrH%2(*G71SCYLiexl%My@VkoMv`1 zF}~s2CbD-e^awt`#=IiTl0aD_JEQ%cfi$pYhhI}Izp|U2 zwhu2-RJA|FSE#Y)6!NcEcz+$07}s9(LJZHmcc$Cc|3+0sLAB|ZQ7S@T%`Z!w4%le# zJyZmX2e(>n$SheqPykgmW=~ZBvbwS&h=e3vjnD3evVOcmIIBB73w2h=r(bJN?65O) zqK^tabDHiX*e$AFGIw}JQK@_OoF|})j!+SkKpSGxD4?PuD<>1*0!1XjO6 zLxj4nlL#nC$FtFg%mJW)CY9rpllgK1h&gP;>UfEOA|!F-Qj)uO@17nXU)tTew70D( zjj=2t9*v;B-(#ZE#{iYF*-A6F%uIaF*19{1mmhg zP1DoU!EopZukUO_y?FcQKW9}1+1cCwM}PRIi-3RirvRF1T z$zU{O?*S3WsQ`*pj&`;-N2S{t40padBzv3zj4TgTdC#8#iBl1*>XVFE^{=+Sd5i{_d5{&59xFLJNhW zNJs({lGJV6N)%FH?4I3Xzm*Ufi2)drtqD*i6_IGWcr zpchpH84L=?ep$CiC({U^Oy6_^A%eEG0DdsT$C+^lOsdFqI-Q=*rpW^BIuRi$0gxs^ z0msFoM~@ynxIZe~ts7SfB+n@ACF9deiF{DcM+xUd1U^|rC;}2OIx@Q~8{0AhIqwm* z^2Mks4jw%m4u?drRaMt^wtxD!f78yFW#NV3w}1B!FW-FOKmX0&fAZOFRYZ0~WN|8# zS*{QiBqbFwfuGZ!jcx|=hKXcW4s*+hi3q}TA_CS#gnm0BVzs~N*~4LNp=P~La{^|^ zo7UwobzeUtBG!YDzKMwFHrOm2px5RgK;%r(#i>@lc8^Z_dBot{&&8!Q~Jfjdq4l%zxw%)|GG-` zjjh3`1eKJShnM!BdHuD~-rk~ZN`gz{!L7ZW8@oH3Wg%J%2P|D87NDTogtkc`fhc!D zL;$KeD4!4=q60xS7$d04DlCaX9fCt-1!p2c5mi~C@SZ&<5m5j%QW;GtCW*$I2<*@} zwh)`pG$Ck@c2NZ+S{+lzgw)oH6x!XLy=pLQ+Vf+# zKBEp@Fn89J)^)Fef+Sf5ORXe@SX{tGQ!+=YcWZz3Q#IR;Fzw_6q z_Nx)rgy-2&x}ZH-dH81SLg2G@@(VBWO|E>=h@%Y_o{OWxi*;i?`^UPt>2__fpifPp z5hQ^|&I_Z6E0<_wH_QZw-e7qja^eQ?4zj%>Ll;XAOaUsBL#40LZ4FGv4SFWuC3@-s6&2S=er=XBP+ zB!FnN7)YQXf~d^2TsDe0EK61mQEuP8d-dA&y(?GR5O((WXUq9}@4izqj)rB7$#cn$ z&902hz!?-ELN2J0xo6S1fFav~0M^!>2})Q!+v>)_>O8C-unWk@2Xq=*_ssd2Udihs zb2^Rgv00Tnx9ifJhztPcLti64>UENHr_t3{a%g{!MM4Y0Uu`%!LdnK-P3q(sg?V9# zDk?ECS^B#rrt8Uc`S5slJg?citAB5VhAKqdhZ;yp>0wtRu)Tu0f&QvSpldCp{{EI63W53IYdGMlpJ$xo6ywzJNx6w zZ508$I7IPp6#4o(`;tzl8O?Wz1w8MK3PY#cpx-N>s zIj3tYH;V`a_S81*=bwL8Rpn%JgL;iM(?_y`FmV&pTW`Jd;k&|4`4TyIUJE1yon~(xNPh5SjYae%sFUyp-s-G+j66bgSpv5D~fG zbX`P1CnYY}cpj4yxwAVDO!m&LHs!M#$C^%cUPRcI_tYXHZ@^aQhLG60*kM7@laPP~eo^FjNmo_&mhcUE)VY0PxLm@N(;O`L2Es@?I%-p+P8D4Moj zEEnjJyo-PVHL5ABQN_Ho+54RPPnFR;U`WOqpYzJW($t8oJ|yI6f&fe@B@L-`&KH~{ zHnEAIKm@8JFer<%AS7&)EbC=RDpuSPvWT$QckjHWw46;h#~XXQyUV6II5?Uu>PQUa zSW?L}8IPTFv+4Z7@u4CsQdtfD>;KJvZR_Y9E1ItTK*h<%B(|Zgo9WSsS-jbpMLJhK zfKe?`uVCawoe{EuJzZ1WlPQ!a2|>uJ#NatfG{CNw)f!m-+IF$J)j_80Utg0inx|v8 zlJW`ivdV{H_p7t9SO8}y+Dugd!JZlaf`8EEGDxob)2+D`&hKE}lcB_upY1E#H-(B{ zt+VQ52jThe{N{M-93;rTUjfjL!gj{Hw`%4lw#p3Mb95mR>&m!2 zkEn)_y%uduue|=+cw=KQ7*1zX?+d2Piq?ZTyT<>|>7L*Ha6X@xMPW(|bc3p<@S2NO z_4XHE0;Fp$6bWEsRBjE1Z9QAgPZ?lyb3B<$wl}s$RkfU-woRi6NWl@QKuT8e8!W&; z5P%sdha=|xSotszi4?nnz05#le2PjS`u`>FKc6H?vOGcT5mhsD79Ko#W@WKyIz2PJ zGfQR{d%JgwJIJ00?$3k>P9P9`I4rOy2LZ6;W^YJOR~IMASx^tBMpWO!2URsUkBqF! z?5+`5Wkq# z3P?n%;2JODU0sd_qr+>5i{PR+E22mrNN_TuHs*>rOK=FP!i5Q~yTh(JIvmVnKxSI3|H z{cq~o$v*)7Kmx!1<;VAK95mHRK@|-FB1XRq1i+w^=%}_XVZbGnXl09cfe26uMp$${ zID(O=fCy?(-+|4t*~Q#ilUrjAtjgxWlV>0O(N9O?EeCEm+L~R=AAkGpu-CK5i|LGz zie8VI15+Xf=IE5zUFz7jBGH>R&uA=e@?%0o=!XOm;dMNz9m#YTP2y7r#nMRuQ-d;Z zqZ@yGh=8C!l_=pe8)KAEK?o3#m#g~Ze11{Yi&ZrqjSHL2<`*{007KRf1_fekI4{d) zwW=!Tk4{eo{LRC|!dT}URp+E8*8TnMgPm=umy^lq@zK%I%U9_AwVmzl@s^;9_k+Uh zjfUWx<$NMdJsK9Ht-nNZQYps)u~@FCb15t&=+O&BuaXpoeU zC`1jBNf3d=MA6$7$&31`w!}8iYV?7;Arp8pqW#QTW zj;NLqD zn|1Rq%XaHmo#`1*?a1od5jNv{E!07r^BAft)gvi zhap_C_Vo2mc5cy@<$b#3m7KOhdMD zdrUuK&nG5%$vVBRld*O)h_q8uP1%&qPdAJsogoKkt=JvL)uldgng6`Tg)Vp4_ja3Z zUNO#=C@IF$y-DGuX(EFH%KG963XOz3{2+?n%TIp#N5j#m=oj<(+-4aub10AT|6gMB zuNmQlFB`N_!v~T`+Z+l^V!^qkD*LTG8#DtvXgT`Z7*A2*QwLCk0WsnNn zXXY%ogy8GSqCec(y1u`IfYa&ZW$qI3s325+D!a)i;fE;zd2i3h0akqTV;oHBD93p#*2;eIw!; z@0@r62?4_pi(Pu>ZDx(NjrVoc2%;*IV8%S?6~qjP^VQ0UN8~u5Yd2OzP;`y8_F(^@ zZt7P@M`hgzTaSiNE$Oh|AC5+)Yfh(=QXCqCM3(sd_wWDe*M9RC)QBte6S%gBs{#Rdp^Vfg5(Y(zA~C5C*V*rLN4 zA|U3S3k9G4!60HSc(wH8HIzuUme4z?)~2Rtkfh6tkD>nn5TWfrD+c2i8BhcfB2u8T ztk0&i$)cPt%6`AUwKZf?Bqb&_>=6tSkufF*&R134s9QGm`Pqpp%U(7xCNr5ahI~_l zt9ORITi5mmMZR1t&(2O>Jbilf>IEt6Y;6zn+ zn4xgJnER?^GQC2n1K7%KrX=wf6Yrcs8GVB8L_U z7=1s>#^W(CpG_z8dIg4+$PgD<_HX}(w;?t#8jW1lRIBCr(U~>Iu+e~S?XtzBk4f6S zj>wY)!{BfgiB0Pi6e`$A$oZcvHi)g=rh^*o4E+6$4j0>CIqje81p_TQZOr`myIp}v zFQWhn2U{GIC?6-D1W}Cc>g1DLeCg2;H~+rsSzuFt@D|70pR1RCzx5Ze^T#HEyWHX5 zdt9Qi5$KX!(Wzr2>Jzc?>7#U8)E4#DG`33)I+iqzzG|w$&m>G(NgoAMQT!;n2#TcZ zb^Ix{9qe?CmT0Z}psPF{}0M7ZJ z{Ol*gt*xTpo6Y9dX3T-v{GP<-M@t@1l~tZ+9L+V!=oyy=BI0r}fA;wCV9>vI?HUK? zo1kb6f>lVeDts}WJ$n4ODwo5;W(4BA1{Gq5&LnQLR^xT|Zp1d|u;MpyiPeNc5L=_+YFR?l^t1fd{_czU)8GB}H#cwJ;@ps> zkACut@4kEZ{QUXN-R-fZaQ{qBq7^P}HgoIZQ<{O)`A?%ut(`RK>V%>nP z55`+t^&%8Mj4^?Ay+7&A_6lpm1X6f02x(8kmzX%sv%iVBSbhFjVjkn zPS47^7GhOGCMHkDaNhGyFV3e`)sQt35^c5Cxwkv&x(IAxDEb@H2$ZlQR`|Ok7{PgEP+dkMY>+;&IJ0Je^ zPd@q0e?B^&_4Y>fYEij*QLeVOw{~~7`~9AZI^U2XP!d%I!W3VRv33(Ab|4ttR{r52 zB6dsc9EIqIs%^hxcfCt%7K+yk(pamZiZpR!X#=zn0U^TV?H~dG;&s}miI-3|0a!&S zjHv|V$*pB$=BuR>hamN$9Bqvlzyo?FKoRuA(O`FfZ$)(t+SK(oj~>>ma?~I0?`_?@ zeo*AOF#u8zdiK}9`q|;(!QcG-rw^aLc<}Y-M=xLA`ug6zdv|W$zGcabi~PNhes*x{ z=CdbHs@V*yN~&tm8~)M#_wK(>$0tYMJ$QILUohu_*iaCpJdil?u4+i?+L$6Qhz*g+ zz<8)do7y?oG>YH_K#^1QRj39`$OK@l5mBdV$QsIPUxI1~PX{70)-{cDqQDyBy41(A z38DOyS5+B~Mr8Q-{LrbqQ*iIp899rhvoiNaytd~D~Q)A=rH^U#s{LPUdYREu`s!Yl6 z1QB?>=+pyXh!BTR5~UT3F7{#c>=v9)^yxpn050h3)M2q(Kl~21F zcJfxo_x9VyX;;645gRtoxb(+{$oE4Re)H|RfVXjUbUW*}Hoo049VJXkd_obxdmwB* zXcZCH+3sSI@ivh~%g19J)TYi)+kT0fs$SKVQjZ-fj=yWHndp z{Bhq5O8JmaflyP?o^+8gd414HYj9Fg)L=IVPpX=ngx^QXrvM*)@If!nPzBby{5EI+%VqWS$+MH=qwV3~`oRH4w}&8tq?2L& z0^`&HfVIGpXFD86gA{Qyh8*uWJE;NWQ=0! zrYdrKeP_7+!aVr$i=$uv`u@is&Stai>-!)7@gM)qe>iz@cCmB!T9IK>*0Zx&xm+!0 zi=CaF@n~#p?xc3;7!^P7>4`?5(O1anQX9?V8Uf!eTk&@4RIfFP^8Tdmrjf$iXn|N zrAX?)WJ7Je5Fbk#(sv73qJCj{1@qOStjD=AWmTayd2fh-4X7%yxZxn%*U@}-=7^S( zADu6YV%}fU(etN+Vz9kEIy~GPZf|kMy?+0ffAqoO?#{R0K79D}#jE2NpIw|je(-Hk z3=HAk_W0WFR&UU&oIihYigmTOGai5$kA~Mq{kwZV|M(|A{q2|EeD>KFXfv{zC;%}c zlae4c-ZyoHuE|YSWVy{UG=#=j@!tDJrE*S1y?Oy4MJFCa5JF}_^%9h@#6(_12@z2! z(tibT-V0GQ!$mKA3V=!s{r-ThIlnkxH5IZE1XXWT5wIwFWU{l1#d1|68`Y4k4dgZ0 z{QkpxZ%k&bh2U!kYlt8uHs-;%-=3YHfB4}CJ6l^E-IvlX7MB95*Q2B3XHTCpz?~a6 zGHa!(5jnZ;U24%9B~qwbI|ZW&cx}CCztYB;`~XB~7a~F?do~0B~ z!`@=P05Dtq{MO$1!SBBM@{7;^)xH1ys#-#3fAS~4dieCar>E!FcZS2QVYytD(^a`F zSM%le_V&(rCocw0o%%XzHdI3>d=fvReIjb1*AM|wFZ3=D0op$Gl@O8MUZ-ODA(RMr zR{_*uN*9sno-BaWj>8oY0T^v$z(k2 zk35dHws!m3jr(^#eEKfIWiv)K}WH6*+jyt+u)r6X=Qph*KQ!PJk58>HEgs4!jr zKBTFgqT|(zc0%A*vDuT_I{LZlj72 zg6TAIc8W^Bpym&>E%XTbOYM+oLk@u&D4jfMVcB7KeQIc$YG-M__Uv!yr61?e*I)kN zG||hi6kh+JjbiQk&f7QpbHy?|t9#rk?IxbFItdWCmB+RKtVI1)B>^XSo|vRr-q(MNmxdts!K zvp~$ajtEFJn@k>l_n=-aZ{NSUGujHtL4)L;7JNq&muz%#MzvE<0gyCgz>GWk#=LD` zC7T`sKwEGn+$p|Hn=BEjqOuq;&Z#FC+6Af%iYR$z0YJcQ4My)>KX~@(*WY~k<^2!u zvqd#>|D*T5{qp*9ep-xrgKSjJR?Fq8ZmP4h^U3LKXLtAD+QD$xXKTH$z0|?6HWeCa zg$GPR>N<^iXrF45NFtuLs_0Eq2__a2+n&5j(z3)zRZt`ZOm9>~y(|P>0;t&5u$iSr zji9mS-c{d9kChDU?Wz;)p59q8+U{=gyBN*$5bR0`q*W2XGUb*5V6iG!wHx$?>fLNQ z2k7;CJqI3w*M(L)qhdN7P0yB;6}78ho=rZ!dE;Prdw#Ka{`C3dCr`6pmiMx)(Qs#H zw{MFNZ(YBAc<{xyPanN{Ieqowq;`3pUljdE7OSSV>M{?b{s0&~*gz_qu;Gvn%@7cZR~2#fs;tYxX1yY_S;pRba4eE%QG5{q@4X8-(21N1 zQmEJG5f~9c1dvokJ&3Ah7D*+4FlN+8KovzmFD}n}CeP-}<*I4auz*!iL~p=nkQ>fd zRW)5KLX98_RYzmF#dkm;Yi+;ZgP8AV10tCC`Lky)U%tG3>(=etw~V!*LdY8s0RV)q zZXQ2;czS$%u(Neze;+}8il&X0fdrsGgc1mdK@JKi@ft)x%m3dD5p6au002UxC~Vkx zbR6=ot2$*s0G}ClMK0j`7H{wG?DUH-KmGJC{@Fk2_ls3o?cdma@1u_%{N3MxrQO5b z#bj2mnnksoO=q*|^1MGiym4(j-YRU*N$p(&AVGbn07NK|%KK4zTGY;t`{P4IlC*Hc zI{*DBk-X1hx+~BSCaGz`Uh$QUL7^Xni1_7J51pQ<4ctapKN|uVqTG-nTGaJoRqk$W zFJA?FF4QgUN#)` zws&^6dc*5m!^2df8}e zaR2t5hu=MV@Z?FOz7j!Zg9eGwSWqW~;I(vhU6;AZiagIU%btxR=X^#WMr!W_Ktx^R z1Q7^DRY^e5i?9MEu^9kVy^4fUkSKv9hzN^DQN&v|MX#vpX0a+gp@LCBKq2&2I5UOw z{$f7!qF@XFT0#*8@bJA5p`90Te@A3v5K+VjNN<;J%WGPZy)!eDVM9bkyb6TeV!pKu zCrMH_(4lkp1U2jV_6BZqSv0=%fGur+c2UM7=hq zPKWVZ>G~a>qn&5cjbFbHO~CbP*|=!urs<8iWVGE&f=fZmYFfJ3>6s|YCZSJa0I6PX z`R{%FXvAh~G|DpL8XqKKLJ}3jTvhdxCyyuR=lAa2yLsbARENeuk&s0{K4;_H$=UhK zS1(Zf!QS?8Sg5!(^V>Pq?y&1yx5F0~aLZ((uo6jh*i$=`3Lq#zqB#$u^gaiOX;dmwDUayd*ma4q9x3fFwef{|tfAWuhy?5iFS}w<1!+Y<) z|JC0dADz#B`u-hjO+Lt*#?5E5#d7uH)ywH@wzD(dJJ=r%dW^QNOF#tzQ3*Af62l1D z&JmSTFIloXhBGryUHi>p!df0tq10dt?wmXAv0m&e`NLjrEkf5Y0 z-WaQ^k0gjGu31hOOB5h(8j}3KHO(VHB*eh{MO4-M!tl=4AfH^!maD~LxjpFjdwrdk z7bh3AhebcDz4r)=pvc#*U%!}_ezD*p^G);Q*^A=--4A~DQ*~}xUaVHD#eBY4tY(u( zQZ7LEEW&xqMFZWjY0I9@EyR^_}dN5ekM7K_!hv$N&? z-ahwxrEBWOtyX2@t5{oth=74eRh{?qa=EI?evubhkFy+`MqI;4xit#l$kifV(0Lao zqB!rI7{ei#xCcc9@m{=;0tyg-S4na~TonYuXmXo1l`P9rRS`_^ED9N@vmzIf$#mjX zj4hA|2t|A=_`dzo@At8B2y6qg5@%zf{x8xeO6-86p@IRh=5t z%uwYKJus4l)YhOyuTbZjay2SO@87ug*AJe2^X1on{O5mKmL-6^|Ni}_Uw{4N=D7no6ruuzfvGAWDG++p)lajYaCY+6Ww;t?<;?hOX7BvR=g2oV7trG*GxLj=U(O5u?LB4SX- z!~SSioFAXfX3J*R^)oxj`_qdG{l$29qykR8VFaYD?VW4atJRBF%%ozDj!p{1k3atS zy^lUzE-#j=#bUmwtJSOLub!7r0Q_)&cR1Mn)gOIOH}zyXKR=zWsyfRo8>1lGMK3pY z?yHNVqj}xzj7KK7&C%J}$)d3N^&2}%cBa#3BBLasoDlg5lsmi)4vaDD1 z*yIMCHnjp+V*$~LG>lHrdGX*7K)kxfS(}HqB&<1fCF}LvJ>i&i9DmSAGz8$FP!utQ-?xhSYVzTSpO< zqVBqt19iQCqRKv8BRxnco07OqsJ9%_l|bY+9omyx*kv_w)oK!9VXZy>gXzs1k97xr z4@G(Nm#_ZHW#Rkso9`+nCl(6eF>V#zE#bABciD1yuhkn#^hN1>8#lQ@l1>2vhXGI( z5eYR=f^-SdmXic6-RQ*2&H2NR4z_MwGhxEjpJ~Je6-4TGOB^_Cw})uON$X4i^fHV3 zLysTRV&hX0bikP;QI1vcQpn77D z;!yx3*mXQAGh1Qre7`7e-#Gl_(W~#idAN6Y-8n4!+4~=V^zh5iAHO(#|L)CxkqLM% ztj$cXKUgfw)nc_=&ZpDq{=x3v{z2X!HdQIwgj%yfkAMKEN<^U4$`SE7;tOq?j{v$B zToRTilALw|=*TG%e5EVhK}!zf;!|ybH|<%`Q9mj;?)z>d)=ePC`4)+iCN4tCbJ~JjaT&`BDX1S_LCb)U$ z=5VyLTFCPkFP}brb}~8Z6{bJj+Uf7AcSjeeXD6qp7fYLQ-88;&RRfw^F^p(4LrQ*G zIfq^uCYk5fSc$}_O0sw?Mfq6|WY*y!leO~w3H zht0ATV60w~LOh&vCnu-RpFbOKkMF;CFE27xiMSM;0Mg7>5bxytUt?$ffCq333}6{j1xXK0XkRGAApFUo+CzKLMBoX1qr3bJxIv0kBF)i#dlFeBryLF5D_{=*T%opS+VC+zqh^z7+VnXIt3Y( z2$5O51ewiyVW5yb;_89;{UIWj=R^WTBBuCwst_F2K$vh~i=E-<>GAopEKBDzgDB7| z%xZCgrXFr>gPH~eRjoDG4i7Ho^OMPxvI3kwc>3aGHNAcP`i=d=oxN+@yUK{Y%=)HT zR*Pk|^3ER|Z13(Ls?Sc2&z?Ma_Wac=ktXZ+#-oFRc(R;LUcH*kUS`LqjcdfavJ|z} zTLQF(P0!>~HH~;-#1LWyp++wQ8Yh0yG?jCCmKV9THWTl}I}ptYOqP3~rfRB2Y89_) zR74#aL_;7R07az{=e@*o8EIbzKowvFQO#_Y*}QSiIj4jWAwmI^GDE$r_O7Z|NTeD< z^R-dg)RevDp-4zX;-jr5%(PJXNP{aEwTp7CSW6mjXazzDaoD11if>Mj^@PILes})p zoOi{`H$6jofe0!AWE23SE+>UuAR>jd+Nu=dYGYQZP77MwX0pAgMhBMGwJvzFX{zi_ zS4xT6Nz>kW^Z)|UYV*43M&E7te&F1zS;v)^c>{e}hqin_zj;d$x$9-T2DzZWYpC=Vt3t-OG0^0AsQRX7?9i;& zK=MsbkDK4SYW`gL^3oBv3yOOz#z334gWC3KlE~u(?_j@d0RHcN{Ak3600OZ=1cTIw zFITIlPoGs)b@SHkdv|XeVh|uppuj{?3yWz46i!c0zxn!W2DyLlZeeY?Sjuo1G!(%% zJHZ^%dU~h15%VTN8kzW7Q>oMVQG7{h0}fwKI+b?H#t8w4Eb4*;76_9vpdq6yBH|q( zVgM^p5l@N)npu7C+QHY4kH7xx%b)%Hm%U-Xac;c5bM5B6N5A{qr!P)_^5KnKo2GKg zrZ+T$t*zB!bupRDX0zFRetI^!asAr%c-s(pbw21-!VC?_mfRNGXG($zB@2|U9~@f` z{I#k;MG-qV7v+x>f~*@$qua0Rze0Tjhzm8yC8B`LfC^rNn>GTd55C;Axiq4L8NKV$ z9Wcr+shp0sgV7TI*rZ?~io=O5H3dXKR8$Xus4&Qj-QnQX>DjU@7iCSxYAUY;GDj*2IoXPM!C*5BFN9goL`2Z}H) zXRB97?#XezYRa-&l&i+OW!0Qd7w6fG$#|89ZB>_`~60D%ZFRNsaegCRj$LtMKy{{9f5EkvZ2X{ZR)`WZ!jFG07M zA?=Q~2AQdwdbTPH8W_>cP}AV#{K6@0jduZ2oEOkuzqoz#R#UlUT>~4hdODrWX0vAx zpV^`?#`J7H9&hjL?(~Wt5|w`P>ipv6*}N&GDy#W?*?6~Vs>xz;alXt=u7EXiB{-QZ zz0?i>i~(0kt>_Vv*^tdFdano~9#N3cfmf#rOvWHU<6W~_mE~$+ZDBK;WkEhN3KrF5 ztYGT80#fJ2IbmZAb0b~>5J{XD5tA8{8T2K92jpN(17cLP#)$a3t^`$qfl(E$01z`7 z@mj9t4FWT>dV?(9qX?3DSBU5w(MA!*FXlbRSY9-s{Koo@5@E{Is|q1Yb{nMt(N6@r z>pOYMbVb!P^VXAo^TR6}``SCLOqrA?NI(Jt1koEU#Qh^_$QBd`W4w3hGJomPQ36D0 zC4rXP0CfD6)($Eg!p|k)GyxeVBDCJ{lYV%O2ya1e-i^R^j!v_>jaF63MT84w|KO&U)PEzS?UKTI?5heC+tV~N_5J0glGaJV)3iM&-f{F-$2na++ zv`d+$6DvqkF(6!*GzTm1NgosVkynONE z)zMKe?`?1Ii&V4u%lHaPiUf)%B7;$0^bY3p<>Y*Fd~!0KTpS+kU%PQ_Fd7o5_YHu9fWV2f z1&49%PEP<(3Q#KGTVEUO2piF%?F}=j1v2cC#CH9q-=U&Tx?)0a1V|YJ5J?#u=ZQjU z&CRu>(UD&+E0Nk`{ceDRt~{A!wwTwdv-QPxD}uy!W3R9WJL88hp3mm9>2lc{jo1T` z7I`tR%k#7IU81Zg071Q=%H5l{)%hnco+}^`8|tf=*-HFs3F-mP=+&!!Z(tCW#7pH> zUG2mvD0xI7ZJc`XWqmG!Y#0DNqOcKQFh&8@dqjzq;z7xVk~D%~*s!9Ch;yOXw2O|| z1daD1Wi7tQ^UUTbqP|8@!zMGPR_{ff_{MocVzMN4SPQGV-V#M?$r6@P>Delj3|j?l z>Lzw_@N{7yKsHvL)J^3;0ZBmEn%ri7wMrQXT7mPej-Y@F16jLzHlI%?)5UVWy}fn& z_N`%m5L6b?G#QFSrA&As9QpkG{OQxDBD%A?Z%sa%PpfKNam|fk3O8=XIsJ1od!qR1|~USS0aUd-bmIz7Y@NJ;>zf{ca?swyH|gNR`(uLqPSatfT>C1p%U>$jY(?^hp!@4iFKkMo8I!VOUjFsV&T&Hu|*?kX(LZo@Ys} zXrkz2CB!y zwnl?wIn+>dGQxhES8GkTUY=X@PIKvv$B#yAf{ZERSF6?8*;ymbSiW_5b8mOQC^AX< zKb2@UB|?t`;s6u`&d$ysK7Le{tF8V)o)5|Cs$ABM4Evcjf&?BBq@6BZaKa?qMkIhZ z?*$Y$x8D@69Hj4bUgsHtywXu!to<~wO*$QhClz=WfDrH^1m1(FqBM|Y_SWI{laq&! zAAEcFgS&(PUJkBb+uFbO^7QffeAPb~+sqpk59&m`7tUzByWJZOW|NDHv-2m9pPZbZ z-MD#ufA65z&qdIyOUjir1!GFc_~@m4#!(~@NQ$WSvv$TcwK6XD5MUEL zS(4p8+y@E8knW8~yQAU!=wz{2G=mX=vWj6I_lMK@;^^h8y~BfkF`!^*Vt4P>O)u`n z$uWQc8Yd{KWO71560a~V%i!qaz&rJfM92u}6g{A05e6d!3NGXrWkMwq4s(#+H z#x|}}1SPKOYSok(BKNJtbkDVed}JLeq&8e=fId;_55J5>>9SAf|2?V*R_P6`n!{Wg=U(M$Kgqg9C{$OzZ?!Di=c=Y__?E1}JlV#|< zM|C0|Jtz*g2F0L1oX#%J&W?_b&L@+D8wb~}T_28yhRFLSZf0riycr_k_lJmfEp~b? z8htR{tli3xFnPFW@Q@6*AVyVi9z_9F!2?p%REM^tLJ!@0zAHp%bWV*B0Z|tnC5TYd zS`Dks?X~@#mnSF7`MliS&1@#FHkL_(mNfG6X_`0_YID1tSO?AVQECfY1x0AP5jEGKf%sT2c~3 zC1gfq1VAFqR8^fqE#jNXc@GE*Tq;ymWu42}!5&PDAS1&_pmRM^Y{XyY1HWnyL%d_Rd%fxMSSyo!QFLd`Qf><@fh*B+GG z`h)LuV63PrDk6v)s*h8s*BO~jm+oRph8Fask=nF&8VzbL+{A;gcjz-T2*ohBtP7LconPIS+I0t|fMiQs!YYaz{8)2IfCG08^gV96baTE}tppr@PgVETYP+bGo zY9hBmGt|Mo2-VuP^1#~jEHayp!}bp!m-ht#0HE~bbmgkjm>$q0V5$?av0J~*jlcK! z{mjHy9A11`mB*(iC#NS~U2g5o>(_5wzuxQR!TKaE+62KH7=TqRBYXAFpFMm2^a-fm zy?bYCcW2qiy!NxD12Brw<2LvcfOgnz8i#On#-Sa<@VoPYrre`&RsZ4UVo0669vf8v zk0_SFG9hAclVc!d^emng0W84H{oP@aJ$~?bF$(~Y``7Q@I$t%9o*jDtE{tR( zIho8@YnTjx5iR3uP{$}>rM`6Vvu*qF7$ z%(@*L!!H*0 zFD^VMQjmZev(Y7OVc8UR$^)U{WiS!>CvijsPw`Eu!gJG&QJ}X0A*Pvjn zA;M6-E{LcizVhCC1qJZlDE6}=H;hpUm4^PU4*_XhGnr0a9lctXOGZ4{+q-q^)_6P$ z8^pdn90B)Ze@-8$TV_58)lXGeKf zc;}Gd#_gL_48D2vYQCzney$lx&XgN#tzkn5Y;bRH`_7%)hc~XF!DmmOeg5g^Pai$0 zSB>S2$pS*!N#P#?BGUT%UYRxSoXIJnixOe#kP3$W*C30A;Mjm`@&`i%!urk$B7%e$ zuL&v`vV%3w65P6WFdp_6i`lAiX4qGxs;s>9o*U?zK$#qG_9f_U$ob9JcgLQHI!A_qvEAYE1=c%P|?iucKIll*^L9N0vIcBbfS zKOu=(KiJI8^#Pav=+4CeG8knKYT4QPi0=fK$xt>l7&yZc!VO6$Xeoj@8QT|eX|!0@ zS@KcG-}%*w*qg6Y=G_gm!X}&8e8@jg2GvV{y{#<$!>s1&J8T|nH4mgcApX-dD6y6+ zZM=vj%r^#beNd-(EFrW}5&&sqS|@f6nSUkCVbxHGS3*8PL;w^ZPb5f+q(DNXL=e0( zQ{ncA%dH;`wmvj#)zgOV>XNePlB~QjsO?49-Fb<2rVlqLvIbtYUTB?Bi$oF9#-j+y zeDEV3KbpnnY%*Cc79wIT_j-ff?Va&>tRmh=Pwp@m6aj)}E?8uh0CYZ|efQwO#q{F( zjT=Az#m|RZ!_(vEXU8W;C#SokUPdN_PyuxI%a&y)!)xNLojotP_oX8Ub7}R*6I%5~ z=e*7(LT%z`s0+JuD5^zhm_3X5MpS@Alw1f55EWMsGqW=qoSmJW9-nND@42S#_sre< z_kQ~~{YTG^fAy31#)Vby02K%`lZ%3gcj82~zt!uF`iuGY$KwA6t#y>ibgb;UjfcVYJi@u}d*?c?nm_S?oLscn;bjC4={$>ao zDmRis+#nG^gUboG-eYTSz8QYKdBb$cO$kcZ>WA*q!E_mlhCL0%-!sJ9hldZIy?A^& zIlDL?-Mp6fi}`$6uj+o04|@GoRZcI?t8%qH-YNP$1tF1JH*RD$d-39^tSeG!M1a_N zr^EzS0abj^eSjk%L{w4$^#l;qa}cVSK-^RnWB7ht(SiPgq9{eG51;}f8f(KViVz?& z3$rn{02D8E(^Q1weeGSdn&)itBJ1accWxysC%!DpexB!9(UdC(9sn1Mr9m#TEH5%L zR6B9vi4hd4vQkx>nXo(sG{)(wig@R0L1LgxAtx>fAw=bZDj9f3Aet|hua1wJs%C?| zez83o@9yq0^JRz#*Chm2P(URW6wybIAH96_s@KbZ@ylP_x^sKEoSvWgSI1}9_r_bj zOubVD6(DF8o^OQ`y3YRxkqER%9=thz7$PvWHR?x0fkYKxCc{R24Wf#k0Bhjb&)ze; zgYod&7bj02Ke_+@JY3j_f3{Jz7FYb6;y+D|Hp#}2t48P@Tx*kFvOJ^4YI@< ztC2*MKmVh*f793tSg-8D8V*o{>~IWUcYhl)i)<+ zC;NNj{;Xk^udqhO5 zz#ykb5Q|s zbyGSg;v12sT-t_sxr+Brq^e4Tm|5F6DSZuyRawt*KI{*yHG@H~cG7qcs07qh zwTfrM#JmX+pyC@>djJBq3K>z4$%vpRh*z~33wgZpz_`eO0D>c`f-cL7nXNU3nT;`q zG4g>(x#RyqzbVNFO?>h}(~wCDKsniJTI!O_w9#z?Ap|*NO9R$~X_G{EX4lova@E`I z^F^yZH&(=O^knCCprroFQ zKpzB6Ep%u2CO9AgQkd4U3MQ_nUlI^iC9N~;TqlSwM93VH(E>t9?HUq*wx=hfbs%AkgFE<5lJMu3!J)Cm)UXcIM?u zK#DvkfyH8ebb5SoapAnMF?pasf+ZO}p{)DuEQQUpRYLESG30*sU~6`2|Idc(n> z=oKcjgy_|I@4!p1DDt9DfUYd7vdZ$TU-T&kiQuwaHO?D0d6o|b1H;C9@#4jMYb~>B zM^_bqKtP>1ALJ=SCdv&H0x@N|MeqcQK(8;j?>QE;d0kgzXgC<$ynbVUe?KK*+Jp#F zRYet5VMYM8)|{T6ef`x}i^bx-n|I#-;J#D0wY@`mZ(cU%=M#*DT$GSg!YgPI{%ue~ zgERE^L&OzgPNb-pAOaByl{pBg3J_|*69Z?;#-oagcoNwg4Mx4}#p5UCV#$WRb9t8C z|LDG$?8&nu5j4owfe|25WF-S^hz%i=qGq|he&hQ4AH2W4vpu=E`0C5Azy9i*)01-$ zwkBg_OkAa1G;a?P_&pGjKrvi1s*95tl&~Tw>C)D_Mv0gKihu|?cv%EVQ@ljd^&>z8 zv?!6dO-g{>ZVDRmnjnJ~mTp}?820k>^Yh7cKHT2E|M3Uc?%b%9`b^<98k|Ic`NXnq8tEK>m|-a8lgMIsduA^^dwIFO{arp&M*LWI1?5S73q zz6(SkB7yhfnwkw7CTp!VhLQ$6>Y>*Pi(qMx&59o}MQ+Om;!jMJrk(4X6YI)$hOfh= ze;c2t)2{sT<{tDaaT_G6P3VmZ9tnPV6(g8GJtkHU}7~8rR~ddqQ*yU z-GaL&8_~_9d)j)--RzyKdhN>NO4MEV>JParu63Du>Aq{b+@<$lzwOm`h&|Rt{??42 z>@%VG0h*YB6+;5SmhdF@L+!`m1rZ|=5>q^nT3ZDsmqLv%)l+UO5E505zc1Q&p-eCVm7^d^Y*>F z_rwbl?e6UzJ$rICKV4SMF2*ryeN7W{6-~;#aPe57x-0#Hsz&|CCVdQ>8@4aQ;0G5C zXz8YcpjYrD3<_R-%oMK(h{(u?*6uEt z`jmiyf~L_2ybLR+8w#x93h9XV)Gl_mmrP1vgcv3u7XENH)1KvlWMot~afrx)X$?crc(i1)_h zp3Q7wUml-SwPUhuNW^;vQ6NA86$00I^+;?PkrmNnD4y*BnUvCY97<=1wqm2#ARY>c zO0W(Fhw(TA6(E?M5Ck;2>Hwp1W>g7$G*79jVbd=RdabImDk}lb@+>cUWnCeX^RBGw zeo;VLB|+dLHq0CuY}DQ$00@ASkj@xWG!>&^KqO>zLaah5R_*N$o0+ZAaBH-+H5%E> zb|3;SK?D+rq6jh}fe64CUwrZM=w+VgAAa;vZtSXVws*EqMq4M7B@|-KTV2n&s~{ps?^i&CDmYR?B^Q^6kMapa$g>?1P=%CbD1;(Fs_F+B zkBVY)ay*+}>>li|nx!#%=kDF{-nH)@zWlSFd@vs5)yhfGFry+NvmsImY3~?Cq;Gmz zc4KR6YjS>ZbaZllKH1;fzjm-c+8Pj3Bi_eqKkot&Dgk$|fCyOoHQ+jrSx^TC(`^W* zQ~(L-UUUN`6aWZ`$ar#q5^BmoM9?1zA{0Rb)znK6p+Q*?Xq6Xr-ZBB=?r8Ad^@C5o zeROGWd0n2kom@p#)BSHIrc?jPR`r3Pfy7 z*d4nNp@>erLg?ZkOfeY)jLa6i5{k0Qn;`-NMGiBJqBj*0W?9zDd)8Xw0DiGjHlKM32o_Go8+o2_i=TMqNWDtQTmT(2!!B zM(UO}P(5CH4W-{BjCN$S_D}76@B`nw;>G$wzwh2xkee%SddaE*0P9@OYxgrkRNyp) zLK6ZZ!RQkh09Qe%zA=h|%Yy=;K=S(zrG`S@GXhmr6ip?-G=QW)QYj+^x9TVB=Hu< zk49{6+_*6sj;t}>`B)taqJvT!5vrgeq*f6@6d0W9gNKj4d+?y>6}Ru)9`EhdjZ*|u za(zJGYoIFCU4`v>`8`26T}SvBLK0bd7b zY2%TNVPbO5qbf0a=kvbp_4kHb!?V-La=Ci(;>FqN>F(ancz37h71ok?7qFTlY{dtT zphNKi!*hq;S@*+QFB`+oI$}Z;fD)>O7&Osf`1fJ~kh!}w;;tiW-wCfiVWA*JcY>%& z)AgE7tb;tJiz~!w+}1caNSutE*)%FY2Zi5%1jD@yX(1wlyA)MkBj5GI`c3`cIxdpI0Rl zdkj&%4Jxo91o4WbWH?xz9RmQdDgedYJyA|Z z0Ku>!qk^JOZrr}@M8&Hq*be%om&sz)G~N)4IEY5VH={&kHW0<; zsDIv67qv^{Du_TNOmb3!2vlVP3eoWpAA=%wG|b+JHV_muZG0%8h*(2AgW}Q2^!U~B zwHr4|A^;rpM|%eckAL^%`1E{t=cZJPHNq(%05dVOb6&kC0`G+_?(B_+qv84a#dJD5 zJ3E_BCfnQNo&DYZaA31c)rTOKw}pr`F1!X2ut`(a%YMxpVqR|mR$#l{W!5MWb~GSF z^eSoI1Bwt5QM}?G0ugbrJ8HppmWB8&OuWfA9>foO*+=*8Jb!t7{OsAo?cMF`*X$rW zym@Ol*n0Ks+3e!n8jFa|IT4v%Ojq;ea5x%ok4J-nu{Q7ZpFDYfdNBbYVe%k~=oHoa zL4RXuLemD(8`K^mefvH}E)WsE)z zY(UY6C5{vwsXYLT_A_f?uvnF=rmDf`y&hZkBC6uNdKE*)dEdB7MSzjbMxvqs5h~!p zi+B_SP__U7Cd-U5Ow}Osy}GfO;i+uPR$xS8V!qH5hi3v-_mV|?#(y)Gs~Otg*&q7?kSTHSs7I(k4s zQt3lV3IOfmRPEHHiJ!F^h|pP)%dW}%8yc+IK5+|oK`o ziOQnT09681AOTMx9z;M0L;yuYYJAeT*aL|{3Qh~bDJa!iYjZ`2#w5@l(2GZc=*A6E zJ%<1Y{;DTVJ+cXu(EYi2U|a_sKBSwywYmGhrVUu<4TwLw8!aTmM8(dqQGtTqNTNp?|rlD5=XMhJlv5QtDvMACW| zL=6TAJc;>B7cD$Yxmn;W;TRjX<~na^jl7cXC)oS%)y^!whqx@v&5s#ZrY%GGkYySFzUjjXjMw+|jZ zoL41VqoJ&J$h#{3-uoZ?lY941%Ej}ele1UHr^hFCS-PqsMHVF|hLi{xk<^1%iFvWn zLr4t*M5NLEAa37L5~EOzIN)oPAtMtB#={`_D01w1EQ(wReO)!;v=jgi^0>tOVzjEN zpf%!<7OGW}$EyRVdht<;2njn>kf>>V-85v-W?AKvQt_>it^2@G_)!XRim@3`lb(CaFIY(QkvKRML~sx z(YNw)m`xN&qY0GKm0F+5xSK}6N})sD2l)PHi2)gDwSzz~9)vW8NT|V}P3w_ZQ-F46 zVCSQ&Izg}a|Md>K;>#T%PA~Pf6JkfU)8ndV{k{X!@JCt`#)48wSVH9BM*s+-(Q!Hw z%9w&BFjP(b5uI5`K}bo#6N-3|7^fLSD#1+nr^h_gW25S`?Th=gzhilnl`mB%G)s%A7>LzO6A8q#s!&SA+hW(rG-|Y|k^VtO}_{y!y6&q96ZhA3YEmz~6onmWv z>&DI8+V37czL?F$D;ZQGP?}9=fA{yl$#=Fs{?lLI`BgqE>*;hpIXPWjOcrO8`Q&Uq zIbBR9&8lS9!WvR>O#|v(z0mz7-Jbn84XP=9AH*eg!b?cV%4S*66Am+Uu8C#a~ z()lea;zR?|s87R7C=oQ*t*c*9L9{dMEg>RsngA~-mmmUDVdykz2}vo86(M?%Ft(a% ztr^m-UXd}KogCNIikTYk$!5EUd#2Zaa&$6XtVX@eiHo2VL=aU`Bqn26iM$uDVk{{- z@0_t_dw*-RGc1?o`Pt;`?EL)VVmuh_?2Jb{7K2>t6+#L= zNQt)Nj;6t1LP3q;!W3H7O;v-|ghY(ag9AnHS9K+UKM^xBie7>URS_p)w?z|_u;3b3 zu1fVyqpp$QsO&-9Ye3L0v9zBiKj#!Cl3d$j{+DQ&$9BT0c0ACM$)>|?g1p$W0s+vJ z%yG?dlBrq~yFo|>%r%MoApu$6_{UX`4DphfMkE+%+Bo$R5rZlKYb#n}GTKm=+r;6}wQCw; zU^0rqmrT^FqNo?eSgH8}VZBJ-t2tvDp5x_^ilZJ}wKj!h{5u3pJH>BYWMMzMi z5|ai(pmKV4_PgJGwp=Xl-n)D6z4x-*ih2M9Q8r+V0nSP%wU-{UiXZ_54+4FC6k5`k zw9mnVv}?I(;R;?G%1z9OGXh)8i?1p8%0|ObRM&>sFi}Mec1ML!zd!_8cSe1KC#T29 zWmVcd6Ys6V}NLIvq_yLUJ)5tKpYB$Xz4~9B0>(vsi@?TV0KvJcsmGyNhVF+aBG_-M(Y{^ zB<*)_e#5j$0s^Y{-Zjl&)JIY8>btkE|Mcws@^@c+^Se)mgYiH9=YQGjZ7&xyX4txQ zE1QoOXQwvvgYl?t>UvdG&XvpZy;8Mut5tn*u{b_Ddv)^c>El<=pVjp;BQ)xi#1qus zVKfK=iNtA&h|EZ+;)C3RnhL^-5`r=!V4&4xD0rw#=mBD*m@C}dr^>eXb`AZt?J5B)~+d3Owm?veWY#iN{CR5PV~VI35iglZt71y z`Q6F!NnYgdfAGO@IE)*P0JAa^b5<*^Y8U1vp~tA=f;XZ>n4-9r*L95r?*b9>Iz(uK z2#omyRf7(MiBv&ED5Sn21s}vLKPc>|S4_@MFDBFNgI!V~fbs6mXm|Jc=<)e%xwExb zRf}+6(wIvfRJ~VXGR7bgc&8%B2*_dOWY*+%)XM`zEEm(oY&z|qo$c-Jjd!>6%n+c8 z_rEVh09=6*1n8wT>#7ENqRE=wc4N4-C@2wIU>_24s7ND<$dn~tw3sh72!i}h5CPFC zDl^v!{K{(-y8JDFJ8Qu&Zhz%i8D6N`@j9G z|Mg;3{`$Z9?}{7uit*mwtviQ`rY@x{oB4coay&ggd;a{{^Cu4{=NC+1!GqL7&WQsT zV}(d{?L0|L9HP{O5I}-oKByOhKvxkJ2#5>;BLI+uWNO5SR*+2336=HAfd@n+^4^Ot z6#$6@JP@kFC5TWE??pt2;#dY!Rn=9_Xb6(GFoH)Ff$u-sts7zxJwzZ6DvrpZu_L94 zs_#0YbqP+g(?BFIAR6pg(S12o5ef9BwQgLFtZ5fIcHf29Px$_~(&M!sQSufF3A0jV zzCdcAO~a*eXG`O(iL+p5Z;nqC1?ZT~JS^P!BZ!h$5}bA{HyR$7l(vp$sB2d=Sw9L! zU#tz8wY9F|`f^uvQkUU$DUrVMJ8w9WKpyZbiP)VhZiw&ScO;&@c_smR3~s9_NdRy# zn8MnpB8+BqMZ;*fU;j*6AyH6PFM^_?f}$isqF$6B=64Rt9zhIzMia47B*4fkK?KE1 zEN>t3>?n!=5eNZFqE#INsq4ONJ6*42IF~FvSM}1R7ne@Bd~B>LOFBScXkMw1y)1VQip*I$44?CI0daCqm|oxQzX?=yWz%Tt=fRFN49eT!>4PZIeZ&g z#fSI;QWPR!A|-T?LX-nEkg5oJKj`H}W+rE6<+AMcdaJU;zU*#q7lZM|ayDO8!=eCC z1R)~OsD@V!_Fr}4k z=~+W0QN0^wxJZvvE%jE@5t^Me%h1}UT4(j}L%>U0!$uQ)LGtj6wZj+6bhC?(ZIAq>32lLko(JdhY0F? zmf1h~>CYF_)o;If_{rb>O)(t&P>wP2)w0SXE-h!gh3{>_|~_j-U#L7?nW0 zfO-UAR`0`dBLxO#dTbpqxU1f9g@X^z+zxtXGuOD8&ed|_Oq=e`} zMb(&$j9skUd|3ubJorsva#y{C5)uh`LWxi|xYd*-UnKw(ZKbhyga{4gn?gxd1jLy9 ziz!q=1x%tIVeq6e#N$!#$;E7PetvNMu=bTuGwk=q+k2Sba$^q(RUIS7I?ipZ zfr4`mk(e2XyoOFx3OO`Tvcl~3x3_n;7Z>x{d^(#io;-Pcetxz++8U2X`5-sez7s@5 zZ<*H86&xs`&0nS=(QoYNFdC|1*T$IqxD9)X_84RXs;FKRHTq}}p$8C9RtU!5=(+Qj z5P>PPZD?OmKLNxVd9myj0WnHUq3wVeRY~>Ujaz^Ii$DJV{+GXd{LR;YH5mTOfAe2& z?;U*c#W&OQ>F(B`-ygXeR;#ke>~MQ9W=55&Ea$WNYPC8)IRV34!(#CM{mJCwYHyr`R)0$ zCjgBlVzvsj&itiO#S31%c-4?F9zZ<^C(~|7FMzB-g3thP*r5c8GMgFBNCDKLHNd^f z)vjs~MVylmr3h_GOpTe96GViytfZ=72ni^3s{;kYA|7Mj0VN=V*_$B&TO$xfjbxJT zli5ZSr@@3Fs-U9k*QCb#V6utzKvJEpxcCE1qUXn<>tf|e%BKwhguVCw1E+Ey{K#t~@W3Stg~ zp3o%mcOz}EW4cKMHh#B5brPkz)JGdUV}s0mPZzI;sM8be(*$JSDKuA7_A`<-2;+~^|BEXE^BVq{K0>n0(WV>5+=G8_^DC=v$G`6T>DCx~D?=;b`>o5g%Oo6g2NyND>>jmD$h zgTte5Pft%S4o5u(t6EDkMh7uWAv$4TP!WWjmm&&^Ajkxa-iy=*8a&q{mVP=+b@3i`O(AY zM$n=nK(=TMLSFE=$g`|>aL^Z##<|ICwpy)JWqUm84@b+gI-5+YreOr%ln?*h?z;Ztd;YNTqW%=&Y$(wAb$+{Nfk)e)>m?Cx7<;`FH=*Z~yau9Orp%tzlLW z@ji&&3ek656aYj*1g)a?4l(5Ujgot?5=O5;uOfodlvR_lE%GcB2(fHUVL&VIJzz|y zD_)GDI1wObHBvxg^iD(KHicNSNkNfOVK>Wc;P3UDSz5iYk$!pe5KEW_UI^J2?{{Z(yuByngNL&+MyL zXVrT*4dy;5_ga7mp(rWJw2f~-3cdphs!i3f zwHzov(#P+=zgjha_t|HUKl|iA8S~Hon}75E$3Ok_lh3|+@|+PfMM5>J#zJW`9QE=Z z+wJY$oo#g@v&CXIUwH3&z3fJQW2biK7Z;1w%BbcD=MTRA>&f}8pZwyzpZ#>_)-9hE zrE?9ysq?2^a>IkW@BQlD-CzHsKl$zd`k(*(|MmYeP_@QbV}L-t7m*-@sH*qk!(fA| zDj|vUqCke@9061W;bbQbW#v%n#v81QJVPe%!o>ZoM_{U|j#4p#NJy6-a(!+>gh0&l z2NDcHK@$fEUX;m5?L!_gK(%zGjDe8ixjK4+u>V0&Stoazu;?_F3l(f@NhYEf>^2$; z941>$6yPyRaN4?yYTEH&{kkKW>t-W2=GANR*6$?*hBbte+#mu}B`sZi5#9!B^#`h5 zSCxb>iN=H}kVmLh+w?dN>9BxA3<*w=YtXas5W5pOQEzf~?D3X-qHh2OdA3E82$0 zve9Q@{MoW$R#n5~8~@p7Up#&MWP5A-+QBvF<zR;2{( zG{iL)A!^+dajV6o%3lwYrtkv@hMw+vZNK_j7j_mBMr98o2tnj4K_e7&Dgr=6Y*@Tg ziPfO6@su!2n-A=zVU2uXK%c-v%Oj@Cufu8a&unIb zH?|K@AD;vjfmDJUvOrqV2oQ>Ugi4?RIDyyO#(KLHB#Og?30*Yyxdn~uQBgpes>zud zC}@?FSQ~|-=%N-C=<6X;P5x!6V>F!^@Jyk5LUiq7MpW|Ni+H9yBraH$N~%gP76jfP_ACzj{a$Y{ z*ghESpt$n*^t^5sT=3TJwm5aJS`jmdZ85 z3Se2*`-ZdOuxc6+u*61#y9Y9d(nP2LA~8v%SMe%DM1azWf(iyTB{*?{jL6Y^6|w+> zI9FG7<)z5-oRGu`F%I**_MQxvbzL?tq6?vdAS#5iq9H&;BwUy+GNHPNi_VLP=Ee}z zpn^$>^)3e{ua>JJA~;rs`B3E97hin!)fZnf;^F>buh)P6?745e_f6xxG3Mr-+vDxA z&23qg&O0J~~i!9HFTf@O{kQZ5AWZ{uS6GTAV zc~FHxK}g%K3p*^tBmoc|yf}(l2_*yoMT9VlXKfZ~jU`YR)hKw0J=rwQ5;K{QGN7fW z_%09u5Q%scW!tZ;TMZ$lDkveSYZ@jB;=6cnk^bywKgkUK?WbRS{da%8YTSSIZ~upX z_OJid%cIj5FJ4ZLkLMQ`^J=A4Ewc*s!T@9jhrPVt8x*~*z2PosGnrhRO)tb~e>}|l z0};QRuU4+AkDq@tIeq%o=hxr=>8%ew+_`mgxHT%#Ru&xUdDASt+}YZ0ymQWTW{qOt zCZS+Ocmh#XqX_CDr20T65+~|aNxgW{SUiW&U~tAlBFm!Ud{fm`_5G!yK~OA%KWD=li{ku~GFw;-j}yePAmaC6!H^ zLppF-Y*}fL>AKkhWTOU40GbwJ;?LG}6SY-rWhO`vI zIzduwlWD}LDG0_)jGJf&yt}I!6MAPP)62A6Jzj3Q&kiIMHE0!6#7$wz8C;S z0DYvIB1nwr*L87TDn4>?1&A3+!>v1gtSYLZz&orJgB#<}9mke-Ysy{NwjYwT9OZ5` z0agf5Nn=$;AV3Wcn8Ykzm11qS5CF@BqoR>DUXZYHuILYTcE(=y=;&lNJJ{-3 zCL{tuQRMYzomQ!c5(;qejz$E7pk9=a1K%(VPNFMQf6yy>xoeu`vYJjW<`=WYY?k+X zMV^nxTfKgtEiZ*= zStX=MK=INvVtQ6Yg3s|dojU;o?x{wE*5fA{|Vx~}K5>2z{Y&ZhI} zY%!m$=JV-ndNwQl`P>@Q%d*{_(bl!Qxwy$eYEfM5Z7{6Vj&f@ zdaMn-zc)lcFrR@cDTN(MVjxb8QV$Rz7~QjC<`L0BW;5c8v-7g72E(GR>)d8rTf?F# zj!#cdPtW_;w$%e83W#(H6^AlL5S4if3{iW?#K2x9P)QMGCKUDF1FE%V?{Ih9Z&hV; zF`ZV6bqxO{OqteU@k`Qqf_JTo@ykEqNIIacq^PQO0;tFJ%( zQMrc}kmDu`m@y(b z@dBbE&iSVHp>zfSn#`bL?Hm|`1Xb1eg%(9GV-p6E8OgFbM5uw(7{iqOqi~(HQ@oE; zPmqCqn9CsIJg6d5Ft&trnQ!DZ>luUqNzEQz780vTVow;f@Ys>bXskNW8fr9|DliRp zE4yoJu4{uM+K!CY*2|pcwWA|Hw0D6woqYL|_^i?LDG+#R^tsa*q7Kp5AewHH`wIdj zr-XIe6CJ~LHfZoxQf)JjMtj%hp1j$(F7w)CVPTQ9OG=YVZb$TO2XKSitow3P9{m39 ziu#IpgV#<=`s$4)wjGf~ynrTe5|cOS&bsm4{@MJv-5CO=Qb>Q<8g$}BOWtSz!Dti4 zPbs>(CaEga+{DO<08~{JxFt3aOg9kaEdYb$W35IAt^m^N?MQ`u@Q{ny1#rzLeSr^fF|d45ET&Bpv{ z-$FzpG}eT~5`a3LO#k+;|K|AU<*+v@t8y`)E8t)>DDqx^TwK3l%ced$I)3)}aY1rx zXLoBbB7jh1E@%gXYD0A`SYi69X~{!!P(p?1FWxcf#HL21!1!O92~o&QNy_785Tl-7gmr<12Ij&AOb zhDBcFhAsM(94fXX5@ZOD2ZR)fj{pZHT&U@UV4(FQ0U*eFCM&Y7t-)%(n9mngRh}xhKJxVoH`k!5=4ZU zi5a~hgE#?^rm3^c1lUWgJzY3yZ8XiI7J;=DpTe+3|6>lH2lNf4U&GEwnDR^r)ODjO zY>gsVFj7jjT#bt2Pk#E7VZZn3w~rqE-GBMNU!4DwfAino`}viW>8`f>-ao4+TDm z01%0@j1Zg`0ae#DglLUbr?mnaOMrFby<7Eqg<%5qs3=ao_drSFPaPV)?=@r~P(UC+ zMh=WOb#HK%GZeKGVu=vn5qGYFh-g@_Q9Ym_>h+V~e)8=%Um0se_4M?_IVt+Rq8JW) zgT38dWjZ-I{mtL}U2b$-40gvmOa$VB+}lli_Bu*H3*74{vB-7W>4(2RM2Lba6L?VY z@oO<#C<&qW9sp2-M?)x80GZ`pFPqM$i^+7nGps#|mwvCeyTAYF#giw`UiKIU8TWd* zvFH>eMdJmSYa0_Ff;bXI3eI3Egg_h$`=P2=07Wnv8QU8SdiAQD&E{pfn$PBo*|I1m zMbR6MMp@4my@H4Y2z^XQswxCVwKcKAde;+G^{{~w8f{5YBqL0zDf$cCNs z#2R8ooU5HPY$(_U(}3YSK?DG*3gOzbA*5#vUOp6+3Z&{(!8fjPF6-q2!oXIfsvBnh zqx|YEbn6Eu|y^U5`hD6kgh<8 z^{(+cG(eI%pE6$(k3mQAg{=o(zg>VIWH9mxXhWSRqKY6G4LOPk9IZDo*I9T!vX>YUCaN5ghQ@gj z=?%p{MFf!mJZh+qMo2^wjWvmTMT-!2JEmiRfex=(bC*l+uchZ7=(xyjF1_{oq1^#f z(6q9H2?{Zo7JqO4^2X!GBsT2>gxt#%Tsu^W4I%>|GSyZ6)z{yC`|WpzjRLSS`}=!) zdwbWeUEAK-$&1VwQ`P0yUw!@A?>=8GR)`~;Wr?!1(ooW#wxhPz(4>}h(K7-?wXx1aR8b}cM(h`bK{G$UXjUuQ?ty}WjK^D} zo!!Z^>G9coK!igN+RK=bX)Q~28j{qFLO$LO0<%C3U6Gt%7*)i92&i~NFdh$w!+u%U z^Z9bMEX%T5%olcIiheN|ZS@CzV@;5*fLTHqV-&Cz&;$CYT#7|6BI>n$A3HO+K(8&7 zNna4SpE1}7lQ>jRtm`Jvy|t|B+YaAYK-zM;*b`yzLQGM@q4dZt16)|KYCM7~b z40bJ7H+5b2hyef$BM~E3tCcm`Pu_daGJpH@`O7Dd{vZG2|M@S@&VTxk{wWRnjps^{ z4e@Z$8x3~sVTK00uj{69uBofKmec9<)vIG9+}qw3?_R!o{^Ywy&z?Ok7t5+~){8~z z_qcA{Xl+91^|T2 zn7V1e00{WTXT}uPYJ-gzLRJgj$)aBM1Gf=y&Us%mfh9IX2+1Q?DKQ;wcR3~_NlD1a zs^Yx&p|}PL8f?u5Z+~0~5dexDlU)O$A^Z68lTSYR)H!EOrmEXJ+dI2E*AB1k?eF*c zJ!_4EzI^fg@BZfRFV0RzoZGx0iiW997s3yq1g5zLu%_R5D_d|of0ttA{2>< z91_KR(+DESqDZK@HN7l9K3mNv6GOK_6pZFYws&yw4cS+d<-uqU1B(jzAjd2uwUbVd zB1AO{D5!WJD(Ar3_a;IFP_Va%CWs(}en0Q^^15jj%hh7Obk0rA&u6n~US$2@a4;O& zBC|*UYM2EhbBV$x3ZM(iJ=D-@dv+5gqKGWG5fT^YIU|5U_9Pwz6wo!ku3e9Fgw`AG z9UuY#7|Cl0(QUPvX*?7NQAr7bi5gKPP|>O^d%Xe$m4OUn-FVla_je8stl{3b-#tH@ z{KtRy?@mrm|KeZ$o8h%2=ngA0`Nn-O4!rLZztdFa|*wUuxIwsNH82=Bp=C#Ep ziL0FlOl$>ULpDuVpy6LM(gKDA50S8S8@6f4i9ZtXB`34g^|0x9w1(68`?B!cnvwuI zYL2V=C5~BZcS$yN2r7Ytq(Q zYye{<0)%+P_#o6tbcWQ{4-bnvFx>EylF=r;10mm%$Ck#&ob3b{_w3h*YDazuuXJO& zq*s?14!p){^z~lb5K%TH?9E2}Fpu;QbkZqcenWQu5sn{^*d*=&DoCM}AR+(~v*Dn^ z(WZIv{P}Nx_es?>y?+02@9>X4`uN7J>;0k!prV4vD!$h%KK%HjlasSYUr(2Hy{a1Z zSz4NLbq6hJYb)JYc;V=9Pz?pAk}@9xyhP@Rs+x%SYg;EoVL5Fc$RS%RV2~}Nx;B`l zLMbx@?>!)qGJ->p!rESL=JV-nIvrozF$mzK*Xxb9cb-3da5^gwxBJ2^JQ^+JnhzhF246G=?ju1k8n-dWyj);q1p7#p%GM~=oi$&8kle5X> zd^#8ohr?l!XUuG}j0{0YJRGn=B!t}{0urhOC*iK}67@MM;eVuLW(`i)fq@z_jzoP! zXd7w7`KqpM){i~jW}0eUp4*HWtx_H0=!eoY;m?5a1PH0%qsEOO4vYeb2(fzS%Ec$m){OO}_pFe)|_`C1UUK~}Nce>i#Z?AQO|Uw-h*Utuw*yn5$6QByYyY%G%@(2NKDt<0Ex;+uDGR%HW9 zi&Z_oe(Ps{`sa03zIgKJ#nVTRzx($2!>5b7l)ALcI~jQ`o8!qhPahIfPE^+opb{vl z7$O8DM(~QUXoW(m(^iF*(cF_R>Fi6$GmNJ#OhNXU#t{Fc~|79~O2oI8?OJi5^|8_OA^ z9~WpVQYvZ)Y6vscclkDSBzbLRw2naDkv3jG*798Y_v_r|dmdClqE#MAR3u8x9cmMT z&wc#D#)TCUosC9!N&F>5?}Uw-2)rsNQqtOYtTru`>HO%LZQyl90zfPDw(Gki_~Iq@ z(CMM}Z48ar=!wf+lYH9X68E~QO$e~2_%Y75H5RRRfo^MBc6-&aF`H70DHtq+Kc)ui z5~CO~K0~ytgnvm{C>V4q5Hh|*GL-7l1bYqv1xt(oh-jFpZPZO0BNs}b_%Hw(m$#1- z{zeU;l*rG)gI6wIE^{4U~PqMZ{6kbdTCLl=^pINnyfY&eH?I8UeQ)60Zb6uIv9sJ z-d#Hy_7sXPAP{2cRRK{D6uf3g{X9E4FXz)40ur(`uE_g4yL&=rx~f){FG!8SthS!P zfB_CpKB*x=$r&}wAhAv+Fd@Vg=Ngr!fXtW~)KFkCsJ236jCvv*Z;ytfVO7_Q#d0=V zF6N7-T;;tU8_R~-vdL_oS!0bQLqL+CF9iRmM~hINFgB?CqX%<~G@)D7D*~}$FWv$= z@*-MQWv^ePjYd%k5JOc(P4U7Cq5#xgR0)A0%8}|tk%`;o_Xqv_!Skc<{`Rjwo%_KmOCv!J!8Lrbd0` zyclDF7<5^!0F>CUHE3*Ic{Dg{9D()^4}N+3+8_Uuzc@KMe)8>i55E28)#E3Vlappu zS~7!TfUBizn%avXC^!V51_?2Q(vScFhl(!Ic_@kJ0Eu}3B7sDQI}}v~;Xr^z5V6Qe z!K~_9Nr8-au2z>JdhuSsvSAbAb_i6WcVnoPsG_Q|J`O~oQG(sbgGf?~0}xZWeR@=O@cmt-y!|f?g}Sn8Wv@L}wpY07Qs^G11=xAm%-cxmeqo{T2|Rs3`3s2>vBR zh(ydPpcn-k2?7C$4l;wF7Z>N^yfIdsH%!|*yG3s>EvNIc-pUz4vc~wDC^LktxORkC zO9cSYpHNi*Ir#sk?1!qLiiBu0R8e&vW9UqT2n6g8ilSFEO|vY^*>q7>)#UWF>=njl zYz${)Y?kHL8e@zxKoF}t#N=5af7WG`NMeG5LadX~fiwXSAZBI;Q14U~>$+-OPHYoI zAcXp}?*Ppg2y7V|&4|E3wO9?Z{Et6+ ze|t3e^6}Fb-+lSNoE<-Y^!OKl_Ky$m-UBj1=m8t&JwQgrAXcufni7eKZPv4{5%RRC z-LkBTUhnQNfAR6JeleY1yme@kCBUoL53NhAGsZ z*P!XbuvrF(2wDRo67K^#g>+@1j*Mv3_;FBezb!fd{Qp?{(`HSw073%b!8h@KG%(kRHtkw#;ZMrNYXq|rZ=>w}*YZ`_-iwKOWa`sTYw#5sQaJddv>Jg~~lfh~-#N4K#o+C-@^ z*kz2Kaw;+tX;eyOZx}T|!Ne1h!T8iG9Um7vFu8|Iq~;4L(Dddm!D~d&YD7hPltGVR z!&)27FL}hNm{kt6CZ18Pl3&B?qAswTg+D6dvr)T2jryX{;KNNF+z&pnO~vtTps@ENR97Ya>z{lHuXc78DY7{lAsuG{FX#yvIMEDOq!15*K&Mq#HK`Wcw_}2 z>Txzr5-CHzy}0<*FMoOOqmR4P9N)b8!yotk=;pHQFji`3Wh^c<$Ugs*Qckanlm#Gs%@f|ZryB`v#s`n`CzusLt_JabVMz4 zSzB?IdIj(br%IS{^iq#{P9!c4qS*AAtYw1aY-&o;1Sj}0VbRU!tJSp|{dTk2uGd+8 z*zQ3tiHNyLjijbY&8+Qa^Hx$5<$sC8eG^8aNJ}pIF}9ZMiV=r<4ZsZqoj7^p@RY_lxDswUDK%iJ064MYsB4x?&(=JyGP0qFQasD)Ug|(I3PJBpgOg5=o|ceSWsO zb|guZjguG|IdyHb+wL~&^Tl%c{cparoG(9q{N(pI{WsqHy?^lcH|OUMKKkf4 zfBnl3fAjvylPB$Llh4no@5Kf;0@MvkW|~njIXgmo!2y_uYoxdZow5!_=0b$hzb3{| zL6uu$KAS<(#co5eB#9iV>gMDmEKC&H3qJDmKmz6@5Rya%$&5(R3FgRI&0Hu&PxY^? zB77S5;Q*SHQYx{+p7RIqzyIrB{f!O7a<=@|cYo)1fA>2&XrK3C<4O_I?;MTEu3fu! z_s*T4e*Dp+$4~p5o6LZjO9Uu%*tpDMWF{)&(zfwMDxwC6R(95Z0g=?-s?bF445(V zv<5QQdmB}R17TUWur$Gm*xA7ZEAEy=lo~V7`I3qt@~&yS<>Ki0c)#Co&d>WH4}IS4 z`qU6;-85}VjWlT{?QA}4y2iooMqJ{?!w*BnuS6sIG(>}yio@;TYaoF%iODT_N=b*j z+w7aB;Zo_8zLJV?ce7}&R)b+;gi8AxxEaBvgb;(15U{zpXxh|tjiRhCH#C&Y@@~87 zX5BllzcQcCuibxe|K#*%|MrjG`}xnm|3CYK-~I95xpnsrHO(NR&g4*#f*9Non`UR? zMwY2-y*bjd^kfs#YQbD7&4hGRuLWM0a^^{2;EE96!%qz_Z6QFNaq5!W;;6 ziFE-HDpU6X94?OvvGJna+zD0!SJLQKzXXk&x+L>ObIZ5?2po}i+t^byE>B{kS=h!esX*`4> zRuZ{O;@xil?)&e*|K5A1!>t=PzWd$pz4gYMyX_`xW)ajWae!dtX7HnHM|WPi`{c8G zr)TS|)(A(H;)zr{$jY`^6wGCBYuWM2hIe>9>JUe%e!i-b4ytJ~!bOn=VyIVZ6-Cs2 zn~6-AU=mu?8Rig?#eC*DpFVlo@A_`lni&|!*O&9ftUuf3>JGrV`ZCY(=YEIU6(zVCON2}eg->!GDb@uyy zx8H;I1iBDux^_07&*rnHX_$qH9U5c6MANJ%fCMaHEAAUEsqoD1E+UrQ#hN6Vq~G`Z z?RGxvfCR7RSJVY%v6YdHE1}wK0S>xoW)ZA)(2QY4v10LJ0*Qdw+}Igr>x*^Qc8jBh zxf47In|dPZx@Nz#v$L~VH~XEp-@1M0?)8s8xcA`6f3oVCmyG1RiExEY8HuF;uc@F?TtPL=5p%sn#D#SG*bjYvu@ zGr-xyNDp@R`D{i+>-~1nySh+G_IB+!t_;C1bZ!@Xw}S@^Vu-u^~H7= zG7IhZ`+nQ+(F0hsNZZV3v)N+av`vyk#31#;m;<04wq3%Q^J3(2c?Hw4lQ4`mC2ktg zO#9t#G4Hr-YXsVtQxRd@aIZb@C#lcjf~Z)594taC?xbc3wBPSG=j$8o4fklt!UlKu zwn=Wb-E5@qUw!GNn>TNNaPQ*}?|u64{NZ2x%m2@NKmEzKzyJMj|KRs-+#3JrFtC%Sq&Xmne-3Ny&*as&lF*y^%yoBVlJGm(dsBKykaWasF5z)0-x||17C1!X;ZyP^HML3aD;wo+>4;W4$(y(7JCzcv4^Ci>*rnv0z zMtBlYJv4`)G(YV3G{)gwB{l>HnFq^8*{REl9PKtf?*GqWC|8fG3}^Dq&-qsU4#fxt zP9--O$kTA)6d8Hl}Ak9^~wGD zs4Oe$0!{C?>`v8_Gk)!vQM>foc!nusx-0-R{(0`G?}n^qimk zypvt#3&o~f=fP{r7L~u|)oTc3bB8&X-w`itI~L9uyKDH{JKY=|-T2-QzyJ2zZ}0mds|mBKMW94&s{s;r)3$AH z-MQ^4onCB)Y>P&!7>~{p4?AUeU&cm_K60N+ktij$8UUipW{HgVXLRqlvVHuQs!A!H zC6&Sq3=acs@EVQ+d?h8?21KMWW7)MrI6Xh#@AvcL)?u3a<)S-UEuK7ivfX80G%(~{ z&Pf!KSyODiO;u`Cr@tDjD#;JSafBimPzaoZAjO!*MBv5^X0a6Ry z03^_CO_#QNB1*$9_q$;}>)f3vu5O}U!)#YvbLHMcYgFryqqt^6g`rSfj+k?2k(3(3 zu2=(v;C_C73Ru^5%&Z2Gd7|WmreWq`zuWElKC8B z|K4A{_7`_wd-JW|{him}`Nm?kl6I!qSh#7Dd+vArZg;lX_h)ApPaZ#2CrPckBhhBF zd;I9hdb<|#`K+7Wyw03n(xF>4z2$2%TP@~9+~;0Z;V|+HbJd(J4}-ZIlY7mfFao)> z(xz6;EW5I~x|2CkKMXKU)HY26W^rqqMoowPzHOStY@UY!-Ul&cL_SE&Qi!*Kql$S% z2D(v1Y?pNx)mkF?k%^-=^jA_50dv*C%nfsD8wiJQ;q>J6S3m#jPwzhjHQ)HwH^2A& z?}^B6$jnky1Op_+I>H1>38|cQuCcAO~^f8AsHXma1vIieH$Ap|8 zptGYEV2r){Qp=t%p(1M8#uBa;1wV<64GdytCqQ92@cFE1W=->8yFELp}?}GBz+Qa(!SqshbFaLTmz_Q)4h8 z+U+){Cs;0)jj%=eX#v1(N=(!b!^xA!v!iQ2{PwrsdF{1#Klt#Y&pv(h*++kN|K4B! z<G`RfwuI&Fm%ws!K0m&`96T?mTh3=~)AqSnQ&)HL3^&V`ZOE!>Mij-DqY6U!Q<~HQ z94=NjGj$=$(7qo8(l#B5kXdS)c{l6#`y{-W&G&oG!@vZGi9e$vC{#oYYZOrfl`xs; zcTVacCNeM>Al3ZkRm8ZwsP6D3?kxVb5-D0X?O-z{I?q9I#^T6xkI?B5e~|f8;vOwB^7##BAm58N1-#t zSK~D(Y63?c#i%m9w#m(m?@Zh$_5S<{u$>Z=OZ4V&omar|=nf54_?B5PxL9ccSmvg-)Wjvz z&m{sv5m8x4j@7R^0}N;QXxANQ@5>T`E0b~Q^{cGrc?Z$w58#(O>eV_CtNX$C@O2zt z8?mth0tiG&BsEPK58Uj@!$*JhSAThO@^m)q-g@U7uf6`Jx(!1vHh(5B`RPFAByP?u ztJP6T-O0svy&JAAq6>QYT!HpBCMJ4W(M6MawJ;TsQa^*~avt5elND4Rjn&Gllueg2 zgK~K}Y~D57hM7cU2%S~vIXS!$o;A&Oy;-k!$G5JzdhYXbvATBs#*+^}*$;#H9PaLx zGkVG_U~Q5lGL0_G2!=Ef#PItFxuFWz|P+i$-4)+XDN)6>~%dGq#Bzu#}S+tc&&v-9`+y6wPIW$HFxta&Famm zn-Yj1+1;`ZX3{j0scF!qv=;4giQUJ-zpxM|x6yc44BX7jV3{`8YiK32`Iz4pd8zWME@ZFl=VmNK(g*sUfi zBCyANK3~j_o;-PSa!3>6sb1ll7WXbMxj)scrZDpz28EYO3B3#@w@{ zL=BUbXbCGen&+wrhZ(38fPRsRAd)2RV7RM;V2o0X$6P%FB#kY)b~bA?>wce8lQ!Gk z&<}g<;m|%4v#K_2ny(hoBZU)4N_xj6_F@vG6eXbyW6(xwgi^A8*ll-<#f;ljvcJBB zil8Wv>XC{FGIzHC*)<6sAegy2BsC(Uxi?cL5)l&W`#l?G^Eo$-!QGgJqy+|$o2#zR zp1SJoTet4~{tv%>_Qqeo`|*4CADleA_v?>8dGF_c`O7!o`Q|sjox1tMlM`cp>Fy0- z-)^_(7Z<1J=j&~6st#90R**hxd)*?k#M#M0( zz@6CG5@kzC;aS}dXkM zB9%NKI(*-WOHv|-dk_)FLlwQzC6rx4ddHRH&rp}iH6Nh=B~Q)glACf~ntaU1pQsSm zi{Azj`%R^FU%ZcrhPgakl@}EF9f5lVN|mRm7SZ_V#B+W5&c-RBOK;26Ia`)3it>NtY~ z5%d{X5-_%2!o-OKtE?tEcw%}5MJ_9wb+>pBE!?e?lJ=3(I9>g6$<-Qf`}6L}uRMIt zXJ7F3OF#U1XPF4tVJ0T)g;5e&FaOwY$CVDp*BXjO1fnK2DK#F3OSSEK{oZ@;J%0MQ zX_~j+`o=fD`3)x8?f1+Si5d}x8_=Q3WpP2QR;&4Px!#;?c00#>^a>e@i<(9cWJpdG zWj~a}oDL9O{+Cc}{Ux+9+ShHNff%iF;~``v!m_idZhl$bc$ zi=m*Gk&c%8sm3%yR6}$ty#bv^H4{_IWj_>_l+t#)6QD^gF(qMB+io`ib&I(Osks?A zF(3q)6ZXA6ee`hHZtuQ)`>j`Ay?O2Clk?Nx{Q83r??1}@#m7JWv%mTCKRMs`n?56P z+cmdddg<+Ne&dzbUw!lLEf-!a=I&sZZoU|d`aG<+TexMQCtQ2!_T8H|{^P&=muDwW z<_>7InNxR*9lW#)Vvrl$CHkKbD|m=j74GiHdC%ruYK1`#V^#%m!^~N8D0e36`#uS` zlGwm*!XT!sN+3yGl1kx-+Bv3f&P0h55fd^2^&>^gmNI=&>-o1*KSU&w+O`D|lassW z{PBk$-TU-jKlFF+yz-szes{H8?)O6xW_OD8yAY&G4*$>CX*YAJ${@MCMtAR1T zRGI-)l2ejS4tr2+0#~%e^Hl@^k(}^_DuUoz`gpLz+{*ea;n?KN43MN~-svvv?q<$J z%jLozo}N5?(hnMqc!}ux^&8z{we5GrloI7^k-w7nLj-U|coh*7v03Dm^9xi&4c7T$ z6+s|#7j{-PvQog;;uqaWkhn=*J6kP|_rrFx?fYRE_Nq#Ti;K;Ezn58BEtiYgY`I*_ zmh+TS(+Kg1Xo!JY@HuiNT}VtYK&eU6G{*a(AGW*wBC*4qT)@>0_97MGHCna63ZqJ> zBjBSVx`=LLqLkYGz90I2)^)@r%z*FqJ98{nl0-68%}Gco5m`rx2HTvU-P>*N-no7E z#;v0tT>I8LZ+`gEC%<{`leP92AN|dL_|0Em^uzgXP=Yjke022YTW`Mk&f71)@u~^W z=5uC-VK!SBQg*x8ZZ!`^)VtAa{?1!(KX~^yfAsVTnL;D=U)?o4hX#0#F4RWu>`2Th zkvV14tmfqAP|bt6q%LvsqC~(GOP6iXh!Ymdn%%6FS~nMRW*V{$YN=LhU^o#+$5}TA zB2O=hMpTnSai>`6WzB=QNhu#!gM3=vN_4r(p6IVtxX_o>I*Qm_c4n2*G;@OKk@Q6b+NQLmza50+v>yu0IDcd=?OUkxg7wdQhF^ts% zbrl=O4-g%Sk0HJ|8lxs(DCVb8-xVG2lRG-lqASzz%%j6-yg+gf6d)#p#-{{7^dpWP z!yIs}k&(pa=EOz}8q*>xH<@y+31J}vxe-9BWJ;z4C%1^Dn55nu95_A>LA{$g5m)bN zeCc4gd%=J_b9@e+d7)8Yl##ebrh?Wc#OCWczCL2(4sg>nP19JEZgwTZy^lWm=)(_% z(w&#@y#3BwZP)Df1J&4DFO>$$J|1>=B4QyCn$PBo)zNM^AHv-ZI20}*fJ%~l;Iarf zIcTREi*S%?8pRJqTmoo>yMdxwX$`xrzy&~!@bIzXYsJr{imFxC95=;aVSsXWWMYDm zqiveia(3^tC#O%Jn7u7brrNfA{rFnbcKbY}Bwf??Iopsei7E16Bsp)EA zYoeMhL$4jm=G9d*nW4iHLZs9)v8k$RSQ-eHIO35U1f)i~X5p*0&$;h&zwfc_yDr%- z_uIbT?9Z5wHtXebzFaPr%SDqCgv%;K=tU}lX2cPJL!Mheg||dm_5A$&`px5LPemlt z?V>v1qGoQnZXYKjx=%Q2x&QIz$Tb}ECgh2j9l784L@A}{u;CCUe|m~r zH($Pe`<2&U>z1>7pFB7}J?)^kUwUbNyi&)0==c48Z+Us`M&9O+-~T{|y>v6MML0DR zR4Xtm_L%Y_LBY(Ny2i~ktEnrp=V8Y{Y8o&>OP~lRawT&evT-94)trG8InqpS$T@ow zB4&7ryEbqM(i#yxMc@ajdMwcI`-aaIUJI51Ssm#$Qad zM16O(UslaqRYa_?2z(2rWr%D0ToqA7I08#}jLfVMA+dmSRtzL?WjL6R=AE!TdGfg5 z?PiO{hfM6N#o}mnw12pE_-x*7HXH2+XHf?CHc*C;kQ`8n*NOtqsED|vFlCOZdoNHC zKm_>^h}l$g>B{KtOd6Gz$N>?w%h__#3_0)n-1ozNw{N?~Ecg3-I-H&1Y`L7Tj#tb1 zY_(dnT}M)UHx3ZH0S-oZ2boEnOq2VJNtv_b{9-MwG&3q%=?hduQTFZ*v*H)BfQn^` z%OpnINwQb4sZv-t9O14tClZQ)FKEbz*-%Z= zG0Z+y#pYhpb-sdr@KWlwq`Hqa(155RJucYto!URH_;2ds^QucNssI`hjSY>aYZoJK z7(w|ns{#`QN0(lEF>`s|K?ph>3A7-qy{V~K{fpD6aJAxyE#z%9B%#FAA`PF6PKz)L0jH-Bd>dUDw)l2iMcXM@^ z4_i`wUes+l2Wo!pu)zg#n_uqZ@;_PB|eC^FQ-&$Qi+T{UE zK_NgW1w4vMs>=bMgqXQ$nr=SZJi%@^6!Xhek5c5v9rpCms_!F4bD&nsD+5L&m8EK_ zjB`dXcKi;FKI&3oqi&4l>*OU6g~P%U9{Y%?1_{BCt;jXpQo_+{hI_-)hYxe#r>?b} znds=~sGHA+yf#AWnw*u?J;4k)D|&}0r>0>da4|JjL9dpRx&{KcnHjMlINNx^MKzUd zm#W+0rL8C@H_L3HT%`_<$L0@4*EMb1+G4g^<$a&m>;1*qT2+a#J>Tv(+l!O4dDk6X zJ6c>jYPuE)a3}Iel8!_en6Wr%7D}_W*>Abe*siy;MK@n`nAaS&{q3XFIj(#kv8ZlduXH7&7+iow0AuX1RB;x9ZQh}HmLNti)_B%V% zJnSykXU8{gee0dKUVGz>2M-@VdGh4Jqel;)oM)w5w{D$m*1!1kzx>Ic{ORiW=sVy4 z-M8NUW|Nw;)6-x7&9686{hild{oNn_=$qg9_U-G}j3CYIy-z;)^xl0CC<&(&VoOYB zFg;W%V?cz}q7S%{69hs+Nyrm{)O*z&fht50CUtW+PUOZp=j0?!Q-eVqfElToyAP&f zLPFv1ik-m8jVOVb8E`F8TMiHl5tBh(tw{|8YMM3MmsNd5WK-L8ZA&0^3&6AAZa;Yc zy+;ooX0zA6@%pWoZ)d211fz=Z34f(3oR$(r@0;0tMyc8F`fQd;<-T$4Q*oA*MM8%d z@XK1lMx#MpH1#3J5^^dQF{|q0b5#U64k`jxtjZ{C2SV_MR7*|}xifq|Z)Qz8ef)TR zcD`KQ-Vggmd_G?+S4W$N_XksH8|ekPq;;zrhJnPqO^I3tMWypEP!TW>^!lY#1Q9U{ z8WHpCX0CB}VLBpM6aYhNq-h(~nJyQ{N5gtIT%4}^{T@uY&nFL`tlM@_TXg z#}o;(Qx4pgn$$FsHN)IYjRSfDK)>JSVLzMCyRHkz513gHDnb~$e!sam)1lvN&X>p6 zU%7MZ*2{MvKRtc?_{qaZk3N0$bi31=H*W5R{l@$x?(ZHSUC+bt z?r(nc;L+p7wc~Gn_q*Ty;SX=$xp||J43c5^`27!a&Rx@TN=#65X3kW6?6G78AZAY9 z_r`^>5;Ha2kU%r5?aef2O-Z8cvyrQ7R6bPIp&z7a6EkTQ6)TahO2)=4;pjLdI2wVB zqB24djX*~%#3W$Pc}OfIFxZd>YF^yOX0+$WdJJgeaEcB(5q%p}ryP^7a;#3ebc}L~ zLvzY;qenGxPZ`Vz{zp)bOILM?M@%Ao3J`e?*8hq}2}48ioK_Q3an~H+FUFHp00UH( zU+gS2xx3N05)MlTd(ni|?`9351&6+b1~lU!7W7f_i&(OlN-Ji0Oyy6TRv=#Yy*W4wHk zrGj6eq2rAL>~c8IX&lzr-^M#EWGVKO32iZl8B}2kjR(O546q1EsN!_V|Kj8PP?5I@ zhnf)1`sT=So=2IVKTwl%J^veyOY=~dT6t?SvR}{fwGo@ye9jVy+s?#hdC2y`M<1!YL9>u##MvfmQr_RKIztjs0 zkvmwM-duH87ke*IcXjYg#cg4U5`xPaA-T4`o&p9eSe>;0;oIY~stSk*_N z9>Y-T5tK@Br_!3ID(!mPQA-!2Ro97~lp9G+V_9LYIU@<7IDz3l^!=7FUo2Qs1Zo%= zA)4W(Ik^pF^w0nNKmFv-zx|zW{lkCs55NDzA1!9x zqtEW0Jb5TY6eZ(A)`UY_Ik<$ghh1G@rqSq&ECh{OBBV}{hMb3eFKrU8Rxp)BZcu_} zRU&Dd>X=}%2%t<7ff^dsH^L85BjO;!B2LV~lu+{CMT7t|qXdTyF{WQ-KX1EE_k&X; zT(O%H^T+o;ef0FPB)NU-<(FT5g;`W>sv=MwB4bkrk2a~q1SICJNpRa|RaL2hVqR5t z$UUKWYhrzjxMi}thrAuMMBN%9>w_b^FYMl70pQP55g=zGEBhgVK+G_uApCJzEGb&1 z5Ia22y6$K>f3n+NoS(nizPd}uo>}<#c=b@YcXuNJY3aMj4pTMsk)vZ#>B=qoosn5d z>3&v45V;ZLb5%r$!~ypaF*O9l`iov#@bJNwZOYw6NK)I(yY9%3kC(gkt{?hg*ALr$ z-VNuQ-TC?X?BeYB`tkJ}*XFaifz6CUH8{bI+!IlD_k?EFa=%y0{kF&4xJ~Z*TovKb z%pIjsshUTM4XTPL8v}uf0xmO$iZEhIT`R*tPCDeM{!FnmfO5{;?S=?V+X>t(+^NQ3 zBk8F1tk(DYoQFPNoUgm%qnB38TStqxUwQfdgGcXv_|fUv`uOPh`n98nPfs78o__TH z2k*W6!RxQT@sIxTKmOnT*Z;eBfAj7i|H+^Ji+}z<{OP~{_kaHn|KRuk^Z)#nH{Sf@ znxgoXxyxO6O8`0pO94 zqn4rErl?W~CQ~<4B#P*nP!UpO-_6v`K+Yn;dEwcjaS`}`*o=sD zLNA;dDRGFHp#&S7nMNzvap6|e6;+Q7Q87UTM{$pO{$UT{!uqPaiw>srOV=|3(}J|G zT(4sc{h-O0UU-Mk9G4kYVJ%+m)Uiav;y@$4sm}7kaOeOD{qj$fKkrhC_y=w&9*yyv zUX3`_X>%!M=*pE(&NLmO%DD<}xy*39`k~ybGAd(V97OJy2f9+PXB^T-(zADc3FuEp)Th*_-bis4Pn=s`p4IXLnrr1YX7#V3hF6SZa+ote3}&V61xtBlpk<88h+n$hFXA>=2JmNJchyCKk#@q{cKDLnSduy_{;)2ca(h>3WSIivV*V2^%af)As7LtxBbUATkgO zh|D6NC<=>9foo>&Ad^I^quFfU*r3BAZ`a$t@3ZFJet+`l>G|o|?$+j|m+s7$3nO>r zQeLWb@sKbxbX~jOZFPt3dcT_uv*j#%CaN~Tvdkmq%st{IC>+dg*@}%_$OyvY$WS4G z=I$AQhy({UH!~BLx{EphW*!FR-M(!R9WC4u-QrVfI9fYo%Z~kSI}F3HTkqPY?Yc#? z{J}Tge)-m|zy9^RXPb3L!?jtroHytD{gackfAeqt)u#_X{XhRV|IPpYpZwQ9{(C?E z(?9vMfA??y^E=eBK$3ycNaRM8|jWz8bByL-g)Pni}@l{1U*khI62Hn znBYv5nnX@4zL+;n)2MkKbk;&q3CLmdECFnFL!swri7P5%T=h)RJ#17Fm|EIis3KxJ z8Fz9Z5?>5pG7>W-ka(h<0mdTP&^CO$Ts%B~a`yDJb`G(wYp&lsCZeIwjR-YqI}C0L zZkde8%|!<=sV5;SjYDGW>Oy*situP@@?sU?&s7l!`++g1=oI5oo1u6~gZa9{MJO$r zu9Mu)w9mWEZok_Pn)|+ApRO;?&evz>cW&QZ9bc0q>Nz|C9xB2FWH4`<)U?U^zTXa; z_5QeNjR5H9sEAUk60mHp&Y%MI38i#Vq+>W>C&E%jU(XrPPx%qCl2PjF3 z+MDqqk(5{>@;#g9z8{7>?6>_{({^psEZ)9*`|iyfzkK(D&z?M1>lcaBjq6(-PR=g= z`WHX@LR8&`IjwP9-Z5(7)dfU86A^4?mq|vzms(jSk z;Oc5QtEqvA*h^+^EaC&Jp{gfh30qtxA__WUoKNWMm-EUi6nGHP3%P z&Tf;Cgo;q2*gpA$)da^O5T1!f8`ThvJfptv#Y`Mol;d@K!O;hp6GI&WPva}KXCPvH5#otY(}R*g|5Xb?8SFeG~`r^x}%gkEziK0&+QnE{MB%CAUEarEwXP> zgyrgXRZSgrd=BJkde>a?|4INKs<2+({idQavKrJmjn!kN-b_KTqmC|)Cy$EiBQ`;V zG66s>h3pPDgPE(ks++o+o0@8vtgg_#>C}yDZIu1d=v6n@2>~j6r?QVLV=|qE-{u&{ zDW*NHyPj>r^Zz!-*Vv%bgkXsB$F{xLe)#?e7wh%)8#i8i^NnUUD_RcDOcPRA{mUK| zC0v+O(+EqnhwtXCB+i=6O0<2M;i?wP)%;IcKmlnV+_mv<-Q; z%L92Pq$=}ngDGVOv9q-cCBnj@G&BF93%Ecr@l@=DhH?CAviwZD;I2M37 zqU(z76I{9*7~pEk#OD*Bw{F#z@_4B0zy7oT<^TG>{QeJq@Q?oS|KfLk=Ue~w z-~aKS{QLj-^Pm5MrCBakfj|oUc5;+1oPZV?9X-n=uv#3l79ft#h=>Rc`yp#4;#BYl zu?WMAd@##uiMhIkgh0_+T+J;jry9KjL@{Xw!QE9UPE93Ofx!Z>2!jVz&kis>yBWOr z@M4!Ig%g_&cJHH)A3l1-BCo#w+Uoe4GrQ^wRYcUsa3e=E??i;6Y;@OlU89!O43MH8 zruMWlUS4dqFVYevxUqnmQ9)D){adJrf{&@5%9%=APq4c)d6&|lrHXOGSS?y%Iz2lZ z`kW*=APvnIa~9e6dugSinUOmwJXbHXo0<-p!2)q2BbTvw?Uzsytju3VMbt43GY*4X zs7~sLFIWU{E1hs0ZJW4l+j$r1H$y+P+udfpK0i6{x5Ld_`6*Z(tY9$ot%%-;8Y`eB?y0(~lqBpV`1Og#b0jaw8`=Q_4Mz((LoKiP?{npLn z#r(z3;y9+N(eLi@*F=|LWiT z-~KQEY<2BgBdv$ImLl7Y+>MBtp`I(u@!Efp$J((mT_q60!9;D_Xr^Hpj3}`XU<6`j zageLppxQ}khs4Z6-0R>1ch^Csp{gRNMr05HZVK~~x?)c50%3+L};*JuB zM&oUchK?dLg?~(aH&dl{<=zhHy$;UdvsAf2#rxGe<)hc8HfcD}p2?_Btkj2KwFyc` z^yh|Qp`*)99%v8ffIr{i##ge#<_yh1gIu3T^2%q4Dv z$xmFC03SKiL7H%B9IqaeX`oW=s`9$803^Q5@%81{AOZ@^-TQria&mHUe$mb6ue|c= z@$r$DCUIOLz(FQ3@<@Q-Nw`f7!4va91Y$Moqa$JH>d<<{{_F<<0f13vX`I}V3(^68 zObs%l;7v%-NGCBmzl+x)kb;kB=P(~7EI7WInK)4*(jJygOdCnd`RxAb>FLRZJEgWY z)kd0Y$H(u3Hhm_M*{p-IWo2mSWHASzStSaeE26UTRMUFZjvhBM>V;wjh+K+;QRdLC ze4INP%_db1#UqBm4N=L+9N=)803wZBi7VtJ^X06YrQGLv*Y38n^=7-@?LK_}y&E@Q zdik}Nn@%*lMhFj!MHe}@wreTD2j6Zsi^aU@l6y87h@DCZL)4z7x@{R;b0%06zm6qO zh*jbQHwQCHvMj*NP20$pEo;u1m|JSVu-N;p#5bzhe!FYhHl-AxGrJiP3o|@{)QpJW zq*?PYFtP1*yIH%)ocZ-TFU{L-v)>M?dlerBAV0W&|Nr&>{O><__rvdg{|B$V@#;VM zC;x}H-+udF{EPqZ)6)mD`7-1!X9cKUa4FnVWRfV#3^9>IVN8jDNE$9S#?#OtPv){&^Q)_fg1XAaS5_ED5j3Y5g@i<|gXh7>oyq52C&DLB&-;Du z7PG$Jk=fB|)pWCqU2jhFd24K0ja;Kat-x5xU>f+CcGgCY7QY$v(`K(*aXPeDtyW4+y|K8d8*~_oJdUS1JKsHr4n88jU zc5jy3AY0Y!u2B~xuBL)qJ7_l{svYuDN==jY``+C8 zzVEnWW_1ubI|5Id`hM4&d9*5aAe-fwQ$V6d8JP>2YR;L6$ZWIQDHAi_zH!_(>1@5( z=iaGJPG&bBou2;d|M7qP?B4w!{OI@J`sUmJ@PGaf-+t$vfBw(^hu^&WZrjb{GEKEN z7a|r?a|$|1;|>sQP{5H(#8HHKWH~Y6L?R3~L|ZH-kPw-W0pw7#3~CYpq{OKaSZ0tr za@JOo6-%D0tC2CKz)v+WAi6bEn9!IAiYT^Ly(lj_rkKc!b;YY-dMOdZ0t3LGJN_SEG@90r%e(jJLIv3}x(+~x{et$^+D!t?_Z06Qw3LtH@B zA5;+S!E<*&&{f%vFmC!{6&&}f-YdD8Li34JXoAxmmxm_4e7UVpT{|^w4uxJ;Taj03 zo%|p@Geq^5Mqda3D$A5=S!l0uZ4n|9H)+Kf5M>O@4_O%iD;}Hbx6#`F!ox)BQ;G7) zgE|RiWX1^^lRRjAJmEH&4&E0YlWF^+FHs36E-hSM^zqMKm@huQMq*R^$d>bdxBcw1 zPqXD$UwQ5JojZ{e5wlq%)5~oXd=Qk~5D_L^N~#hWiAVY4Y&E8X$_$M_BeqYgNzxY!@CK~};SCeHZ)P#EeS>_gFmR_)aG%LJquD$VI4`wQZBSd6&Ab zABNM@^G`nhsL%cDZ@e*Iv^ETife6e-26an~bn}_@dB5AOFV;8P8ww8lfswJHG&>}= zx+|I5V1vU;iv)8nw*vJt!?6JpldBPr}dkxKq|_dvkOmiJTIl zPjCfCmwP5*F@;EE1364n@;vlrN}OKm+T%v{su%11e$^6|%ak5HJ^2s+>R&&4c=G#y z_s4hd-u&h}Z~kxotN-%f{<}Z^_>=poX*dOHv6NWie{NB$m4IU7cSKDeH4V#p^g2MK z^9IWoO5C`cXC*{kH)0UfoiOOoAQ1@@HPSSa1~(^SVsjnTgc*R78#JIkb4kChQ;*R? znMBm!Y93XRz6!IUf>_8k>o7cg@Y(74>CGEAUVrtq)HG)HWmE)!rfY)!FxVXehN17X zs)Aat{Dqhf{`Xk8R!xP#R7*@4fIFzJtWY(@nsliCR@U2>QxS#sR9_JhjD%g`>}VM#v&C%D%x3Gei(Q{rvoUO1JwI>jV3r0zWokYw9 z;UB^ms|aG`P!Y^-27a-MATOQZi-7vLgT>}l3Tzj%LL@d=e23jxK-4rTwX?RFb?t7y zUT+^idc56j-+Jer>o<;^C~Hq)=O;5Y7MjhwVYlyhyNk1nSvQl00d`^|L+t_?5qKrK z$9&Mi%!I?~;LKi7;uz!~fj*J{$1aUDU9;Qwnlp5Z!CYA2ssMTREXF_=eQO$N5)T?G)O1j7s0r(;K{fn=r3I7uB^5yqOUz8{3OA!s zmaZNJ!WE?D#mVaKV->V0Zm+7EmBUv>#bqVO1H8PXcBWqM{p!QS$YCw3gJsy2<5+>8<>o zFv|Gl(glyJ#L)Eis;aD%ro^I-+~)GlKlj$Br=#)BdY2THkExEyH0#F4xV2cG<&`VE z_tKOU@xj4kCRXe{(G9euXh!UKh{P13psROW*yRW%DJEuaDTc6JfpGtuHPv(Bg=8t@2@I)+B8sm9rHu6#@X{5>3O$Le`|H{}OJi4Jwthid4DY7{|G;er4 zgy*xCVHfA;!;qyFRb`^%qgC6@PtG@+?a(cSKqATEfRdFR7;p{P$?i#Hvg*sNS93Fn z4x(LbU*SvhY$jlq>0L~jeWiLaVqAfL86BdM3S9$EV-BLzcO-vBsJ(~?t#~;MStOb1 zZH`9wrh9WJ%d&Akg03i3Rz=%t4GK&?E9Q@lNts$k>frZXTr`& zVh(5X>`+Za?(ErA2R3h*R;|2w^TzeX;%u{f`P%WXKf3o9fBGNKH=FPO=sPdpx^e5~ z&HwE0{P^tTU!RamchvC zBqSDna;R&Yw&Cq&vt6%m;7BbuoED4OYI*eZ;io5O>zhX{frQza4N3u0!=B>qs>B}Y zVt#qE_>wAuiG-i4A}CUn4l06B^K=eWGFq-6xQ&ssmz1#3*A^L8%uF+xHEq+jt-GC^ zo_zG)`=oEIt{=A$L-u5z!^0qL+qJWK?sdQ0uGbewM@J&9n>%HvC>$U@nOrky^gs23 zlPR!6HSVHlv=Or~wOuP|Yib1S_dRpR%!LU9ZbTg6u*f-^TS|?vq*7RqG?)zmLL3Ql z5hbR|z-b0U%h_qqX!Rv_3K}5cKaXv_=j)4dgt2l@sEG+ z_fMXjz5D*VUDG<8+=raaxM@jJ<4*m4h_EVm=c>P$;Hp+4@(xNJaEkKD%ueL0>L7UV zq-=x3)e1Uf!mMq#d9SJjA;K^WBFrf{EKGS-MO3+RhB|RnQv`)@9yIbZDq@1@#`j0- zyGH^aJP$b!IqLu?7O4P}OCbOdl~kX~Q_Ex)n{;J0HCv^?xd~3Ftfs8dsdvJseBr9H zm@e=aJfXwCSGi5Ox=^6i9pIC%1qiROqSO%p0c14Nv=UP`qVD?L`j8GMx&n)QYLmhE zu!PIjcWVaXB;?MoR$v;h_nA?l`kOURKCpp}17dKZ(iE`ND2Xr>bE_lfhjLMM77kCU z{+hfxzFYkx78$pZY(rP%a012a#9u|?1=B|q-9a8MT~txAqcaNZC}~YzyVg>D{~%)Q zFn6h!%~n}RkQ;{raObjbM^rhdCUJw3g5@BaOdKUp3v zUw!S>wr$-)E~vm}nyf0sda5JN(zcyQ0y0IWGP5+vYq84`Db5a8ik*rk8|yT`3{%Oi zLg~dg6n%;#WflNM)40niOI4GN&a$x+z^Df6QPflQ289uk9dL6dI5Vjk1M{wJlk~f7 z?t3g34tLmcwV1D#yVK2P-(O!Yg=Gkm$jZ#nz#OG%ZD!B_mMDpaLyG{erJCv$R!=dZ zM#vzF#Ja^+Py`C(6I~XYWVx%NCX37wMRYT}kLna|rZI~YWtu%Yc2GjsG%1O@J$mry z$>Yc7cC=gPwHF`6q&jTY>rX#> z_~Co+tLj_tymoYSROR#wR75;(nkJRBsI}1{`uRh2rBL%svSH5f`u)F9Nwk0=-Tym*lo9?#%kN<=-SaEqKoY= z8K03mQzI2vQzeY-;YO-#Sj0()okU^o39O)bGrvBc4Nk|)MW6F; z?tl1`KO5-xe(0~->iGK0ckjOU-fyU=2q$AT(_!DDVWOrHGY=@@29PsRlC&QNcVkIj z@k(94C>;ZX4XCj?7{YP)aJZV8n*ePiUEAcnsYUJ#dL5!Wo7W~zW6(p{9^j!ONC|+d zI(*Dzd`1%-aD0WPu@22GdPUoiweS0(9{{v%V&=k8c~lgU-9v|GgfT?ifm#o3{I5#< zvqv$sKLc&A(wR%pe!9BHzjZZS`VD$M-m6fW4$HAJkiyQ z0W0y>OfZkK@5aQjheza9_32Eeqk3tsavL9C8t>1oxV5WiVnXn)PSNGT9O;}>L9ZAI z^fOd7#_7Ntz1o5imX%6x%IQnYE}`@SD}B|?OVuZfdxyiB90rcYA>k@F^FnM4s$^p* zTKIFu0t9~fhAOQo;^hZl`(@XSSF^x0KJ9sfhDl*=A}YqfFJw03)*fD|x;pBs6>t3Q zY0lS1Y%bOpn~U?!X8q{FgVeRJzV`Zju~JoLaX7&^3M&H#NvcW_1}95x)3$BVyzFpd z;uQ8pB9EBph&VNm`Zrawx%g$LM>o0?|L55vjweksH^qx#7vvCr_U|b@$iac&(dtWErrgu>tDN-F&uLZ_RwS-JM^Y zU%P&-P*e~3C`1$vH&ZnfYF4IkYz|VacvkvOh7&)ICN*8#tn&_JZnWF(+OF-|_Asqg zLvpB=tm>egb7JWl5U~-5NeM_!Mg&2bWnu-f8@V?QcWBnEX3UN7x88Vl=k}*R`_(5O ze%KK;($1F4wrQHw#LnzQEMy)&ncPStBBt){fe@p+kEB%0wtxs%g< zcqq|?p`assjLFn;ktO%A>Vr(ph~?;b36K+AT%3RM$vrR~Uq5CiGffE&b+e{xo2DIl z9s2(4?5yb;PGOV?`LIz%Ac%JfQNySrsD@S`3Z(_xtwlA6NSM2>+imvd3i5v6o9n!r zVT71L{7}iUDeK`{o_)=2>xO*IjlBWt!= za^|@z!iyx1|9CJccVx4Dzc;l!&nmm4fiYmu5(|9&6Mq)UDtGjCA zJ0pzyjvvZ72S0EEnH$7{tT;K?KxX8CTH!WorJGGL2bi0NW|=aCQD=|)Qjv*ihoLJp zX7uM=-Y71~4i2bkvMqcOt(gpT{ocW8I=)ob$lvPt+KA0(4<51G>C>nC{qFTQ-@1O| zW;hxnbA}lu*rf@8sW{q5|*X#3( z+jt2~sydr>%cG+wj(yGsFcBB$G<&!;t3oD_o4K+@(`jdRKR7sJG;3zLAMUq0wqfk% z=1!(goQhqilsgK$gjgb|sf$ zla7!G;^;LW_z@^QKT^Zpe74!{)rlEuHVm0X8cG1%EPC2U_-ia|2UG_FDI2@8m+ESX z7~pV!APGqWMAVFO7-1aFqGsll)QIJcJGb8Z_}=}KvkyM}u<2%Rz5Pz#4~d1Hgv6Q5 z)!m61=KU}<4w2-lRNC7(+>ESuaQgH_H4}@ui^%Hem{POd z4{A}fiv%FBQLs}Uu}n}v&_IJ`GjO63KISn~F!jY^aqBjN=;HkR-Y54QI669FBCsXLFlgd5TgXA$fX9IqWGH4H0Mwe6g<%r-%>F-&kZMb^Psm5qg%qXeO_I}~C4NdU;rO`|>|955ti1Ep+xvR7_i zd-c|h^H1(Sdi3z8zxa7GpIxli!c0aC29vvnR544=>gG+;5y;)51C|@Wlv3)4VNgvI zcRr|CY-&1AY|26QsbR7qE0Bjg47rttL9@19bu%6M-qnRcGz=CE$xu}U%2wg#E+8gz zB_x8HOH2sY$W$h}bC<1;w09Nqiv`MK zGGlY7 z#eY%j+08=BA-b(R*IhHYzbVhT!fi%=RiN;TdCK9V^?cJc^m(9QvdY3*Il2-redcd{ zd~L)g=V8CwKX~-;#*LeIZrv)|UAPwkD4dKFS>1yi9-S=Xh18_ktSgEx^rf(aMa0y0 z+pT6LG%$-s)d9Y|EaJjwd-dm^(9@qwU(&YGH)^pyos*Od33$%Cagf z-bc*jFm;0pIfK|sTI9G-RD=Vd7Kto!7_KTeWOo)M)HuDd$Zhe-k1&tpy}}YvSA3MB za-k$i+NSUG(CKma?F69a=~Cq7y&E$iviCnrx&K)8G7&TQU92g*R=%f)iN*{E9H z>60f!1JpV%UFl@8ivWyV-15M9ovFZ4YLKS%fHMRW}mh=*G^>Wq*r)>6QnlltehJrw5~o z72hSCOqks%F?*BxArG4SJhal~tjvD2oT=^CS>3_JW|qAl66BEMOwlg<4!oLhzRx;VMy4PJTC|P|Eit-4 zKTkyz{sVKxgg#dlQM@wnq9V#~O?(3ZW=aF&faOV2lX%d6-DtwD6(=ttEmrmxD|RIS#v~Jd zNwwmhn;U~tlD;YqW^S4^n|1wuA5V#R-|rndYr8t-PC&^5h!qlk5mi?=C1YZZ#xv@r zRG2w40Zk;sI7SuWOyX?tq`pk@gKvN9WWE0E?ELB3lb`+KXXehrQSL~XEPhVm?j&r6 zp&yb&p&e%~!K+|mAyXZ4FG-R}5p*6|caiq6hX^s;nj~(XHTOe5>l#vH9~NDcwbNbB z9--BqbB~&lGR7{J-Os|WU_>0ZeFF0?g`^QjJV485lJHbxL!l_eqn#aSdFh zB&e801Sbx65AY(i9H4l`Ob19ytOHyYQunK3YpbE@KUh1ED}n=%h&9mD0JKa7Z? z7UdXBNM3dLVF1g6%KT#V0A^S9qUe~Q3>pK5P=QgLHEeKQIlS&Ek-&Fw z;Zeb87J=@JKt9F*yMLQj`DCH%g zE&qgb%AWVJ=N~curNz|5%J%ggUtfbxk*80dO6uNt>&eHwH;K ze(M-ilvKc6SuKHD*h9}TiF70a4E-MJh;>FrjFga74YFJ<06#r_diwN)&0l``Zqp_6 zUYG~>G;5a2<5$XGWbH2HL<2t#x0i@9+v0^eO0hJ(BxEt7lXpDL<>{~1(OsWKS zxV25QSkCj%TSd&CZNJ@9=WW{%RVGYKPGQw1;;@2{BLq;{RI53gS;?8QLm4DU=Bip$ z445op*L4u+%h!)yzkT!lhmVJ0_vq0BX&dU2kw=viuWb(_e#gwS4Z;nxn8)3bJ4E2b zmNk2{9CwL{Aa^GNA-c^=QBoX{X>Bq$sP+5ZkXnI}=O#6a)oOos-kZW14uvIV*SLBz z1*#K?ql7_nhg&ptXBQBWe2Ja^a3o3RXXpEUe*LxAuHU@wULp{JldC&1F(n?e8iH&P z+!Tb_Y`&P!E%G-Y)jY=<(3fC2dvVe$*nw18`eC_V))FI-K=oUOajsaqy{sjKOchS= zUsXl;sByT|4Fdp4tl23lVMK{K5g}g8XDQKUb20S&Y`*CG9?9p6c{iJFw`W<6MBK7V z?3q-2KBbgfP$d8`gGUMqvx*Q2zLbg}z^#;Jaf32(X^Y6wP9)jH0Y0LOfOexDHBuoA z1-_6p4J8H*dqm9xuNgmy0cdt~U3=}ubuiZJ^=J1#WxKn&wqiG7AIznZ)oQgH1`;vt z*XQfyY{?>S4k)CUvkNojiJ8Yeil`wxz;(xndk|qWi|lN1UM%Lj?RFS)G5MPHyPh1g zu8j!70+=Ebz`{XaSRJ{WS~fEaQ0By9?4TT(hY5|lsTSlmst9tk-S)<;dF$od7yWJz zJbwJJ=~`-Ktp6G%QNXOh89>>T2yJS@L|7Y;dDF0y4r*3N)#%A^a}HZ0h+IGjv`5@F zfal(a-1kEVNy&OnX}(zOO!I#4Zg5gqqOo5NMUAGQupAXk#K6!T1WZDRa7+fjML_@k&NHC z%5pAwN)9Xkg$Er@H-)iYpO%CL6sL`cRwe=k6rgYySTXZZ{l)4REjoudh!ItLP@K=g zV^_XbS(sPab?~x;ePpCDlr-CHkF>L7?)igh{|v*@U2BIIWw6D zH7Sa$I!}C@io+aE@%z+C9xi?g7YKRXLqnLJH=)4jr74e#1Vppi=(1IOXVsNVit|6j+w}Vlw zu0miXay2!_Y&kdB>B;HY=~*Lu`|cg)1j%kTn6IuaH~UTA4UDwiZrj;xHtXDT_~TiA}BF50XS!P>s%E8O)K+ z2oOlgIW|awSwywMhD;&~b#vnC>n6C9X?8+3>-YQhX0zK5n@o3(k5AT{)9ujB78Zas zMTv<>lZ=ZMGmDJxA!nojUNwc2z=;^l+0Bg za@Lu{v(B1sHMg^i695W!6L2EYQf$B-WnTyc>;NmEu4TWOCX#%)W4qmM)|)$b?%cX_ zN0OLEOyyKX;CU*-n9$9;#d6_wuP;o)jK~N`O-iYCa*K!^psLsS?ZZ|ws*Zz}Kn*@YO(+%>VsK#~9LZq<%x7(v(%I?h#o5`-myUK0 z80Pc&Y`$1OeZ1cfz>+vBp%E)0uY;pJE4B^#~qLjWBonZEtxXs!lR?Vwh=mYG&;bT{HLXX7ljD0}-ArW+HhY z+uP7ByT!iSXofdKpD)(yGYS zgh~KT1l1TrDTaVx#t}c=bYx_vyWK9$XU>$frnX(pSDJ^M)gWr@oQRDjimAX$^vyv< z7$|!#5SYF|L0o# zjNZlPU4)lF%ZbVufj_480uBdF|Go0(+2iw^HZMYFu$_Gtc2R1vA&hT>$a)*GAnE`FM;PrCM)pLg$KxAN_~X zlFqAthY%KVSgDo^4u3ucXQ&sA%7{aMO?gkeQm@S&8Xc*^w|nr~l+l~;nWEGu=$-+k z*r&!S0!##AJy_O9dPU>uEh@1TVp%EVWY7;|5WH`6>Nu6)L5^mIKt!8`4f2`)VuGU4 z;9*#vD{83HHs%nG1pABF$QK*|OfNNNJ)HA7hvOgs;|pKo@wE|~$B&=fx_$SJH{aBp z)p~BCtsmS})ru7&3T-2TG91Ef)6EyN*=z=anX{B|2Lc2xYyvMq<3%iqo!r<fQ4JQ3lI95DAgR@<&85FcSe8J} zaF{ z;YlOm94j#ix2@#?iUNR%2$ncGyE5jhxdRtZPfkuwB{er+x=GAT>Tr>Cv|66*PKbE7 z8*p+WFWqcfDHePy z7?_#c#^F%)&@x1TCnjT3_IB1B-?&D=X0v_t@bR6yciLHEQgS8X)oRgic52Y$L{98hZ11B@u~0CHI7T3_goBvo^Lf7?hJ8*+3ermN_oHA`=DmjrtYZgW<=Ll z%UwSV{Vv#MxS&kcyfl!BHRy!F1~L*7F1@7yuu$u)s@Y88E{SQZKFUx>R)wj6BV~n& zTOn$B-|vPzY<9k!&xDwAo{MNZU+YE*P;qBBr%(|%GQiW}s)mCqe-i>W24vOib9OQgD+L#?XH@EhTI_GoDMuTJ zazyfecv$%Y{9r^WQ0kc>D7rKLt$e32O4lf7UTkngAW|Zba|COQsV#?jr8>}ut!I3B zG9^^q|D(&0!XRFDb1uCc!f68m1c%2#Y^c6sb!N0&!enc@e5+oEembSo;XLecUu3V70&;QERw~K0}(oqBTH@=?ZYa=$B?GC_h-!EpfS<|>%O5y}H&3!gEH;22rxr3az z;kNB&vyKy2cVCn(a*dz?0@&Tuw2~IHLiAt+F80)#yme4gR9vgB26zNkyA!8qTZq!r zzJ{n2-bh^9G!SCMCp*Z5(Fegs@klzN2A7U&zj_-%DAnDpIL$#!i?;1r8T##hw=d=(U5wMz#M|o>proQWT7e)|L_8S}fWHa#Y<@=n;8Q5uVMs zO*ik}G?GW3J?#6wi<+M9RjUH1O!J_vxaOIKfedaihM6;i6B|SUf^n(gC;|pMv+oC+ z&01eAH|x!lCr?G>+KuZ16IRt>(av|XUElWv-fecLa&q(L&D5rBIZ7gO5=qfqf)TqK zgh@(3NO*=zP&MH64h+I zXTV&ek&X*fliK}$Z{{q>Ip>@m4i-~rK{0S~NiC5J$zHQ-o_EcS<+9)I)ypNH%!EMpVAoOQ@*Ffz>m6DMk078Y)qK|Bn* zi`^E97wybdnXsBIa<9ERv%71g9|#LPI-4;wkG%{Im5xH4Qr$Yf+_B&HVUAramdoYR zU85d@!E>Lp=7Wj=$cThe)6D0y)TGeUToa-V21ufCH>ha|*{sd|sM?Q;uePL)KBFbf zfk?@S{Wszl5&H@i#xU+vM8AcKFhuVtEl{Cu76l;?gegZ}K7p9KM2lJHPtSMTwL3%z zj;3vouU-3CWIJRJ$yZ|>V#$aP?&)#G$0$V2V@K58@Nnkw3snSAQj;PW%QNiy^`qtS z@q-7C`}LZ`bm@~X6)gdu*ghSjg{YX(tpG@;MC6jmDO=jUJmk}-r^38g&a>z6N|11B#In^OrDy~t%pCRVgS~`B zg8(6BX7fXv+LUBA>++D9Ae__` z@5JaqEOS^U^dLa-M&0hJC&r24%FJ3$F~V;Hm<<}~)xZSiKYNs_^1+u-OvPRuImLKc zN<@HB3Sd`7Y7BEy2Ro8MsgN9<(4GiNw9+dcUW3e@Cyay=+=7}-H8Qj3ABP=l%3FQ< z0XmHL_{Npdcy@5cUGVFpG;w@w#D<0M-@kuxadG$d?N{!;e0+SQr0(9J^;SdY!!4@< zBrMWMN)iL=#op)#pu|8Fjx-}i(}|=K=H&&Elu)qejFzJo(kMM=!+jD)_pxk1DceIn z$?3hMc;er~f_4xcTtE~#)gHFWl5>0@uOTuP>NvoJJ8U*@uU$WSaJoA?J$>0;VFwvz z?P9sS_TbZdo82CC9N>qYd_CAEGS!rh^!W<~%@Yieu|z_XfX zH;;;HMBMW*^nFo$=Bf(E;JwvCb|84kh9Oh63<8=a9nZVdB&LIT!55VPr&E&B;^4(sJ-@rwFc(#!V5ZaYaiM3GqUG z$PL6SK_iMuA$)yIr6k*LqasR%wG|bCiHZOL6sb{61eO$wN)jDkU&@2WPaZ!R`kskN zy^(IYy5^iNHXAiGoJ{wT5M%`xmFPB%UIwZgSoDnnxsw?p3CEtNB8VU;m>H2X>jb9x z(QNth-IuT3c=GWF+s98kFjHv~Rkpn9|2f>9krk&~nKkHG;nA6c%a9Za2LNVng*@Bf z+O%oDT)N}p{35mO_3PJ#gxm~1U(9#=ea@LB_50!E0 zVaV>tL)M(tG-OycI%#>1k+6e`phBL8C`YoIwK@#YY?8B~iK73)9%Tv<*u+cfM3DJF z`5_Ayj%7BItU2ca6gA>W)$*VYfFx?2sAn@*77`ZWwr%&&-M%N#vYQD3?p@mr?q-@J zqQWwHas=;>Y}e8=DVw@SR5p>r*`J53o_kbiPNZ(@^~TI+UDu?-r^e`|Dc&2Pa+E_IV@yW% zd0WAB;9rPbef;*wc}mgrxFD`!T4cn;Mo#Kfx_3=~#OoOQrJn|&26?#AxHp%9E;NJc zXazdtDoW8$j}UZ=NQ)eXqF^m4&>X-NW+NE`0Io%2!WCY;Le*a%E+Du|ako1p`W94= zr!xR?7`r$bdvY>kV;6@o#97P}xp67DR`P4A@Qy?O%z&5stDiZ{&LzpMwCFPDd66Rs zc*d9ZqGQ}TsA5Reb@_E2UmLMWBEyiMJbAocpP!$ff9E^jxq0hGzu&__iDlgB&7yW* zIBvX#R#yC0K!w8$Zii7*FhEt5j&xivd4qLE`n3_S!yc4;$oIiMavANhpqX$z>?QD5; z%|LxWcd z;d>us^~7VRxp7P{<(na(%=pkS2|6GKNi?XZNNhvT%t-m|0Z= z4G<9tce9Qh7x_%H5)px&OwIazHaC{iXO)RNNln)zW??cj)g1CM9mDPy++Jlqe!h zmQ|1+1H*|$9OSNWB+$`pHfv>baWVATbtw-$CtfU%QZw83y}ETQOfZ5+%LG)1YEc-I zsPRH>ym;|_%B}s5}A~RD8Ivo2Tkp(fs6tIE_O(QVRrm6!|TPr}Td+Dh|(Z_t)@7<{( zNl9Fo#L3sYEzDQ5xx1%E8k3=q1iUaTyGFjUSFdQS4GV5k%}e&BR0JJBCWuIw&9(1$ z1SgucspGm}Ks0)3s1!+~LsUckIa3f(ts#84y83rwr6^GTfB{SR)#oLdUmECV2oD|p zy{aK!gzpQy9P@lGy&j~sbTb6i96Fv*F*X_Q6Z!=b6tv^I&{R&v`a^`HQ?o zzt!=z5gX0cw5^-%_xb+)`&sq(|IY6p9WVR+E_9IBB}!$H!Yv#fUf!>EMhA@C8Jbls zy9G|GDKVu%LC^{dWZ=a?Slx+0>1%5qz2?AVVV%FK(_XX`%BysEP)^_nQHW(;irhpE zpfFy-0kDflr#dHMXLnDGqs6Qd?)UpZ6*=cwL(Ai(F|T*KVqH)|c=vs*8^Sf zf&{8V(cmx_DwUKEV&sLa5HZ!@c98D#cD>&fa2IitvCv&$hmO_xs}XT zj~sSe&YDHn=6=XSo-JB~fpxx`H?wZDI~)4UT{Gf5fT&t}!jD^Hz%ZIXi;4*JDVL9<#&>$pio zQAv=ZI+=rpVaS8V9TwSE&Cys7FbfwcBr!*WA(kER?xV*(DEj>?FW)_0EY_R7C+QXQ zh5=92&uDQ5wwZI%ca>_Tx~3L07%c$q32RG9LA@TnepeZ zfYcaDs>yx_tXh@P<)3`PQRRU!rW=(Q!WtSMb8bXV3e*z%RP?a>RHml)8t(Uzq!kY! zCem4q1#ynz#P)h(=Mwit7EZGeL1tDrj%K39Owr^cek%Y}q2Qy$*6|MED{8ukqMO4U z;-HeVhtm78Sckyk0;C8M78mE_a5e{N)@V3C-I99FGGpTQsVXR zge5&oat|N!={hbW{(LR*TOVH=v3c#4S6{kwYroq)`0UZ6M-T7ayWgbd$G`vM)V6sT zh=Nm;h%JW`vAa5)r{24%dyJT=hQ2u1G$KRF4qBXKe9&GIVG$7*Uh`-W2IhzxuO*FY zn8;x!rW&UN*B@-vWgXLDiB3czK3J_~US-weMW;yc;A#gJS}o@d^ZN9B*bUtx8LJDH z%Z`{g+r61l!(_|_9uc#R~G(C4&1XidZa~!+aRAXx+5*Lf|IaG7C+a~onJENU9EJXdV z-)|p3dU*HlowjZJerUSp==kXTrMPEnA6nG##+y2Vt( zRRYtKRgnuCPb5uB@V*~B_ac%cX>#57U~+;flzi574U@Wu(b?b*Pe{WsoL!tRSI3f4 zB2icOLPZgE!OSBFCg7A+7tLrLwdv4*iQ~rg>+^5_PHN=w!zZ78_Sw^u)1UtIr?YN$ z^VUtxLoARhDgtf}d%lVQf?!a%{XBeZKr><+ZCwV^%#EZyCG@>e; z5tbT7Rl+MTA6CU9YDk+>$8h) z)~=3@a%AnWlQS{L9Q%lSQK0JK6(VA0W<&Ju1<1l<+s!%=vFw}8I&5c6lbFfflQfIf zVtKS|nufTB3=l_Pn0XWpZ`;P1#bIXgs++0;kmTmBYB__QoSE2!lXEN5Hcd->+%>P? zym|lh15h(KC)K8*NYoNxV>8o8-vmJcL9tp_Wa#8>a88m4y6=bFi@S(4sm;0%@U8}T zZ&GSg=fR3nwx|utjrRS;=E8t(HfKl!c2ja#Sdd~O6A>|+v+yB}ss(^IDt32e0?={UX5_GXtEv^ixnkYuEOhjW_L9WkYwhEgo@UEtCtH`-J za7vc>VS$e#bC9INLVqqLzyY97Ub$kQzD#bWfY8SwDwg3AyUDxqM6m@GiexFATVZjK>PehmY332kr1h0D6?1Fy{e4&;>U#Fh@C8GGTIq zi@U*UiQ^Hf)AaZ1y_5=~1n>k(lh;ZVlVOaQ7An3YQgSe}T5Y`&*5|M`qsUNgSW_Kh zqhE1+jH&w&#mrQ!u3pwuWHu6kJfbix5qWLNreK4cv56;#3Cv;c3X@1ztZa;}<{ca+ z{_@z55_cH#XXW$CwAU%5snlNi+;rT5y40SPwGlsGS)pIc@wE|~-~HZqmq#m8y>t8a zyYJ2J-MjbUhaWB%iy!{*MVjK5F5Gai2fflN@giyG* z)lD-(JCxuqN=Auk-ZqW!`RVz7H+0KZ;l@5cT6T-&cDLE?`gt=8kBb(31b$vtcaSU1K5w7)OgOI;bQyv!%ugsIlJr7Hw-e*bs|Po;1m8b zk?=9twoXMga63wrOGKD>@i`GCZkn{~duEc3gqucfx7j{<{P^~rJ8j$UhJDvHbbNGr za&BtOVp-2m&#z09Qpz?&j6nt2pjyz%3a27?Nto7Zoi+0&ksDdg!sJ4^?@b3HGBskf zDS^>6GM~@qvo19$+F};lwGa`*s#C7SZ5sd~K?=Vkt6KKJRd5iqfF1V#=k3p8HQBQB zKZ6u=}Cq7sC)>!$8|GV8ezD z7={|Qp_f+Mu>4@DA7q$rtKDp}yKPG(i)4|kDpnO)cdT1?%Dgw{Jm()GV(+#5u=b9K z|D2O~GjC-v^5i-H5W^nU{`Q&|*b;#Q4fz=Ka8|!``NBsJ?yXWwfnrh)6)`y_Gr^Q7 z!cEZXAwq7E^I>L?TcB1W;Seh8`$!CCMoN9(g}M$b%mEY>s%Eo#)^E3M zyIpNov)Q7S(4&Wf%?nc!awk0qfd&Tz4B~Xoulp2&%?mHRU~LRRu3x=&c)0)WPkwUe z&Yd6p;QN2+Fa71kauH*H7DRxB2Q_Me2+Cd!2PRr6+XaPaWX$E(#=FCGdp$c(bW#v4K)2xTY6k~IY=0a{N45oGYFa<7+S1VbP1 zeRR7!-c*76%~r?)tW`@OaatMZ;z>|K2l3A{Ca_Y52p3e1sj5P+$<(-paHy^6x7)jS zZU?zCo6ozx4?zwN_aEp{x9vOz@A$z{6`FcpCF>nHk=+=@Qv`cUa)6BwS9anez-=C2 z;TV+x7D;`KeG51vuT>BtlEAZBGoR0zx^nMHkf&Y5P}3%-Hq5@0iAh)}2edOqwM1rY zrpAH6p8rzGVB~ow076Cf(v^#Ee|+OsyCqrlNkdg52q77K9tn{suK}nhsmPZTV8l86 zI0#z^UE2Z%)I?lWRoC_A(RyaF?}ez6KwJ?Aum9XolR~pyuQ%I`0`q#t#6Tov5(aq; z8`v{GlM_7hzE>0mWz#+Ln5dzOU}&JGo?W_hG1OJ;W8ZZ#_5_$}&SO%RXAx;oj69iv zCCd>QWm%q(ZQQ22!#$b8O{L|6Y_S=%0w-AIU1{OehbMb^O17DDa=ZAFpFXgeMRN%@ z$;&dEUMR0wfC`38nouMp*Ymhm$WB;ncKS0F%udP#lYw%4WYB=J<8I)*u75rmx*e(J z$()x5>CT3C3`!Gm!GX3UxGw}Wwe=w1Bdc9=!rQTAil0einT(Y}j$G~IBK>GYY1HqT73 zY36m`wIX!>+`-qr`jy3U{^sj%z4P|l=MK-k^to4(#XM3x1+%iljH6gGjw%sB6D%5M ztDKNQH5nIuY4QGZRgedgfK$`qy%^%>$HT8+ zD%q&XbIvChJ=Aw@!>q1nP1SXquIrTcV325wdJ$%e)%~M&n=bCNC-euz+zWfMQc*H} zA?vM*(SmG{x2YspDW3CAE|i0+VP2AxjF?Q2;?dFlO6h^IJT+uf zFmxWrib|9`MZIWlY*vrewP>Q)M0vh!BBsJLn^jd+J=m_g zuC2&kxOnclyN7Roa#urW6LI2D3lca%I6%x@!rWU%lRz~0*RTCkp8q_!h z37S$aI>?$dZhC8~reY>Far-9))bnVFeYf4LWw9qAuv)UDkyI=tB__%>q1m7?B^Z(S z5=G8>3KXiFYO~qKm}ax;3!i^=xxf7LAO7g(%^PpM`Nmg&{^v>9OZuFI2mpKvBH*R2 z)Cd}_gsL!%)Kt|9uR}R)q7{2n-Zk8=!ypm?3%iXgZ_y~37QrX`@EIYZZ0x?7ctv_7 zazi2%9%apDAX3yU^LcIeH=Fg^oHt3fuw;LlBB2LLfK&)zPrch$ZEJc>nPL0|QN|0fwBj@U8QNY;iF`L1p z;wEv|_R$hoGQ%tYZP(trfA69M34&x4>ivWLHLthZt%#&P9UmW`s}FMuZDLd90uf_7 zT>K&`YI$&A5{9Oflmm-Yv1?Q8`fb~;x0+%zt9&umb-mb|H%(ntl{P%D8|8N_v%&6+-?ZQoLg7njXz&t1F!_K%Y^y@L8U zpH&KQG$t0QOp~XXW@4yovddIv7C2jvY6(0v$g?pS zF$s&L8M=0}-EKU$fTR%7TOv!8l9n+|?%(V(19=QrSr%tOL{lvv(pZXNMNr- zKusNjq?F7&8ww3Xw7cY}+|>Dr-Etav3GT=K_Vek6iqd98<~04J;+MEHq^^NUqlg2uQ(7@Bjvv)yF7y&gvOA;g)K~ z*{P%$+J|$CxdkpZm47hGg^@gWB@zH;N*U%ES;aQM+-R;T=AdFUpHNG2Kr2h9=t9Um z6x~x>WeLJEtBYi&fT|_4#H@qe#zRX9U@q&$>w7&~w(-3HPHQyoAVV{aif?ni@T{$F zkSV8u5>GPEgn_img`c{Rp73~Pf{n!pSW*zEX_{AFe&y)F(TDGU`1%{KA6`7ax4-QB zj*vH19+qkuldSf$;t-Bx6o|>a=Y@#~TI_!6o1+(k&MPK|&*#-^=Eiwu2Af(cT7Jv& zl${*Fyvt_BMQKM3lBXW!0~;PQBrdb^-q{FqS1=+-7Tp*SVqji{#jN@G=y-kf;38cJ z9MIW3REzn1ec!qml?hB{ij*BAe7TH*lNEZTyqb7~u)HLUmvyvP8rxm9WhWv{`SM zAM76-RG|VTFI}=)tu=b?FlR~GV9Z32tl%hXvrJ+J0_R*Mum~qpSG)9mTCdiclno*k z(34P*s%pY)HmmBu92Ck-;wfSY?rf2nA@&SeOll-qMXKsGCDoWcJDcamNLol!!9-0R znx^XRr7kKo9nPvRJ^#X;hpSuLb(k+(?Kx3U_P~EIxFSoV+-~l6l6gmu3t>_-vk-*2 z*=+lm6o_C7b=CHrJ0yWPA$6%`X+oa+{JWmbRW)_}w(DlIMNq`f%#taqDzkVMXf{&y zW#`H&hcI7%Pa)V?O36%5CP(BSTBx( zu%uj)LYdD=@oUSu2(mhD0HQ!$zqI3IG;q$EC}jgI7yS!he45Vf=^+BeBr-sRPa;6( zncd*Z999xHVpl?Yvl;Zx!v}XX#Sj8TRLaZwf+TGFJ{h=TO9oSn*;7j4J0h~O$M9!> z2oz^^R+0dProd)ONu!Y|g>|I@q5cixMMGS@u+i2qxbd%>loz*dkj`rW!bK zRfkZ=*gd#^@8I0IDuhJZ%o-LVp}y-GB9g1en1O^?1Rltl*@m-tVj^J z1Sl%u#jH`&ZJ!LNkY2lX{o{KN-nw;{mj}H?Nz_mvucySIiZ!{p7z$HOlG6hivSExE zsV^UhA%iFB6N++0Ccj-qOj=PtP}vqO7v9LW=2de0z+S$10p;)-i`G_f3v?j_)@sK;Qc zI+($QNQ84bRFnkq*(<#)%c8#Y&b-5*f zk~tI%qMR4Lf_sMN;@JcuViE(nuRBwzaW`P@qYg(c8ep?%naFbK$*jJ}Jec=|E3Qnq z_juwILLdkw+paglvbVn!VS_cZnTTxLR;p^goEI%0P%_>iM_Cm~ihQ#p7!j#iPJ2pb zn$o6QZ8mM+C-FSbMlcCYHCxW4%4w-V2vQM2f`CA(Y(yaCEU^*bk$uI{4g`>99k9cc zqb~u;u?c`#En#ml2hrBJR|^(jJb(Db7q35f^PN6*gt||$4h<2(<#j5V!BjCsEBamz zCCk|w1U`n`)U~x;O1+g(-e5!V336k&KO1oB+1fU0WSb+g&*%9Shk@7}+0aHdYmtfaw!xB_DHmUhoRKw1MkR>pr-caeU}Ps58^0%~%d#C3 zTwJ7J24)RL^I2d@4<9^8eIF`GNlEzNU|;HHwQXZcbxk=G4ncj_&kzB)2O(uU_0vOy z^WGSWhQdhIH+0V=PDzyv!dU_wHM);FCMZ#~F)%8oBNV@4r!B`hp->CKG$l|9fqft7 zyKZ%Kd~mq$p+2Fi4i5G=+pU@{_m>{vKG2&HQI5A9LOu#gxciiABHaBmX%|zw>AJSh z%LF9GBw@Ckg{E@TH3-5&OrA#?W~`%P*v!?wMfT0%UgQh*1VpfBC?k+sQf1Koa#02D zjXI?n#q&+`wO3#Mf!Bji@yvX;lZMs(t`v)+B`koi4NAa4d}*UGvkruY|^Gfp8?!|mHD#af&R$RTr(PLc1>i1STm7oip9nQF<@{F zy@wx~sUVoCz+GyTO@%$>fLV_3vjig(_T@p@f#y?3I}bv!Vh+ss)Mzt01)MRhex2>g zu~Wf&;#JWvGLT7#2f@bit+NLOAoF+`0)J?Kfd|#?N4rBzH(`sdY1Yj%TGGSKSqbnu zC{z|>{*7@uXl#)0y+c1IXhuLTnB!_VWG;5V8TYm(RuH6+MkQfyF|!mO+`E^0MTOo{ zsKabI@4>5Wud3`hi>Pc>mJL&d+N^k&mvAW+ee(W*0NOYxc{}R3}ts zMFGy+mSxd;!noOhiNkme%;qq!$XWs-A`+GCnd9mJ20?^CDJFvn5osdkn5=6zn~JJt z=6*W$yx}SUF6gS7!YCy*aZO9E(^?udh^gAH2*sHs7t^Ag3I!fBY_K8)iu=hcF`1?WbLXB)!sQEx)dx549j~_W z{61rW?#nMc|6sj+iu7nm3KhpWbMxs+hFz+tqe8o6W$aQEf;rXG$!Vg$H=W2oR;DF-75k zGprhqhKNkBOdnQcnS1G_(`euWY{_&gOa9Os(y@*vHf-03u9mCfv;Hx~ilO zIh&-HJF0|5U{>5rvRd2#QiCx#S#n2wWP6?PX@~$5t42?}Pk`CQ^9TETi=)lvsBM>v zn)~$&=MKK{h0lNcM{ji7R;5{W?R-`V1$YKVGV&lmkeVffFk|YLn9auU+$7B`P_J!@ zNh3=LR%wg`^W9dHw$?9Z4HaX60a6L4%G$Kvu8n6#l+DpjFq()1O7d?bV`gGfvzVfr zw;u%vRCvcCaB``+NuE`WHR}x|h$c15`Kf#-V1ZdS!;TBG$Tfuuvt7UBJ}I2ua1@j& z8=Ol@J5tSbX-_vBU)N8HfG6adM;mQ+PArnkVBK^nhsO69{5K}8MA_4eC`WD$-&KfC zns&0O)BX>goeCN7p(+w;;cF+oI(1CMno0A|Jaz|*CLa}e009n2y3_UiB-?pU%orq@ zydf5S)PSJn78xvef^2e|T`clM+stfP+CI_RQJA6f#DQwE-rZZdBiLjg=_1kir)nSr zn`cQdW`nSanJ^1mDApS_QlrWUMq0KRQ5Z}Ia5_tV7%6U0{Gd!D4d^~xK0WDakEuwM ziN(gE0W>}7r$0_Pk$={sI2IJbFbko&dhP0Bx$OJ+lXu?jx?VV#nkHWtWmnt1%MjTC zwHRZ!-Dr%=;%ax_Hj;aF8hqx}G^Ui2S2$E73&Ik_WY}d1Zg|cuEgNn&0TfI*F&I?% z80Ys-ul~$Al-?9I%7`&UCT{)!kr6}5n6X?enCa+fr6~~;NQ2OFv1gEN*Q+rgLTrqZ za;q>6R#cmgc07S68{6y8E>Xm_unQ74Eu@Ezai8%;~kO+DF zzBngE6bhH`nVFeL3f>kKlD|(dcb8(aOXv0%wcNRX=fQeQRf81I*YXRmzWma;Lu}V( zX&t*w>dos+nj0)rHYFG|Kz?6}y)KAF15oO9Y7 zz`=|yYTUFNvt(4V8)d}vbOW9x&3uGoO2#mG%qDimQ3xmtyMFP-OP3DMABMVq|0nN1 zd~lRKSRMlrgP0GGqtv!-W7`q22*He0$vmFYlGhmpl4(+}R^kqHCPET~gmlaRUzE9} z>y%9%pBW;MZMK#P!zK`sw^C2n=QY&{x~G3R2cKwtg7alHug~g zAuuy14DoPzn?#|&0uiIA@hK3Yh5;NYk8p+v%FLn-H^^%7Jg=@md{UGsiF=1}U=Ry) zaBU8oLj(qh5GPb(2nUhS_Wicq0v3e9Btb&pq?)U&r2vSv5 z2*RWyDxPyuXuh|YFXmF`01%N7s=5l5htGS;IA+ceA>sxH@~Ult9Mb@z0V3!mL}U+J zCMHfP9_}qJ?k$d14{zUpXi|fyN&T0fzy7rspX2SC5L@k6U8|l)Mh!4^k5%7`JX?ES zVlvEuqlChU5t@nv6O2r&z(QGtMP$SjHTEe|j^s3uk`Mxk?LC?)ToMrKGR`?9In6ftxB1+*9;bb`cFaCam9cS`l z`W6F?pUD7Dl>1M37^d)X);&+ZE;@*b>_Ox62g5xT-rnJ7x~?-GcM)-BSvn@V`JzmMuCBL=w$pXiz#K9O)fxI9%b{m zkK&Y1!64O)ALW08j52*RdqPDPV&U>5GI`CzF?s1nxjO$YZ>4&*=ev@OFZ?xC z%oTIR6d1xB*!^>T0ToehcNR~*o2*4D13mq?4Azc7JbrifEPmQiEI~Ayl}?b!XFi^p z#m2|LOmj>#vuZj#*uQY`!g{m4edo@{AKiTM<(JgW%f1B<>$7-ex>;OZ|IM`Bu2)CL zRgl@NHZ!%9FD>5v&iEuVOJ1wWn5nLsrfEpnveV5eoN@&`ir+()$A^-7r7bW>0m(db zQ%yjzq38Fx=xfeW zrkpOB+@F-oUQ1-5=DEzPin_qDvy@F5R8>fp_+7mv3%~*g*V>);N2S^pWEMC)N|Wxt}Pbd{PJtv_y7Fn zdW&kgI_}Y6UIh><0F8u1#v%6_Q>rTp`ur~@2=lz2bzO`}iK(ik>!LA;$=&=n+YL1f zH$(_b*sP{Lks9@CLPiXOaW)!?sine!=1fy5L6d}>XXeSkA+H+BR+I>L8Bb|3pIy3i z>EXlG!w2_2c<=o${oI#@De0pj!iXQVDm-I!ZGzZnZK!~K_39~I;XkR zDFvyTrU^kxzFeQTNnaiZ5mXk<(?JB_C8Y~Q_)~05-t8ry49Y_Dc|D)ickirMM=P=% zs8Ll-sOmPwP8ASwGjJ|z?WwXbQGMjYDR%#!}6IB;f}EbL}ZxD`pSX`DA5j9 ztZk=IVv?eE_zaZG5HeEESOEgaOw7Yp%vfPYVo+mH?D{Ao4HGEANG1>gz(aQYVM&?5 zfgPJXi>Zx%1x5kFT6RcV&Msu2)OuufO)nX1jgk#%;_F zw_8Qr?9FQS)O7$-WMV0`N*pC7gFd2!duz|@y6;mT6{I0>>eZ5xFbH63`;LjL5I|Xd zftvb6DRT4(WhRBWJ1=v9A^`(2k-?H$iq4Il@}D0TN2VGo8u7wDa^@fnRH|RQGbur# zre)W2j#_i_w}F%f75JdIgj;O<3)+1#OiWojJLFn+cPi?Ef$<-I+b%T^pPV?##O#g& zP2gg*vW=SZ!L~6d%rpCKJ9>c~?eOj=+Wwd~r59!Kn5)>_ZezuzH1i54 zu=Fg>H?R9s4oWA6$PuXc!notYcw4{H*P~8eOyssae#I4SD(Yl*Xk_YlTbRv>gRZ9x z8T;OV?20-oL3d%@&-TVrA)HfA<4$`%_lWmf;h zSQJ94oYY7SOvXeW0dSJ^?8M)pzp#N6Df^?sy$*|S;8|9iCuIYM-NXRNTG~QRr*CGb zu6*L-nOSVyl;)cNmFQ%aaQVumrm4;F!G|Aiw;K_GX^t`kTp|EqIa0z8aw|VTDJ3Q} zRS+iAr0V5Dygry}N}94cK~vI{SR~XHWzFY=v!J3V1K=L-gLCghgElrGcWU4uGj5O9 zjc4ZdkztOCsk=ZnXEzhdb$AquX0|t-k~S5NMU4LgsYk{x?6=)o{W%!%%WMjFiA zQD&z+;(vr@Mp0L|iGfI%1QN_WHTu3+cL4{1j4RLGJvx@q&VYNJ2)AiKP1Oj*zTYx) zT~&+aa{u69|L|b{aIcwF5=bg=!=YxW09Iod8wH?ZM+Fc=a;zbf7zAMQ>`fUMq2}@M zS~$Ec)4+%Cids9rF0=r%8&KljzwURl;e7MXavZnte0 z)e?$FzN+hV1~lCzy&|!yQL+j$uVxjAr6kOCsFJFgm-geBblbNOV#$T=Bve5vN=)Xp zZeeD`EW%`YlpTsaFPf6OYza^*>pbCM#h#WS!bcAmE?!tJ=S?%a@$ttGA3Pvt(BmMY zK&~4kIH{VYCWIhfUNxzzs=7hPR0~9ysio8tp{gs9VA-oBqxUI@7#O1y5Hap@-mJ$$ zggpWxP#}WXj9r=N0w}Q=0*8a;(lp+`e?KKZa}B3T_jUkc9xh8y86b z3=qL&YMz8@xXCGqC>IW5trJIapPZruY}yX&ev(nbXVhgwCT2H-_&rBerNE^YVF)=y zFpy%3DOrhxqTn@qJwTJj#=AWtLqy?-{iW+R3?!&RHDAp44h{|u4)zZB=gYYSk^rem zYL<#f3=9=OKouhth+u*kJUdx|2p=jR;weN}W@s`*c-A9=Bm%*7vwi9M)obU^-8(vd z0Iw(Z&kV-Y74kx+%2OvpH^7*ri1*a$ftJO+rc>}AOSKL#SE%gVgC z2$cX*E5u487v+TIg*%W=*lUUb$615&$J2XiHankXu^9>W#9A5G%ybwZ#a&I9(nlV< zt6>;}$!qMqrs3)1V3aEeEd*^KhH5%E*uQ$^ z(kCB(a{S=v=0`VQdikZ{g0kyiNGdi_MrTk!S+0S>H2bb0nI);J zde(#xAZ$!0275X&S&x&MwiD9bnIk%3XtDw{Gbvd?X2oMXf9N-H13Q@}khvaIp>-3M zi`o45awV=UVSpFf;kA1rmSaW z#KiEqNi z`-l6>7cLy8`}ZnzuU&us-lqGrAO9o;?m4WxSQBb6gy6Y!2{|3$Kmj{@N7mI+aXGK6 z$~tr@v2bOfPmx6wL?V6ayBL~khOEnxTF~1%V~tue6D~$IuY8j7iUz?n*NRK3YLD_X zIs2eNG(o;$jQwoZT)lERcHRAZ4?g_h!~OmJLAN#f;RB z9vr1)o+YlC)$_gOCo!!z8&i+uuxwH^R~=f}%s&%EnB`3A>ZXrrYX^t`3?$yOiABm0 zwcPCqP{M|WWE>_lCNdTz)uHO1kuZA#MHs+HIzWUfy0)vDS|liusxonq;5GyE^hlJe z_n_#PlY87{UZwzD&O8{X5>$XDOA1p@xz8n^wLyu4WOGs}dZ8vn5Z6$ZW}90p6el3U ztB@i?gn7zACNNvyr5QUArg1|C<>D53$%G(kRU0F*RUveJZ%`v92}xrYTahJE z_6VrB2}owiAwmHo6<0yIbdw00^{-}RU}jR&r0J~1GOjppU^cMj3Gt+AHYL~5hKNBj zWtg$5=W9UO*$r08734y)qZFe`$>23qMN!*t!BJsc&f zklZw3;{~ItAuCKL?HRg$@^)6Zvb++8bx#2BaJ~8P_Pv|;9^5-#A8ocVrI;Rz=O@Nt z+UygbpDnGG_fI}@Hu*IXeFlvw3N;MxCPQ_qiB$fM>^aeiLELSf0f9LP@6TuF7V~T8 z51zkxZht;6fn3F=G2UbNSDrLb&_FPQMGZ7`YyzZg=4=O%GC{rQ0svk_U&W~#@V)hemEz}nPdF`us<#I}p>m|>nQlM5E)CuH*4 zCDO;Cr47-;14Y?DzQg~#Z4jyF=|LHpalAk@uxpq?!Gs8kv$vnSIJ0O zzwN(;m^^BnL-y40%s0lClmh1r5eftd5lpn?W*^v-+(RnJVnrY8?I9`?t`K90k1-Ls z{Apk?F$tTe%^!y)N0wv{xAGVp^em#9Lr}8z3CSIF$SK02A|+PU7|^`({Bs}QzIF4H zyFYy6o%z?kc=h0L`(V{b`nl&{Tpw+IeD99b%igfnXwhnus+yIs?hzXc<3G-N2^Dwy zwlPs%RTdF7g(?`3O8HABYP(J#br3RR5{O9^QWxRcP)k&W!r4Mm6!n9&NTQ0A^pPI) zXC5PiYXckM4rzx62lw~xcU`=D=kCLYM|=B=*!MY;u0w>|B1&Z#O$bC{lw!X+K2BZl z_NSz3grtew4-v|Slu}9&W-JtDb=}k)NXd3a6DRh>B9i2`;#oihkhj7zm;RTFA1h1= zuA~cu#jFm(oAq(ubuyEbqDa`A%|Nu?cFDlZri!HIr7SYP3NEGDej11vKw=6J$oyZ? zJ7LH)o%yfRC}E$15-uV^Ju)1`LS)6g&sQIr(P-sU3!Vob2J*5aNx|j?JvnUETu+K z)iY)>wMoRqL~x{m`0^mA!n2#yp)#UA_AFeXiZN-POX_1}YUfqWfIvvNszOXfp_sG^ zl5>gVY&>J?Ml%qxfm4hYKZQ$~5Ex}evEMa&m*??R%~O;U@=&g>YRr=oHwK^xGG2UW zG~N_LmgYSP#dw#u4=Ny&Xvx0eaa0dO&=dmHc~T<(e0!BM@0ub z;_Yy;jW&xB=gw#Woq8KpW72JRbnC&fn@y1IrXUkLy>A| zdhg755{BkdMmkJpbgTe0xpYz#r^MipD5>XFVH2aEl!%lml`>?U1Nks|B=2lkJ3V%S z8%8>Nw%Rb@7&2Krm27k3n2K~+3z(+6?=ui>o|#}%$ciBuIEkq1`{Scy5k7bRTp#at zefQx0gJ#zBeJ4c3Swk)%h)4)55)4_1noPU4g(Ze+9~G7?rR-HhM6jgRyUU7#5UNmB zfq<-5XWk`kDqPC=5o{7oZ-eOlsQEG*X%rLx*Sys7jl8nB-%EYd%xti`V4E5TJJ??c z>CuDxsq3X?O;(3$@8Iy>N3>~sFRN7aj2N}OV+RJz7-@9U(#aS3se1 z%cUlR?{$sE*f2n2I}svxWM zDXAVG9Yb+&c(C1e$E)Lq4<0a6jJ;#GF)@)tgb0TaoC*yvSl70x?}VX!=bnf~?Pwqt zO&V2Wh6s^RHCG@D1to{|0ih=`mw^fkDc)r&>FI)1QO ztq4Aw+ z)u#*OE0UQEl{rLcPM$$v7Y9TDfhoE36_`|2qf!;}7^;~iumoZA_*63z02BKnjl5*p zxG7r++z<>ZT90fVutqbBXF@~<7fs2uuPAA6os!X4 zKKIhm@%p1r?tSmi->gJlx_rrwjuw6Qg{znEKD_hBojal0>!P+GBxoN~pqhl4E#)i@ zL=#M#aJG5E7~auZ#29^y%#gqulLKaosk3b@p7q57Q`0n^m-vMHjiJOr!8k*N2a_^L zM51abg!ZJzgz?NS#ycc3(x~PqnW}-6l|i1J$|ojg!*xi=E~&Yyju~{Qf0pk_g^3#( zUMjvg7(Sk~@uxo?BijrN#mL9|;wnfqEYg!w!%icu@X%%W0MPrl@BIFsy>)-J{;7Im z3F*kRHSNhFK*oW%A(?~cd2=m~Jl)EHul;N-$ml{t*7__Ypa?o;5_jdN^2jM3oi;U{ z@i@O%mU)eUPwpRmeE;=7e(NWHGFl4PgKZfY8IO82YzCa9cWiXD8fvB|VG<+H`tBARAyOhYbUPsr_Ilg-ZKs+@W2lY4*p+Q^7V^(1+l(}k zWg3HrQQIic?09m2w&NM5d&UU{xJ&*0`wzNp$3*S6S4~abbX`|9wJD4ZMyjeQ^)bRA zft#kOtJ<m102Vfc zxJ@S1iq@elxCwJJl_b3ZHrbX>uTL70X~I=-mI;&s@!o7k(9LG8F;!IswYsjCd;7_- zX}bgn*eIG1S&p{#f+B@$8Rniw>Zfu1$F`I{4jM_Dh+!yxB4t}HkWRU0WB&>WCDd zLY`AP7`d9!ILrlA7y_6&mjWa5Ix(zdfOsA_FC0$h#UUs&pIqbHbm8)69Kp6h!ijEYe_`scR;oJGPy?fu&;`Vl2*jWm z6IULhOH5?Kqz=ZJs;%&*Pksz7D^`3-(4(W{)zM0rx0|+)eUQ-ieNxR1RzjLoVKI4n zIjZVvRyPn%X2KL>T&<2tY&NSbMoXzTuQ33qYM-p{2?l|Ls+l)+6<9K->|||Ix-UG0 z>a&6fDtpJt(U`FH1KY`Y=_!bKUe~iA$D2*xwQT!PNC=C)rBwBL+x00mA_P+*5ReM5 z^D}@5KV{(QhbyL%35|RE&i&6qiL&@y1Sp=?UiK=B)JWM@3XqBsfpcvgMlxd$VILsE zS2SgaaC3pFYLQ2>Gwh@q<^T}|CCKZg6hbH{LC(xj9vRA}gQ4c?$Qa}_odqTa))FAK zl+J<(GbA%jrb>no5sicui0%G-_SG-Gx@rIX&coFo{n_jBEB4Bjt7&z#Wc$(!FMfP< zblhzZs^+*)5o}3Sdx!-IImk*itEbB7m&qNd)7do`tO`QVzE4I7VljCgNRBDBUB|V! z?L06yfqU%?B#e}j2z%7f;CVJkr$lC&?35GdrynPHrMzXUja;B*;&Cxl%}P@3ydh^r zQxR#B%Q^1cXwXEKvh}8rIprD4h8a+yqmfe{wlw{0t( z9iq98aDXAtw>?(2!5L%mr2OnuwxL0`8CjH*_bmP!1KgkJ;A2K*G6`9{dAQ#G=AZoF zOV3~Zm7n`URmsUmWPzysAK1XDk?F*wQ%>D$R(QUNA!ld?vh9$BC=r-Qm{bvpp+=N6 zf1AY{&d$X}$8pMA@6>ox(M!|7+E1)EnEIpvJ3`r$9F&Xjx&7J$1uz{BdtwrJ)bR{s zY>+2b!4lfOyLIb!yJ<;j+is7JkA;PdTvx|3=-9LSILNe5o4ClE&CsR3-yr;HH_+tEPgGi502BKy03Xk~uRnqiBP|$Yf=k`#Izh z&g)Ri%$EKY1*}K^I_8zVZ9<~#b&Yip7%1zP;8o+8F`qS6kk#tA?fZIJBbl)5?=PjQ zkJnqzzo|KGf2mUFY*pEqj3!LOs7cLRI|i|0D%;uEp+c~xgrYXYAkOThX3yRQWzcB2 zU2e#f1_u^#$<{BDVbV31(+*%p| zB{N{zf=|WHn~k{n^E`87QTUPfLy>w$qRt~Yx`F1N8&Zr(lMf-GC>hmMNkM9)8V#fh zOG*jK(AXQ{#cP*W?fR{seDwY&x1;GdzVOA1^EtZi3IqYEO&F{3MYaKG-u@{W6S%6062)X59&W12MCiILvjh=>39OQ;OWsmNw8}HH z8L=0V%4{bmO)>Q@SUx@ej1Zxw_wL?5Iyyo^?Bj!@BQs;L`}8prs1imU+$@D?E4g$6G@M#z4nnziIqWh)70}B1y(k&=0)s$UN-U$mK4yl zga|qlBC>KHnd_z;YUk=aVn!XpY}VX;usvR_FMHe(%+aH#6}&XM^Xp~w2b?H$l2eW;h_sf#;J!~FNvxhVnn8Wv3QJuz z1Q4|15LkLmYNox0APC}IiiazjDG?hZcD-uap^&FPoSVva7t0JX9NXBu;zyx7%K&c9 zS*WU-r+C+7`A11}$=)K<4bzOmG@>k~(PA?ZZGI|w=5+UVMYyRG8g`91H0=8*tnyBn z&7%goSSB}Z|J#4`-MdFeyX$gtu^(s7Rr!|fn7fY}`grfk;`&Qp`06)5|HZF;uAa>j zxI4OW>)k(m=Z*WX|M0ML*Qu+EU`$~?o6lzriFmz9PoQHN z{|28&49Gt4x|r_h8Ii<`?p02WiPRPaF;Ty=+9H*w_488MZJ)23pKJM3B zKHOL9RpZ{le%;Jgt8MIi)L#CXyo@*iBWJ_`rGfbv=%fVTJ_34+Au&5$+&t z8f+1H1DWbS#v#}xP8%M92{`XEdqq#+Yk^sa%~WGza!+cM2YS6lGAM{N8F_(Inmn*P zFH5fzC5*G)qx|Aw<3y8bn#fxd6tW>?$1tdO0iu!*gLC?#qGUF}%u>?9H#93a*eofl zB58seB7mqc<7Ckim^7KiScmY%7oJaTdgJ|%Zrr)6@r|#&`r4IqdxvH(U$}JZ&fRTF zvwGI{eY9l8WZcKpYOE`+Y7dVIrUpwR-tMrH@MYx;ZWV%vpeHCr>%po<+dd_<`-_#oasiHpfT%66#Q;E-I2KEKzLx6njq$VL(&Q7V}vU zNd%BFyeNi0qL`QqIcL0frPSJfU8CXSCyY03LTsK?=2^OGao{hP*U_zn;xw!|R)QwP# z=%_~rRv7ik(zYY!rmifRNT{VzYdej3NSR?|qLxgJC>UT#t+Qlg0y&%59(UN}51A!R zDJ#ZIv)VY**)S#JHQ6gzhssqsFCtV;6Ov{>G~Yaj#!+_l08#M^$hxwDeZVe<{IfYq zR|Y1Q3dWR_^E9wc6WNA#{I0U0#sS7ao3{PUKm3!U)%t8h4L#!Z&Y>ZG7~%()ugW+6 zwX47QSH5=r3;#9L75Wycpnywu{kf}O|10P3+}!^D|L5c1{VzYd^WaF9uOb}e8$4dN z`3%P>ACxi5-Xa*r4yWDGXt?+>&pvZR2AS&QnRky?zwxc_{+++_i+i)?B-@UR@=vx; zI;@hjKTe>QbB&M}qZ<0|34BVV4P2zrY^!16qzWl^8_og2XXSl< z%sfYh29Y|1JFC@Z+h%x%EtY#C&C%*k7n9bUx8#!LoWWK+WD4r%1`W=|C`!=5@cuAo{V#!8AMGnmnkzt-hB zltga6uNC+n84sK2p>v%YS@Dz4Ssi;IU%qg0 zfB)LSxrcXd5gUd2xLYgbL{3c9r4+lAq^dnRZkEF`;SGFQq1VE?69po!ssP@$)>}%% zVBWSZvo4w$F$*Y!DyGDwnzWCp4mB*X8iC0KioWf;)S7U{rKj1LER&CMpreQDo1c8L z*=%4Gqk>F=^nJg-zrVM)%reX=h#;6-#@xf$EZw^GN#AZSTsuE+B=uXUS=87o_dR6~ zd|K=+_RjB16_k(#9Y`T|gO&O`h5E{1{?rhGq3m-esmaYVTLujL@nGC10G_V6303O5 z{sM6U2cX>Ac8=WFLLQFXT#rtg-Hjd5HWDXL>^4;y9XDW6k&oAZuigva1*h% zU_ludFQS#3tB5J47|qiNP9VZbCt1>DDH%XYk~4min35%BQ$s{=FJ8LXCHu2?-f6q- zkKX-BzwKXp>H1z(KY#Jk%?I~eZI{g=u4B?8>CQjt&yK~fUdq}uhdt{NtgDjNaJMltHP+ZdBE6;1Qg zA4FuVmST*SJ=_K^eq^AE61_MWcuD{lX4D-3lcsF3K}t|1OXej_0px;n1C7ui*JN>F zu-J@G{b`u-C%M5X*=E907r7dxWhb4_%DpLDDnT*D|Loh}eYjc^cJB5hP4R=Rt@z9AA zt^!UI%4oI68B;Lalm-X1yjSLmw-Y{UXuofa?D47-uQMeQp^er3BA9vV{$WWDyB@(zm@5&6-M@S9_O08qAP4ig^C@EDG41M z?C&j?RO)T8NsekMs6@rV)JnFpDRJe3YS{sVYy>YFme1({wtSsi`c3mfVhp@HoC~G0 zd2=a+O@5-8h9HaitZUoj*R{+VzdO5MB}?~he4_t*cqR8ko(D)x;1GW z+kw9{O{u7nb5(gVBlX-)@Y?FiDN^4ptMH{)UU>P1t3-D9=)n(u{LZ@{eay^PFPuMD zR}#Bf6&6(km{B5uu_-7YD^SZL};^G-@Ng$b=~=cJ=WB1+di6hYF)3cwS_Gf^K*xX zRS2HCnvL0V<^gb_6+kmY*Z>0003tAf2r3-e;BGy*^=E#HCvUSnI-fTLJbZZ6M3Q@uVrOz(hn?T)&|X5quUz zc+uvhZi2|%=)hNu5HZScG(<0w51*ri?;8`8Ff)TXmh7Mexk_{Bl?R1U*$e>HG+OIR zi$;jh2pEw=1d$mh7j4Y*S}19f6vgzVtCzp@+Dla}>+R;P8}I+wJMXo9yl}90^^z$_@Y2V$EZY(`+^{G+_L0B=K?Yqv>_! zg#mx?!ynx{KDMWCwm(E{Q}?g$E$;lB!7Xhd^`ZG^j@6DdIQ^B8azc|lPRyw>9C}jrj7$ZiilwBA+PUVZI-Y5a z4Y3DEF6N8He33jKk)fG2=gyr!Jlq$Nlp--_p${mG1P$9*B_TlCP50hU-rXEMc>c<{ zd5{$Q*lSEiDY2=sg}OdCcd*=FQV=8c{QQM&&_W7>UpWCb#DIk%?i54EF@3$nK2;t2HPPhrK)h^__XDo!U93b_qjC?5ket8$`R(FAamIQ z7bdrQ1eu`pgpC8Gq~0!uk$8P}ci!;5jEjJprzLMTroOIS6H3`=OJzQDqb-k#GO;Je zDV-~WmaT6)Q#h)~c3Z6k&p)M6Cx&mJWDZS+7<;cbgPf`dxumSR3BcF2d2D5h-Lk5_ z^2#ff(YqhqxVL`zqxaw2bp3LF|M1}8_|83&xVN{AtA5*c?DBN-8pKdV-$jzl=$UZ= ziLnd2J)rCXCA^%?xZAefiUlz0V!~!y*A)?ji4urNRZ~jhs&KHH*MDblP_X1`yid7b z61&Q@uIjz{Vzt?7GMI|U{=vb83+I}qc|1fAp{Z+9h{=tQZhUg%!*hG{bF+EsdrR6U zvy@m92wd@UfA8Sj0aul>7jyR2XXIIxT(Hf%B3beF7Tvc2L3kOtYi_ zvq|9Pd@e%AM-O5f=gX=~Er)9VVBbWJjyI~PL$KJJhtg9H9PmAY28eLb$?bVI5CKmK zm^*C6L1vfO9*+{<%11LV1?(Im%#tIKCu05-hydV4!w5zs6Nng}XIY9V5CQi=C$(e+ zz0X1k8d1W|fQVd2MxoIxO(DW%ATv-*eTr_YR$>xRO6JwMh^hFTm>Mz2Gzr<~u3rz} zH{O2ts9XQ!_RY5MuU)-*{=$V@tK-;i7mGbq=#K7_XJYZ1rOaxUV(JW)*U|(RyW}Gv zV%$-vX&PeQw5!AlqG-0-Y-h8^h#Vq3M|Mhyg_Yd97)G85EhsVPayCy15v5sVxzOUU z1T!~Qbo678lVwmf^9nY}QuKn|nv$htDIz6kf+lj`9vbH|um8zWIQ2ZKg^_!@emv?J zZ}T|jjq;+M{>tlOC%T5lvq!iZzIpHCkKg*}CZE3ZleLhnYtmZ>hpYd_uYdmQ-#o{R zzEuhWSiJjj+D6kPvspNQm6`=MHLwC9CDTp(+*dFB+P@VK{?i+O{Kos+E}?$OC7(0x zytez?Y5Oi+yZ+6;`l~N~{)_A5qyOjs_5ZX!Iy$>IgiBYSyL9ckfBfE?Z>)|Vo~5A~ zRG|6)m%s5#{?YpQ_`SE@c>Ksba-;wNZ{NK2&dpn|UcY>@54&w0x0K0o%3M=Ex9qZo z-ASjcj`4*~Vq~7*$4HF=!%NvDCNUOMG0HV=-upCDFOb&z1Brpb3k zF2NSL17#IhQ{U z1WjqZV1gDx&NDWU&2$x0`KVA4gVa#GQ3loul>HKRQ6#HK^YeL}cDEj6odq)tro^8cv2FVQ+6wiQ2AH%C+*WIR6hC#EI_F^9mI9X=n;2lsUE!hQh^V(^~1N ze{18Y414hjsm7J8*~@DLhsg;=zdey4cUpnWXn~Mf9tmWTRFPfo9LR?q&G#}j7B2Q& zgAP35NhqKGoy?J$c_gd59id3MG;DIiO{RvLowgH7ATnqWnWq;jG$!|ILC(ys2207H zk(teN90LZ91S1oeSUe>8+Dk9i!asWd!=vr$olkCD=sONGCXW4jHV@1BJjK+-Scj$# z(zabf3RQ?v5fLRxfN-8F9fE4J*Bz_`k|3wF@0ob7Y1s6*+Yk#0Z`w8{omEwK+XZVf z)yRQe1|vf>cikJjJ8e|OJ;9OL2u0L>v7Ej5@{5~w+qco6RTZjGgC7qOFj!O9A%q|y z_UZLEUhg(XS6{rksCjd=B8^_tMFLZx+1}#d{5c7dpne}32_mz>dAW`rzNLZ_CX3-` z4-x)#v9b7W70obfnpxAVk5}9EX0cx@fx*l9qN?iv4?*z0ZP&%5m59NNhh}-&yj_SO zj1tz+luv;O0Q?w;7_S`*;Eab2xfaht3BPIf_CCSUoCy&C3lTi?^QS=sirD4}Sc?Dm z^!6v7ILxR)$+%RbcoLL2aTJA1S#~`7;+5F|+$+jmA~jd=G&N}K9U`nigpx%vf>neN z)2o*+&Y8da&f7=Z&5eh5k2Nk9`*l6vZnu@yv$|T;vvu1ES2L+&OkLN7z=;@1mB9f) zm~&|{m?{I{>_=}PDq)69Y!(5U*MTuV+O8C!5V{!C+GcfKilB?CYKkTyOPD~)1{NuT zpu!$kp!1Bw)zG;Cd}^iI{!pf|M*954%bhCY`~qQZ?%2zllARCzkmNIsm^Az^Uptj?iaohE;c&Uo>hx6U3u;Bm;dtm z+}`@X_>+&;TjSZwkCAP#yXh|W_P_a8fAz2a^}qSj=f607`2JgO{?2dyi(zC2==}0G zzWLYw?yrCO8^1KY+mF8U$N!K2%YX2bH(#F)3Qg|+D}Uo}|MkE3>x;ep;ga?7(Qp0p z|LC{=`9C||wlj{i=JI#{?9G?2Ud#o2cM;-KS#>(YkBfFfYbK9%tYIP}VuCQ4kul6D z7#k-wQsHE#M#(4`B@hFwLvym8{Y3M!zN&~Or$n2nY*S(-Ej!^_NyNRQ37ZUnneq5p z*1FkrzkNo>vx~7If|E=8J_Wb*aFkV5-*Z zHYH<=MmaCqfI~yj))Z_rr&-tbdCmKioDtKW(&H90fCEh=9tgGG}Q zM(4>h)%lsfn?Ma!5Mt7yN^~~K6oPRGH;>1e+|z)fh%IXI!RvZ>nioIxa#uO6+OU`n zM0tk2^rL%Tm8TAOnC=74d3v>?G9d1^2MoIa*0W*k@@&=RWY+DJKY>f1=Dn_5(pb)~Ew%+yP^y7xMY zY3OP9c#kn)gS&Ojnx?87F^Vaslv0e3gb0`^m{8SqQ#T-lCj8``ci(>Ftz}am%B~ zSWL5K&gU-nw?FCH&BY4`mo8kref#5EcW;?Ss%9yI)e?Ce3~^u*QWPgIn-)qVH4`Q? zGmUjq?aAKJYSnigRgz-gb+(w#DhbI5^RP6@Uc=r+qY%m6Xi zpr*Nm7fr~ss62A98cV7v=AY=YO+<>M37R};0cDFpQSuEkOqOYOcfx07tl7ECnT(vB zdO76`Pv~#0&@M9B4k9=JgT3?7jpNN`P~l7g;*|d=?fiiOsPsl-w}185p8v*QzG!L) ztVjLv4{tqu`@!8!d*i6TyRo{Vm#=lpyQ{nZ<%i2(cy969YzSYnWYwaYU7G!CKS#aM zfBJhL7}Yd;p*-Oc@p%A%U-|2Q>%aNm{dcD#haZc*y-9;}7k=f}{?>o%zyCixeUmT$ z;xGM!FZ{#*!~gVublMKH*x&yL|LcD^6`9KY_y5kn^Y<@ZyZ%rA(ZBzwwvEp}>p0r9 zKYIV>S6_baQ!YRIj&yd2$|+JIOw2VzLgsc=pZ@80Yti$2%h>j-qvNjci8)k(1oOSw z{^1^k5&=vkAg~t<%SBJhk_X@eNcqDY4MPsX+caoY#Z4x}rJBs`S!vMd?`fmHVA#@1gU54n#!+=OFtc}g z7&t0+jEogVL~M{`P$mij0*M(}QdMtvRG1k%=>No@c7}iYZrg%n_vIptFH=K+in2uW88Gzrt4Q-zwP^|)>~3?e<8xa zoHIbs?Ds2>vx0!wvrt{-y@5W(b3 zos84-NQfXpV3{@5Vm@!`h6qhlt&Uf}{|A4t-8{H>uoT1b!{ct-DlAk%Dyn93aQ>jG ztEdX`n)PlZXOuV@n}{7{VddzxzbJ^XU5J2z2n>d@uL%oGi+KancDpV}hNcO1U9~Yq z14t%@C>nY)8SoS1zw`dHLj;vYJ;XMYRy+YpXbyOs9*>3y4CY264lIG0<&hBKW6oJ> zb=$J4KiwT`$H5v=Vp#5l(=ToE4!AjB7)9Rcs}1w(dJXfvCTB8G^E(oegPoUcDC{+Z z#EcVxLV%MzBdMw;Q$tcps$|R*glfXIy}fUI@e8k9zihExtyZheR!MqeO*RkV++vTS z9vwZLEvj$)!dHL(=f1qZSZp?{q*2W_UAJlbb=PnDzE9elCMYqL8k)tqasm;iR)=P9 zxvT?`^-QE1x3QNhhy=h=N=dUA?Mb4|93?<3Y%J28oa@IPr42sJOhjCkS0T@VM)E7m z6*=7l&E=V-8Z||W(V~ahM5w|oHpT2WQ2%I~*|p%D5R#v&BPWi}bn(torr`xmUO(~? z^u~K1oVcBxJeQ{Tm|RY5Yw14t{MQct^?&0sGa#Jqw-3Md(TCr^{oPyZ@7?aYIlcPj z>M#B4^{c-i^Di(K?eU+y*WFl?$nY=%s)HJgU;W16S6`jQ{vNEKwB{rv4#$~N&8dR` zeB~Rzbf#3}$6{~)AN+6r;iYT4Vg}*w|4;rGr=^XEbwozY@`U5`gvYZJY=&(*FBXr0 zv=Ai6G5J683T!08EK=8DHfx%?5+))vReksN-EaN=@87$7>+-q%WmBaXVQA_qRDqc1 zO|#seOT|`1N--uA@&H-@BV!6sNhSpIm~UWI9S*IAl^u*wcCgXWh%jh3tZaT0Y@N!Y zWg01;I&PZI(K-L)OoOQ|nrdFveY@@27BH|O&}=@hn)zzA>ADCJNcMiBa{IIRjj^eZ z`D|#?0BL96$cDaT{PZ#c!zP~3+Ew|uGy7Qew@ky?w=aBl9=x&|jB*^DYo7=c%{LL8 zL3K8#_{En!sd!8qgmlMr86@Q^gzl&vQ_{cfikrP9PUm9Jm%(q(+$zE+)=MCe$ zBYNM>%)rT9X7yarIlf=PU?WzTDKiI=N@zxyTYUcf!B@ZV>a~mK#8OJJPqu0M^=idQ z4;Ra(sqfsrb?eTpgTuYAeC11D|M{Okx4(?tCL#4gQP@QKgtqPaHmYjLcQ7&rmgBJ9 z<0Mgvi`jf{ZwdE9XWew0USm_&Oq|?pgGkL%irObvk7gEfbbouYW8~xuM6dv0CV4bO zR8^SGnv4-JVJ5{Ne*2H!dgsk^d-KD+xoJ|>stR>olSmb+y}e~U3s!bc28jt751WKj z0}MH>!-x`vWB-eQh{@-}hgr7D(sU)fH=kLI+x5y+i2*@9Yi5f@*QfPr>wB8>)!CZ+ z7XuMCE*q!zEcZV#N<8K`0THgT7$5>fBWpUs9cOND0zhP;cpe>Sf2aU_PA zn8~Hh0&1~qs_I~WKQJXk4cPYEZQoWQ1PN*iC=r<< zX-a*xoS(oG-Eas`p!+B+?#Z%ZoLQ$_x|YXAvX8r`K~se$%Rx0!HEHa%ix#7%-n56i zq7|uTti_H|nAwqJc9^=|Po4?u^;9>Z$?x$6jYw9cv-}nS@ZflL_u<3G^5Bp8O1b}N z|1kaPU%!5EP#MU!@#s6BeDve{-@DtscRyabEWh-P>Z@Ota|c9;3>KbC7UJrSdzN%+ zrmL1!8}-~$e&Gvy%X)2Tz5Ad6q<4<@-hOj!7`Vg*j z>Y0yj4glcJ(ea&!$HS?%JKJZ^eA%T5lu>F#SDQ|+pIqoRuM8>q11e@=4uVP$go1D- zT!~b|m2h388um;B%tFjA-i+j5e&=VM(c9Cq%>+H*FiRzdVL12HF@aeFJwr(Zz%xzv zY(*bd%Fh)H3RQ@GM6Lv&1Q4@G78Em-6XvtoX1)2=@BQAJum9QkS#@bSpNZ6rSraN@ zz?xaLceqE)F(neAF&;E;aKknWkmk6W{F&uU$yvoZx)}gKK~EGjS>Cpd3R5`HV__Po zDCTmsh4Xub<8gk^cS0p~|ANHXq;AY0)xf-**TpqIDyPJ3}fg5hR^%Z#zOXH#p`eg z^D)2%crH$f0Ff#Cu#(qsWzP^$rq;)BXSP8EXx7M%IYx_GF591m(U|--Exsa}qfwCk zM~yrn2WDz0$)-y$NjXSTj|p*KK_lfr6g@L@kz-)WYM@k1Uw#|*3P%i7EENS}Q`SlV z!?lBbec`#JdUq4oiPo_@-ge2l`C@PH@cfMf!2eP4%MrK_6H50?kbXLuftwqT#$px>}LZJWKS4*+_tTzNX#%3=B8P+2@lsB^$|7mdcFX%-NJsx5Rp%UcLr)8 zBjaHaKMEy0k(o^+RxFDpg*JTHCAz001;3UX7x1jptGP^T~~y7r*eiSFc?> zzg&C;NFUw0C1H^w6v|*Dr0h86{Ll_W&;SucEM}G}mi^_y@$s=IuJ5`&%qj_0Y`4Cw zjYy%Lb;fzcnpy~rrN_nCoF-E{MR9})Ee!f5Z!0_vT22z6DQS!vqsHD+uc^;z15zSO za5pJ8UGH#*qv?;z%A_e745aW`kDZGjvo6bU*y)e_&9F+#$ETa<-`~7*2RkFVvkp&p zX6HV-YVgT7e);liU*1ni!Mu6%{=Ikazp?7>ZS5DnQho9Bp{~&n))xhWh4UKkwedk) zU7VXH05FqEeEMIwTwmHx9~^BE4o@|pc(IgE|Ih#1|K&@seF4Djk8fPMdi{U!zxv;u zIa=TRm0umikM;4<|M7qJKQ3Np_B+4%|N8g-_y2)^^((*jxBs(${?7)v<-huCe|xyY z@BHS!_^1EqA9{0s>!1I#fA`<}pMUdLe$~JFYk&9GKiwhi5yyMC?q1k;uemdEIOD|B z%uVi-N(3*0SV{}#VjtxGNJc{frEK3HU8)HTQV0k#eQHsY!8}0>0GMZEDS9JVi3vsC z+A`sc?Da`HEY8M+0*6$x$QT<w7=^-lFE`&hKAb%$9YS&ugiI zF=n%RzL*(P%Bn5jN64pi;;>m(uWS8XlWDu#Rbi_Ob3r>nd3kfpzvKw^fr@9L^D;x0z=tZT>`cjpbt^gJB^oq`B(s5I$z+X~YzL{y<}Bs2_W zBPL=Ab<_Od&wuzYzxA(TzqxvDdF5cStYtZ?s-{+=P|I?;;2_aF3wF^!KMEy^)Jwy- zj0UKm2}BI6whhZ`%JoASqUP>;qEI6&W-}3Kx2-A&oKy+a%;!q9=~^RVmVyihU;v*} zg#Jt+!auO-pCX@~9*D_%9Z+IAYU7^jrCCo5%nn2_ikbB+h`?lmPPT+VDB)X!8a@Yf zjWcAY8jXSyexZVM_GCz&L?y2`F+zlznw!&@i3W%;P!JJOM6Xy_0p9< zA%JF0&Dm;JjIpY*@B5haaS%a>sWv`0-*338NQ7jwZG(ugbbVC!&dm^!xi$uvJ)y(d z$L>ID-r>pwZ{QdaXkm_vAsU$&!5$ZN`WG zwCq)BcYX+WPqD zH~z^#o{q^s{YU@)U?3VKoSoyz2;%0w2WMV0M6=lRbDz8%cZXc!5!orCe*dHDq9X)vXFo;xjC6!d6szOy&B1Dv9 zu-SmRnYG*Pzxthj_4~i~yVAF>Ts{BNwTsJnU5SRus=&*|qFFS_QjA{k*qJL#_EFne z+=U!GHWQh6h8KevTX-HSt|pdU-_0M93!qO~>*0B$>qVh}Ob!GnvMaR#g)#+T7@M(2 zbTQGasZ#3NwguoDel@H2_7A$K>s4#M4d<$-S@FBel}tD%DyxQezR7*f?D$FNiyc`H zWkAZv=J8VG7#1sM6!|2_loUrD8=p5qS8lV7%hE;$4`px3s@(FPi8-fVB_<>HF#%wy z*yd<(E6RM7F z58q#}w;JQ+i{~$2JZ~{JBFjZHn^jd+)m#T-W~P#F(x3SlhzKmp#j=*lLxEySBEiMg zWL_9ETW^SSj>f?zf7W3|hMmf>r+Q9SC^X;N|%O-wNssm5(Jy;rb7 zO0J=%G6l{I4E$Q=7>a~LCkTFM>6x#e_W0Cm&txO%jMr1yX7?Nd;o?TCkks=AjT~(GmDz9emgPj37-0LR|+ki+%4g`Ub0K&2n$glvc+Z&(xKPp2v0;#^v<17s;Y* z#<_VX)sVXvp195F^*73bBcFH1DlIE;dM_$ZA6--mi#;$prCYw0yIVuP*a+l4q@y}5 zhlva->JvQ5*as?lT;Hu>Ilo-iE9nbv4i65Q#bd6Sok@fb zk*dy?b7uL2KlsDn{;l6$-@ki#R(x205dRo9h- zx{@FRNIeE3lB$Tz=kr+zfk=~rKrE#;rt9kpMEJgYI#I-M%W+o9Y+4?KqDLb&)0k3< zsxhZ>w!uD=rJCfzOy8%zNHwvyl#tw9lVHhR-m`2o1Z@?X8TqP-T=7$|RpYU9lP3gA zI_ue`O}p|7fKxVP0)Vw^OFzS*8wu^_zOXmn4+dBp+fP;>uljYgFTED7Ug1Z&7Df;= z1s!wsFV zx0K+SP(+t1NX_E1jsH~nH)Z*UJw&INYbFZg2^pScwVBKe6}P%wiwzaNd*{O8yqzdj zo9vL!;&^s3HU^jpGnkJaJpAO7Pr9zV_WW}Phler7!AS_FoHe#8EG*&8H{br3|LR}9 z^Y)tuHNJ5D>TAzm5mMW33C0`}X%}N7DO3!DDkK4chOuW`WvNA#(u=wZbI2$JRsGX&&ZuAFB8JKY={Y?w$4Nz*Ja&*w**bu_m3?3xNm} zVkeroNfuJcWJ^?6p_b6Cw|yVOvatw&npsoNXMKMZlLCRkKrTL;5s%oAGjro-3K6>m zpq`W6CWD8QC}9{RPRbDBE6oj^16)1|BJx7~j1YlIqKD~GHfB%CJQ{0p0wsnfl;N1> zLdf)Cro}ksnNI4ejz)bS2X5Y3mJm2bg=%y!DT1j92@AJr%R&|JB=Tk&Brj9d8q9&X z2^G=o^2KI8fBmBmZXP{=kt&<={Rc-M-u&p?SAI^Co;x^v?)vrjK6qa(R-v}!CP*FI z=>z&$hzN$LsbZGJTsM|tG-4Q1N+E=tYot_o&hz_Z5MgFWfJgVM8LN@0YU-0}f;rWA zg&Kpuh*3462st@bK=inpXsIW4bBz+zU`!}k^K44EkEG@k1Ty{B9((TDmp|P>1EidJ zDeZh-XoNB}gZk{-GM;CXTRyI#X+7WPtIy4008`rN_F;E-V+VWm{B=(05qBW7mZ=J| z7bZCmsXgi%VjA5M=`ln1RJ`rQNpSyE)||& zsBK`domzC3LwqK@UjFz~x=aL&g*%Ccj=FZHYzEUC(l`{OpUty6o?(GbP!LnQfA{Vu zH$LwB?!^~hymI-HCS{_OH1@r!rIh-<12Avqp!EG8{K@Zq>s$Bk+&ZlJD=%F8(hDzC zNXJL_G$jhcCTyHi>|+X56$qqe$^Aw&ThFi~?M=B-oL(dYSbO0=J8@C|F3)#{2r8H` z9r?lhFg$tp9vB1<&RmoY^pwjW5L*?5ps{bEAR|=}(Q>}1o7rl+O{$eJVjA`aF8nY1 zW?l4Jr2#wCQ#h9*Wewjs(fPH69G^DM;^ed`(iAt6tUAbFX5N3O$hV9BSq2(-sq&P< zbJ&D49)KCS`~%9OD2<_U#&!gd>6A>rJ2fjKKRFCk8IH2q<=zao4comuw`5@4#BUU; zN?R*MyO~VE9Eg~WgKFER6ea6oGzcg47r~!F#GV`%T+CKPM5zW7g&6xP#TPG~r&`|r z;KMts;}%TS?B2tpZ-4hYU;WD0u3Wshe=vLQ`U{)Q8>U(@gFV$(ar~LED`)P>RKg0~ zw!}iSd9&VbH1*7^3NsmOq@)R!bKX87*D{Qs=L}h`R-b%y^TC7rmo8m;{<-TR1l6QQ zvF}q#s@C^iN~sFfVzGGVop=7_@BFLxe)6uQ?$yiZzV^A7&o5@HqkG!7U=|1~u~O`l zHpW5>AR0mz511t5>M(1kr+>GVe=!gNz@Q`lhl!?QSQ`Wp3c@jV8Y80pkM9K}4}1=G(KA~0PGyB%}`O9^DbKynk5;K`G-4CwO${KY}U@W9ja?{xDh zlqe#Q=MuA)!hMNh6RU!U)U~0$VWa`>yW@sEEu|n1irdlu!{sW}ZDd z8}_~MC&A1D*@DCrZQEU3G+%z@C4T?In|JSSpvLt!wm&fVqmtNl6KfIdo@ZrOw z)k6*$r4$&7|F~-M2_XWoX4a%u`#wX2st$5LJTIDGcc!LnoP11{iJ9g6{YIuS^=%hZ z@{F{e{7{pcMpd;U&lJJNb2|6Pg=>=AYRD2 z8Y#Cr^(ozN>zWBj30p`(+DF5NQ6B1fi2#sz%^FXKgQ7DUDs-B`pa!<6`3{V{ z%xQOXv=cAv#K#$ZDf`iaJnvW?}Brt;F+DDhJq&rGmk=DzE1-ne=1&h4tIUV8bZ zt5+|_XkFX4+wE$#>SH3$y+D}F<{#bs_z(Z++poX=XB4|@d-E^9cEo+swU4UlMNVZB!FkNa%E1z(W%{Uq;cALo6iLXD*|PE;ka*?t!dnRr-#!b zQIVC)iR@@iT6h7^votWyd0nfTfI|pG)U|C=WeR4>M6;%;o2E~(i>YEBbY5e8)!@~Y zon6LOjz+;@$2}bfF|fE3*1a$yW;wj_3_2s^*nKPe>I5VGS>zJk&`zL;@FyEmxNXZP z5@m-q8q#cJ`lpHRHoGszfk=u2J<}uciQq3CRqQAeB@h(01K+T~B6UGv+E(eb)lHV6U>~HY>c!rh$4kHUyKs zhGO5NZLig{>bV!*`{d3?_m4J8)qHX9{=+}~_8(rmdi{kLUs~?(UATDR)~#C-#2uX& zq zl`B_XeChcRs;-S)+pbotw(VR6u9{|xdE9n?@JE0Ao$vhd`sl%4#jm|^`719zcWz#5 zzipT{T}L8Zg32h&v>exIUX|+H^Vep?JM9?E4 z0vH8?N1;Ss&Xa}sGlqy^35;yuz^UTtQNqtqPkuN~^>B`nk>xsdWW+}BxvZLsI(V4q z01+%KL8@B9hBlklREa6Us=8{o$zl=-W~QWEhR~d^A&LYdmB{mo`#R}na}M%_D_56c z_TKG#54*%w-NxnTXBnTB1fZ zuw)yh<(p<7J0d&=B1W>X+%tn0CF|SRZnkPFoP8Ej(iD?vvZOkctVzjh)R;!3WT}T{ z4>Zz5s$^O`<4$;o@3sJCshs$d9{2u9j~$`p)R7nG8P{M~qSLD<>|$Qs1CSM4DF{^v zUEk-KC~N+SI$&wO2zv*$szDg!?v(WWbvd(oBmfBP9%I9^ZyZn%?GgYEw7Rw7O>E9B zR4qo^wrW%j>Vd~MW$5m-3XMH-5KkSSBEJ1>k2-`$J^U1Fn&;1^bU<0iU@#QQ$}s=K zsw!ZGDU_MbM$Zf?!ir_+EI6LQ(E)7oQzRU>>}y`#zHtzpZ0;^zp8Re&Jf|B5tG06Q6Nu# z|K9r_eCu1k_tA&%FKfDTIRDBE&%OG>HKc9at}70U`C{Am?RLXV)vQvBF-2817E_p7 zicvyvnTELti}0Q7#HKrr{z+0Nz?0TZK>`?VcGgIb_n1tG|0xsY%He#2p;`InS;yxZ zZ?n3oq>{exHASHs#0jWpO}(7A$9H3lJa5LT3qz}?EwYi^CJHkvQjndoJ)PLgC!)C_ z2LaQGGrWT+>HCU$b$Dd?b7F)CH;NH^t+@A}+C%c{EZT5y{qA1mteXKjxTD<0`J9n= z+qr8Y2P?~;PB5Wm@r~RmjT;?J9|L5uFR%U*^JWGPQWJG;mr?>i%nbGP+;ynKUf68f z&9+Ud1Y=NOi75qQCa4;7nE_Q0h$tv1F)Yq%p4Zg3-GTz@CY`%vQhoH`!8S70^VoMk z`QW`f_wQZ1a&rNZ`2wgcMjJ>ld|U&fu)W>qaF+rEPu0y8t*-HxEJ z1WRgolxM0W2vSOtl8B_F zEQOp0k#`3rM!x+dm}iIp6{F8*g9sE?fW)zJ1`!hroH3l0S5ljNrO?9-2vG16` z#0p3iX3M3TZMQ8Ek$4UR8g|FOaEQQUxjY?86dB}a2N9*;d2CL>)Mr8oSED}~BFfM> zr%x~iG1W~CLhPcA5Wz4LlKFft5?1SNjL}u5wN!oIB{E@FRgWYF0P}=-6d05UszI=v z$##>F(uGjl{&}_V!NdCxHyaK!jr}LLZ{I(9c=_^`i|5XrJ2?07!I35-rd)q{GUHDQ z5ilgHSY)=?wrw=c9YUdWGBqSKJsTqI#Opyw)tFZ6RqT5+3sof|28(^tn36`-WSS5M zD@`(umJ&3M5j8H=*dWy?2LPJTos3r$v?Wd$PJu53dpBC1NNUiCsTxT3+vtmw*?vzmYn>S>Ei z3XPBCZ?1Fm`-sAjjYY^@)yNcK3<^G@OViIBLDU_4jjWU+n4DFxc!*ZCvu^to%*Dy$ znF%)Uz56Z*=g*(Ne(mb4X&yd2IyySuY}WA94$5Gvs%E{}eEWOf{{HvB*REHGVlQ4i z{Q1wlczJJ6yRD|yee5O3a=z%c+kVrcshK7AsqeK4L{QZjlT=2;LS$ZrlZ^AuR2KXW za2B0i-ZaY=eabN&We=aQCdDUY@Mp=E;hdbn3?L>lQ&SLu#E1Yd(Bl{QALlICh=9aI zFs((JAhFwM>;*`KWEK{)`F!vA{_Q?`r~y2~Oy=Gv-Z8EmGYo#i05Fy%HNU7Z7`yyS zVLEmdufzUqK04lQfW)N*k#+ot~h zrd6X3Z0&Zn-n{#hclY*|%f&v2TFpSDMQAT3i*X;%BVap|31oho3GO-{Dw%WB$H-=} z*e$%@s!3t#33jI8_~he{Z{NPPm@lqhyLNcE-*x@*@$u?-l}x=NCy1n~i23!`-}v?) zef#e1TUF{W9W-Bi^~IMjT@29Fc1+5|YPMV~wwrag+0L7qYB5mPr@98QnZ=}})&z3r zWk(4i^V(s#uTzw8O))@V!*EiD2pdis&V5RV$ZOam$cchd)@JXr`mTL*OJEdYf(c<( zRY9GbX09Afm9{&l(~yxKwBEp3Dg@=gKIY8BU@^J{dNk zMDc@oW)Pv-QEUPcw%d(qN3#ME#r^C_QQ{QnWYOjnM7TPD0ab?76$mLMBo$(?0ECo? zsb16+q-)!D+ok9+W1)|ct03$K((LT&*&#_yl+|Etb)dz((sfIO{ff`ctBoxb=v9@& zHd)uj8#iv;zjtSU?@+3lx>_Q4JC`VUa)^KzYcmkjY&L7V&I6>f$j$^HSyZ!h+F8nW zryx(hnI$vyegE*mgJw3H)wPIthJfUfj7IfjXd2xW4Jq2hL<38t32vzI-%tYF4~>zN zQtZ&d866xbt<33!<{vffXB>}YXNxX$`1s^43fT_4WZqG2xWUPrPZozy&%tte|L6$g zln&3d>Gjj*7tr9o*VJp6u}0%rSX|$G`Q~a7R8RLbn04I$q?hLE;eX|qDZFRx1|%Wy z!`o}S+b;IzW=h2GebV1OVv^aDj^3voLt+4&i1MEtLy*killIPc3o+oRn59_(T#aSPpK$c-n31r0V?jA$YIRacNU|}eflmx5>B4jJ3jsZ4GMY_Ql z^pKTi45)!MixAL3!hxExK@~71BXcInRYP{d%s1JmPSN(MgIuEWti+VApd$yg2+ukno2#!xH$oKm?B8^wtZ z6&b6H%_&r|U5@S4(wS^)yWd$BnTW`8Y6Pe|QZQFdgFc!jugJ}rDvZdQCIlfNbZx6p z5s5MNW)%;$2dy}~3CQcZnkHl7Sv~7xE1LFeT6MgX`bayG@Zzg4-no7I*6oj#?BQy? z-o#lw3stD=07>we+gvTpP^cs`k4{(^cybg*-e5VRDg+54(Tu!Ec~JyGph#wq@=iG8 zAmH4=;pNL$X7i?NyUn&eUagoQBBlsIKzwwxdi~8ezWcrJY*+V}Y%g9s`0^_+UcYq6 zeTNi1xIm3TVCLm=dGzq8-EQk@Ph^&2Z%H8nD3ifcH3`TS)5CO{*(v{+5;ko)7S3pz z%kJqR0)_$+P8{SJK#a4@1D2wr%Dfh3ahg1O-4rG;CaQwO6x;O{$sefzSJjN9Zo59) z{qpKl0-+GoqaY&7TAv*vihg~tK^5brKb;Bz4MT@<_=-DI8NbPhS{a9D01;DlhmFm! z@p9XFOgZmUQDS#M#yIsy!hTxy0fvRq8hX&1|@w+@x#dB{P}Z zpie&f)0#T)LD$Y7KIU5hn8fB4308}C%u0+5JgCNr(wC~+YA9FP%S8@N&De?^hRm$^ znC5-Xz-k(d%t(dQUl^&e7u-sN)yI`gUOk*(CAPzMdvOYJy(2rjq=QF>mWeCc)G4OW zvU%nZJZ9-U` zs<4AogJ9{D;j%@(gW6=Wd_7a4v9jS0tUWR-;MWz-+6-!Jp7s{v4^SZ!7#mp0YaO`Y zJ#Z1mzJ01`szjPfy6v{_BXeM|Y2u3Jd&^DR-@EtFK+NRsc3G+znwGgV-;RrQ-4hcy zbCZ9{rhXP0+wPC^)qt1w$jnx@*q1Oi*J~CpvvSY`o^#+2SxyL6oJgUB(G~B6$M0!> znA{}V`9#UQf=bz%Tm&nVo%yLk1e3ekV7VFjC&M5n!aemTd=JW&VnwqKz~d}1+{nOW zFjXDG{6L@(BvcfFc>zxbF)^_aiO768U+ga>FtKrfnJXkMnR)S9BQ~|<(PP3y%pp{> zCIlvnHQR;7?82fsSj>)(9s>9`{{QU#ON?zxdLD><{~xi|+I#2YJn#Ef-C`B%K~{;P zC{j|lD9PwSTWD*bhCQ)+pq|L^Kobiv;E4x@Cp~Hd1{yF-8;}QX39tmUVcJa*Hr#4f zOMDeck@XU*ShsH7*Lk0lCr{?yYpsa?_u!9+6>I0tJbBK|QiKDZ`p19z?f=KW_`m#@ zk9e(XUfWw9uDTe)>FLQge*WkFga6*&x_$GOiU?%WZ=ODV`t<4Xy6*=GK@{Xb{IU>X z2d9!__Kp~-HX%Twknz0oz%v?4Yp3dnR?DSh3NeIqC{559V+i?QFQJz(XdE?;h$CVk z4U|g-unMa%l#5n_L~TiX&oX8nkJkMti+!e>yZ@>vuTbPUjZl>TdhOQy$up(*9E%y(~xtyoZj(6x(=gi&owgSNCUb|U+ zcCkkyuS`ylv{b-!tY0bXoCv`V#$!8tiu2K3rQ~zDI{n4z2U98T%nhdlIveJOsbO|Z zJ{@So>7Ska$HeA)O))8DKxtT7gsn>S+BrlNK9LVS$;>Hjz8tVh1jw`@U%p+L$L8?b zp(Hf}AxgB-3Z1MsAAI_gZ-3|C-23#-QuMtW`(J$XwV!$Cjq7`jjO#Ec!(05InvF+Q zRhV4YwaevVyza>0{_v|m`^8`W zOMmH&*I)m=Z~fuJM-QF%A;{^bcVQrqcfR!vJ7RVK$k~BYX&g3xIt5cHruZl%@)ZDZ zOzb#SwN@Zb$qbildwZ*seux@P=Z&hOaBv}nyZ7#V`}=?V{`)_Y)6?7S;=S9qzx27c z-n@C>qz}Uh!3#Ny$2EW#6(VxZt@f73PeZ@yyQX1s{SZ2d1XD|5s?1`gWODQ}Ec-lD zsb&YRia@dyY$T#*EkAS0#14o^tVJ1&0E;fb;msSX{na@1kM7@76$YzX0i0AYTA@k; zb*w5R>Imvs;2n2e2cX}a#uy1+bY#cNg9ST2Iax;$VrRPB6asBMd!-OT0L;KmMU9&_ zlHF94Pzrh_KsLJfMb%!h9>@%~$P2iORnrXM)Ci=UK+! z*&lYzVbeTn+|%Qu`}gnt(qH<88#k_f>yQ5UNAJH+1Q2h=anzBBJo&~q&NDMJaQyGPreB(vzuo{UmhLDP$Nf;#rje#Vn1c*Q) zsc1^45lihMX#R)#Us*i!=p}ix7&mMaYsK}977A(1RD*LhjI9Aq*A?j_i;C%Ip&POQ z4ngt02iD)!j9KYaENJDn%-VNV(PVnowf+4Yhlh`!KEo<3{7{fCdg@k=+I zqZn03Y2Q7#-to!z9*0Mp_&7q9eADjVT>Si(_rCTEynlechZ30C^OKLC4nID6ZM8^6 z=Y_ugqs@o+wcWpQZY7D!&giUt^I!b>fA~N8AKUA{`}h9-_y6cy)xkAi`MZDb@0Tn8 z;J^EC?8WJ`<8S`PubURM+CTW8{DXh^Yya8*x?J|3{DXg3qSyZ5oBuN7#ID}v4|MBI z;MU>(t-}(}cGem*|5mz@CP5VhQ35Lo1Cp{hELJRow4|glORwSDN|#+XqF^NvWd?*D zi-MhsIcmI;y2)b`!RcsbbKG0L4H%+IQHd3*6l)49th3Bd(d!6WPnjkoh+6cu6c!$&-5zuebb_*I)a_d+)w}eLwcY zxPC?~4j^zOGE0%om_=(i@0P3Orr(4iXxjn^VH9ZrK*a3E>{yHC4~Z8g^Ev0@EZJm9 z*#-z?re9$KP3y#30h>UH#7+b!5&&Y{8tj-vLX2_maR0_zuP-0m1IG2qsRSW1z*jSX zrRu?C9wQYcv16+pd+*l$db2)F&TxV%_V*7~2M0!&*VT=@7zP)CMVex8}1J zqmuQGdbG1vi2zC5sDwAlf}!TwGo~-~qjJ)%s-{w96XSxCOu@pJ2D0?k^xAr#Z1Clf z4#1*)O4N;7U=UH6smcG3X(Ba;)uXI_F0DBeT(e3uGwvdf7!xa;W}e9jL?Xa&nu1MD z!ckF$Z~Th9bHjQ~VT@2AW`a|-4L~6V1sK^sLgXAf=b%wT-1mH~YY!KT$H&h;{rIEn z2dmG&`R2jj{2TxJw}1Q7d-t2R4Wwfn7#hQ{Sr4uu&yI*(>xrplcIr&ZDhx6&AF61- zBrcN@JLiHM5mS_kBF^2OmubXIs=1tzhA2;ujz0Y4qYv(U{K>~3xuJjW*7d*m-n(CT z^R`nR`qRjPAgnCRIzfaoC7E)yT5UF)u^(;I#W=(eo7N5kGV?T%MX)8Q86ZTP(sTxv zs^p|i<<9^S1obsU0ATV;5@Ym@d*i)#`t=EPI6giOn~I!G+Qx;gT>(VEqT%Em zh)5qNRcunu&p`<@m7IeT(*zZJSq&1;g$Pzci~tdHOc0^u*aC`~dAV9T*KBx$ey{^9 zm>5bzVCN)?SSWyss)CpuJI9EOC<~(N%l5GAHp6iL&Yi~(-nn`G+F$=GzjClze&>7N z7jWa7F^&)s9s7PHhsHYwapTF3@Kcw{AYKY0z|1asia~SUu}IO6wic}Z%lKQ06IV6M zB}s`r3u6pH#!+R|5Fin1T8*&A6nh3G*n!Au!USn4I9=)Vc@!ydBbl6&gFl6zB{i$k zo2zeP_T~$<;;jQ^0x(*dX+Jrusn8>BgX|oPcC^&FuYTe4zx~JGKBvo6cIS5EWo+L1 z_P0LxlV7~~i+}C5Y=SBfqN-uj!ge+zL$-vdPCT-QAL2|MVXh-R6J!zy05T^EZC|!QD@9 zzwuV>!1?|kee1!UPs@z`=0E+%zx1nr%M_Sj`qjVnzxhA@Uw-R1ejUKy_}hP{E;jJ3 z?Ay6$ns>FYzxR%PtY@#$`S+-jv5;Yft#&Yjgc$;ch?RKG`mJ(~K}+$?*%dDtN?Ayu z$km<|ZHy++ zC*T6>$4j=WJI97VKm-l_czSYj|H0$C_a5~9W*B=6!?mvc`g^bc!WTc^hB%y_Kq5O9 zQnl1xs2vPk@koNAVZUq_!#Kt$?3*ZIjM9j=j49I%&IG9D3AZ_fT1tPu={BX+AsEG+ zSDF6`KT0MR6?G<@Mj>G$-t_$^AAjT*zHOTQ)t-dd$Bjahy}JOVLO~I^0B=h0QAb3I z7==g}8l$LUxwm(4?J&qXjG^n;&fY8i)C9a+Q4~ehfD+YPCc!(I-$?5i_u3+A)}!4K z(G`{|6jMD_yLFPRV0X|hW}pC(rbx6&YAUB%Br$D#nVA&P90w_*JWF8=5Vh1f$KDN_ zei+6WqjN+=A_68Wf0Cl~p{j6X_7rLycc7aG%ljv%kD}hc_uz|Pcn>k$JlOyG*MDx5 z@a$w0!ocduVoV@V3Zn>Ahd@q8$1L8puJztAlXFQ37RiNb3%Ml*=!n@l4kQ2(6SJKm zzl&UUwbq~g{wrVm;*GA=p$}nTCLyxkDV zgP5Trb~IH~+`D(TJ6K-7ez;n#;t)>8XA*_TiGg0qu_6Ewst^*hb+bZzN<0@;aU?ND z5o)^b;QF=k=&?sN+O$1d$y>l0D20v~{G85JBEi$9%Y?>#N0sqo+qlPoF$F+FLFPd z5JDKoFb)z%NQ8`9l4?{Sv8XhhRhk@oHf_;*|JI9`pxzWU)m3&s6s~pqq)5#HbHNXx)%Kgmci*;IC}j4@zd`;yxA-k%O*x)!n((Q z{oAMap2Y6p9VNf}aodyi0_`{d*+2Q(FaG6{OLI0L?ey94fB9eh=hHY9_wRiA&;QY{ z{U`t6AKH7j-+b#o{!jn@*0+B1pZ?>W$9F!r?Jv8peeTVI9%tL`m6-f+1SHcw!08YZ zW~30HY%VJQQgJi`4dtxth^632Ihcl&;b2jwtSV8+vpH>0JT_KAByEBuL`NkOCK95I zhGh)%-|4Iml-SksK|RpfJ2{jfJ1)-;6nNowWjQuPtfEJcpZw&555D~;-+uqke$aXU z`Om*cq!LcQ^4=T2@Z~SixEY31J3CkufLD0UEFz_57+)nJ71!`$wN%yhFu-{w8paR> z$^_Lgj$(y65|l}jU(z%sh)Q9IcIT~57n=>Tmtk5IyFS4SAW%U%X54Zgn1~qE5cf|{ zKK|j4AAEZE^yD-QK~+SfAf|A^98zdZo&=o4GiB0t(Gt_pZ$vDA6C&z~h`1jIJMth& zWhHt(fo_S(P2Gl;7ZuMfL{v#JDUcy8Ty`_alw)>HrF=*Gg9=+q9W6br_F-)e zuU$9w>=mKWZY8Qy>_|m7M?vTu`{EMbG~J6p}r3| z9mkXPaD2LXw%%;|F^Yl!=OTD29mJNmVM!FCVln45t#t3=vMzh;1F!8X`c-P>^=ZrEmOt zvxx+DO&>xCD#WmoBOzEiN47DGdG-pOsH(*i=YXF1kX`^Hbb<&{08Grp1oFf*#yjtS zc=v;kPL7WIO|K%V5)m|Y2@^^{Ay%FfMyyTaeA|R!2;-0Hebbb2Z(L+&<Rz;iMm) zooc}<400YsASs99h<(#0h^Qo_i(6J@Y+eoXEb zBCD`@X*8wNaEj5(L1=}5YXxlD%b5c5g5{ru$dRPG-L!uBmV3c~Rg+_aBPzKPxmjuh zP0165t3Bt|I~z0q^3Q#(?yH{t#?En2tIIEa`Z50LKl;(1{qPyPEF}tb6zQY%QTmOB z4M1=X-Es{5-9P-jlka?VyIm~y8p);B|F8dY^S$?vy44$6xofsDcB?-xGPS0+%n#z6 zefq!qU;Qu2r{&(?{Ec7#&42oj&%5V0f8*Ex`9J!#7wAOQ{=J|7*%SzHrd?_$WW6Av z24@POI@^Y*P|2KjO3DpqSV$Lh$-!aAl-H9_$FmM`C~%ww}YS>O5e?nfVf`0VuA{%ZB}Klk%*z5UL= z{lO3JeERX>qWRM6ueBizthTjC#MpGePha4)3g%x^!TLT^s;D>g77VdVlt>|5+A1f zYgIml%iQE+bqZ(KG&`pIB?cuRl%vphPLv5Yl23`9wCyA=B|#xi?CJW8V>hbTf`ogJTD){cgodRhdaZ?AbX4 z0tBAW5^f!=?ms)Zdvtu~?)^7!-((U8dhNB>?%#jNq>XF3Wuq|;o3)VTnJ@@ZltA2o z6rvc$5XKmyca8JRAa-QZk%<{*69p$gM2r!TsGij2LoF}W#xdOe^!`si_{oDu_nqU< zfBy4d`qIxnK6?6Z{^SpI+e@uj^Be65xn+PCQ zk=adP1yMLC8Y161M>sh>?Kk6M&ngX&cMY*SJ>8s~tYbQlT2c~+m0>I7{uv+w8NU*E zW!;B%P1kOefTD7PWi28X7|9>xb>TA*VRJ7aE+rdY5+YIn-UJay>YHv~eg-9^bV;>L zYON%e#~4ZwrNWz+f(WP`0i#N4B`}FnZi*;7RS+pPT?+#Gew5(IF;R+mB$$DZnH1_g znQz%CHB5(#_SWIv@x4d)9y~lvw4Xz#`Su$K0WFC4Xb$1 zj#y)e5>x_-S~?A@AjO^un|hVRBxFjan$~ARK$g6UiaEVNmKo-Kw17XVKPkKFxvgkd z3Nur(394*nS1!tNvayLO#O(BQxiQ1w4#`iee`(+fy!*!MUwHeiAAjV+`Cd3dEc@Mvg#x6lZGUzD{{4UZ{cof1Uw`fTp?9(0IIFkXHVS3tnxYeV%By@DyVkbjFgank(hbR zF*~Osqpq2qb524KWp$<=Fu~1&o-m{0EOn!88wZTTsH(yuG76Dvy=%H5$|j7=lv2m+ zi^-@}*nUmw$z9^Iq*h-8i-poGwi{DVg*ht$s0N!E2`6BsEMHp0i{|9xg1AWpNYZEK zGk}t$Z#%xkjif-kpIT6wb<|x-!?Tx+e z-s9uDckXV!{IjcuC4|>*-dZf$_0wk(qVv4kTQ1t>f zOqTe{8IOs9+c(NSOOC)fMA-W~G2#UwB5O6JACtZ@>-@zikyvt3z-GqC=^N7pXYVl^ zSvoapGS0JDNhB6Pohq>vBP5{h8aU8q2xBC2j#TeM+%n5Im@;m?EeO!R`i-AIIzE1K{B%pVd2a6`9ZLK2_wN7MKlwlX=*|bv z{>tBc{o0KVo&eHFu^;;fcQ=oJvi|7%bo9yfjuzMVtecIehe!Hf{nq;5{OO}e*Ld|s zrDk{6FV<}U5FXt5^uPQs{&TD5e4ff-ew*L?XaD%~Kl_#2Z@&GLAO7i2e)y+#_2-@P z@*jNjU;e>2|D{E;J-GA9gFBy|S6ccq?dIX$-};5Go;#FFiRzhBC%G&IDcc*gqx`si zMalG;d?XkHV#R61Vi%ZI><9zLrqYloIe}wp6aqVG1Y&t{3hClALZhWnPrb;HSAWer*;!)!Bj3n8QHwH~@j7kX!8?+_-gPb$u_YJiK%7>7yqS zgiK)r03~&RD}z#s1%OCNpo-`K2X&5{)=3;CMk{w^fXT{2CT(OoM z6;_;vQOjncQkAI5ir8$y>W&tJ>olI+8$B0hvNo0ggr<9Cx-^+s0j&rrFHmw=RXbZq zVY0LZbQwIP%5bT&2??K^qsqzYT4E$es_NNyZ39q@aSTBf3|5dp zWsJR!#I$IZ-dQPEwR$Vg`z9_nLr)?A<+}ry%4h8HR_oJWu_|s26 zL48q>`V_3!Lh$MyMXG~4#K!9?l z$a3IwL?jc9J{v?t(g7zaQUQQ?S)8^_+MR$gH#{2)^SAOaL^*g`& z?Bt|;e#ucN?+wk@#{Pr<=l|{AkH7omSO41eH{M#r2#rw(!se4khHD)!Z!C!&AVhS$ z)*pTt{@=gue?C;)u(zy9^hboarXPj|+oU93}l|Bt@)a_Ka6 z+g~pJqhI-pt=}O|KS!gf7mP5WTyi8Qg$5NNm)n+Pz?AJLNIn%&VPSzV*v|VVD3hr- zP!b{~5+cWNN9OsfqRtw>yGHIr5IL)OL<~|{!>hM8h-Z~G>Rh~f z)D^!fb2q)Lj0RIsjuscO$zEb1A4PeZjB1+2p<+k2;~q6r7m!LMlVmY7Qyf7d>KreY zOL!XlfkdnTFj-hDt7Gp3Oq&>$Kwcq`o6F_3{k=zbAAWl8?mMr)=Dcft``Yc-KD=|+ zIY^AovG^Kz|-YOi-WV zd77qed^3)rbIV~2Axh&Lg{lUL!7+iIqU@b1T9r~=hb%!5Wy$7cAVO6mqFXKAeD|H3 zZ@uaE7hu}IadWv?-TnBZuwEl(#a1Uoo-P>1YHS4Y-=m3 zy9RzCO6ZIL^NSiHkO-=Vh}_ppLj)}M7XV=L3Bf@lGup0GM?=5SAVd_zP>YDjIfVtg zYE+O{RiOjl+& zUBmDSIOjr)D#0MaqQRgD5@}G!yu9l#B=#Xyb}XGmB@LNc60DSz^yhEL#3+^4K8zC^IQd)NpCtrn*oS zY&LIGYH}I`Q_elh8dthp!9oI+Eapxl+8)jMVGjUkwOIW3|Jtwoe}3-|9zQ*r_w5qs zO|34!6#D&t^ZgGWJ-Gkxf8*dAUtI04ymREQ5%XSD8iR~Ocyt^;yfb|N!~Tzd(4TI& z-TNGxw?OW46ZO1yfhPAE@9>%1&BML_!C(1{dyDFb9-aR_=g~XfuGS<0!h{Q1$(dP9 zs%H2mfCCE)DMt}D4Z^OWML#)Hmkv;n78RlSLn(Vo9nl(jblKFuHk-t@~8jydk-Jp+b4PJ`kos$ zn`fK0^2x9vJ0#%gqd!(=q5?G0;sl)fAj6P_FsQZybnaAqhBs=zVU{r z9NoVk`w5VM^Bz%~{Nl<@3Q$iIES>HA>!E_tWu%pNp z6|!OxiO!0EHj7e9^krp*G))vh1XflBn6Y#VRvP+26)qhGAT|x2rDMuzw#nC}Mgtx~}z(#nNzzy4FKnka69|7$X=_ zxpkh1grFjE9ITFk3K5~{ypAEnU8P*lZwJ@*j>mBr0(&NjKYss5AAb0O^rvsWadVHg zKYH9aVs_jx(HV#+i&3P>1otKo!8u+o7f(-4{1^!6`=ML31QC@efs`1|4sS=1S%{!X z-ayLuEQj3`A@{`~!feT}y>|Qd+izpJ9N7!T*89U-w?d4MKK*2Kx>1o#0ZC>7FhdCi z8=GPUfx%8mVhkaYGLcsZsk+8T#V`g*Cjk(FbK=ZT0U}c0#Zo}hT&1@&^x1yOh)!95 z5j!i9a`h?ux>|*$ViF;KRS=Ob(232aEt@?mlNsg=N+b#?5s}qh3q%-^W~-}~9=`xY zkkxumqy7{l|#6@?%tF{vrNjdvm=R7e$ZlrRF~2oB0(1tn1w8_JYgUQD_sWzBU< zyUBlMj}1_CoZ^kUl=^Z>9mh0SQz0>Bfu}D5HCe{oV(UKf3>~kKVthw{QBrj@pLesK=Z5Y#pDS zh6hjL#}8;dwoP}tJ$wyr|AJed?ZY{roNaXOCA;o&9&}w*`^vj-{*7;ZrSUJJzn!O8 zo_YVQZi570nF|$($5LYi7Rcg}NykJ)B-@(NXKz=g*o;H3L`~O@L;sy`fBR3r^X&tt z@7}uBNH~3Z)I!Ie$or;insg4BV*p%I{LM3r%9?1#QYFASYTBmnp9v6&hB0;vWr)fs zk)2cGV$+)lqniEp!|ONpuU!*h0EM8QiCf3ZZn;>l zyH0}DLM!RE=}Ba1KgRr1%7SqKI3-6cF@!i;5Mxv!ru~C`a?QFQ)AK1+4WiQHiWDv@ zUn=E5h|3!~Aeut^CbLl<%VZ(dX~5Inbw?K`AXb|I-RcWvCrFYbX<}EC={IleiJNVS znkkr|mOUn#*b>|F?ST0`W*?Qm^7C>}$haagYd$W|7CFz>{5jQNl1{^vPq!nGP!z{Z zi=_yLVJyKY1citLw@niwL`a|ru_3y(S{*JIM@L5w9zNKA>&-BZ4fFMbgQriP5_txT zKm|iT#2A>^dup4;mX=i%3h~1@3Q@P{hH)5WRHz6==RGqtjv*je!iWQiiM{ixVYlh% zoEF9qX81I*<0Sz6(%gowg*D}^Bq%M{WSdRY_+WT|w<4!0nJUI9d4HmpgH0A?sry0eWE znzW^@wi_a<#dv9mfI>k`nu67QsY24W3sqXL`{YHGTrW@2`eyWTi~x~_z)FW*dvky9 zCy$Tr-n;j?H(zfF6yxFEzIW93Ba^f0+hG{3)~IvT`G%QP)Tt^2;;r1EZ(GDL#!(R^ zBD#h+aj-B1JGk6N=$!LXl(t!$Ynz#cs8s`sA_DJ#77xN<&#`P9>|-ukG7giJ+wJ zOs>3o%FYvtcQ*4vdFOuh7k>VWZ@vDz-~Ima$?1!T0DuB~==Z+TkB@%m2hT{3JdX@j zLWnMEtJo*kxn{3h9)OoGa_jS+_uP-p4B%BNFlXE0-tw=1{mbvYe(SS#V{0wzKa0p^ z#GpEVk%@SFF07D%m~KN+tkejZ7Y4*i&XIteB9{|E1&tAuMt8>lE3P6z_Q>b!DP!J_kx7{Ey21iUj<#}eP z6>(q_#i-aXGt2^NXYm?hsz6ojjLuDrF$8EjMVX!3J3JKc0#xjDYCD+1Qn?#w++$%Us{V2+B zdf!ByN|+X`!)l4fs6M5=e)L%4pgz5*U&P(Fq3Xm!|U57I=Weo%X6qW)!<$;MR zJ6`QA!RUuU)s7Kl5JBLaV~%DfcLXImTr}5~i--3fethT7dvCwP6!#X(>({RRU_fT}W}B0)!q>>Fn9;;130a|)|C&BQE_ z3&?1@iK1ycsQ%#3e(7V~jx}K+H|!sqsuM zFSls+@g|5cM=gt}ILFIn`{c>75--_}L0m@~R7k}sb5O_1NpYB>g3_$3k~vb+-Z!~6 z*G{_>M1Xl5;`M`rX1Nz2A&3$;4S|##5v;I?vTAbIPEb@JLdbNvV#iP+a<1_T9mf%3 zC6knhmaCOtE{E}%s3;u7?ASFYJZB}Y2qNrvDH3Sd^jwsvR2x*mpFb6dFui21M_h~& zd1=ZW=3gz!)%2~agosH;HOeFgA`?^ugl^G+aJpVc5z{0RTVZ(bgG3M(>ttz85!lsLwC+HXRPj;L!J=O}MEbH1yH4CCmD6=qEU zsm2&2MsMj}qlBnVm7J+z&bf19oM)3}M~jK+Hfo17ko5g#ef%tro6b?|91|!itFkvv zNCaXCNj7xYnkR4B%#NH@g!0Iw_vD-!3l2@EwyP!!ffhpwaAvo>OjCf1`foE-oHJ$N zV@!opQyKVkJvOCHJEF`e0cXNZ6;RN-uibq2Z~nCpKE3n34?ezsbaZKhhfSlW_I20X zg7gtFCg@^M9^`YT(2g%&>gF$S`PnOXFV8E|bl$je`1SYR`Pp~gn94p}?IUaOtzOrj zo2=B#F{4_ZPuIL``zF9{vZEQ7sEHc^to?*^}Wt%du^o$ z?HEG8>4){8AxcaE`h7pR7`<~KE8_1c0)(6asz|v`q6+8yVzF5FCu0o5Fvd|5!bXiD zI>%NH)GEX<2%3&vC1hnlOQ>^E4iepzJi#ot)Ha|b=8Fit_pSvKNZB+QC6$OUsEi>D zkicLipW+XS)rWzcCPhjDRwgD;0{-&34xIJ<4kf8W)ii2$)I_Y;{g+ET*k{Wq~WJh53UiMo6=S zGn1U=Q=pUiP4(;*`R$1cWPVMak9<+K?b&dszNpf#Xf9t>NR)=6Op+4QnF!zrsAFC( zmjaCaU|=Fq0P)T_<`4x$jbjyEI(L21dG8)PessJ!y|wH*@AkSCgHDGb#sH?1%}IW}zBYG=@mtu_H?L!m>1x$)N1~9NP9W5TQ|o)VUU% zOadOt%BlttA%sC=AXOrtljo8WWzngsEUF9uPMARA00OtIBh@$rO<_qYA_V8S2{B3( zf=7y_dG!!cuAl53xm^w=rVXFDaPnc;ag&K}z5<9K%75;Jh^glpP0mG$8Y1dzUIj$h zC7QG$BJ-pWAXs!=1p4*H^Z^h7!c5LNLJ+WLhG+}A)^)3{JwAQ*@aW0w*AG|T?X`=> zx8oRwaRk$5(+}g?5qC}3wT&GWOPUnds8ChU6yqoWh?pEe8Z}B35$_$76O|BR$6O41 z7eRy;z?CvdOzMa>>-Cez4|Nz8jqe)g9gzrGVWuo>0m{ncir$-uc1l($dH*G8rh2s6 zW-n)&nR>%hNE+3tc4x@o>^qlgnuNrn%~1KD>|ossn(h5FDGg^YDzC~zlV~acnCNHU ze)B8uy!mW>`tkiocb^%-WZ>L6Ee}DGIOs)6( z%kKLA>a82s-+k@owY_s(QZM|}ixIY5wWa64pv;ht=EW_hJF_5#q1kB>Rv!RRsDf4P zTy6mcB_=pRq;x73=Sc1BqM72)iatZI3)Q0OvtvDn%}z)*8*L%4ilIXF3J=sw?dqzc z^_$=R*T4OpKm3C|#J~LYpZUgDe`e+B^!Uh;BkvmD_^w&)MIGYM_aTHZ#$g;n3?T-` z?A1GVfKyU}m_{@4T7n9ird@W!7=nxv`mu2>6I7$dsFC4a4koc0>ok0w$ht{tQgtt3I|; z2cnX8C5kyNiB_taktOl)EY#8@^iEwXBJfW8*W84iu1LaX%1tmDSEPVNA|Z_c*sWHJ zQ`KPz9$-R%GE>_&!?;$lnkS*9=Jx*T+TP;v<0lUuKDzn&w?pW!@9(wFDU_T)-KH8RCKSU<->YZ~A z4j?5kB26{<2#zTdGxnB?)6=y^gno=&OAHlJjT)jlwh{snogio%^D@9z5VJTV*2VFB~+mo zpoC`d+Lx_u}TXYMuldrAk3?Wggj)Vje65|Lkxvp~( zHHI;UFd$fYvOc2q-fUxzE|4)ajaOl3vD(ycPMb%o})befQf zPAY<_w=62Mt$L*OLv4m~zwNU`(h3|bmp}jBJ7538I|a&~JF;^wI9EE~g%20qVaNSn zP~Fj&_|9c-`?6O&SARKs!M4XdfyYdB$b_E46+!c1=YTYZfCx+wE8DC}tn3(~%0iwg z3L+IpO^OYoB*)535HeWGf&SJP$^~n7`I&Z4l^uOm+_`LyoB3!zOS>|~=J)>9zxvMa z{r<|!U;OG9zwwnXwutLzr_M7}H6=f*BXUdcJ1;TDG4}m148u5#QQ|O+jaPD#@_5Zu zq)^fbG0&`L>Y7FcDingM6%n;UWU6dYDl`R>AZfA{Q>i*!rnRDo0$%egRh2o*=R)c1 zj^LSe9LM!~{p{rA*@;B)?Ce;3rR^I`{F<^kao)Qs zMr8i@^vT3hlqNIu48yYmvNajSs!_iMWI!l=pz?N+Re>VPVux|8lJCxv)b5r8{PR!? z9Ax3L*v6CTML}RukVZIid#feWX6#20Gn0t4t#54?40-T{34c?AAJA&zyDj`Jb7^EtDk%8m%s6Iw+@$^XUBk@QYsQnkfo+&=NFx{ zF~+uU`+gYuAxa#^v5CrFLFN&GzzTzCgbLt@NVW6L;6_#sK}F!5gD3=|N@7QtiIJqH z_)c3SI=h||@?Hue2#%RlNl65vir^eml(1R%r|V}=kHaw9*?c-l%X8w&QgM>>Rh39o zonz-&G-^}^u_!#?iHL?Vo(`kbWwp+k|CfgdEi+IHR9WxX-heZdfLZCbP@=r3A)?l5 zehLtQ$`3d1dNrb5D8cFNI*zWo{bz*;B9a`cDl>>EpR0gDQAtIZfkoF5XtVA`!Om-p z&g){)gg9ythI+_e!#DSqA3S{W@ZsZUC+kJyyUyRZe$Xu(ydFI}e)jCdk@H;(Qk4i! zbvp!5O&RVn!m$;JrB;=h9Wj%ta|#I|#wgBll+cgSd+(fcyKNs@IZJKqLJB4fo6}D} z`ib=GYx~Q?)uQvMdY&EkV!=Q8tlg}$m?n^YM72|+(vBx7tX|wS`IT0aEpt{vpb{5% zZQ08;qrn{DW_wLjBpgIi;36y%-C{2lN%xnc8*EYWmYhLnKAK);EsbZ_maUhjkalEi z>=+3yJq?%AXy#Y#xPPXPt#-B#XZGOEt6ru(XCUW)e6dFJ9DRr88ozP< zI0O{|={WWbY8ub%k_G@VJg}td<+2;cIQDTEC5SS!Dnx`uRD{VZ5iu8jR_qW{gn<1v zCkUA*VVf2zOQEqRhQcw$F&;g7)OJf=EVPMGiR<HDy9)9KAx{j8yFCbA?(n1}}nHth{62fAy4 z49)UQx{)0+ai(Z&^@K9CZ84_Ib*VX82xdzhA_ljf{EmfoP!|f2{ z+<9anRS6_&;Sy8}7cOeLScs)X$nit zQ*r=(15mK!EjHVMadEe~UmAjB93X&g6= zKeKl(YJc|q@18vP`5cW(vA0;rcKFw2JvVyJ2_ zt^dg3U}fTpKkF4hgl339DhfY?2dU!yu>g2;x)y-gNeoTnx~|#iNXiYg zW4f_e9(LW)(bI=dj$XfYZQ=dl^@Dch`(YyjQCY4Q-aCzvoYe|6hyanDBdJg&awwVa zfFrevh^}pCj{37x1vOH$hcRK;te-x-`{wOiHxKu^hRyU+HYp>; z!$8X{r+Xx&Je8_WCQj9qU|Y6TCVWgQsM&LaNxw-mZ<-MjH+*?{E2WAhm{Cz8u~Kje zd!fjRjmqRivar+3K4e=M-ck_gZ0IPq2>x>IJaL?!cflp^bUv0m@0;7h(2GC5OuJ|- zmmcT&?E>v){?TsT2FN~}S~s1>ne-Y!m{=I8*cmG`!>I~$6tyT)V>X1O+gNoIK(mLh z9rMugEh3PfZI zL~;rM8I{xl3eU~}iyb>=sBSjvelrYxXgr)V+a?)CF#r`-^+dhI^=7jen#OlfAZ9xU zEIca3lawu7xKbvKl3lu!?kh1rb3_3_fnj`j=N`b<-+0q^ZRj_rPoEw=e7JsgOaj2E zBGr5?M7MSSB1`1>7w=ueEFnmYR$1BDpL2e>+TW~?LX04<8g(vV)gUqlut}b%#!u5b zI_-``lcePflT<-km0{RINy;p?n&W)4M3i%3ZOcvMr_?qeKHzOR3}S8_DDXIr1hn2+dK`c-j+Et*OExF*EAPJb z%YWgk*Osl08^;LQ2zwqxIA*exo@}oj#$j{19*3Z!-g#ywwR#;O6Uapy;x)7%hRwR~ zS`Q|OB3VO=u%9I^E&1#<$)@f9f)Jrjas2QJle_&Ey2As+usM15^wHy|k00w87|zJ6 zKm=tw$LtY#qY5cO*-_&i#KM0x<%0tR*DaQ=X~$@X_@-hGuNoqz8*-6LbytiIQKdnr z$84cQnQvgn-kH688HlKTMERS=F;a$1(_~zNoJ~d+)DD|6ow!Pf$kT6j(E@JSPUIK_ z1ZBj?P;I+Tqpmj_wZna*dgs`}sG%Nu*fxiY?#ZLa_a8p`nRnmWU-}z2ZX6sOd~)Xz z!*xy5G$axru*v~7L?G4drl`UZ1h9i65D_=Tj)!54B8_tdiXsFjF^j$famk?nAut4$1nPX>irJx#qrD`aJK&q@v~l& zv>hsSTF)E6SuSzjWdg8L<)~3nz^X~mmd8d#>>osT&)&9FaduwocPSy%8R7EE+qufd zrS+F9>%s1I(F;Di_li^^A11j7lTQ{*;Tu!LELV!oA#oQXAffi>FMu1vA{ ztH1D-FMs}RNFPFIoky~Y*)-*Pg(ZtG^AP8Fwdy+YQB*~}_udaf-^VDb@JyVGM}jFv zaYU{6r?ejW%`kM!Wvi+LbF--efnz`3 z{pjQ4qi6dEdmeIf{Osi9R3$oc$U*KE8%^9uChpBZUi2J&!R&}28kiA5Bt)vr&N-)w zm}P*>*SB$NyX73Ov-?QvSCzLOWqHaI5*TXv?9BbhO7l?SBb>99vxuHKh-PJc`}=87 zly5hMc9dP4igxA8=g3@1XEPZt-J~+I7kQ!lE<#S3f%@HSk)F))$e?rPFYI%fdmDE&D%+$4oD@x_BuI&xZQ$%9Ys z-hKDY*WqZnS`zUX)-88k(?UivFEkiR#0-hanN7yiMGzRIE}5~dUZHnP+-&+DineQG zkT?W^hA_tXoQgel`|20oX>PO!D?bivPiCdDLnW2ZhX`Wox~6Ge6cN#;@t)g$vyL%_ z5FM-Il(j}o5*3ivdB@a`ec$^iOYhip8c|^=rNb62AmQ;0#0tzjt`BY+S!SJw84OWA9S*vKD7?wNFx*N_v#m4^l9gEy^t_DLW=15)hGh9>h_! z*zAmuCNI>^_JR;WM4Af~BS$Gznt^7F*uI~2#|A5~14!})E$&rJQ}EM)2xKK{3nHok zoQo3WB~>@gHhmk#)j-gE1DjFB8f zbgyx@_g5c3dUWr>{ii1<2M4Qm(KSsMLf`sD+bkFg4Y@)R6LSiMf|a~7fj)OrGhY*{_J4Nh+5Qi8-9C1#o)~hJMx@?+vUc0%!Y(ydz<1rGCF=Xd@wlvA@ z(5%=h%)Xg~F;fjJmOK?H(6Y8k%A1r9YOmE8pL}QL6v~LH)jVmSX>ZvYj2__GW+nD0jix%d|@=HJ7<)x+a5t z)@`zzvM3oT{>I$s`O}* zSW}nNr<6Dco7bN-s_ZDj^4Z#zDK=mG;^$b$F!ba(l0cEp>o&GUl`e;Dpv`QGy(d7T zFk{88^?n@saU6y*I`VDPB;PzU5&5ohYrolS)|-B{w{(qjDx^^%W>~bkm^r;Bv!ldp zDy0MVP7QKf4rf(OQ6B^)qA1GD66N^8!}ZbQ#&Zl3Rjn4KPPfe2$eD*zeHud|0pk<^ z;Jg!wG1}pt#{7wy+inq~gfS#KAhlZ1bx6p0Z8u%e)-^U*tItGP1El#iQv_8(1jQ7K zlOqC(PLtN#W;^8|*I=2|dDYq5T5CYF4Uxs%B4%X2)l9xQ3sjjC%&ec~dzp_WV<^wA znFd2y_9}BTiMP9;vD)_~d!xGDymyn1L&af{OEX$W>_9h=vZ}yQw_I#Cy$mCR8|Q-? zqNKXvdtGH9^Jot=d}Ow!S!no?mgVB*PeaXb__D@+|Y@L5K~eM=M&@Llqfpq z9Z|9^rI7VTd8bxSP;+w$H!)`bLh!&?~7ps8TxO6*YlvLxim$ zF?;8uL@*ZY8t;aoABQ1^F^<%AZ3(0#=a}HzX4ChZzTXUE<2$FIY<$Wxy+V@wpM=W^ zB2Y^+=RriFplygCcEszWr~R|zu5}VMh%gfoYkkW!yu8xIU0(=>m{sfqD~nnk$3ayX z-l&p^o3>Ix(K#YzQ5B8tqE%q%dj@%SjdOv6 zMnJXoeDiQ`Z_yn+e*F08@w=aU=h?Hs0YJ5F{EdSZMC>qNN`?B2Gn#~!dbqts zO|U9?2Sz_)9viX>DM>v%7bJ(hPQ*~t9n~aqxn`8AOsSSp77io8iBOA4Le-98 zS23+7^=U>@6~)wl@BXX~@tMd>bI)d;#g|oSUQP!6tdi@?KalFbcaQk0RGL}aUbOSx zd&%2U3bWK4Yn!1miNRJqfEb*to7rQ-rsS~N$?@r=YNT?3D7tm?l_@qF?O?A)DI214;IJT`sep2slC zAmRWka;Z?)y5;_|58-6p@AX6Lm#PX8^Jh^y3@16|YWZ*OqKq}*kT(IZt!2G26hSxzW!vPoh}i&)m0st*&|XXmX&kDL?Q zNvS{rQjapv+lfh4k5H7lX`ark2NY`O6j(4d8POqAV5)L^t_yx#NCCC_=oVx7e&Phd=fe0mWj+r4&9XaOKIT}VD zH*tvKIEi0?s-wmJq92FNFrJ*OS6!F#Y(zxFld79Ac=FCoxIixp5klU9oyO=LtH`h! zKt#?FvI)6RLQKaIlVmTl`sZ2EzlrfEDg^R7eL z=i1-I%Lrgnh?o(R$ehb*YV)CSNeQL$9V7|P1c2nOu`)hP$@9S?id4T}izBKQb4^oB zrfJhM$mW1*`EV}(tJd_nYXOTl2};BQz(V{;MN<7iRF6zDq?lfVqS~BKBUS(F5mhst zXp!bx&ADpK%W631w-=Y+&%68zIyTdAcB?zj@5c+aGfL%-4|jd-OaS3@ZS}2!HA!B} z_NXn=B#`M63bpzHs*X9bItH^a*|satD0xQ|4F}s@%|0Ta9KcE0S(NUQKyl)*3MACF z>f@}=!YImUKKm+PnPNjBIOilOe6IA;Oej{vNORar#t2}Nj6os{<<_fHJKLO^X6Qrc z#~7of+>pW%wO!jRy3KmsZw6T|R2f2uA}pFt>(1;Y-@In737?Vxk&>IXCzF62qaz@J zELMxd>o-nMPoEwgv8p2nQlX-2x}v+J8whEVuR&H@Ml>1yNJ*W7RNDA2|3s5LeY=I=)0CfP(%*O z60diQgT>`~C&1SRqz9Gl#UZ5%(#mFe`#+QN!RTA-zVFqKz+_c<`<0eQ9tWf6&%F3OTrhGK%g2T0IRq7f)F9Xt-Epiriea%{6u?4G~B> zHD{8|gg|7D5j#Yc6-*Q*j3FfRIFQQMFrvg5Ek9Hrp#mn;$fZ%@6+wipnItG6t|4NYjf+qMU`^$PGvD62w9FZ%@YSn?2q2}0z|wjc z)3YWW3X)5QDM*R^auJorexSzru8C0)l{D^ocYU?`@X^uZpv30A5y&oyQL_+-Y<`$HN_9<5kT2LQ+9I883M<)y zD%Z@SBZ~ba>B`7-cE;#^Rs`IlaehRN;R&v8l=!D$_{MEKow*F$dXd> zoWSh6wK=k;7$P$%Te?F!77)S>`^LvG3Ns*NmOP?Vy mTbNDSF3PUb`s!7eV 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

?>Ej{MBOqeDdshTF3 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�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 T1a^by0J*26u2?E>67c^3com.google.android.gms:play-services-ads:23.6.0 com.google.android.gms:play-services-auth:16+ com.google.android.ump:user-messaging-platform:3.1.0 + com.google.games:gpgs-plugin-support:2.1.0 com.google.signin:google-signin-support:1.0.4 com.onestorecorp.sdk:sdk-iap:21.01.00 com.onestorecorp.sdk:sdk-licensing:2.1.0 com.unity3d.ads:unity-ads:4.12.3 + Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.aar + Assets/GeneratedLocalRepo/GooglePlayGames/com.google.play.games/Editor/m2repository/com/google/games/gpgs-plugin-support/2.1.0/gpgs-plugin-support-2.1.0.pom Assets/GeneratedLocalRepo/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.aar Assets/GeneratedLocalRepo/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom diff --git a/ProjectSettings/GvhProjectSettings.xml b/ProjectSettings/GvhProjectSettings.xml index 88f2c37..801043b 100644 --- a/ProjectSettings/GvhProjectSettings.xml +++ b/ProjectSettings/GvhProjectSettings.xml @@ -1,5 +1,7 @@ + + \ No newline at end of file diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index c641716..7ec1da0 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -140,7 +140,7 @@ PlayerSettings: loadStoreDebugModeEnabled: 0 visionOSBundleVersion: 1.0 tvOSBundleVersion: 1.0 - bundleVersion: 0.0.1 + bundleVersion: 9.9.9 preloadedAssets: [] metroInputSource: 0 wsaTransparentSwapchain: 0 @@ -174,7 +174,7 @@ PlayerSettings: iPhone: 0 tvOS: 0 overrideDefaultApplicationIdentifier: 1 - AndroidBundleVersionCode: 2 + AndroidBundleVersionCode: 3 AndroidMinSdkVersion: 24 AndroidTargetSdkVersion: 35 AndroidPreferredInstallLocation: 1 @@ -269,7 +269,7 @@ PlayerSettings: AndroidSplashScreenScale: 0 androidSplashScreen: {fileID: 0} AndroidKeystoreName: '{inproject}: AndroidData/RandomGFGoStop.keystore' - AndroidKeyaliasName: + AndroidKeyaliasName: fgb AndroidEnableArmv9SecurityFeatures: 0 AndroidEnableArm64MTE: 0 AndroidBuildApkPerCpuArchitecture: 0