IEnumerator PlayerDeathSequence() { MomentumManager.ResetMomentum(); float fadeOutCompleteTime = Time.time + playerDeathFadeScreenTimer; while (Time.time < fadeOutCompleteTime) { float timeRemaining = fadeOutCompleteTime - Time.time; float percentageComplete = timeRemaining / playerDeathFadeScreenTimer; Color fadeColor = FadeScreen.color; fadeColor.a = Mathf.Lerp(1f, 0f, percentageComplete); FadeScreen.color = fadeColor; yield return(null); } Color finalFadeColor = FadeScreen.color; finalFadeColor.a = 1f; FadeScreen.color = finalFadeColor; MuteAllEmitters(); GlobalEventEmitter.OnGameStateEvent(GlobalConstants.GameStateEvents.PlayerDied); UnmuteAllEmitters(); playerTransform.position = currentlyActiveLevel.SpawnPoint.position; yield return(new WaitForSeconds(3f)); float fadeBackTimer = playerDeathFadeScreenTimer / 2f; float fadeBackCompleteTime = Time.time + fadeBackTimer; // TODO: move this to dedicated scene-change logic SceneManager.LoadScene(SceneManager.GetActiveScene().name); GlobalEventEmitter.OnGameStateEvent(GlobalConstants.GameStateEvents.NewSceneLoaded); EntityEmitter playerEntityEmitter = Player.GetComponent <EntityEmitter>(); playerEntityEmitter.isMuted = false; playerEntityEmitter.EmitEvent(EntityEvents.Respawning); while (Time.time < fadeBackCompleteTime) { float timeRemaining = fadeBackCompleteTime - Time.time; float percentageComplete = timeRemaining / fadeBackTimer; Color fadeColor = FadeScreen.color; fadeColor.a = Mathf.Lerp(0f, 1f, percentageComplete); FadeScreen.color = fadeColor; yield return(null); } }
private void OnDead() { if (momentumValue == 0) { Debug.LogError("Momentum value is zero."); } GlobalEventEmitter.OnGameStateEvent(GlobalConstants.GameStateEvents.EntityDied, momentumValue.ToString()); }
public void AddMomentum(int quantityToAdd) { ProgressTowardNextMomentum += quantityToAdd; while (ProgressTowardNextMomentum >= MomentumRequiredForNextPoint) { ProgressTowardNextMomentum -= MomentumRequiredForNextPoint; UnassignedAvailableMomentumPoints++; GlobalEventEmitter.OnGameStateEvent(GlobalConstants.GameStateEvents.NewMomentumPoint); } }
public static void RemoveLastMomentumPoint() { ClearProgressTowardNextMomentum(); if (CurrentMomentumData.AssignedMomentumTracker.Count <= 0f) { Debug.Log("Trying to undo last momentum assignment with no momentum assigned."); return; } HardwareType lastHardwareTypeIncremented = CurrentMomentumData.AssignedMomentumTracker.Pop(); CurrentMomentumData.HardwareTypeToMomentumMap[lastHardwareTypeIncremented]--; OnMomentumUpdated(CurrentMomentumData); GlobalEventEmitter.OnGameStateEvent(GlobalConstants.GameStateEvents.MomentumLost); }
public static void DiscoverHardware(HardwareType hardwareType) { GlobalEventEmitter.OnGameStateEvent(GlobalConstants.GameStateEvents.HardwareDiscovered, hardwareType.ToString()); Inventory.ObtainHardwareType(hardwareType); }