2023-11-01 07:39:12 +00:00
|
|
|
using System;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
// ReSharper disable once CheckNamespace
|
|
|
|
namespace BlueWaterProject
|
|
|
|
{
|
|
|
|
[Serializable]
|
|
|
|
public class SkillController : MonoBehaviour
|
|
|
|
{
|
2023-11-29 06:13:25 +00:00
|
|
|
[SerializeField] private ActiveSkillSo activeSkillDataSo;
|
2023-11-22 07:20:22 +00:00
|
|
|
private Dictionary<string, ActiveSkill> activeSkillDictionary;
|
2023-11-01 07:39:12 +00:00
|
|
|
|
2023-11-22 07:20:22 +00:00
|
|
|
private ActiveSkill cachingObj;
|
2023-11-01 07:39:12 +00:00
|
|
|
|
|
|
|
private void Awake()
|
|
|
|
{
|
2023-11-12 18:54:37 +00:00
|
|
|
Init();
|
2023-11-01 07:39:12 +00:00
|
|
|
}
|
|
|
|
|
2023-11-12 18:54:37 +00:00
|
|
|
private void Init()
|
2023-11-01 07:39:12 +00:00
|
|
|
{
|
2023-11-22 07:20:22 +00:00
|
|
|
activeSkillDictionary = new Dictionary<string, ActiveSkill>(activeSkillDataSo.ActiveSkillList.Count);
|
2023-11-01 07:39:12 +00:00
|
|
|
|
2023-11-22 07:20:22 +00:00
|
|
|
foreach (var activeSkill in activeSkillDataSo.ActiveSkillList)
|
2023-11-01 07:39:12 +00:00
|
|
|
{
|
2023-11-22 07:20:22 +00:00
|
|
|
activeSkillDictionary.Add(activeSkill.ActiveSkillData.Name, activeSkill);
|
2023-11-01 07:39:12 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-11-12 18:54:37 +00:00
|
|
|
public ActiveSkill InstantiateActiveSkillByName(string skillName)
|
2023-11-01 07:39:12 +00:00
|
|
|
{
|
2023-11-22 07:20:22 +00:00
|
|
|
var instantiateActiveSkill = Instantiate(GetSkillByName(skillName));
|
2023-11-12 18:54:37 +00:00
|
|
|
if (instantiateActiveSkill == null)
|
|
|
|
{
|
|
|
|
print("스킬을 생성할 수 없습니다.");
|
|
|
|
return null;
|
|
|
|
}
|
2023-11-22 07:20:22 +00:00
|
|
|
|
2023-11-12 18:54:37 +00:00
|
|
|
return instantiateActiveSkill;
|
|
|
|
}
|
2023-11-22 07:20:22 +00:00
|
|
|
|
|
|
|
public ActiveSkill GetSkillByName(string skillName)
|
2023-11-12 18:54:37 +00:00
|
|
|
{
|
|
|
|
if (activeSkillDictionary.TryGetValue(skillName, out cachingObj)) return cachingObj;
|
2023-11-01 07:39:12 +00:00
|
|
|
|
|
|
|
print(skillName + "은(는) 스킬 딕셔너리에 존재하지 않습니다.");
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|