예제 #1
0
        /**
         * @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);
        }
예제 #2
0
        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;
        }