Esempio n. 1
0
    private void ShowFloatingText(ScoreData.ScoreLevel scoreLevel, GameObject floatingTextPrefub)
    {
        return;

        floatingText = Instantiate(floatingTextPrefub);
        RoundFeedback feedbackGameObject = floatingText.GetComponent <RoundFeedback>();

        soundManager.PlaySoundEffect(feedbackGameObject.SoundToPlayOnStart);
    }
Esempio n. 2
0
    private void ScoreChanged(int bonuslessScoreToAdd, int bonus, ScoreData.ScoreLevel scoreLevel)
    {
        int newScore = score + bonuslessScoreToAdd + bonus;
        int index    = UnityEngine.Random.Range(0, floatingTextPrefubs.Length);

        SetScore(newScore);
        if (scoreLevel == ScoreData.ScoreLevel.Regular)
        {
            BadSlice(false);
        }
        else if (floatingTextPrefubs[index])
        {
            ShowFloatingText(scoreLevel, floatingTextPrefubs[index]);
        }
        CreateScoreFeedback(bonuslessScoreToAdd, bonus, scoreLevel);
    }
Esempio n. 3
0
    private void CreateScoreFeedback(int bonuslessScore, int bonus, ScoreData.ScoreLevel scoreLevel)
    {
        Vector3 feedbackPosition = Camera.main.ScreenToViewportPoint(Input.mousePosition);

        feedbackPosition.x = Mathf.Clamp(feedbackPosition.x, 0, 1);
        feedbackPosition.y = Mathf.Clamp(feedbackPosition.y, 0, 1);
        feedbackPosition   = Camera.main.ViewportToWorldPoint(feedbackPosition);
        ScoreFeedback newScoreFeedback = Instantiate
                                             (scoreFeedback, feedbackPosition, Quaternion.identity);
        //Making sure Z is zero so that the camera actually desplays the damn thing
        Sprite feedbackSprite = null;

        for (int i = 0; i < scoreFeedbackSprites.Length; i++)
        {
            if (scoreLevel == scoreFeedbackSprites[i].scoreLevel)
            {
                feedbackSprite = scoreFeedbackSprites[i].sprite;
            }
        }
        newScoreFeedback.transform.position = new Vector3(newScoreFeedback.transform.position.x, newScoreFeedback.transform.position.y, 0);
        newScoreFeedback.ScoreFeedbackConstructor(bonuslessScore, bonus, feedbackSprite);
    }
Esempio n. 4
0
    private void CalculateNewScore()
    {
        //bool isHaveScoreLevel = false;
        ScoreData.ScoreLevel playerScoreLevel = ScoreData.ScoreLevel.Regular;

        if (perfectSlicing)
        {
            playerScoreLevel = ScoreData.ScoreLevel.Awesome;
            Debug.Log("PERFECT!");
        }
        else
        {
            //We get a list of the real sizes of all slices, determine their overall size and then modify the list so that it will contain the percentage rather than real size
            List <double> slicesInPercentage = SlicesSizesInDoubles();
            double        overallSize        = 0;

            // get overall size
            for (int i = 0; i < slicesInPercentage.Count; i++)
            {
                overallSize += slicesInPercentage[i];
            }
            // calculate the (new) percetage
            for (int i = 0; i < slicesInPercentage.Count; i++)
            {
                slicesInPercentage[i] = ((slicesInPercentage[i] / overallSize) * 100);
                Debug.Log("slicesInPercentage[i] = " + (slicesInPercentage[i]));
            }

            List <double> differences = new List <double>();
            // if fractions
            bool isFractions = (currentLevel.Cakes[currentCakeIndex].fractions != null && currentLevel.Cakes[currentCakeIndex].fractions.Length > 0);
            if (isFractions)
            {
                Fraction[]    fractions = currentLevel.Cakes[currentCakeIndex].fractions;
                List <double> slicesSupposedToBeInPercentage = new List <double>();
                for (int i = 0; i < fractions.Length; i++)
                {
                    double sliceSupposedToBeInPercentage =
                        ((double)fractions[i].numerator / (double)fractions[i].denominator) * 100;
                    Debug.Log("sliceSupposedToBeInPercentage = " + sliceSupposedToBeInPercentage);
                    slicesSupposedToBeInPercentage.Add(sliceSupposedToBeInPercentage);
                }
                //List<ScoreData.ScoreLevel> scoreLevels = new List<ScoreData.ScoreLevel>();

                foreach (double sliceSupposedToBeInPercentage in slicesSupposedToBeInPercentage)
                {
                    double difference;
                    double smallestDifference      = 100;
                    int    smallestDifferenceIndex = 0;
                    for (int i = 0; i < slicesInPercentage.Count; i++)
                    {
                        difference = Math.Abs(slicesInPercentage[i] - sliceSupposedToBeInPercentage);
                        if (difference < smallestDifference)
                        {
                            smallestDifference      = difference;
                            smallestDifferenceIndex = i;
                        }
                    }
                    Debug.Log("smallestDifference = " + smallestDifference);
                    slicesInPercentage.RemoveAt(smallestDifferenceIndex);
                    differences.Add(smallestDifference);
                    //ScoreData.ScoreLevel sliceScoreLevel = ScoreData.ScoreLevel.Regular;
                }
            }
            else
            {
                double sliceSupposedToBeInPercentage = ((1 / (double)currentLevel.Cakes[currentCakeIndex].numberOfSlices) * 100);
                Debug.Log("sliceSupposedToBeInPercentage = " + sliceSupposedToBeInPercentage);
                for (int i = 0; i < slicesInPercentage.Count; i++)
                {
                    differences.Add(Math.Abs(slicesInPercentage[i] - sliceSupposedToBeInPercentage));
                }
            }

            double differencesAverage = 0;
            for (int i = 0; i < differences.Count; i++)
            {
                differencesAverage += differences[i];
            }
            differencesAverage /= differences.Count;
            Debug.Log("differencesAverage = " + differencesAverage);

            ScoreData.ScoreLevel[] ScoreLevelArr = (ScoreData.ScoreLevel[])Enum.GetValues(typeof(ScoreData.ScoreLevel));
            foreach (ScoreData.ScoreLevel possibleScoreLevel in ScoreLevelArr)
            {
                if (possibleScoreLevel != ScoreData.ScoreLevel.Regular)//might not be nesssry
                {
                    if (differencesAverage <= (double)possibleScoreLevel)
                    {
                        playerScoreLevel = possibleScoreLevel;
                        break;
                    }
                }
            }
            //Phew....
        }

        Debug.Log(playerScoreLevel.ToString());
        int bonuslessScoreToAdd = (int)Enum.Parse(typeof(ScoreData.ScorePointsByLevel), playerScoreLevel.ToString());

        bonuslessScoreToAdd = (int)((double)bonuslessScoreToAdd * (ScoreData.NumberOfSlicesScoreNormaliser * slicesToSlice));
        int bonus = 0;

        if (playerScoreLevel == ScoreData.ScoreLevel.Awesome)
        {
            bonus = comboCounter * ScoreData.COMBO_MULTIPLIER;
            comboCounter++;
        }
        else
        {
            comboCounter = 0;
        }
        if (PowerUps.goldenKnifeIsActive)
        {
            Debug.Log("goldenKnifeIsActive, multiplyin score.");
            bonuslessScoreToAdd *= 2; //TODO: do we care whter this is hardcoded or not?
            bonus *= 2;               //TODO: do we care whter this is hardcoded or not?
        }
        OnScoreChange?.Invoke(bonuslessScoreToAdd, bonus, playerScoreLevel);
        //comboCounter = (playerScoreLevel == ScoreData.ScoreLevel.Awesome ? (comboCounter + 1) : 0);
        Debug.Log("comboCounter = " + comboCounter);
        Debug.Log("scoreToAdd = " + (bonuslessScoreToAdd + bonus));
    }