123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- using System;
- using System.Collections;
- using System.Text.RegularExpressions;
- using Colorful;
- using DG.Tweening;
- using DG.Tweening.Core;
- using DG.Tweening.Plugins.Options;
- using ExtensionMethods;
- using UnityEngine;
- public class UITerminalController : MonoBehaviour
- {
- private YieldInstruction Open(Color? color)
- {
- R.Mode.EnterMode(Mode.AllMode.UI);
- R.Ui.Pause.Enabled = false;
- this.Clear();
- if (color != null)
- {
- UILabel console = this._console;
- console.text += color.Value.ToBBCode();
- }
- this._panel.gameObject.SetActive(true);
- CameraFilterUtils.Create<CameraFilterPack_TV_80>(R.Ui.CameraGO);
- AnalogTV analogTV = R.Ui.CameraGO.AddComponent<AnalogTV>();
- analogTV.Shader = Shader.Find("Hidden/Colorful/Analog TV");
- analogTV.NoiseIntensity = 1f;
- analogTV.ScanlinesIntensity = 0f;
- analogTV.ScanlinesCount = 696;
- analogTV.Distortion = 0.18f;
- analogTV.CubicDistortion = 0f;
- analogTV.Scale = 1.02f;
- return null;
- }
- public YieldInstruction OpenWithoutAnim(Color? color = null)
- {
- this.Open(color);
- R.Camera.Camera.enabled = false;
- return null;
- }
- public YieldInstruction OpenWithAnim(Color? color = null)
- {
- this.Open(color);
- AnalogTV analogTV = R.Ui.CameraGO.GetComponent<AnalogTV>();
- analogTV.Scale = 0f;
- R.Audio.PlayEffect(358, null);
- return DOTween.To(() => analogTV.Scale, delegate(float scale)
- {
- analogTV.Scale = scale;
- }, 1.02f, 0.5f).OnComplete(delegate
- {
- R.Camera.Camera.enabled = false;
- }).SetUpdate(true).WaitForCompletion();
- }
- private YieldInstruction Close()
- {
- CameraFilterUtils.Remove<CameraFilterPack_TV_80>(R.Ui.CameraGO);
- UnityEngine.Object.Destroy(R.Ui.CameraGO.GetComponent<AnalogTV>());
- this._panel.gameObject.SetActive(false);
- R.Ui.Pause.Enabled = true;
- R.Mode.ExitMode(Mode.AllMode.UI);
- return null;
- }
- public YieldInstruction CloseWithoutAnim()
- {
- R.Camera.Camera.enabled = true;
- this.Close();
- return null;
- }
- public YieldInstruction CloseWithAnim()
- {
- AnalogTV analogTV = R.Ui.CameraGO.GetComponent<AnalogTV>();
- R.Audio.PlayEffect(359, null);
- R.Camera.Camera.enabled = true;
- return DOTween.To(() => analogTV.Scale, delegate(float scale)
- {
- analogTV.Scale = scale;
- }, 0f, 0.5f).SetUpdate(true).OnComplete(delegate
- {
- this.CloseWithoutAnim();
- }).WaitForCompletion();
- }
- public Coroutine Print(string text, float interval = 0.1f)
- {
- base.StopCoroutine(this.PrintCoroutine(text, interval, null, true));
- return base.StartCoroutine(this.PrintCoroutine(text, interval, null, true));
- }
- public Coroutine Println(string text = "", float interval = 0.1f)
- {
- base.StopCoroutine(this.PrintCoroutine(text, interval, "\n", true));
- return base.StartCoroutine(this.PrintCoroutine(text, interval, "\n", true));
- }
- public YieldInstruction PrintShellPrompt()
- {
- this.PrintInstantly("$ ~ ");
- return null;
- }
- public YieldInstruction PrintInstantly(string text)
- {
- UILabel console = this._console;
- console.text += text;
- return null;
- }
- public YieldInstruction PrintlnInstantly(string text = "")
- {
- UILabel console = this._console;
- console.text = console.text + text + "\n";
- return null;
- }
- public YieldInstruction Clear()
- {
- this._console.text = string.Empty;
- return null;
- }
- private IEnumerator PrintCoroutine(string text, float interval, string end = null, bool withAudio = true)
- {
- Regex colorBBCode = new Regex("\\[([0-9a-fA-F]{6}|-)\\]");
- for (int i = 0; i < text.Length; i++)
- {
- Match match = colorBBCode.Match(text, i);
- if (match.Index == i)
- {
- UILabel console = this._console;
- console.text += match.Value;
- i += match.Length;
- }
- if (i < text.Length)
- {
- UILabel console2 = this._console;
- console2.text += text[i];
- if (withAudio)
- {
- R.Audio.PlayEffect(347, null);
- }
- }
- yield return WorldTime.WaitForSecondsIgnoreTimeScale(interval / UILanguage.CurrentLanguage.TypeSpeed);
- }
- if (!string.IsNullOrEmpty(end))
- {
- UILabel console3 = this._console;
- console3.text += end;
- if (withAudio)
- {
- R.Audio.PlayEffect(348, null);
- }
- }
- yield break;
- }
- public YieldInstruction ShowProgressBar(float defaultValue = 0f)
- {
- this._progressBar.value = defaultValue;
- return DOTween.To(() => this._progressBar.alpha, delegate(float alpha)
- {
- this._progressBar.alpha = alpha;
- }, 1f, 1f).SetUpdate(true).WaitForCompletion();
- }
- public YieldInstruction HideProgressBar()
- {
- return DOTween.To(() => this._progressBar.alpha, delegate(float alpha)
- {
- this._progressBar.alpha = alpha;
- }, 0f, 1f).SetUpdate(true).OnComplete(delegate
- {
- this._progressBar.value = 0f;
- }).WaitForCompletion();
- }
- public YieldInstruction SetProgressBarValue(float value)
- {
- this._progressBar.value = value;
- return null;
- }
- public YieldInstruction SetProgressBarValueWithAnim(float endValue, float duration)
- {
- return DOTween.To(() => this._progressBar.value, delegate(float value)
- {
- this._progressBar.value = value;
- }, endValue, duration).SetUpdate(true).WaitForCompletion();
- }
- public YieldInstruction ShowTexture(Texture texture, float scale = 1f, float alpha = 1f)
- {
- this._texture.mainTexture = texture;
- this.SetTextureSize(scale);
- this._texture.alpha = 0f;
- return DOTween.To(() => this._texture.alpha, delegate(float a)
- {
- this._texture.alpha = a;
- }, alpha, 1f).SetUpdate(true).WaitForCompletion();
- }
- public YieldInstruction ShowTextureFullScreen(Texture texture)
- {
- this._texture.mainTexture = texture;
- this.SetTextureFullScreen();
- this._texture.alpha = 0f;
- return DOTween.To(() => this._texture.alpha, delegate(float alpha)
- {
- this._texture.alpha = alpha;
- }, 1f, 1f).SetUpdate(true).WaitForCompletion();
- }
- public void SetTextureSize(float scale = 1f)
- {
- Texture mainTexture = this._texture.mainTexture;
- Vector2 a = new Vector2((float)mainTexture.width, (float)mainTexture.height) * R.Ui.CameraGO.GetComponent<Camera>().orthographicSize;
- a *= scale;
- this._texture.SetDimensions(Mathf.RoundToInt(a.x), Mathf.RoundToInt(a.y));
- }
- public void SetTextureFullScreen()
- {
- Vector2 vector = this._panel.GetViewSize() * R.Ui.CameraGO.GetComponent<Camera>().orthographicSize;
- this._texture.SetDimensions(Mathf.RoundToInt(vector.x), Mathf.RoundToInt(vector.y));
- }
- public YieldInstruction HideTexture()
- {
- return DOTween.To(() => this._texture.alpha, delegate(float alpha)
- {
- this._texture.alpha = alpha;
- }, 0f, 1f).SetUpdate(true).WaitForCompletion();
- }
- public const string ShellPrompt = "$ ~ ";
- [SerializeField]
- private UILabel _console;
- [SerializeField]
- private UIProgressBar _progressBar;
- [SerializeField]
- private UITexture _texture;
- [SerializeField]
- private UIPanel _panel;
- }
|