private void ShowFloatingText(ScoreData.ScoreLevel scoreLevel, GameObject floatingTextPrefub) { return; floatingText = Instantiate(floatingTextPrefub); RoundFeedback feedbackGameObject = floatingText.GetComponent <RoundFeedback>(); soundManager.PlaySoundEffect(feedbackGameObject.SoundToPlayOnStart); }
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); }
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); }
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)); }