protected static void AddLocalizedText(LevelFailedTextEffect levelFailedTextEffect) { bool wasActive = levelFailedTextEffect.gameObject.activeSelf; levelFailedTextEffect.gameObject.SetActive(false); RectTransform transform = (RectTransform)levelFailedTextEffect.transform; transform.sizeDelta = new Vector2(12, transform.sizeDelta.y); Transform textTransform = levelFailedTextEffect.transform.Find("Text"); if (!textTransform) { Plugin.Log.Error($"Could not find 'Text' transform on '{levelFailedTextEffect}'"); return; } TextMeshPro text = textTransform.GetComponent <TextMeshPro>(); text.fontStyle |= FontStyles.UpperCase; text.lineSpacing = -40; LocalizedTextMeshPro localizedText = textTransform.gameObject.AddComponent <LocalizedTextMeshPro>(); localizedText.SetField <LocalizedTextComponent <TextMeshPro>, TextMeshPro>("localizedComponent", text); localizedText.Key = "LEVEL_FAILED"; levelFailedTextEffect.gameObject.SetActive(wasActive); }
public TextUpdater(LevelFailedTextEffect effect, IGameEnergyCounter energyCounter, PluginConfig config , GameplayModifiers mods, ListBuilder builder, SiraLog log) { _config = config; _effect = effect; _energyCounter = energyCounter; _builder = builder; _mods = mods; _log = log; }
public void OnLevelFailed() { if (multiplayerSessionManager != null && multiplayerSessionManager.isConnected && !_lastStandingCheckActive) { StartCoroutine(CheckLastStanding()); } if (LevelFailedEffect == null) { LevelFailedEffect = Resources.FindObjectsOfTypeAll <LevelFailedTextEffect>().FirstOrDefault(); } //Logger.Trace("BailOutController ShowLevelFailed()"); //BS_Utils.Gameplay.ScoreSubmission.DisableSubmission(Plugin.PluginName); Don't need this here UpdateFailText($"Bailed Out {numFails} time{(numFails != 1 ? "s" : "")}"); try { if (!Configuration.instance.RepeatFailEffect && numFails > 1) { return; // Don't want to repeatedly show fail effect, stop here. } //Logger.Debug("Showing fail effects"); if (!isHiding && Configuration.instance.ShowFailEffect && LevelFailedEffect != null) { LevelFailedEffect.ShowEffect(); if (Configuration.instance.FailEffectDuration > 0) { StartCoroutine(hideLevelFailed()); } else { isHiding = true; // Fail text never hides, so don't try to keep showing it } } if (Configuration.instance.ShowFailAnimation && LevelFailedEnergyBarAnimation != null) { // Cancel any in-progress fail animation before playing a new animation, to prevent missing an animation when failing multiple times in quick succession. LevelFailedEnergyBarAnimation.Stop(); LevelFailedEnergyBarAnimation.Play(); } } catch (Exception ex) { Logger.log.Error($"Exception trying to show the fail Effects: {ex.Message}"); Logger.log.Debug(ex); } }
public void Start() { Logger.log?.Debug("BailOutController Start()"); if (BS_Utils.Gameplay.ScoreSubmission.Disabled) { Logger.log?.Warn($"ScoreSubmission already disabled by {BS_Utils.Gameplay.ScoreSubmission.ModString}"); } if (IsEnabled) { Logger.log.Info("BailOutMode enabled"); } if (multiplayerSessionManager == null) { Logger.log?.Warn($"connectedPlayerManager is null."); } LevelFailedEffect = Resources.FindObjectsOfTypeAll <LevelFailedTextEffect>().FirstOrDefault(); if (LevelFailedEffect == null) { Logger.log?.Warn("Couldn't find LevelFailedTextEffect"); } LevelFailedEnergyBarAnimation = (PlayableDirector)AccessTools.Field(typeof(GameEnergyUIPanel), "_playableDirector").GetValue(GameObject.FindObjectOfType <GameEnergyUIPanel>()); }
public static void Postfix(LevelFailedTextEffect ____levelFailedTextEffect) { AddLocalizedText(____levelFailedTextEffect); }