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; } }
// 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; } ; }
// 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()); } }
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; } }
private GameObject GetParticleSystem(Drumpart drumpart) { return(drumParts[ArrayUtility.IndexOf(drumParts, drumpart)].targetIndicator.gameObject); }
// 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++; } }