public void OnPatientCriticalEventEnded(float duration) { critical_state = PatientCriticalState.FINISHING; timeStartCritialState = Time.time; timeToEndCurrentCriticalState = timeStartCritialState + time_to_slow_bpm; adverted_bpm = bpm; defibulationsRemaining = 0; }
// actually ends the game // if the player critical state isn't adverted public void InducePatientDeath() { Time.timeScale = 0.0f; gameState = PatientCriticalState.GAME_OVER; if (GameOver != null) { GameOver(0.0f); } }
private void EndPatientCritical() { gameState = PatientCriticalState.POST_PATIENT_CRITICAL; patientCriticalStartTime = Time.time; if (onPatientCriticalEventEnded != null) { onPatientCriticalEventEnded(postPatientCriticalDuration); } }
private void GamePostPatientCriticalUpdate() { if ((Time.time - patientCriticalStartTime) > postPatientCriticalDuration) { gameState = gameState = PatientCriticalState.NORMAL; lastTimePatientCriticalChecked = Time.time; patientCriticalStartTime = Time.time; } }
public void OnPatientCriticalEventStart(float duration) { critical_state = PatientCriticalState.SPEEDING_UP; this.criticalCycleDuration = duration; timeStartCriticalCycle = Time.time; timeStartCritialState = timeStartCriticalCycle; timeToEndCurrentCriticalState = timeStartCritialState + (duration / 3.0f); //flash_timer = duration; LevelUserInterface.UI.UpdateBpm(bpm); }
private void CriticalStateAboutToDieUpdate() { if (Time.time >= (timeStartCriticalCycle + criticalCycleDuration)) { bpm = 0.0f; print("Heart State Dead Time: " + Time.time); critical_state = PatientCriticalState.DEAD; timeStartCritialState = Time.time; LevelUserInterface.UI.UpdateBpm(bpm); AudioControl.Instance.PlayHeartMonitorLong(); } }
// called when the game is supposed to end (either prematurly or due to the players running out of time due to anesthetic) // gives the player one more chance by sending the patient into critical // will do nothing if the patient was just critical or is still critical public void InducePatientCritical() { Debug.Log("InducePatientCritical()"); if (gameState == PatientCriticalState.NORMAL) { gameState = PatientCriticalState.PATIENT_CRITICAL; patientCriticalStartTime = Time.time; if (onPatientCriticalEventStart != null) { onPatientCriticalEventStart(patientCriticalDuration); } } }
private void CriticalStateFinishingUpdate() { float t = (Time.time - timeStartCritialState) / (timeToEndCurrentCriticalState - timeStartCritialState); float newBpm = Mathf.Lerp(adverted_bpm, normal_bpm, t); if (t >= 1.0f) { bpm = normal_bpm; LevelUserInterface.UI.UpdateBpm(bpm); critical_state = PatientCriticalState.NORMAL; timeStartCritialState = Time.time; print("Heart State Attacking Time: " + Time.time); } else { bpm = newBpm; LevelUserInterface.UI.UpdateBpm(bpm); } }
private void PatientCriticalUpdate() { if (Time.time >= timeFirstAllowPatientCritical) { if ((Time.time - lastTimePatientCriticalChecked) >= 1.0f) { lastTimePatientCriticalChecked = Time.time; if (UnityEngine.Random.value < probabiltyPatientCritical) { gameState = PatientCriticalState.PATIENT_CRITICAL; patientCriticalStartTime = Time.time; if (onPatientCriticalEventStart != null) { onPatientCriticalEventStart(patientCriticalDuration); } } } } }
private void CriticalStateSpeedingUpToDieUpdate() { float t = (Time.time - timeStartCritialState) / (timeToEndCurrentCriticalState - timeStartCritialState); float newBpm = Mathf.Lerp(critical_bpm, about_to_die_bpm, t); if (t >= 1.0f) { bpm = about_to_die_bpm; LevelUserInterface.UI.UpdateBpm(bpm); print("Heart State About To Die Time: " + Time.time); critical_state = PatientCriticalState.ABOUT_TO_DIE; timeStartCritialState = Time.time; timeToEndCurrentCriticalState = timeStartCritialState + (criticalCycleDuration / 6.0f); } else { bpm = newBpm; LevelUserInterface.UI.UpdateBpm(bpm); } }
private void CriticalStateAttackingUpdate() { float t = (Time.time - timeStartCritialState) / (timeToEndCurrentCriticalState - timeStartCritialState); if (t >= 1.0f) { critical_state = PatientCriticalState.SPEEDING_UP_TO_DIE; timeStartCritialState = Time.time; if (!TutorialEventController.Instance.tutorialActive) { DoctorEvents.Instance.InformPatientAboutToDie(criticalCycleDuration - (Time.time - timeStartCriticalCycle)); print("Heart State Speeding up to die Time: " + Time.time); timeToEndCurrentCriticalState = timeStartCritialState + (criticalCycleDuration / 3.0f); } else { timeToEndCurrentCriticalState = float.MaxValue; } } }
private void CriticalStateSpeedingUpUpdate() { float t = (Time.time - timeStartCritialState) / (timeToEndCurrentCriticalState - timeStartCritialState); float newBpm = Mathf.Lerp(normal_bpm, critical_bpm, t); if (t >= 1.0f) { bpm = critical_bpm; LevelUserInterface.UI.UpdateBpm(bpm); critical_state = PatientCriticalState.ATTACKING; timeStartCritialState = Time.time; print("Heart State Attacking Time: " + Time.time); timeToEndCurrentCriticalState = timeStartCritialState + (criticalCycleDuration / 6.0f); } else { bpm = newBpm; LevelUserInterface.UI.UpdateBpm(bpm); } }
private bool ShouldSoundMonitorBeep(PatientCriticalState state) { switch (state) { case PatientCriticalState.ABOUT_TO_DIE: return(true); case PatientCriticalState.ATTACKING: return(true); case PatientCriticalState.FINISHING: return(true); case PatientCriticalState.SPEEDING_UP: return(true); case PatientCriticalState.SPEEDING_UP_TO_DIE: return(true); default: return(false); } }
public void OnPatientDead(float druation) { critical_state = PatientCriticalState.DEAD; bpm = 0; defibulationsRemaining = 0; }