IdleGirl/Assets/2_Codes/Battle/SkillBubbleManager.cs

61 lines
1.3 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
public class SkillBubbleManager : MonoBehaviour
{
public List<SkillData> mListSkill = new List<SkillData>(10);
Queue<SkillData> mQSkillDataPool = new Queue<SkillData>(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();
}
}