/** * @return Added score */ public int AddScore(PlayerView player, ScoreableView scoreable) { CriticalValue initialScore = UnityEngine.Random.Range( scoreable.MinScore, scoreable.MaxScore + 1); CriticalValue finalScore = player.FilterScore(initialScore, scoreable); if (finalScore <= 0) { return(0); } Profiler.BeginSample("PlayerManager.AddScore()"); player.Score += finalScore; var popup = (WorldSpaceTextPopupView)popupManager.Get( scoreWorldPopupType); popup.transform.localScale = finalScore.IsCritical ? new Vector3(1.5f, 1.5f, 1.5f) : Vector3.one; popup.Msg.text = strBuilder.Append('+').Append(finalScore).ToString(); strBuilder.Length = 0; popup.LookAtTarget = player.Camera; popup.PlaceAbove(scoreable.Collider.bounds); popupManager.Show(popup); Profiler.EndSample(); return(finalScore); }
void BonusVisitor.Visit(ScoreBonusView scoreBonus) { LevelSettings levelSettings = GetLevelSettings(); ScoreableView scoreable = scoreBonus.Scoreable; int availableBonuses = levelSettings.ExtraScore / ((scoreable.MinScore + scoreable.MaxScore) / 2); result = player.Score >= 0.125f * levelSettings.CompletionScore && player.ScoreBonusesTaken < availableBonuses; }