private static void ApplyEffect(Effect effect) { float timeScale = 1f; switch (effect) { case Effect.Tutorial_WaitingForFirstAttack: case Effect.Tutorial_WaitingForComboWindow: case Effect.TutorialVillage_WaitingForSetupWaypoint: case Effect.Hero_Intro: case Effect.Window_GameMenu: case Effect.Window_Map: case Effect.SecondChance: timeScale = 0f; break; case Effect.Combo_SuperSelf: timeScale = .3f; break; case Effect.SecondChance_AfterEffect: timeScale = .1f; break; case Effect.SecondChance_AfterEffect_2: timeScale = .3f; break; case Effect.SecondChance_AfterEffect_3: timeScale = .6f; break; case Effect.Combo_Slowdown: timeScale = .1f; break; case Effect.Player_Dead: timeScale = 5f; break; } if (timeScale == 0f) { //GameHandler.FootstepsSoundPause(); } else { //GameHandler.FootstepsSoundResume(); } V_TimeScaleManager.timeScale = timeScale; V_Object.SetAllDeltaTimeModifier(timeScale); }
private static void UpdateTimeScale() { // Get highest priority effect if (activeEffectsList.Count <= 0) { // No effects //Debug.Log("TimeScale Effect: "+"None"+", "+"1"); //GameHandler.FootstepsSoundResume(); timeScale = 1f; V_Object.SetAllDeltaTimeModifier(timeScale); } else { // Sort by priority for (int i = 0; i < activeEffectsList.Count; i++) { for (int j = i + 1; j < activeEffectsList.Count; j++) { if (GetEffectPriority(activeEffectsList[j]) > GetEffectPriority(activeEffectsList[i])) { Effect tmp = activeEffectsList[i]; activeEffectsList[i] = activeEffectsList[j]; activeEffectsList[j] = tmp; } } } ApplyEffect(activeEffectsList[0]); } // Update individual time foreach (TimeType en in System.Enum.GetValues(typeof(TimeType))) { deltaTimeModifierDic[en] = 1f; } if (HasEffect(Effect.Hero_Intro) || HasEffect(Effect.Window_GameMenu) || HasEffect(Effect.Window_Map)) { deltaTimeModifierDic[TimeType.Combo_SuperSelfTimer] = 0f; deltaTimeModifierDic[TimeType.Combo_RefreshTimer] = 0f; } if (HasEffect(Effect.Window_GameMenu) || HasEffect(Effect.Window_Map)) { deltaTimeModifierDic[TimeType.Hero_Intro] = 0f; } }