using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Linq; public class SkillBubbleManager : MonoBehaviour { public List mListSkill = new List(10); Queue mQSkillDataPool = new Queue(10); public void Initialize() { for(int i=0; i<10; ++i) { mQSkillDataPool.Enqueue(new SkillData()); } } public void SpawnSkill(BattleCharacter character) { var existSkill = GetExistSkill(character); if(null != existSkill) { existSkill.OnStack(); return; } var newSkill = GetNewSkillData(); newSkill.Set(character); mListSkill.Add(newSkill); } public void RemoveSkill(int idx) { mListSkill.RemoveAt(idx); } SkillData GetExistSkill(BattleCharacter character) { var skill = mListSkill.FirstOrDefault((item) => item.Owner == character); if (null == skill) return null; if (false == skill.IsStackable()) return null; return skill; } SkillData GetNewSkillData() { if (mQSkillDataPool.Count <= 0) { mQSkillDataPool.Enqueue(new SkillData()); } return mQSkillDataPool.Dequeue(); } }