//============================================================================= public void Logout() { #if UNITY_IPHONE if ((IsLoggedIn() == true) && (m_ManagerState == eManagerState.Idle)) { // Stop auto log-in from now on PlayerPrefs.SetInt("GCGPAutoLogin", 0); m_bIsLoggedIn = false; m_ManagerState = eManagerState.Idle; if (LogoutSuccessEvent != null) { LogoutSuccessEvent(); } } #endif #if UNITY_ANDROID if ((IsLoggedIn() == true) && (m_ManagerState == eManagerState.Idle)) { // Stop auto log-in from now on PlayerPrefs.SetInt("GCGPAutoLogin", 0); m_bIsLoggedIn = false; m_ManagerState = eManagerState.Idle; PlayGameServices.signOut(); if (LogoutSuccessEvent != null) { LogoutSuccessEvent(); } } #endif }
//============================================================================= private void GPOnReportScoreFinished(string ID, Dictionary <string, object> Dict) { if (m_bVerbose) { Debug.Log("AchievementsManager: GPOnReportScoreFinished " + ID); } if (ReportScoreSuccessEvent != null) { ReportScoreSuccessEvent(); } m_ManagerState = eManagerState.Idle; }
//============================================================================= private void GCOnReportScoreFinished(string Msg) { if (m_bVerbose) { Debug.Log("AchievementsManager: GCOnReportScoreFinished"); } if (ReportScoreSuccessEvent != null) { ReportScoreSuccessEvent(); } m_ManagerState = eManagerState.Idle; }
//============================================================================= private void GPOnReportScoreFailed(string ID, string Error) { if (m_bVerbose) { Debug.Log("AchievementsManager: GPOnReportScoreFailed"); } if (ReportScoreFailEvent != null) { ReportScoreFailEvent("Error - GP failed to report score" + ID + " : " + Error); } m_ManagerState = eManagerState.Idle; }
//============================================================================= #endif #if UNITY_ANDROID // Google Play private void GPOnPlayerFailedToAuthenticate(string Error) { if (m_bVerbose) { Debug.Log("AchievementsManager: GPOnPlayerFailedToAuthenticate"); } m_bIsLoggedIn = false; if (LoginFailEvent != null) { LoginFailEvent("Error - GP login failed: " + Error); } m_ManagerState = eManagerState.Idle; }
//============================================================================= private void GPOnReportAchievementFailed(string ID, string Error) { if (m_bVerbose) { Debug.Log("AchievementsManager: GPOnReportAchievementFailed"); } if (AddAchievementFailEvent != null) { AddAchievementFailEvent("Error - GP failed to add achievement " + ID + " : " + Error); } m_bIsUploadingAchievement = false; m_UploadingAchievementTimeout = 30.0f; m_ManagerState = eManagerState.Idle; }
//============================================================================= public void AddAchievement(int ID) { #if UNITY_IPHONE if ((IsLoggedIn() == true) && (m_ManagerState == eManagerState.Idle)) { GameCenterBinding.reportAchievement(ID.ToString(), 100.0f); m_ManagerState = eManagerState.AddAchievement; } else { if (AddAchievementFailEvent != null) { AddAchievementFailEvent("Error - not logged in or manager busy"); } m_bIsUploadingAchievement = false; m_UploadingAchievementTimeout = 20.0f; } #endif #if UNITY_ANDROID if ((IsLoggedIn() == true) && (m_ManagerState == eManagerState.Idle)) { string GPAchievementID = GPAchievementLookup[ID]; PlayGameServices.unlockAchievement(GPAchievementID, true); m_ManagerState = eManagerState.AddAchievement; } else { if (AddAchievementFailEvent != null) { AddAchievementFailEvent("Error - not logged in or manager busy"); } m_bIsUploadingAchievement = false; m_UploadingAchievementTimeout = 20.0f; } #endif #if UNITY_EDITOR m_bIsUploadingAchievement = false; m_UploadingAchievementTimeout = 5.0f; #endif }
//============================================================================= private void GPOnPlayerAuthenticated(string UserID) { if (m_bVerbose) { Debug.Log("AchievementsManager: GPOnPlayerAuthenticated: " + UserID); } m_bIsLoggedIn = true; // Auto log-in from now on PlayerPrefs.SetInt("GCGPAutoLogin", 1); if (LoginSuccessEvent != null) { LoginSuccessEvent(); } m_ManagerState = eManagerState.Idle; }
//============================================================================= private void GPOnReportAchievementFinished(string ID, bool NewlyUnlocked) { if (m_bVerbose) { Debug.Log("AchievementsManager: GPOnReportAchievementFinished " + ID + " : New? " + NewlyUnlocked); } if (AddAchievementSuccessEvent != null) { AddAchievementSuccessEvent(); } m_bIsUploadingAchievement = false; if (GameDataManager.Instance != null) { GameDataManager.Instance.MarkAchievementUploaded(m_UploadingAchievementID); } m_ManagerState = eManagerState.Idle; }
//============================================================================= private void GCOnReportAchievementFinished(string Msg) { if (m_bVerbose) { Debug.Log("AchievementsManager: GCOnReportAchievementFinished"); } if (AddAchievementSuccessEvent != null) { AddAchievementSuccessEvent(); } m_bIsUploadingAchievement = false; if (GameDataManager.Instance != null) { GameDataManager.Instance.MarkAchievementUploaded(m_UploadingAchievementID); } m_ManagerState = eManagerState.Idle; }
//============================================================================= public void Login() { #if UNITY_IPHONE if ((IsLoggedIn() == false) && (m_ManagerState == eManagerState.Idle)) { GameCenterBinding.authenticateLocalPlayer(); m_ManagerState = eManagerState.Login; } else { if (LoginFailEvent != null) { LoginFailEvent("Error - Already logged in or manager busy"); } } #endif #if UNITY_ANDROID if ((IsLoggedIn() == false) && (m_ManagerState == eManagerState.Idle)) { if (PlayerPrefs.GetInt("GCGPAutoLogin", 0) > 0) { PlayGameServices.attemptSilentAuthentication(); } else { PlayGameServices.authenticate(); } m_ManagerState = eManagerState.Login; } else { if (LoginFailEvent != null) { LoginFailEvent("Error - Already logged in or manager busy"); } } #endif }
//============================================================================= void Start() { if (m_bVerbose) { Debug.Log("AchievementsManager: Start"); } if (m_bInitialised == false) { m_bInitialised = true; m_bIsLoggedIn = false; m_Instance = this; m_bIsUploadingAchievement = false; m_UploadingAchievementTimeout = 10.0f; m_UploadingAchievementID = -1; m_ManagerState = eManagerState.Idle; if (m_bVerbose) { Debug.Log("AchievementsManager: Init"); } } // Connect to Game Center / Google Play #if UNITY_IPHONE GameCenterManager.playerAuthenticatedEvent += GCOnPlayerAuthenticated; GameCenterManager.playerFailedToAuthenticateEvent += GCOnPlayerFailedToAuthenticate; GameCenterManager.reportAchievementFailedEvent += GCOnReportAchievementFailed; GameCenterManager.reportAchievementFinishedEvent += GCOnReportAchievementFinished; GameCenterManager.reportScoreFailedEvent += GCOnReportScoreFailed; GameCenterManager.reportScoreFinishedEvent += GCOnReportScoreFinished; // Auto login if we already logged in a previous time //if( PlayerPrefs.GetInt( "GCGPAutoLogin" , 0 ) > 0 ) { Login(); } #endif #if UNITY_ANDROID GPGManager.authenticationSucceededEvent += GPOnPlayerAuthenticated; GPGManager.authenticationFailedEvent += GPOnPlayerFailedToAuthenticate; GPGManager.unlockAchievementFailedEvent += GPOnReportAchievementFailed; GPGManager.unlockAchievementSucceededEvent += GPOnReportAchievementFinished; GPGManager.submitScoreFailedEvent += GPOnReportScoreFailed; GPGManager.submitScoreSucceededEvent += GPOnReportScoreFinished; // Auto login if we already logged in a previous time //if( PlayerPrefs.GetInt( "GCGPAutoLogin" , 0 ) > 0 ) { Login(); } #endif // Playtomic init (scoreboards) Playtomic.Initialize("4297CC23E31BC29545FC2A9577AD4", "14A8D1497B7B68DBF43D97128CB88", "http://shreditscoreboard.herokuapp.com/"); // Connect to Facebook/Twitter #if UNITY_IPHONE || UNITY_ANDROID FacebookCombo.init(); TwitterCombo.init("GPC3ImeHkYHf0Bdhr9gNC39SW", "dty3PjzDLQTnlQ9jjqMJUM2oy4apJhqtPpaFCX0oVcLvTw2kPg"); #endif #if UNITY_IPHONE && !UNITY_EDITOR FacebookBinding.setSessionLoginBehavior(FacebookSessionLoginBehavior.ForcingWebView); #endif // For debug builds register a random player RandomiseName(); }
//============================================================================= public void ReportScore(System.Int64 Score) { // Report score to GC/GP first #if UNITY_IPHONE if ((IsLoggedIn() == true) && (m_ManagerState == eManagerState.Idle)) { GameCenterBinding.reportScore(Score, ScoreboardID); m_ManagerState = eManagerState.ReportScore; } else { if (ReportScoreFailEvent != null) { ReportScoreFailEvent("Error - not logged in or manager busy"); } } #endif #if UNITY_ANDROID if ((IsLoggedIn() == true) && (m_ManagerState == eManagerState.Idle)) { PlayGameServices.submitScore(ScoreboardIDAndroid, Score); m_ManagerState = eManagerState.ReportScore; } else { if (ReportScoreFailEvent != null) { ReportScoreFailEvent("Error - not logged in or manager busy"); } } #endif // Now report score to playtomic system along with any custom parameters if (IsPlayerRegistered() == false) { return; } #if UNITY_EDITOR string sourceType = "Editor"; #elif UNITY_IPHONE string sourceType = "iOS"; #elif UNITY_ANDROID string sourceType = "iOS"; //"Android"; #else string sourceType = "Unknown"; #endif string CurCountry = PreHelpers.GetCountryCode(); PlayerScore NewScore = new PlayerScore { playername = GetPlayerName(), playerid = GetPlayerID(), points = Score, table = ScoreboardID, allowduplicates = false, source = sourceType, fields = new PDictionary { { "country", CurCountry } } }; Playtomic.Leaderboards.Save(NewScore, ScoreSubmitComplete); }