/// <summary> /// Gets next TripStage enum value from current value. /// Used to invoke the NextStage event. /// </summary> /// <param name="currentStage"></param> /// <returns></returns> private LSDTripStage NextStage(LSDTripStage currentStage) { Debug.Log("Current Stage: " + currentStage); LSDTripStage newStage = (LSDTripStage)((int)currentStage + 1); Debug.Log("Next Stage: " + newStage); return(newStage); }
void StartEffect(LSDTripStage stage) { switch (stage) { case LSDTripStage.None: gameObject.GetComponent <None>().enabled = true; break; case LSDTripStage.Onset: gameObject.GetComponent <None>().enabled = false; gameObject.GetComponent <Onset>().enabled = true; break; case LSDTripStage.MildHallucinations: gameObject.GetComponent <Onset>().enabled = false; gameObject.GetComponent <MildHallucinations>().enabled = true; break; case LSDTripStage.MildIntenseTransition: gameObject.GetComponent <MildHallucinations>().enabled = false; gameObject.GetComponent <MildIntenseTransition>().enabled = true; break; case LSDTripStage.IntenseHallucinations: gameObject.GetComponent <MildIntenseTransition>().enabled = false; gameObject.GetComponent <IntenseHallucinations>().enabled = true; break; case LSDTripStage.PsychedelicPhase: gameObject.GetComponent <IntenseHallucinations>().enabled = false; gameObject.GetComponent <PsychedelicPhase>().enabled = true; break; case LSDTripStage.FractalPhase: gameObject.GetComponent <PsychedelicPhase>().enabled = false; gameObject.GetComponent <FractalPhase>().enabled = true; break; case LSDTripStage.BadTrip: gameObject.GetComponent <FractalPhase>().enabled = false; if (Player != null) { Debug.Log("Destroying Player"); GameObject.Destroy(Player); } SceneManager.LoadScene("BadTripScene"); break; default: break; } }
public void InitState(LSDTripStage stage) { Debug.Log("switching to state: " + stage); if (stage != LSDTripStage.BadTrip) { Destroy(activeObject); activeObject = GameObject.Instantiate(TripStages[stage]); Debug.Log(activeObject.name); } else { InitBadTrip(); } }
/// <summary> /// Invokes TripStageStartEvent after the duration for that trip stage is passed. /// </summary> /// <param name="currentStage"></param> /// <returns></returns> public IEnumerator TimedLSDTrip() { while (isRunning) { Debug.Log("stage: " + current); if ((int)current <= (int)LSDTripStage.BadTrip) { TripStageStartEvent.Invoke(current); } else { isRunning = false; } yield return(new WaitForSeconds(TripStageDurations[current])); current = NextStage(current); } }