using System; using System.Collections; using DG.Tweening; using ExtensionMethods; using UnityEngine; [RequireComponent(typeof(BoxCollider2D))] public class BossFocusAnim : BaseBehaviour { private void Awake() { this._boxCollider2D = base.GetComponent<BoxCollider2D>(); this._loopForTest = false; this._effect = UnityEngine.Object.Instantiate<GameObject>(this._effect); this._effect.SetActive(false); } private void OnTriggerEnter2D(Collider2D collider) { if (!collider.CompareTag("Player") || !this._isFirstTime) { return; } base.StartCoroutine(this.DoFocusCoroutine()); } private IEnumerator DoFocusCoroutine() { this._isFirstTime = false; while (!R.Enemy.Boss) { yield return null; } GameObject boss = R.Enemy.Boss; R.Mode.EnterMode(Mode.AllMode.Story); R.SceneData.CanAIRun = false; while (!R.Ui.bossHpBar.Visible) { yield return null; } R.Ui.HideUI(false); R.Ui.bossHpBar.FadeTo(0f, 0.5f); R.Audio.PlayEffect(this._audioEffectId, null); do { R.Camera.Controller.IsFollowPivot = false; CameraFilterPack_Colors_Brightness brightness = CameraFilterUtils.Create<CameraFilterPack_Colors_Brightness>(null); brightness._Brightness = 1f; CameraFilterPack_Colors_Brightness.ChangeBrightness = 1f; this.FadeBrightness(this._blackMaskAlpha, this._focusTime); yield return R.Camera.Controller.CameraMoveTo(boss.GetComponent<EnemyBaseHurt>().center.position, this._focusTime, this._focusEase); this._effect.SetActive(true); this._effect.transform.position = UICamera.mainCamera.ViewportToWorldPoint(Vector3.one * 0.5f); Animation animation = this._effect.GetComponent<Animation>(); while (animation.isPlaying) { yield return null; } UnityEngine.Object.Destroy(this._effect); this.FadeBrightness(1f, this._backTime); yield return R.Camera.Controller.CameraMoveTo(R.Player.Transform.position.AddY(2.4f), this._backTime, this._backEase); yield return new WaitForSeconds(0.1f); CameraFilterUtils.Remove<CameraFilterPack_Colors_Brightness>(null); R.Camera.Controller.IsFollowPivot = true; } while (this._loopForTest); R.Ui.ShowUI(false); R.Ui.bossHpBar.FadeTo(1f, 0.5f); R.SceneData.CanAIRun = true; R.Mode.ExitMode(Mode.AllMode.Story); UnityEngine.Object.Destroy(base.gameObject); yield break; } private void FadeBrightness(float endValue, float duration) { DOTween.To(() => CameraFilterPack_Colors_Brightness.ChangeBrightness, delegate(float a) { CameraFilterPack_Colors_Brightness.ChangeBrightness = a; }, endValue, duration); } [SerializeField] private bool _loopForTest; [SerializeField] private float _focusTime = 2f; [SerializeField] private float _backTime = 2f; [SerializeField] private Ease _focusEase; [SerializeField] private Ease _backEase; [SerializeField] private float _blackMaskAlpha = 0.8f; [SerializeField] private GameObject _effect; [SerializeField] private int _audioEffectId; private bool _isFirstTime = true; private BoxCollider2D _boxCollider2D; }