示例#1
0
        public void OnRoundEnded(int time)
        {
            if (_score == 0)
            {
                _achievmentPresentator.Show(AchievementType.FirstLevelPassed);
            }
            _difficultCf  = (( double )CharactersCount - MinCharactersCount) / (MaxCharactersCount - MinCharactersCount);
            _difficultCf *= 10 / _linesCountCfs[LinesCount];
            _difficultCf  = _difficultCf > 1 ? 1 : _difficultCf;
            _difficultCf  = Math.Round(_difficultCf, 2);
            if (DoubleUtil.EqualDoubles(_difficultCf, 0))
            {
                _difficultCf = 0.01;
            }

            double timeCf = (( double )_timeoutForLinesCount[LinesCount] - time) / _timeoutForLinesCount[LinesCount];

            if (timeCf < 0)
            {
                timeCf = 0;
            }

            int newPoints = ( int )(CharactersCount * timeCf * LinesCount);

            _score          += newPoints;
            CharactersCount += ( int )(((timeCf + _difficultCf) / 2) * (MaxCharactersCount - MinCharactersCount) * 0.1);
            if (CharactersCount > MaxCharactersCount)
            {
                CharactersCount = MaxCharactersCount;
            }
            else if (CharactersCount < MinCharactersCount)
            {
                CharactersCount = MinCharactersCount;
            }

            if (( int )(_difficultCf * 100) <= 0 && LinesCount != MinLinesCount)
            {
                _difficultCf = 0.98;
                LinesCount  -= 1;
            }
            else if (( int )(_difficultCf * 100) >= 100 && LinesCount != MaxCharactersCount)
            {
                _difficultCf = 0;
                LinesCount  += 1;
            }
            _scoreLabel.text          = _score.ToString();
            _pointsPerLevelLabel.text = newPoints.ToString();
            if (_score >= 200)
            {
                _achievmentPresentator.Show(AchievementType.TwoHundredPointsAchieved);
            }
            if (LinesCount == MaxLinesCount && DoubleUtil.EqualDoubles(_difficultCf, 1d))
            {
                _achievmentPresentator.Show(AchievementType.GameWon);
            }

            SaveData();
        }