61 lines
1.3 KiB
C#
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();
|
|
}
|
|
}
|