示例#1
0
 private void CheckIfAchievementDataComplete()
 {
     if (_achievementsRefreshInfo.AchievementsUpdated && _achievementsRefreshInfo.UserAchievementsFetched)
     {
         try
         {
             if (_startPhase == SessionStartPhase.WaitingForIndiecityData)
             {
                 _achievementsReady = true;
                 if (_leaderboardsReady)
                 {
                     OnSessionActiveStateReached();
                 }
             }
             else if (_achievementsRefreshInfo.RefreshCompleteDelegate != null)
             {
                 _achievementsRefreshInfo.RefreshCompleteDelegate.Invoke();
             }
         }
         finally
         {
             _achievementsRefreshInfo = null;
         }
     }
 }
示例#2
0
        public void RequestAchievementDataRefresh(NotificationDelegate refreshCompleteDelegate)
        {
            if (SessionActive)
            {
                if (_achievementsRefreshInfo != null)
                {
                    throw new Exception("Previous achievement refresh request still being processed");
                }

                _achievementsRefreshInfo = new AchievementsRefreshInfo(this, refreshCompleteDelegate, true);
            }
        }
示例#3
0
 private void CheckIfAchievementDataComplete()
 {
     if (_achievementsRefreshInfo.AchievementsUpdated && _achievementsRefreshInfo.UserAchievementsFetched)
     {
         try
         {
             if (_startPhase == SessionStartPhase.WaitingForIndiecityData)
             {
                 _achievementsReady = true;
                 if (_leaderboardsReady)
                     OnSessionActiveStateReached();
             }
             else if (_achievementsRefreshInfo.RefreshCompleteDelegate != null)
                 _achievementsRefreshInfo.RefreshCompleteDelegate.Invoke();
         }
         finally
         {
             _achievementsRefreshInfo = null;
         }
     }
 }
示例#4
0
        public void RequestAchievementDataRefresh(NotificationDelegate refreshCompleteDelegate)
        {
            if (SessionActive)
            {
                if (_achievementsRefreshInfo != null)
                    throw new Exception("Previous achievement refresh request still being processed");

                _achievementsRefreshInfo = new AchievementsRefreshInfo(this, refreshCompleteDelegate, true);
            }
        }
示例#5
0
 public void HandleEvent(uint eventId, uint eventType, Array args)
 {
     if ((GameSessionEventCategory) eventType == GameSessionEventCategory.GSC_GameSession)
     {
         if ((GameSessionEvent) eventId == GameSessionEvent.GSE_SessionStarted)
         {
             var accessControl = new CoAccessControl();
             accessControl.Initialise(Session);
             if (accessControl.LicenseState == LicenseState.LS_NOLICENSE)
             {
                 _sessionEndBecauseNoLicense = true;
                 Session.EndSession();
             }
             else if (!_achievementsReady || !_leaderboardsReady)
             {
                 _startPhase = SessionStartPhase.WaitingForIndiecityData;
                 if (!_achievementsReady)
                     _achievementsRefreshInfo = new AchievementsRefreshInfo(this, null, false);
             }
             else
                 OnSessionActiveStateReached();
         }
         else if ((GameSessionEvent) eventId == GameSessionEvent.GSE_SessionEnded)
         {
             _sessionActive = false;
             if (_sessionEndDelegate != null)
             {
                 SessionEndReason reason;
                 if (_sessionEndBecauseNoLicense)
                     reason = SessionEndReason.NoLicense;
                 else
                 {
                     switch ((GameSessionReasonCode) (uint) ((Object[]) args)[0])
                     {
                         default:
                         case GameSessionReasonCode.GSR_Unknown:
                             reason = SessionEndReason.Unknown;
                             break;
                         case GameSessionReasonCode.GSR_UserRequest:
                             reason = SessionEndReason.UserRequest;
                             break;
                         case GameSessionReasonCode.GSR_NoConnection:
                             reason = SessionEndReason.NoConnection;
                             break;
                         case GameSessionReasonCode.GSR_BadCredentials:
                             reason = SessionEndReason.BadCredentials;
                             break;
                         case GameSessionReasonCode.GSR_TimeOut:
                             reason = SessionEndReason.Timeout;
                             break;
                     }
                 }
                 _sessionEndDelegate.Invoke(reason);
             }
             _sessionEndBecauseNoLicense = false;
         }
     }
 }
示例#6
0
        public void HandleEvent(uint eventId, uint eventType, Array args)
        {
            if ((GameSessionEventCategory)eventType == GameSessionEventCategory.GSC_GameSession)
            {
                if ((GameSessionEvent)eventId == GameSessionEvent.GSE_SessionStarted)
                {
                    var accessControl = new CoAccessControl();
                    accessControl.Initialise(Session);
                    if (accessControl.LicenseState == LicenseState.LS_NOLICENSE)
                    {
                        _sessionEndBecauseNoLicense = true;
                        Session.EndSession();
                    }
                    else if (!_achievementsReady || !_leaderboardsReady)
                    {
                        _startPhase = SessionStartPhase.WaitingForIndiecityData;
                        if (!_achievementsReady)
                        {
                            _achievementsRefreshInfo = new AchievementsRefreshInfo(this, null, false);
                        }
                    }
                    else
                    {
                        OnSessionActiveStateReached();
                    }
                }
                else if ((GameSessionEvent)eventId == GameSessionEvent.GSE_SessionEnded)
                {
                    _sessionActive = false;
                    if (_sessionEndDelegate != null)
                    {
                        SessionEndReason reason;
                        if (_sessionEndBecauseNoLicense)
                        {
                            reason = SessionEndReason.NoLicense;
                        }
                        else
                        {
                            switch ((GameSessionReasonCode)(uint)((Object[])args)[0])
                            {
                            default:
                            case GameSessionReasonCode.GSR_Unknown:
                                reason = SessionEndReason.Unknown;
                                break;

                            case GameSessionReasonCode.GSR_UserRequest:
                                reason = SessionEndReason.UserRequest;
                                break;

                            case GameSessionReasonCode.GSR_NoConnection:
                                reason = SessionEndReason.NoConnection;
                                break;

                            case GameSessionReasonCode.GSR_BadCredentials:
                                reason = SessionEndReason.BadCredentials;
                                break;

                            case GameSessionReasonCode.GSR_TimeOut:
                                reason = SessionEndReason.Timeout;
                                break;
                            }
                        }
                        _sessionEndDelegate.Invoke(reason);
                    }
                    _sessionEndBecauseNoLicense = false;
                }
            }
        }