Пример #1
0
    //=============================================================================

    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
    }
Пример #2
0
    //=============================================================================

    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;
    }
Пример #3
0
    //=============================================================================

    private void GCOnReportScoreFinished(string Msg)
    {
        if (m_bVerbose)
        {
            Debug.Log("AchievementsManager: GCOnReportScoreFinished");
        }

        if (ReportScoreSuccessEvent != null)
        {
            ReportScoreSuccessEvent();
        }

        m_ManagerState = eManagerState.Idle;
    }
Пример #4
0
    //=============================================================================

    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;
    }
Пример #5
0
    //=============================================================================
        #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;
    }
Пример #6
0
    //=============================================================================

    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;
    }
Пример #7
0
    //=============================================================================

    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
    }
Пример #8
0
    //=============================================================================

    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;
    }
Пример #9
0
    //=============================================================================

    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;
    }
Пример #10
0
    //=============================================================================

    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;
    }
Пример #11
0
    //=============================================================================

    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
    }
Пример #12
0
    //=============================================================================

    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();
    }
Пример #13
0
    //=============================================================================

    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);
    }