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; 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
} 
 |