BossFocusAnim.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. using System;
  2. using System.Collections;
  3. using DG.Tweening;
  4. using ExtensionMethods;
  5. using UnityEngine;
  6. [RequireComponent(typeof(BoxCollider2D))]
  7. public class BossFocusAnim : BaseBehaviour
  8. {
  9. private void Awake()
  10. {
  11. this._boxCollider2D = base.GetComponent<BoxCollider2D>();
  12. this._loopForTest = false;
  13. this._effect = UnityEngine.Object.Instantiate<GameObject>(this._effect);
  14. this._effect.SetActive(false);
  15. }
  16. private void OnTriggerEnter2D(Collider2D collider)
  17. {
  18. if (!collider.CompareTag("Player") || !this._isFirstTime)
  19. {
  20. return;
  21. }
  22. base.StartCoroutine(this.DoFocusCoroutine());
  23. }
  24. private IEnumerator DoFocusCoroutine()
  25. {
  26. this._isFirstTime = false;
  27. while (!R.Enemy.Boss)
  28. {
  29. yield return null;
  30. }
  31. GameObject boss = R.Enemy.Boss;
  32. R.Mode.EnterMode(Mode.AllMode.Story);
  33. R.SceneData.CanAIRun = false;
  34. while (!R.Ui.bossHpBar.Visible)
  35. {
  36. yield return null;
  37. }
  38. R.Ui.HideUI(false);
  39. R.Ui.bossHpBar.FadeTo(0f, 0.5f);
  40. R.Audio.PlayEffect(this._audioEffectId, null);
  41. do
  42. {
  43. R.Camera.Controller.IsFollowPivot = false;
  44. CameraFilterPack_Colors_Brightness brightness = CameraFilterUtils.Create<CameraFilterPack_Colors_Brightness>(null);
  45. brightness._Brightness = 1f;
  46. CameraFilterPack_Colors_Brightness.ChangeBrightness = 1f;
  47. this.FadeBrightness(this._blackMaskAlpha, this._focusTime);
  48. yield return R.Camera.Controller.CameraMoveTo(boss.GetComponent<EnemyBaseHurt>().center.position, this._focusTime, this._focusEase);
  49. this._effect.SetActive(true);
  50. this._effect.transform.position = UICamera.mainCamera.ViewportToWorldPoint(Vector3.one * 0.5f);
  51. Animation animation = this._effect.GetComponent<Animation>();
  52. while (animation.isPlaying)
  53. {
  54. yield return null;
  55. }
  56. UnityEngine.Object.Destroy(this._effect);
  57. this.FadeBrightness(1f, this._backTime);
  58. yield return R.Camera.Controller.CameraMoveTo(R.Player.Transform.position.AddY(2.4f), this._backTime, this._backEase);
  59. yield return new WaitForSeconds(0.1f);
  60. CameraFilterUtils.Remove<CameraFilterPack_Colors_Brightness>(null);
  61. R.Camera.Controller.IsFollowPivot = true;
  62. }
  63. while (this._loopForTest);
  64. R.Ui.ShowUI(false);
  65. R.Ui.bossHpBar.FadeTo(1f, 0.5f);
  66. R.SceneData.CanAIRun = true;
  67. R.Mode.ExitMode(Mode.AllMode.Story);
  68. UnityEngine.Object.Destroy(base.gameObject);
  69. yield break;
  70. }
  71. private void FadeBrightness(float endValue, float duration)
  72. {
  73. DOTween.To(() => CameraFilterPack_Colors_Brightness.ChangeBrightness, delegate(float a)
  74. {
  75. CameraFilterPack_Colors_Brightness.ChangeBrightness = a;
  76. }, endValue, duration);
  77. }
  78. [SerializeField]
  79. private bool _loopForTest;
  80. [SerializeField]
  81. private float _focusTime = 2f;
  82. [SerializeField]
  83. private float _backTime = 2f;
  84. [SerializeField]
  85. private Ease _focusEase;
  86. [SerializeField]
  87. private Ease _backEase;
  88. [SerializeField]
  89. private float _blackMaskAlpha = 0.8f;
  90. [SerializeField]
  91. private GameObject _effect;
  92. [SerializeField]
  93. private int _audioEffectId;
  94. private bool _isFirstTime = true;
  95. private BoxCollider2D _boxCollider2D;
  96. }