using Newtonsoft.Json; using System.Collections.Generic; using Random = UnityEngine.Random; public class CreateMapConfigTableData : TableDataBase { public string s_MapConfigID; public int n_StageType; public int n_AppearMonsterGroup; public int n_AppearBossGroup; public float f_Monster; public int n_MobNodeMin; public int n_MobNodeMax; public float f_BuffDebuff; public int n_BuffDebuffMin; public int n_BuffDebuffMax; public float f_CampFire; public int n_CampMin; public int n_CampMax; public float f_Merchant; public int n_MerchantMin; public int n_MerchantMax; public float f_Treasure; public int n_TreasureMin; public int n_TreasureMax; public float f_NPC; public int n_NPCMin; public int n_NPCMax; public float f_Mine; public int n_MineMin; public int n_MineMax; public float f_TwoWay; public int n_TwoWayMin; public int n_TwoWayMax; public float f_Nothing; public int n_NothingMin; public int n_NothingMax; public float f_Random; public int n_RandomMin; public int n_RandomMax; public Dictionary dic_Rate = new Dictionary(); public List list_rate = new List(); // 랜덤 인덱스 선택에 필요 public int TotalMin, TotalMax; public int Get_Min(eStageNodeType nodeType) { switch (nodeType) { case eStageNodeType.Mob: return n_MobNodeMin; case eStageNodeType.Treasure: return n_TreasureMin; case eStageNodeType.Merchant: return n_MerchantMin; case eStageNodeType.NPC: return n_NPCMin; case eStageNodeType.Sanctuary: return n_MineMin; case eStageNodeType.BuffDebuff: return n_BuffDebuffMin; case eStageNodeType.TwoWay: return n_TwoWayMin; case eStageNodeType.Campfire: return n_CampMin; case eStageNodeType.Nothing: return n_NothingMin; case eStageNodeType.Random: return n_RandomMin; } return 0; } public int Get_Max(eStageNodeType nodeType) { switch (nodeType) { case eStageNodeType.Mob: return n_MobNodeMax; case eStageNodeType.Treasure: return n_TreasureMax; case eStageNodeType.Merchant: return n_MerchantMax; case eStageNodeType.NPC: return n_NPCMax; case eStageNodeType.Sanctuary: return n_MineMax; case eStageNodeType.BuffDebuff: return n_BuffDebuffMax; case eStageNodeType.TwoWay: return n_TwoWayMax; case eStageNodeType.Campfire: return n_CampMax; case eStageNodeType.Nothing: return n_NothingMax; case eStageNodeType.Random: return n_RandomMax; } return 0; } public int Get_NodeCount_byMinMax(eStageNodeType nodeType) { return Random.Range(Get_Min(nodeType), Get_Max(nodeType) + 1); } } public class table_CreateMapConfig : table_base { public static table_CreateMapConfig Ins; List tableDatas; protected override void Awake() { Ins = this; base.Awake(); } protected override void Start() { tableDatas = JsonConvert.DeserializeObject>(json_last); for (int i = 0; i < tableDatas.Count; i++) { var temp = tableDatas[i]; temp.dic_Rate.Add(eStageNodeType.Mob, temp.f_Monster * 0.01f); temp.dic_Rate.Add(eStageNodeType.Treasure, temp.f_Treasure * 0.01f); temp.dic_Rate.Add(eStageNodeType.Merchant, temp.f_Merchant * 0.01f); temp.dic_Rate.Add(eStageNodeType.NPC, temp.f_NPC * 0.01f); temp.dic_Rate.Add(eStageNodeType.Sanctuary, temp.f_Mine * 0.01f); temp.dic_Rate.Add(eStageNodeType.BuffDebuff, temp.f_BuffDebuff * 0.01f); temp.dic_Rate.Add(eStageNodeType.TwoWay, temp.f_TwoWay * 0.01f); temp.dic_Rate.Add(eStageNodeType.Campfire, temp.f_CampFire * 0.01f); temp.dic_Rate.Add(eStageNodeType.Nothing, temp.f_Nothing * 0.01f); temp.dic_Rate.Add(eStageNodeType.Boss, 0f); temp.dic_Rate.Add(eStageNodeType.Random, temp.f_Random * 0.01f); temp.list_rate.Add(temp.f_Monster * 0.01f); temp.list_rate.Add(temp.f_Treasure * 0.01f); temp.list_rate.Add(temp.f_Merchant * 0.01f); temp.list_rate.Add(temp.f_NPC * 0.01f); temp.list_rate.Add(temp.f_Mine * 0.01f); temp.list_rate.Add(temp.f_BuffDebuff * 0.01f); temp.list_rate.Add(temp.f_TwoWay * 0.01f); temp.list_rate.Add(temp.f_CampFire * 0.01f); temp.list_rate.Add(temp.f_Nothing * 0.01f); temp.list_rate.Add(0f); temp.list_rate.Add(temp.f_Random * 0.01f); temp.TotalMin = temp.n_MobNodeMin + temp.n_BuffDebuffMin + temp.n_CampMin + temp.n_MerchantMin + temp.n_TreasureMin + temp.n_NPCMin + temp.n_MineMin + temp.n_TwoWayMin + temp.n_NothingMin + temp.n_RandomMin; temp.TotalMax = temp.n_MobNodeMax + temp.n_BuffDebuffMax + temp.n_CampMax + temp.n_MerchantMax + temp.n_TreasureMax + temp.n_NPCMax + temp.n_MineMax + temp.n_TwoWayMax + temp.n_NothingMax + temp.n_RandomMax; } base.Start(); } public List Get_DataList() { return tableDatas; } public CreateMapConfigTableData Get_Data(string id) { return Get_DataList().Find(f => f.s_MapConfigID == id); } public CreateMapConfigTableData Get_FisrtData(int world, int stage) { var lst = tableDatas.FindAll(f => f.n_StageType == world); return lst[lst.Count >= stage ? stage - 1 : 0]; } }