コード例 #1
0
    private void RaiseUserHasReachedNewRecord(UserHasReachedNewRecordDelegateEventArgs e, System.Action <UserHasReachedNewRecordDelegateEventArgs> onResultNewRecord)
    {
        if (_UserHasReachedNewRecord != null)
        {
            _UserHasReachedNewRecord(this, e);
        }

        if (onResultNewRecord != null)
        {
            onResultNewRecord(e);
        }
    }
コード例 #2
0
    private void  ContinueWithSetScoreForLevel(UserCloud user, int level, int scoreToSubmit, int starsToSubmit, System.Action <UserHasReachedNewRecordDelegateEventArgs> onResultNewRecord = null, bool forceSaveInCloud = true, bool saveToDisk = true)
    {
        Dictionary <string, object> infoLevel;
        int  currentScore        = this.GetScoreForLevel(user, level);
        int  currentStars        = this.GetStarsForLevel(user, level);
        bool isNeededUpdateScore = false;
        bool isNeededUpdateStars = false;

        if (currentScore < scoreToSubmit)
        {
            isNeededUpdateScore = true;
        }
        if (currentStars < starsToSubmit)
        {
            isNeededUpdateStars = true;
        }

        //Save the score
        if (scoreToSubmit > -1 && isNeededUpdateScore)
        {
            if (user.FinishedLevels.ContainsKey(level.ToString()))
            {
                infoLevel          = (Dictionary <string, object>)user.FinishedLevels[level.ToString()];
                infoLevel["score"] = scoreToSubmit;
            }
            else
            {
                infoLevel          = new Dictionary <string, object>();
                infoLevel["score"] = scoreToSubmit;
                infoLevel["stars"] = 0;
                user.FinishedLevels.Add(level.ToString(), infoLevel);
            }

            // [JianYu]: cache high score data, send them to server some time
            HighScoreModel.Instance.updateHighScoreCache(level, scoreToSubmit);
        }
        //Save the stars
        if (starsToSubmit > -1 && isNeededUpdateStars)
        {
            if (user.FinishedLevels.ContainsKey(level.ToString()))
            {
                infoLevel          = (Dictionary <string, object>)user.FinishedLevels[level.ToString()];
                infoLevel["stars"] = starsToSubmit;
            }
            else
            {
                infoLevel          = new Dictionary <string, object>();
                infoLevel["score"] = 0;
                infoLevel["stars"] = starsToSubmit;
                user.FinishedLevels.Add(level.ToString(), infoLevel);
            }
        }

        if (level > CurrentUser.LastFinishedLvl)
        {
            // wenming update data to 360
            UserSNSManager.Instance.UploadData("360", level.ToString());
            CurrentUser.LastFinishedLvl = level;
        }

        if (saveToDisk)
        {
            //user.SaveInDisk();
            Debug.Log("Saving scores to disk");
            bool isPossibleToSaveInCloud = true;
            isPossibleToSaveInCloud = this.SaveDataToDisk();

            if (forceSaveInCloud && !DisableICloud && isPossibleToSaveInCloud)
            {
                this.SaveUserInCloud();
            }
        }

        UserHasReachedNewRecordDelegateEventArgs e = new UserHasReachedNewRecordDelegateEventArgs();

        if (isNeededUpdateScore || isNeededUpdateStars)
        {
            e.Level  = level;
            e.Score  = scoreToSubmit;
            e.Result = RecordType.Stars;
            if (isNeededUpdateScore && isNeededUpdateStars)
            {
                e.Result = RecordType.ScoreAndStars;
            }
            else if (isNeededUpdateScore)
            {
                e.Result = RecordType.Score;
            }
            e.Message = "User has reached a new record";
        }
        else
        {
            e.Level   = level;
            e.Score   = scoreToSubmit;
            e.Result  = RecordType.None;
            e.Message = "User has not reached a new record";
        }
        RaiseUserHasReachedNewRecord(e, onResultNewRecord);

        //Debug.Log("SetScoreForLevel -> Score: " + scoreToSubmit + " for level: " + level);
    }