Exemplo n.º 1
0
    private void CheckPartHitPauseMenu(Drumpart partHit)
    {
        string partName = partHit.transform.parent.name;

        switch (partName)
        {
        case "DKFYB_Snare_drum":
            // New Sequence
            sqManager.CreateRandomSequence(sqManager.sequenceLength);     // Fix : This resets the score
            closeMenu();
            break;

        case "DKFYB_Hi-hat":
            // Resume
            gc = previousContext;
            closeMenu();
            break;

        case "DKFYB_Crash":
            // Main menu
            gc = GameContext.MainMenu;
            closeMenu();
            openMainMenu();
            break;

        case "DKFYB_Ride":
            // Settings
            break;

        case "DKFYB_Floor_tom":
            // Exit
            Application.Quit();
            break;
        }
    }
Exemplo n.º 2
0
    // Method to dispatch to the action associated with the drum depending on the context
    public void CheckPartHit(Drumpart partHit)
    {
        switch (gc)
        {
        case GameContext.MainMenu:
            CheckPartHitMainMenu(partHit);
            break;

        case GameContext.Menu:
            CheckPartHitPauseMenu(partHit);
            break;

        default:
            sqManager.CheckPartHit(partHit);
            break;
        }
        ;
    }
Exemplo n.º 3
0
    // Method to create a random sequence of parts to hit
    public void CreateRandomSequence(int size)
    {
        // Remove particles from former sequence's next drum part to hit
        if (nextPartToHit != null)
        {
            GetParticleSystem(nextPartToHit).SetActive(false);
            nextPartToHit = null;
        }
        // Clear sequence and reset index
        randomSequence.Clear();
        delaySequence.Clear();
        currentIndex = 0;
        mistakes     = 0;
        congratsText.gameObject.SetActive(false);
        sequenceEnded = false;

        int randomPart = 0;

        sequenceLength = size;
        for (int i = 0; i < sequenceLength; i++)
        {
            if (GameManager.gc == GameManager.GameContext.MemoryMode)
            {
                randomPart = Random.Range(0, drumParts.Length);
            }
            else if (GameManager.gc == GameManager.GameContext.RhythmMode)
            {
                randomPart = 0;
            }

            randomSequence.Add(drumParts[randomPart]);
        }

        nextPartToHit = randomSequence[currentIndex];

        if (GameManager.gc == GameManager.GameContext.MemoryMode)
        {
            StartCoroutine(PlaySequence());
        }
        else if (GameManager.gc == GameManager.GameContext.RhythmMode)
        {
            StartCoroutine(PlaySequenceDelay());
        }
    }
Exemplo n.º 4
0
    private void CheckPartHitMainMenu(Drumpart partHit)
    {
        string partName = partHit.transform.parent.name;

        switch (partName)
        {
        case "DKFYB_Snare_drum":
            // Rhythm mode
            gc = GameContext.RhythmMode;
            sqManager.Init();
            closeMainMenu();
            break;

        case "DKFYB_Hi-hat":
            // Free mode
            gc = GameContext.FreeMode;
            closeMainMenu();
            break;

        case "DKFYB_Crash":
            // Memory mode
            gc = GameContext.MemoryMode;
            closeMainMenu();
            sqManager.Init();
            break;

        case "DKFYB_Ride":
            // Settings
            break;

        case "DKFYB_Floor_tom":
            // Exit
            Application.Quit();
            break;
        }
    }
Exemplo n.º 5
0
 private GameObject GetParticleSystem(Drumpart drumpart)
 {
     return(drumParts[ArrayUtility.IndexOf(drumParts, drumpart)].targetIndicator.gameObject);
 }
Exemplo n.º 6
0
    // Method to check if the player hit the right drum part
    // and count the mistakes
    public void CheckPartHit(Drumpart partHit)
    {
        bool rightMove = false;

        switch (GameManager.gc)
        {
        case GameManager.GameContext.MemoryMode:
            if (partHit == nextPartToHit)
            {
                rightMove = true;
            }
            break;

        case GameManager.GameContext.RhythmMode:
            // Check if the player hit the drum part in the tolerance interval
            if (currentIndex == 0 ||
                (Time.time - lastHit > delaySequence[currentIndex] - timeTolerance) &&
                Time.time - lastHit < delaySequence[currentIndex] + timeTolerance)
            {
                rightMove = true;
            }
            lastHit = Time.time;
            break;

        case GameManager.GameContext.FreeMode:
            score++;
            scoreText.gameObject.SetActive(true);
            scoreText.text = "Score : " + score;
            break;

        default:
            break;
        }
        ;

        if (rightMove)
        {
            GetParticleSystem(partHit).SetActive(false);
            if (currentIndex < sequenceLength - 1)
            {
                nextPartToHit = randomSequence[++currentIndex];
            }
            else
            {
                sequenceEnded = true;
                switch (mistakes)
                {
                case 0:
                    congratsText.text = "Well done!\nPerfect score!";
                    break;

                case 1:
                    congratsText.text = "Well done!\nOnly " + mistakes + " mistake";
                    break;

                default:
                    congratsText.text = "Well done!\nOnly " + mistakes + " mistakes";
                    break;
                }
                congratsText.gameObject.SetActive(true);
                scoreText.gameObject.SetActive(true);

                if (sequenceLength * 2 - mistakes > 0) // We don't want to add negative scores
                {
                    score += sequenceLength * 2 - mistakes;
                }

                totalMistakes += mistakes;

                scoreText.text = "Score : " + score + " Mistakes : " + totalMistakes;
            }
        }
        else
        {
            mistakes++;
        }
    }