private void RaiseUserHasReachedNewRecord(UserHasReachedNewRecordDelegateEventArgs e, System.Action <UserHasReachedNewRecordDelegateEventArgs> onResultNewRecord) { if (_UserHasReachedNewRecord != null) { _UserHasReachedNewRecord(this, e); } if (onResultNewRecord != null) { onResultNewRecord(e); } }
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); }