| using System; | 
| using System.Collections.Generic; | 
| using DG.Tweening; | 
| using UnityEngine; | 
|   | 
| public class BattleTweenMgr | 
| { | 
|     private BattleField battleField; | 
|   | 
|     private float speedRatio => battleField.speedRatio; | 
|   | 
|     private List<Tween> tweenList = new List<Tween>(); | 
|   | 
|     public void Init(BattleField _battleField) | 
|     { | 
|         Release(); | 
|         battleField = _battleField; | 
|     } | 
|   | 
|     public void PauseGame() | 
|     { | 
|         foreach (var tween in tweenList) | 
|         { | 
|             if (tween != null && !tween.IsComplete()) | 
|             { | 
|                 tween.Pause(); | 
|             } | 
|         } | 
|     } | 
|   | 
|     public void ResumeGame() | 
|     { | 
|         foreach (var tween in tweenList) | 
|         { | 
|             if (tween != null && !tween.IsComplete()) | 
|             { | 
|                 tween.Play(); | 
|             } | 
|         } | 
|     } | 
|   | 
|     public void OnPlayTween(Tween tween) | 
|     { | 
|         if (tween == null || tween.IsComplete()) | 
|         { | 
|             return; | 
|         } | 
|   | 
|         tweenList.Add(tween); | 
|         tween.timeScale = speedRatio; | 
|         tween.onComplete += () => | 
|         {  | 
|             tweenList.Remove(tween); | 
|         }; | 
|   | 
|         tween.Play(); | 
|     } | 
|   | 
|     public void OnKillTween(Tween tween) | 
|     { | 
|         tween.Kill(); | 
|         if (tween != null && tweenList.Contains(tween)) | 
|         { | 
|             tweenList.Remove(tween); | 
|         } | 
|     } | 
|   | 
|     public void HaveRest() | 
|     { | 
|         foreach (var tween in tweenList) | 
|         { | 
|             if (tween != null && !tween.IsComplete()) | 
|             { | 
|                 tween.Kill(); | 
|             } | 
|         } | 
|         tweenList.Clear(); | 
|     } | 
|   | 
|     public void Release() | 
|     { | 
|         foreach (var tween in tweenList) | 
|         { | 
|             if (tween != null && !tween.IsComplete()) | 
|             { | 
|                 tween.Kill(); | 
|             } | 
|         } | 
|         tweenList.Clear(); | 
|     } | 
|   | 
|     public void SetSpeedRatio(float ratio) | 
|     { | 
|         foreach (var tween in tweenList) | 
|         { | 
|             if (tween != null && !tween.IsComplete()) | 
|             { | 
|                 tween.timeScale = speedRatio; | 
|             } | 
|         } | 
|     } | 
| } |