스킬트리 구현하기 (SKill Tree Code Sample)
간단하게 스킬 트리를 처리하는 코드를 구현하면서 간단하게 포스팅한다.
반응형
< SkillNode >
스킬에 대한 정보에 대한 연결을 처리하기위한 클래스이다.
간단하게 해당 스킬에 대한 이름정도만 가지고 있다.
using System.Collections.Generic;
public class SkillNode
{
public string Name { get; set; }
public List<SkillNode> Children { get; set; }
public SkillNode Parent { get; set; }
public SkillNode(string name)
{
Name = name;
Children = new List<SkillNode>();
}
public void AddChild(SkillNode child)
{
Children.Add(child);
child.Parent = this;
}
}
< SkillTree >
Tree 형태로 Skill에 대한 연결을 실제 처리하는 Tree 구조이다.
단순하게 보면 Tree 구조형태로 구성되어있다고 생각하면 된다.
using System.Collections.Generic;
public class SkillTree
{
public SkillNode StartNode { get; private set; }
public SkillNode EndNode { get; private set; }
public SkillTree(string startName, string endName)
{
StartNode = new SkillNode(startName);
EndNode = new SkillNode(endName);
StartNode.AddChild(EndNode);
}
public SkillNode AddSkill(string parentName, string skillName)
{
var parentNode = FindNode(StartNode, parentName);
if (parentNode != null)
{
var newSkillNode = new SkillNode(skillName);
parentNode.AddChild(newSkillNode);
return newSkillNode;
}
return null;
}
private SkillNode FindNode(SkillNode currentNode, string nodeName)
{
if (currentNode.Name == nodeName)
return currentNode;
foreach (var child in currentNode.Children)
{
var foundNode = FindNode(child, nodeName);
if (foundNode != null)
return foundNode;
}
return null;
}
}
디테일한 정보는 상황에 맞게 추가하면 된다.
스킬 포인트, 코스트, 스킬 레벨 등등.
★☆☆☆☆
반응형
댓글