Project_WL/Assets/Script/Table/PC/table_classopencondition.cs

139 lines
4.8 KiB
C#

using CodeStage.AntiCheat.ObscuredTypes;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using UnityEngine.WSA;
[Serializable]
public class ClassOpenConditionTableData : TableDataBase
{
ObscuredInt _ClassID;
public int n_ClassID
{
get { return _ClassID; }
set { _ClassID = value; _ClassID.RandomizeCryptoKey(); }
} // 클래스 ID
ObscuredInt _LinkedClass1;
public int n_linkedClass1
{
get { return _LinkedClass1; }
set { _LinkedClass1 = value; _LinkedClass1.RandomizeCryptoKey(); }
} // 연관된 클래스 1
ObscuredInt _LinkedClass2;
public int n_linkedClass2
{
get { return _LinkedClass2; }
set { _LinkedClass2 = value; _LinkedClass2.RandomizeCryptoKey(); }
} // 연관된 클래스 2
ObscuredInt _RequireAbility;
public int n_RequireAbility
{
get { return _RequireAbility; }
set { _RequireAbility = value; _RequireAbility.RandomizeCryptoKey(); }
} // 필요 능력치
public eStat e_RequireAwakenType1 { get; set; } // 첫 번째 각성 필요 유형
ObscuredInt _RequireAwakenStep1;
public int n_RequireAwakenStep1
{
get { return _RequireAwakenStep1; }
set { _RequireAwakenStep1 = value; _RequireAwakenStep1.RandomizeCryptoKey(); }
} // 첫 번째 각성 단계
public eStat e_RequireAwakenType2 { get; set; } // 두 번째 각성 필요 유형
ObscuredInt _RequireAwakenStep2;
public int n_RequireAwakenStep2
{
get { return _RequireAwakenStep2; }
set { _RequireAwakenStep2 = value; _RequireAwakenStep2.RandomizeCryptoKey(); }
} // 두 번째 각성 단계
ObscuredInt _NeedGoodsCount;
public int n_NeedGoodsCount
{
get { return _NeedGoodsCount; }
set { _NeedGoodsCount = value; _NeedGoodsCount.RandomizeCryptoKey(); }
} // 필요 아이템 수량
ObscuredInt _ClassOpenMission;
public int n_ClassOpenMission
{
get { return _ClassOpenMission; }
set { _ClassOpenMission = value; _ClassOpenMission.RandomizeCryptoKey(); }
} // 클래스 오픈 미션 ID
public override string Get_Name() { return table_itemlist.Ins.Get_ItemName(n_ClassID); }
}
public class table_classopencondition : table_missionbase
{
public static table_classopencondition Ins;
List<ClassOpenConditionTableData> tableDatas;
Dictionary<int, ClassOpenConditionTableData> dic_Data = new Dictionary<int, ClassOpenConditionTableData>();
Dictionary<int, ClassOpenConditionTableData> dic_MissionData = new Dictionary<int, ClassOpenConditionTableData>();
protected override void Awake()
{
base.Awake();
Ins = this;
}
protected override void Start()
{
tableDatas = JsonConvert.DeserializeObject<List<ClassOpenConditionTableData>>(json_last);
for (int i = 0; i < Get_DataList().Count; i++)
{
var temp = Get_DataList()[i];
dic_Data.Add(temp.n_ClassID, temp);
dic_MissionData.Add(temp.n_ClassOpenMission, temp);
}
base.Start();
}
public ClassOpenConditionTableData Get_Data_orNull(int id) { return dic_Data[id]; }
public List<ClassOpenConditionTableData> Get_DataList() { return tableDatas; }
public List<ClassOpenConditionTableData> Get_DataList(int index)
{
var lst = Get_DataList();
eStat stat = eStat.STR;
switch (index)
{
default: return lst;
case 1: stat = eStat.STR; break;
case 2: stat = eStat.DEX; break;
case 3: stat = eStat.INT; break;
}
List<ClassOpenConditionTableData> rtnlst = new List<ClassOpenConditionTableData>();
for (int i = 0; i < lst.Count; i++)
{
var job = table_classconfig.Ins.Get_Data_orNull(lst[i].n_ClassID);
switch (stat)
{
case eStat.STR:
if (job.e_MainStatType == eMainStatType.LUCK || job.e_MainStatType == eMainStatType.STR ||
job.e_MainStatType == eMainStatType.STR_DEX || job.e_MainStatType == eMainStatType.STR_INT)
rtnlst.Add(lst[i]);
break;
case eStat.DEX:
if (job.e_MainStatType == eMainStatType.LUCK || job.e_MainStatType == eMainStatType.DEX ||
job.e_MainStatType == eMainStatType.DEX_STR || job.e_MainStatType == eMainStatType.DEX_INT)
rtnlst.Add(lst[i]);
break;
case eStat.INT:
if (job.e_MainStatType == eMainStatType.LUCK || job.e_MainStatType == eMainStatType.INT ||
job.e_MainStatType == eMainStatType.INT_STR || job.e_MainStatType == eMainStatType.INT_DEX)
rtnlst.Add(lst[i]);
break;
}
}
return rtnlst;
}
}