public void ResetDuration(EMPConfig eMPConfig) { stateTimer = 0; if (state != LightState.Overload) { state = LightState.Off; } EEA_MelonCoroutines.Stop(coroutine); StartFlickerAt = UnityEngine.Random.RandomRange((float)(eMPConfig.Duration * 0.5), eMPConfig.Duration); Duration = eMPConfig.Duration; }
private IEnumerator FlickerLight(CollectedLight cLight) { cLight.light.ChangeIntensity(cLight.originalIntensity / UnityEngine.Random.Range(1, 3)); yield return(new WaitForSeconds(UnityEngine.Random.Range(0.1f, 0.2f))); cLight.light.ChangeIntensity(cLight.originalIntensity / UnityEngine.Random.Range(1, 3)); yield return(new WaitForSeconds(UnityEngine.Random.Range(0.1f, 0.2f))); cLight.light.ChangeIntensity(cLight.originalIntensity / UnityEngine.Random.Range(1, 3)); yield return(new WaitForSeconds(UnityEngine.Random.Range(0.1f, 0.2f))); cLight.light.ChangeIntensity(cLight.originalIntensity / UnityEngine.Random.Range(1, 3)); yield return(new WaitForSeconds(UnityEngine.Random.Range(0.1f, 0.2f))); coroutine = EEA_MelonCoroutines.Start(FlickerLight(cLight)) as IEnumerator; yield break; }
private void Flicker(int iterations, bool finalState, float startDelayMin = 0.8f, float startDelayMax = 2.5f) { var inventory = EEA_MelonCoroutines.Start(FlickerHudElement(GuiManager.PlayerLayer.Inventory, iterations, finalState, startDelayMin, startDelayMax)); var compass = EEA_MelonCoroutines.Start(FlickerHudElement(GuiManager.PlayerLayer.m_compass, iterations, finalState, startDelayMin, startDelayMax)); var warden = EEA_MelonCoroutines.Start(FlickerHudElement(GuiManager.PlayerLayer.m_wardenObjective, iterations, finalState, startDelayMin, startDelayMax)); var status = EEA_MelonCoroutines.Start(FlickerHudElement(GuiManager.PlayerLayer.m_playerStatus, iterations, finalState, startDelayMin, startDelayMax)); var chat = EEA_MelonCoroutines.Start(FlickerHudElement(GuiManager.PlayerLayer.m_gameEventLog, iterations, finalState, startDelayMin, startDelayMax)); var flashLight = EEA_MelonCoroutines.Start(FlickerFlashlight(iterations, finalState)); coroutines.Add(inventory); coroutines.Add(compass); coroutines.Add(warden); coroutines.Add(status); coroutines.Add(flashLight); coroutines.Add(chat); }
public void ResetDuration(float newDuration) { Duration = newDuration; foreach (var item in coroutines) { EEA_MelonCoroutines.Stop(item as IEnumerator); } coroutines.Clear(); if (state == HUDState.FlickerOn) { stateTimer = Clock.Time + FlashDuration; } if (state == HUDState.End) { state = HUDState.FlickerOff; } }
void Update() { switch (state) { case LightState.Overload: CollectedLight.light.ChangeIntensity(CollectedLight.originalIntensity + buildIntensity); buildIntensity += 1f; if (CollectedLight.originalIntensity + buildIntensity > 5f) { state = LightState.Off; } break; case LightState.Off: CollectedLight.light.ChangeIntensity(0); state = LightState.Flicker; stateTimer = Clock.Time + StartFlickerAt; break; case LightState.Flicker: if (stateTimer < Clock.Time) { coroutine = EEA_MelonCoroutines.Start(FlickerLight(CollectedLight)) as IEnumerator; state = LightState.On; stateTimer = Clock.Time + Duration - StartFlickerAt - UnityEngine.Random.Range(0, 5f); } break; case LightState.On: if (stateTimer < Clock.Time) { EEA_MelonCoroutines.Stop(coroutine); CollectedLight.light.ChangeIntensity(CollectedLight.originalIntensity); Destroy(this); } break; } }