Ejemplo n.º 1
0
        public static int GetPointValue(AccuracyType accuracy)
        {
            switch (accuracy)
            {
            case AccuracyType.FLAWLESS:     return(2);

            case AccuracyType.PERFECT:      return(2);

            case AccuracyType.GREAT:        return(1);

            case AccuracyType.GOOD:         return(0);

            case AccuracyType.BAD:          return(-4);

            case AccuracyType.MISS:         return(-8);

            case AccuracyType.OK:           return(6);

            case AccuracyType.NG:           return(0);

            default:
                Logger.Error("Scores.GetPointValue", String.Format("Unknown AccuracyType \"{0}\"", accuracy));
                return(-999);
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 小数精度计算
 /// </summary>
 /// <param name="input"></param>
 /// <param name="accuracyType"></param>
 /// <param name="decimals"></param>
 /// <returns></returns>
 public static decimal ToAccuracy(this decimal?input, AccuracyType accuracyType, int decimals)
 {
     if (!input.HasValue)
     {
         return(0);
     }
     return(input.Value.ToAccuracy(accuracyType, decimals));
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Setup current trajectory accuracy visual
 /// </summary>
 /// <param name="sender">Appropriate menu item</param>
 /// <param name="accuracy">Trajectory accuracy type</param>
 private void SetTrajectoryAccuracy(MenuItem sender, AccuracyType accuracy)
 {
     foreach (var item in TrajectoryAccuracyMenuItem.Items)
     {
         (item as MenuItem).IsChecked = false;
     }
     sender.IsChecked = true;
     trajectoryController.SetAccuracy(accuracy);
 }
Ejemplo n.º 4
0
    public int GetCountForAccuracy(AccuracyType type)
    {
        int count = 0;

        foreach (ResultNote note in resultNotes)
        {
            if (note.accuracy.type == type)
            {
                count++;
            }
        }
        return(count);
    }
Ejemplo n.º 5
0
 /// <summary>
 /// 小数精度计算
 /// </summary>
 /// <param name="input"></param>
 /// <param name="accuracyType"></param>
 /// <param name="decimals"></param>
 /// <returns></returns>
 public static decimal ToAccuracy(this decimal input, AccuracyType accuracyType = AccuracyType.Rounding, int decimals = 2)
 {
     if (accuracyType == AccuracyType.Rounding)
     {
         return(Math.Round(input, decimals, MidpointRounding.AwayFromZero));
     }
     else
     {
         var ext   = Math.Pow(10, decimals).ToInt();
         var value = input * ext;
         if (accuracyType == AccuracyType.JustGiveUp)
         {
             return(Math.Round(Math.Floor(value) / ext, decimals));
         }
         else
         {
             return(Math.Round(Math.Ceiling(value) / ext, decimals));
         }
     }
 }
Ejemplo n.º 6
0
    public void Animate(AccuracyType type)
    {
        if (index == 4)
        {
            index = 0;
        }

        // **********************************
        // NEED TO ATTACH IMAGE TO EACH OBJECT
        feedbackAnimators[index].SetTrigger("Bounce");
        feedbackAnimators[index].gameObject.GetComponent <Material>();


        /*int num = Random.Range(0, 4);
         * if (type == AccuracyType.Distance1)
         * {
         *  Instantiate(ballaPrefab, this.transform.position, Quaternion.identity);
         * }
         * else if (type == AccuracyType.Distance2)
         * {
         *  Instantiate(prettyGoodPrefab, this.transform.position, Quaternion.identity);
         * }
         * else if (type == AccuracyType.Distance3)
         * {
         *  Instantiate(alrightPrefab, this.transform.position, Quaternion.identity);
         * }
         * else if (type == AccuracyType.Distance4)
         * {
         *  Instantiate(crappyPrefab, this.transform.position, Quaternion.identity);
         * }
         * else if (type == AccuracyType.Distance5)
         * {
         *  Instantiate(failPrefab, this.transform.position, Quaternion.identity);
         * }*/

        index++;
    }
Ejemplo n.º 7
0
        public void SetAccuracy(AccuracyType accuracy)
        {
            switch (accuracy)
            {
            case AccuracyType.Ultra:
                distanceEps = AverageDistance * 0.001;
                break;

            case AccuracyType.High:
                distanceEps = AverageDistance * 0.01;
                break;

            case AccuracyType.Medium:
                distanceEps = AverageDistance * 0.05;
                break;

            case AccuracyType.Low:
                distanceEps = AverageDistance * 0.25;
                break;

            default:
                break;
            }
        }
Ejemplo n.º 8
0
 public Accuracy(AccuracyType type, bool tooLate)
 {
     this.type    = type;
     this.tooLate = tooLate;
 }
Ejemplo n.º 9
0
 public static int GetPointValue(AccuracyType accuracy)
 {
     switch (accuracy) {
         case AccuracyType.FLAWLESS:	return 2;
         case AccuracyType.PERFECT:	return 2;
         case AccuracyType.GREAT:	return 1;
         case AccuracyType.GOOD:		return 0;
         case AccuracyType.BAD:		return -4;
         case AccuracyType.MISS:		return -8;
         case AccuracyType.OK:		return 6;
         case AccuracyType.NG:		return 0;
         default:
             Logger.Error("Scores.GetPointValue", String.Format("Unknown AccuracyType \"{0}\"", accuracy));
             return -999;
     }
 }
Ejemplo n.º 10
0
    private void AdjustAndRedrawGUI(AccuracyType type)
    {
        // Adjust Accuracy Count
        accuracyCount[type]++;

        // Adjust Multiplier
        if (type != AccuracyType.Distance5)
        {
            if (multiplier < 4)
            {
                if (multiplierCount >= 9)
                {
                    multiplier++;
                    multiplierCount = 0;
                }
                else
                {
                    multiplierCount++;
                }
            }
        }
        else
        {
            multiplier      = 1;
            multiplierCount = 0;
        }

        // Adjust Score and Fail Meter
        if (type == AccuracyType.Distance1)
        {
            score     += GameManager.Instance.Distance1Points * multiplier;
            failMeter += GameManager.Instance.FailMeter1Amount * multiplier;
        }
        else if (type == AccuracyType.Distance2)
        {
            score     += GameManager.Instance.Distance2Points * multiplier;
            failMeter += GameManager.Instance.FailMeter2Amount * multiplier;
        }
        else if (type == AccuracyType.Distance3)
        {
            score     += GameManager.Instance.Distance3Points * multiplier;
            failMeter += GameManager.Instance.FailMeter3Amount * multiplier;
        }
        else if (type == AccuracyType.Distance4)
        {
            score     += GameManager.Instance.Distance4Points * multiplier;
            failMeter += GameManager.Instance.FailMeter4Amount * multiplier;
        }
        else if (type == AccuracyType.Distance5)
        {
            score     += GameManager.Instance.Distance5Points * multiplier;
            failMeter += GameManager.Instance.FailMeter5Amount * multiplier;
        }

        failMeter = Mathf.Clamp(failMeter, 0, 100);

        if (failMeter <= 0)
        {
            GameManager.Instance.EndGame(false);
        }

        textScore.text          = score.ToString();
        textMultiplier.text     = "x" + multiplier;
        textDistance1Count.text = accuracyCount[AccuracyType.Distance1].ToString();
        textDistance2Count.text = accuracyCount[AccuracyType.Distance2].ToString();
        textDistance3Count.text = accuracyCount[AccuracyType.Distance3].ToString();
        textDistance4Count.text = accuracyCount[AccuracyType.Distance4].ToString();
        textDistance5Count.text = accuracyCount[AccuracyType.Distance5].ToString();
        failtMeterCenterImage.rectTransform.position = failMeterImage.rectTransform.position - (Vector3.right * (failMeterLength / 2)) + new Vector3(((failMeterLength / 100) * failMeter), 0f, 0f);
    }
Ejemplo n.º 11
0
    private void HandleInput(NoteButton buttonPressed)
    {
        AccuracyType type = AccuracyType.Distance5;

        if (NoteQueue.Count > 0)
        {
            Note note = NoteQueue.Peek();

            if (NoteQueue.Count > 0 && note != null && (new Vector3(note.transform.position.x, 0.0f, note.transform.position.z) -
                                                        new Vector3(centerPoint.x, 0.0f, centerPoint.z)).magnitude
                <= GameManager.Instance.Distance5)
            {
                //Debug.Log("Current Note: " + note.Button + ", " + note.Direction);
                //Debug.Log("Button Pressed: " + buttonPressed.ToString() + ", Horizontal: " + Input.GetAxis("Horizontal") + ", Vertical: " + Input.GetAxis("Vertical"));

                if (note.Button == buttonPressed)
                {
                    if (note.Direction == NoteDirection.Left || note.Direction == NoteDirection.Right)
                    {
                        if (note.Direction == DetermineHorizontalDirecction())
                        {
                            //Debug.Log( DetermineAccuracy().ToString() + "!" );
                            type = DetermineAccuracy();
                        }
                        else
                        {
                            //Debug.Log("Miss");
                            type = AccuracyType.Distance5;
                        }
                    }
                    else if (note.Direction == NoteDirection.Up || note.Direction == NoteDirection.Down)
                    {
                        if (note.Direction == DetermineVerticalDirection())
                        {
                            //Debug.Log( DetermineAccuracy().ToString() );
                            type = DetermineAccuracy();
                        }
                        else
                        {
                            //Debug.Log( "MISS!" );
                            type = AccuracyType.Distance5;
                        }
                    }
                }
                else
                {
                    type = AccuracyType.Distance5;
                }

                centerPointAnimator.SetTrigger("Bounce");
                Destroy(NoteQueue.Dequeue().gameObject);
            }
            else
            {
                //Debug.Log( "Miss!: No top note." );
                type = AccuracyType.Distance5;
            }
        }
        else
        {
            //Debug.Log( "Miss!: No top note." );
            type = AccuracyType.Distance5;
        }

        AdjustAndRedrawGUI(type);
        //FeedbackManager.Instance.Animate(type);
    }