Exemple #1
0
    private void BonusChance(BallShotData scoreData)
    {
        if (!m_ScoreBonusIsActive && m_ChanceOfBonus >= Random.Range(0f, 1f))
        {
            m_ScoreBonusIsActive = true;

            if (Random.Range(0f, 1f) <= 0.8f)
            {
                m_CurrentScoreBonus  = Constant.ShotScores.NORMAL_BONUS;
                m_CurrentBonusSprite = m_X2ScoreBonusSprite;
            }
            else
            {
                m_CurrentScoreBonus  = Constant.ShotScores.EXTRA_BONUS;
                m_CurrentBonusSprite = m_X2_5ScoreBonusSprite;
            }

            StartCoroutine(OnBonusActiveUpdate = BonusActiveUpdate());
            return;
        }

        if (scoreData.status == (ShotStatus.BONUS | ShotStatus.NORMAL))
        {
            StopCoroutine(OnBonusActiveUpdate);

            Color boardColor = m_BonusMultiplierSprite.color;
            boardColor.a = 0;
            m_BonusMultiplierSprite.color = boardColor;
            m_CurrentBonusSprite.color    = boardColor;
            m_ScoreBonusIsActive          = false;
        }
    }
    private void OnBallScore(BallShotData scoreInformation)
    {
        int nShotScore = GetScoreFromStatus(scoreInformation.status);

        if (scoreInformation.isOnFire)
        {
            nShotScore *= Constant.ON_FIRE_SCORE_MULTIPLIER;
        }

        BallThrower thrower = scoreInformation.thrower;

        int nThrowerTotalScore = 0;

        if (thrower.GetType() == typeof(UserBallThrower))
        {
            m_Score.playerScore += nShotScore;
            nThrowerTotalScore   = m_Score.playerScore;
        }
        else
        {
            m_Score.AIScore   += nShotScore;
            nThrowerTotalScore = m_Score.AIScore;
        }

        CallEvent(OnScoreDataSet, new ScoreData(thrower, nShotScore, nThrowerTotalScore));
    }