Example #1
0
 public void OnPatientCriticalEventEnded(float duration)
 {
     critical_state                = PatientCriticalState.FINISHING;
     timeStartCritialState         = Time.time;
     timeToEndCurrentCriticalState = timeStartCritialState + time_to_slow_bpm;
     adverted_bpm           = bpm;
     defibulationsRemaining = 0;
 }
Example #2
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);
     }
 }
Example #3
0
 private void EndPatientCritical()
 {
     gameState = PatientCriticalState.POST_PATIENT_CRITICAL;
     patientCriticalStartTime = Time.time;
     if (onPatientCriticalEventEnded != null)
     {
         onPatientCriticalEventEnded(postPatientCriticalDuration);
     }
 }
Example #4
0
 private void GamePostPatientCriticalUpdate()
 {
     if ((Time.time - patientCriticalStartTime) > postPatientCriticalDuration)
     {
         gameState = gameState = PatientCriticalState.NORMAL;
         lastTimePatientCriticalChecked = Time.time;
         patientCriticalStartTime       = Time.time;
     }
 }
Example #5
0
 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);
 }
Example #6
0
 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();
     }
 }
Example #7
0
 // 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);
         }
     }
 }
Example #8
0
    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);
        }
    }
Example #9
0
    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);
                    }
                }
            }
        }
    }
Example #10
0
    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);
        }
    }
Example #11
0
    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;
            }
        }
    }
Example #12
0
    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);
        }
    }
Example #13
0
    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);
        }
    }
Example #14
0
 public void OnPatientDead(float druation)
 {
     critical_state         = PatientCriticalState.DEAD;
     bpm                    = 0;
     defibulationsRemaining = 0;
 }