diff options
author | chai <215380520@qq.com> | 2024-05-20 22:36:58 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2024-05-20 22:36:58 +0800 |
commit | a22c505984697881f5f911a165ee022087b69e09 (patch) | |
tree | d3c030aef1ae9b8a01c889dd2902bb1e3324e72b /Thronefall_v1.0/Decompile/NightscoreUI.cs | |
parent | 4a4cc82d069b26bc4d4532e73860f86b211ca239 (diff) |
Diffstat (limited to 'Thronefall_v1.0/Decompile/NightscoreUI.cs')
-rw-r--r-- | Thronefall_v1.0/Decompile/NightscoreUI.cs | 295 |
1 files changed, 295 insertions, 0 deletions
diff --git a/Thronefall_v1.0/Decompile/NightscoreUI.cs b/Thronefall_v1.0/Decompile/NightscoreUI.cs new file mode 100644 index 0000000..7150c48 --- /dev/null +++ b/Thronefall_v1.0/Decompile/NightscoreUI.cs @@ -0,0 +1,295 @@ +using System.Collections; +using I2.Loc; +using MPUIKIT; +using TMPro; +using UnityEngine; + +public class NightscoreUI : MonoBehaviour +{ + public GameObject nightScorePanel; + + public TextMeshProUGUI baseScore; + + public TextMeshProUGUI timeBonus; + + public TextMeshProUGUI protectionPercentage; + + public TextMeshProUGUI protectionScore; + + public TextMeshProUGUI overallScore; + + public AudioSource pointSFXSource; + + [Header("ANIMATION")] + public MPImage backgroundImage; + + public RectTransform content; + + public RectTransform nightSurviveText; + + public RectTransform nightSurviveNumber; + + public RectTransform timeText; + + public RectTransform timeNumber; + + public RectTransform protectionText; + + public RectTransform protectionNumber; + + public RectTransform overallScoreBG; + + public RectTransform overallScoreNumber; + + public AnimationCurve popCurve; + + public AnimationCurve expandCurve; + + public AnimationCurve bumpCurve; + + public AnimationCurve simpleQuad; + + public static NightscoreUI instance; + + private float initialWaitTime = 3f; + + private float completeWaitTime = 3f; + + private float buildUpSFXVol = 0.8f; + + private float clock; + + private bool shown; + + private void Awake() + { + instance = this; + } + + private void Start() + { + nightScorePanel.SetActive(value: false); + ScoreManager.Instance.OnNightScoreAdd.AddListener(ShowNightScore); + UIFrameManager.instance.onFrameOpen.AddListener(StopPointFillSoundOnPause); + } + + private void StopPointFillSoundOnPause() + { + pointSFXSource.Stop(); + } + + public void ShowNightScore(int _baseScore, int _timeBonus, float _protectionPercentage, int _protectionBonus) + { + if (EnemySpawner.instance.Wavenumber < EnemySpawner.instance.waves.Count - 1) + { + shown = true; + StopAllCoroutines(); + clock = 0f; + StartCoroutine(PlayPopUpAnimation(_baseScore, _timeBonus, _protectionPercentage, _protectionBonus)); + } + } + + public void HideNightScore() + { + shown = false; + pointSFXSource.Stop(); + StopAllCoroutines(); + StartCoroutine(PlayHideAnimation()); + } + + private IEnumerator PlayPopUpAnimation(int basescore, int timebonus, float protectionpercent, int protectionbonus) + { + nightScorePanel.SetActive(value: true); + Vector2 contentSizeDelta = content.sizeDelta; + int currentScore = ScoreManager.Instance.CurrentScore - basescore - timebonus - protectionbonus; + int nextScore = currentScore; + baseScore.text = "+" + basescore; + timeBonus.text = "+" + timebonus; + protectionPercentage.text = LocalizationManager.GetTranslation("Menu/Realm") + " " + Mathf.RoundToInt(protectionpercent * 100f) + "% " + LocalizationManager.GetTranslation("Menu/Protected"); + protectionScore.text = "+" + protectionbonus; + overallScore.text = currentScore.ToString(); + contentSizeDelta.y = 0f; + content.sizeDelta = contentSizeDelta; + nightSurviveText.localScale = Vector3.zero; + nightSurviveNumber.localScale = Vector3.zero; + timeText.localScale = Vector3.zero; + timeNumber.localScale = Vector3.zero; + protectionText.localScale = Vector3.zero; + protectionNumber.localScale = Vector3.zero; + overallScoreBG.localScale = Vector3.zero; + overallScoreNumber.localScale = Vector3.zero; + yield return new WaitForSeconds(initialWaitTime); + float animTime2 = 0.5f; + float timer2 = 0f; + while (timer2 < animTime2) + { + timer2 += Time.deltaTime; + overallScoreBG.localScale = Vector3.one * popCurve.Evaluate(Mathf.InverseLerp(0f, animTime2, timer2)); + overallScoreNumber.localScale = Vector3.one * popCurve.Evaluate(Mathf.InverseLerp(0f, animTime2, timer2)); + yield return null; + } + overallScoreBG.localScale = Vector3.one; + overallScoreNumber.localScale = Vector3.one; + yield return new WaitForSeconds(0.25f); + pointSFXSource.PlayOneShot(ThronefallAudioManager.Instance.audioContent.PointScreenBuildB, buildUpSFXVol); + animTime2 = 0.5f; + timer2 = 0f; + while (timer2 < animTime2) + { + timer2 += Time.deltaTime; + content.sizeDelta = contentSizeDelta + Vector2.up * 55f * expandCurve.Evaluate(Mathf.InverseLerp(0f, animTime2, timer2)); + yield return null; + } + content.sizeDelta = contentSizeDelta + Vector2.up * 55f; + contentSizeDelta = content.sizeDelta; + pointSFXSource.PlayOneShot(ThronefallAudioManager.Instance.audioContent.PointScreenBuildC, buildUpSFXVol); + animTime2 = 0.5f; + timer2 = 0f; + while (timer2 < animTime2) + { + timer2 += Time.deltaTime; + nightSurviveText.localScale = Vector3.one * popCurve.Evaluate(Mathf.InverseLerp(0f, animTime2, timer2)); + nightSurviveNumber.localScale = Vector3.one * popCurve.Evaluate(Mathf.InverseLerp(0f, animTime2, timer2)); + yield return null; + } + nightSurviveText.localScale = Vector3.one; + nightSurviveNumber.localScale = Vector3.one; + pointSFXSource.PlayOneShot(ThronefallAudioManager.Instance.audioContent.PointScreenBuildB, buildUpSFXVol); + animTime2 = 0.5f; + timer2 = 0f; + while (timer2 < animTime2) + { + timer2 += Time.deltaTime; + content.sizeDelta = contentSizeDelta + Vector2.up * 30f * expandCurve.Evaluate(Mathf.InverseLerp(0f, animTime2, timer2)); + yield return null; + } + content.sizeDelta = contentSizeDelta + Vector2.up * 30f; + contentSizeDelta = content.sizeDelta; + pointSFXSource.PlayOneShot(ThronefallAudioManager.Instance.audioContent.PointScreenBuildC, buildUpSFXVol); + animTime2 = 0.5f; + timer2 = 0f; + while (timer2 < animTime2) + { + timer2 += Time.deltaTime; + protectionText.localScale = Vector3.one * popCurve.Evaluate(Mathf.InverseLerp(0f, animTime2, timer2)); + protectionNumber.localScale = Vector3.one * popCurve.Evaluate(Mathf.InverseLerp(0f, animTime2, timer2)); + yield return null; + } + protectionText.localScale = Vector3.one; + protectionNumber.localScale = Vector3.one; + pointSFXSource.PlayOneShot(ThronefallAudioManager.Instance.audioContent.PointScreenBuildB, buildUpSFXVol); + animTime2 = 0.5f; + timer2 = 0f; + while (timer2 < animTime2) + { + timer2 += Time.deltaTime; + content.sizeDelta = contentSizeDelta + Vector2.up * 30f * expandCurve.Evaluate(Mathf.InverseLerp(0f, animTime2, timer2)); + yield return null; + } + content.sizeDelta = contentSizeDelta + Vector2.up * 30f; + _ = content.sizeDelta; + pointSFXSource.PlayOneShot(ThronefallAudioManager.Instance.audioContent.PointScreenBuildC, buildUpSFXVol); + animTime2 = 0.5f; + timer2 = 0f; + while (timer2 < animTime2) + { + timer2 += Time.deltaTime; + timeText.localScale = Vector3.one * popCurve.Evaluate(Mathf.InverseLerp(0f, animTime2, timer2)); + timeNumber.localScale = Vector3.one * popCurve.Evaluate(Mathf.InverseLerp(0f, animTime2, timer2)); + yield return null; + } + timeText.localScale = Vector3.one; + timeNumber.localScale = Vector3.one; + pointSFXSource.Play(); + animTime2 = 1.5f; + timer2 = 0f; + nextScore += basescore + protectionbonus + timebonus; + while (timer2 < animTime2) + { + timer2 += Time.deltaTime; + overallScore.text = Mathf.RoundToInt(Mathf.Lerp(currentScore, nextScore, Mathf.InverseLerp(0f, animTime2, timer2))).ToString(); + yield return null; + } + currentScore = nextScore; + overallScore.text = currentScore.ToString(); + pointSFXSource.Stop(); + pointSFXSource.PlayOneShot(ThronefallAudioManager.Instance.audioContent.PointLockInMinor); + animTime2 = 0.5f; + timer2 = 0f; + while (timer2 < animTime2) + { + timer2 += Time.deltaTime; + overallScoreBG.localScale = Vector3.one * bumpCurve.Evaluate(Mathf.InverseLerp(0f, animTime2, timer2)); + yield return null; + } + overallScoreBG.localScale = Vector3.one; + yield return new WaitForSeconds(completeWaitTime); + HideNightScore(); + } + + private IEnumerator PlayHideAnimation() + { + pointSFXSource.PlayOneShot(ThronefallAudioManager.Instance.audioContent.PointScreenBuildB, buildUpSFXVol); + Vector2 contentSizeDelta3 = content.sizeDelta; + nightSurviveText.localScale = Vector3.one; + nightSurviveNumber.localScale = Vector3.one; + timeText.localScale = Vector3.one; + timeNumber.localScale = Vector3.one; + protectionText.localScale = Vector3.one; + protectionNumber.localScale = Vector3.one; + overallScoreBG.localScale = Vector3.one; + overallScoreNumber.localScale = Vector3.one; + timeText.localScale = Vector3.zero; + timeNumber.localScale = Vector3.zero; + float animTime4 = 0.4f; + float timer4 = 0f; + while (timer4 < animTime4) + { + timer4 += Time.deltaTime; + content.sizeDelta = contentSizeDelta3 - Vector2.up * 30f * expandCurve.Evaluate(Mathf.InverseLerp(0f, animTime4, timer4)); + yield return null; + } + content.sizeDelta = contentSizeDelta3 - Vector2.up * 30f; + contentSizeDelta3 = content.sizeDelta; + protectionText.localScale = Vector3.zero; + protectionNumber.localScale = Vector3.zero; + animTime4 = 0.4f; + timer4 = 0f; + while (timer4 < animTime4) + { + timer4 += Time.deltaTime; + content.sizeDelta = contentSizeDelta3 - Vector2.up * 30f * expandCurve.Evaluate(Mathf.InverseLerp(0f, animTime4, timer4)); + yield return null; + } + content.sizeDelta = contentSizeDelta3 - Vector2.up * 30f; + contentSizeDelta3 = content.sizeDelta; + nightSurviveText.localScale = Vector3.zero; + nightSurviveNumber.localScale = Vector3.zero; + animTime4 = 0.4f; + timer4 = 0f; + while (timer4 < animTime4) + { + timer4 += Time.deltaTime; + if (Mathf.InverseLerp(0f, animTime4, timer4) > 0.425f) + { + backgroundImage.enabled = false; + } + content.sizeDelta = contentSizeDelta3 - Vector2.up * 55f * expandCurve.Evaluate(Mathf.InverseLerp(0f, animTime4, timer4)); + yield return null; + } + content.sizeDelta = contentSizeDelta3 - Vector2.up * 55f; + backgroundImage.enabled = true; + animTime4 = 0.2f; + timer4 = 0f; + while (timer4 < animTime4) + { + timer4 += Time.deltaTime; + overallScoreNumber.localScale = Vector3.one * simpleQuad.Evaluate(Mathf.InverseLerp(animTime4, 0f, timer4)); + overallScoreBG.localScale = Vector3.one * simpleQuad.Evaluate(Mathf.InverseLerp(animTime4, 0f, timer4)); + yield return null; + } + overallScoreNumber.localScale = Vector3.zero; + overallScoreBG.localScale = Vector2.zero; + nightScorePanel.SetActive(value: false); + } +} |