Project_WL/Assets/Script/Table/table_pass.cs

65 lines
2.2 KiB
C#

using CodeStage.AntiCheat.ObscuredTypes;
using MiniJSON;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PassTableData : TableDataBase
{
public eItem FreeReward, PassReward;
public ObscuredInt PassType, Chapter, ConditionValue, FreeRewardAmount, PassRewardAmount;
}
public class table_pass : MonoBehaviour
{
public static table_pass Ins;
public TextAsset m_json;
private List<TableDataBase> list_Data = new List<TableDataBase>();
private void Awake()
{
Ins = this;
Dictionary<string, object> jsonData = Json.Deserialize(m_json.text) as Dictionary<string, object>;
// ["items"]은 items.txt 안의 items를 가리킨다. 툴 우측 하단 파일 종류란에서 설정 가능.
List<object> obj = jsonData[GetType().Name] as List<object>;
foreach (object objt in obj)
{
var temp = new PassTableData();
Dictionary<string, object> json = objt as Dictionary<string, object>;
temp.ID = int.Parse(json["Step"].ToString());
temp.PassType = int.Parse(json["PassType"].ToString());
temp.Chapter = int.Parse(json["Chapter"].ToString());
temp.ConditionValue = int.Parse(json["ConditionValue"].ToString());
var split = json["FreeReward"].ToString().Split(',');
temp.FreeReward = DSUtil.StringToEnum<eItem>(split[0]);
temp.FreeRewardAmount = int.Parse(split[1]);
split = json["PassReward"].ToString().Split(',');
temp.PassReward = DSUtil.StringToEnum<eItem>(split[0]);
temp.PassRewardAmount = int.Parse(split[1]);
list_Data.Add(temp);
}
}
public List<TableDataBase> Get_DataList() { return list_Data; }
public List<TableDataBase> Get_DataList(int _pass) { return list_Data.FindAll(f => (f as PassTableData).PassType == _pass); }
public Dictionary<int, bool> Get_PassTypes()
{
var dic = new Dictionary<int, bool>();
for (int i = 0; i < list_Data.Count; i++)
{
var temp = list_Data[i] as PassTableData;
if (!dic.ContainsKey(temp.PassType))
dic.Add(temp.PassType, true);
}
return dic;
}
}