using Newtonsoft.Json; using System; using System.Collections.Generic; [Serializable] public class RandomBagTableData : TableDataBase { public int n_DropIndex; // 랜덤백 고유 ID public int n_ItemGrade; // 아이템 등급 public int n_ItemId; // 드랍 타입 별 ID public float f_DropRate; // 드랍 확률 public int n_DropCount; // 드랍 수량 } public class table_randombag : table_missionbase { public static table_randombag Ins; List tableDatas; Dictionary<(int, int), List> dic_RateData = new Dictionary<(int, int), List>(); Dictionary<(int, int), List> dic_ItemData = new Dictionary<(int, int), List>(); protected override void Awake() { base.Awake(); Ins = this; } protected override void Start() { tableDatas = JsonConvert.DeserializeObject>(json_last); for (int i = 0; i < Get_DataList().Count; i++) { var temp = Get_DataList()[i]; if (!dic_RateData.ContainsKey((temp.n_DropIndex, temp.n_ItemGrade))) dic_RateData.Add((temp.n_DropIndex, temp.n_ItemGrade), new List()); dic_RateData[(temp.n_DropIndex, temp.n_ItemGrade)].Add(temp.f_DropRate); if (!dic_ItemData.ContainsKey((temp.n_DropIndex, temp.n_ItemGrade))) dic_ItemData.Add((temp.n_DropIndex, temp.n_ItemGrade), new List()); dic_ItemData[(temp.n_DropIndex, temp.n_ItemGrade)].Add(new ItemSimpleData { itemid = temp.n_ItemId, amount = temp.n_DropCount }); } base.Start(); } public ItemSimpleData Get_RandomItemData(int index, int grade) { var itemindex = DSUtil.Get_RandomIndex(Get_Rate(index, grade)); return dic_ItemData[(index, grade)][itemindex]; } public List Get_Rate(int index, int grade) { return dic_RateData[(index, grade)]; } public RandomBagTableData Get_Data(int itemid) { return Get_DataList().Find(f => f.n_ItemId == itemid); } public List Get_DataList() { return tableDatas; } }