/// <summary> /// Completes this QTEvent either partically or totally /// </summary> /// <returns></returns> private IEnumerator CompleteQTEvent() { FMODUnity.RuntimeManager.PlayOneShot(qTSuccess, transform.position); eventsDone++; generatorState.setParameterByName("GenProgress", eventsDone); currentPlayerUI.ChangeInstructions("COMPLETE"); quickTimeStatus = QTStatus.Completed; yield return(new WaitForSeconds(2f)); currentPlayerUI.ResetTextLayers(); closedList.Add(openList[0]); openList.RemoveAt(0); if (openList.Count == 0) { generatorState.stop(FMOD.Studio.STOP_MODE.ALLOWFADEOUT); FMODUnity.RuntimeManager.PlayOneShot(genFinished, transform.position); SetUpQuickTimeEvent(true); objectiveInfo.CompleteObjective(); } else { BeginQTEvent(); } }
/// <summary> /// Starts this QuickTimeEvent /// </summary> public void BeginQTEvent() { // Play generator audio generatorState.setParameterByName("GenProgress", eventsDone); generatorState.start(); //GameVars.instance.audioManager.PlaySFX(ObjectiveManager.instance.generatorInteract, 0.5f, playerSide.transform.position); ResetQTEvent(true); PlayerSideStatusToggle(PlayerCamera.PlayerSideStatus.Paused); quickTimeStatus = QTStatus.Active; if (openList[0].quickTimeType == QTEvent.QTType.KeyCombo) { //Debug.Log("Starting KeyCombo..."); StartCoroutine(QuickTimeEventKeyCombo()); StartCoroutine(QTEventTimer(openList[0].DELAY_BEFORE_QT_FAIL, true)); } else if (openList[0].quickTimeType == QTEvent.QTType.Mash) { //Debug.Log("Starting Mash..."); StartCoroutine(QuickTimeEventMash()); StartCoroutine(QTEventTimer(openList[0].DELAY_BEFORE_QT_FAIL, true)); } else if (openList[0].quickTimeType == QTEvent.QTType.Rhythm) { //Debug.Log("Starting Rhythm..."); StartCoroutine(QuickTimeEventRhythm()); } }
/// <summary> /// Sets up the needed values for a QuickTimeEvent /// </summary> public void SetUpQuickTimeEvent(bool hardReset) { quickTimeStatus = QTStatus.Nonactive; if (hardReset) { openList = new List <QTEvent>(); closedList = new List <QTEvent>(); if (randomNumberOfEvents) { qtEventsTobeDone = Random.Range(1, quickTimeEvents.Count); } //Setup openlist for (int i = 0; i <= qtEventsTobeDone; i++) { openList.Add(quickTimeEvents[Random.Range(0, quickTimeEvents.Count)]); } } if (openList[0].quickTimeType == QTEvent.QTType.KeyCombo || openList[0].quickTimeType == QTEvent.QTType.Rhythm) { totalInputs = Random.Range(openList[0].MIN_TOTAL_INPUTS, openList[0].MAX_TOTAL_INPUTS + 1); inputListPosition = new int[totalInputs]; for (int i = 0; i < inputListPosition.Length; i++) { inputListPosition[i] = Random.Range(0, openList[0].quickTimePossibleKeys.Count); } } else if (openList[0].quickTimeType == QTEvent.QTType.Mash) { totalInputsNeeded = Random.Range(openList[0].MIN_POSSIBLE_NEEDED_KEYHITS, openList[0].MAX_POSSIBLE_NEEDED_KEYHITS + 1); mashKey = openList[0].quickTimePossibleKeys[Random.Range(0, openList[0].quickTimePossibleKeys.Count)]; } }
/// <summary> /// Used to fail a QuickTimeEvent /// </summary> public IEnumerator FailedQTEvent() { if (quickTimeStatus != QTStatus.Completed) { quickTimeStatus = QTStatus.Failed; currentPlayerUI.ChangeInstructions("Objective Failed\nTry Again"); FMODUnity.RuntimeManager.PlayOneShot(qTFail, transform.position); generatorState.stop(FMOD.Studio.STOP_MODE.ALLOWFADEOUT); eventsDone = 0; generatorState.setParameterByName("GenProgress", eventsDone); //GameVars.instance.audioManager.PlaySFX(ObjectiveManager.instance.generatorFailed, 0.5f, playerSide.transform.position); yield return(new WaitForSeconds(2f)); currentPlayerUI.ResetTextLayers(); PlayerSideStatusToggle(PlayerCamera.PlayerSideStatus.Active); ResetQTEvent(true); objectiveInfo.isTriggered = false; quickTimeStatus = QTStatus.Nonactive; } }