using System;
|
using System.Collections.Generic;
|
using UnityEngine;
|
|
public class BattleEffectMgr : MonoBehaviour
|
{
|
private BattleField battleField;
|
|
private Dictionary<int, List<EffectPlayer>> effectDict = new Dictionary<int, List<EffectPlayer>>();
|
|
public void Init(BattleField _battleField)
|
{
|
battleField = _battleField;
|
}
|
|
public void PauseGame()
|
{
|
foreach (KeyValuePair<int, List<EffectPlayer>> kvPair in effectDict)
|
{
|
foreach (EffectPlayer effectPlayer in kvPair.Value)
|
{
|
if (effectPlayer != null)
|
{
|
effectPlayer.Pause();
|
}
|
}
|
}
|
}
|
|
public void ResumeGame()
|
{
|
foreach (KeyValuePair<int, List<EffectPlayer>> kvPair in effectDict)
|
{
|
foreach (EffectPlayer effectPlayer in kvPair.Value)
|
{
|
if (effectPlayer != null)
|
{
|
effectPlayer.Resume();
|
}
|
}
|
}
|
}
|
|
public EffectPlayer PlayEffect(int ObjID, int effectId, Transform parent)
|
{
|
if (!effectDict.ContainsKey(effectId))
|
{
|
effectDict[effectId] = new List<EffectPlayer>();
|
}
|
|
EffectPlayer effectPlayer = EffectPlayer.Create(effectId, parent);
|
effectPlayer.onDestroy = OnEffectDestroy;
|
if (effectPlayer != null)
|
{
|
effectDict[effectId].Add(effectPlayer);
|
}
|
return effectPlayer;
|
}
|
|
public void RemoveEffect(int effectId, EffectPlayer effectPlayer)
|
{
|
List<EffectPlayer> effectPlayers = null;
|
|
if (effectDict.TryGetValue(effectId, out effectPlayers))
|
{
|
effectPlayers.Remove(effectPlayer);
|
GameObject.DestroyImmediate(effectPlayer.gameObject);
|
effectPlayer = null;
|
}
|
else
|
{
|
Debug.LogError("could not find effect in list, effectid : " + effectId);
|
}
|
}
|
|
protected void OnEffectDestroy(EffectPlayer effectPlayer)
|
{
|
if (effectDict.ContainsKey(effectPlayer.effectId))
|
{
|
effectDict[effectPlayer.effectId].Remove(effectPlayer);
|
if (effectDict[effectPlayer.effectId].Count == 0)
|
{
|
effectDict.Remove(effectPlayer.effectId);
|
}
|
}
|
}
|
}
|