111 lines
2.8 KiB
C#
111 lines
2.8 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
[System.Serializable]
|
|
public enum ResourceKind
|
|
{
|
|
Stone,
|
|
faith,
|
|
wood,
|
|
}
|
|
[CreateAssetMenu(fileName = "科技节点", menuName = "科技树/科技节点")]
|
|
[System.Serializable]
|
|
public class TechItem : ScriptableObject
|
|
{
|
|
[System.Serializable]
|
|
public struct NeedReource
|
|
{
|
|
public ResourceKind kind;
|
|
public int Count;
|
|
}
|
|
|
|
[Header("父节点")]
|
|
public List<TechItem> parent; // 每个节点有一个父节点
|
|
|
|
[Header("子节点列表")]
|
|
public List<TechItem> children = new List<TechItem>(); // 子节点列表
|
|
|
|
[Header("已经解锁")]
|
|
public bool LockOver;
|
|
|
|
[Header("主干")]
|
|
public bool MainTech;
|
|
|
|
[Header("科技节点名称")]
|
|
public string itemName;
|
|
[Header("描述")]
|
|
[TextArea(3, 5)]
|
|
public string Describe;
|
|
[TextArea(1, 3)]
|
|
public string FunDescription;
|
|
[Header("解锁所需资源列表")]
|
|
public List<NeedReource> needReources;
|
|
[Header("降神次数")]
|
|
public GodComingTimes GodTimes;
|
|
|
|
/// <summary>
|
|
/// 科技解锁
|
|
/// </summary>
|
|
public void LockTech()
|
|
{
|
|
LockOver = true;
|
|
for (int i = 0; i < needReources.Count; i++)
|
|
{
|
|
CutResource(needReources[i]);
|
|
}
|
|
}
|
|
public bool ResourceEnough()
|
|
{
|
|
bool Enough = true;
|
|
for (int i = 0; i < needReources.Count; i++)
|
|
{
|
|
NeedReource needReource = needReources[i];
|
|
|
|
switch (needReource.kind)
|
|
{
|
|
case ResourceKind.Stone:
|
|
Enough = GameProcedureManager.Instance.StoneCount >= needReource.Count;
|
|
break;
|
|
case ResourceKind.faith:
|
|
Enough= GameProcedureManager.Instance.FaithCount >= needReource.Count;
|
|
break;
|
|
case ResourceKind.wood:
|
|
Enough=GameProcedureManager.Instance.WoodCount >= needReource.Count;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
if (Enough==false)
|
|
{
|
|
return Enough;
|
|
}
|
|
}
|
|
return Enough;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 消耗对应资源
|
|
/// </summary>
|
|
public void CutResource(NeedReource needReource)
|
|
{
|
|
switch (needReource.kind)
|
|
{
|
|
case ResourceKind.Stone:
|
|
GameProcedureManager.Instance.StoneCount -= needReource.Count;
|
|
break;
|
|
case ResourceKind.faith:
|
|
GameProcedureManager.Instance.FaithCount -= needReource.Count;
|
|
break;
|
|
case ResourceKind.wood:
|
|
GameProcedureManager.Instance.WoodCount -= needReource.Count;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|