| | |
| | | { |
| | | |
| | | public readonly int ID; |
| | | public readonly int LV; |
| | | public readonly string ItemName; |
| | | public readonly int Type; |
| | | public readonly int EquipPlace; |
| | | public readonly int CanRepair; |
| | | public readonly int PackCount; |
| | | public readonly int UseLV; |
| | | public readonly int CanSell; |
| | | public readonly int CanTrade; |
| | | public readonly int[] JumpComposeCondi; |
| | | public readonly int CanDrop; |
| | | public readonly int CanBind; |
| | | public readonly int CDType; |
| | | public readonly int CDTime; |
| | | public readonly int GoldPrice; |
| | | public readonly int GoldPaperPrice; |
| | | public readonly int SilverPrice; |
| | | public readonly int UseTag; |
| | | public readonly int Effect1; |
| | | public readonly int EffectValueA1; |
| | | public readonly int EffectValueB1; |
| | | public readonly int EffectValueC1; |
| | | public readonly int Effect2; |
| | | public readonly int EffectValueA2; |
| | | public readonly int EffectValueB2; |
| | | public readonly int EffectValueC2; |
| | | public readonly int Effect3; |
| | | public readonly int EffectValueA3; |
| | | public readonly int EffectValueB3; |
| | | public readonly int EffectValueC3; |
| | | public readonly int Effect4; |
| | | public readonly int EffectValueA4; |
| | | public readonly int EffectValueB4; |
| | | public readonly int EffectValueC4; |
| | | public readonly int Effect5; |
| | | public readonly int EffectValueA5; |
| | | public readonly int EffectValueB5; |
| | | public readonly int EffectValueC5; |
| | | public readonly int AddSkill1; |
| | | public readonly int AddSkill2; |
| | | public readonly int JobLimit; |
| | | public readonly int RealmLimit; |
| | | public readonly int ItemColor; |
| | | public readonly int StarLevel; |
| | | public readonly int MaxHoleCount; |
| | | public readonly int CanBreak; |
| | | public readonly int MaxEndure; |
| | | public readonly int EndureReduceType; |
| | | public readonly int BindType; |
| | | public readonly int MaxSkillCnt; |
| | | public readonly int ExpireTime; |
| | | public readonly int MaxFitLV; |
| | | public readonly int SuiteiD; |
| | | public readonly string DropinstantEffName; |
| | | public readonly string IconKey; |
| | | public readonly int ChangeOrd; |
| | | public readonly string Description; |
| | | public readonly string QualityName; |
| | | public readonly int QualityEchoType; |
| | | public readonly int LimitSTR; |
| | | public readonly int LimitPHY; |
| | | public readonly int LimitPNE; |
| | | public readonly string Template; |
| | | public readonly int DropItemPattern; |
| | | public readonly int SellTip; |
| | | public readonly int BatchUse; |
| | | public readonly int Jump; |
| | | public readonly int[] GetWay; |
| | | public readonly string ItemTypeName; |
| | | public readonly int[] UseCondiType; |
| | | public readonly int LV; |
| | | public readonly string ItemName; |
| | | public readonly int Type; |
| | | public readonly int EquipPlace; |
| | | public readonly int CanRepair; |
| | | public readonly int PackCount; |
| | | public readonly int UseLV; |
| | | public readonly int CanSell; |
| | | public readonly int CanTrade; |
| | | public readonly int[] JumpComposeCondi; |
| | | public readonly int CanDrop; |
| | | public readonly int CanBind; |
| | | public readonly int CDType; |
| | | public readonly int CDTime; |
| | | public readonly int GoldPrice; |
| | | public readonly int GoldPaperPrice; |
| | | public readonly int SilverPrice; |
| | | public readonly int UseTag; |
| | | public readonly int Effect1; |
| | | public readonly int EffectValueA1; |
| | | public readonly int EffectValueB1; |
| | | public readonly int EffectValueC1; |
| | | public readonly int Effect2; |
| | | public readonly int EffectValueA2; |
| | | public readonly int EffectValueB2; |
| | | public readonly int EffectValueC2; |
| | | public readonly int Effect3; |
| | | public readonly int EffectValueA3; |
| | | public readonly int EffectValueB3; |
| | | public readonly int EffectValueC3; |
| | | public readonly int Effect4; |
| | | public readonly int EffectValueA4; |
| | | public readonly int EffectValueB4; |
| | | public readonly int EffectValueC4; |
| | | public readonly int Effect5; |
| | | public readonly int EffectValueA5; |
| | | public readonly int EffectValueB5; |
| | | public readonly int EffectValueC5; |
| | | public readonly int AddSkill1; |
| | | public readonly int AddSkill2; |
| | | public readonly int JobLimit; |
| | | public readonly int RealmLimit; |
| | | public readonly int ItemColor; |
| | | public readonly int StarLevel; |
| | | public readonly int MaxHoleCount; |
| | | public readonly int CanBreak; |
| | | public readonly int MaxEndure; |
| | | public readonly int EndureReduceType; |
| | | public readonly int BindType; |
| | | public readonly int MaxSkillCnt; |
| | | public readonly int ExpireTime; |
| | | public readonly int MaxFitLV; |
| | | public readonly int SuiteiD; |
| | | public readonly string DropinstantEffName; |
| | | public readonly string IconKey; |
| | | public readonly int ChangeOrd; |
| | | public readonly string Description; |
| | | public readonly string QualityName; |
| | | public readonly int QualityEchoType; |
| | | public readonly int LimitSTR; |
| | | public readonly int LimitPHY; |
| | | public readonly int LimitPNE; |
| | | public readonly string Template; |
| | | public readonly int DropItemPattern; |
| | | public readonly int SellTip; |
| | | public readonly int BatchUse; |
| | | public readonly int Jump; |
| | | public readonly int[] GetWay; |
| | | public readonly string ItemTypeName; |
| | | public readonly int[] UseCondiType; |
| | | |
| | | public ItemConfig() |
| | | public ItemConfig() |
| | | { |
| | | } |
| | | |
| | |
| | | { |
| | | var tables = input.Split('\t'); |
| | | |
| | | int.TryParse(tables[0],out ID); |
| | | int.TryParse(tables[0], out ID); |
| | | |
| | | int.TryParse(tables[1],out LV); |
| | | int.TryParse(tables[1], out LV); |
| | | |
| | | ItemName = tables[2]; |
| | | ItemName = tables[2]; |
| | | |
| | | int.TryParse(tables[3],out Type); |
| | | int.TryParse(tables[3], out Type); |
| | | |
| | | int.TryParse(tables[4],out EquipPlace); |
| | | int.TryParse(tables[4], out EquipPlace); |
| | | |
| | | int.TryParse(tables[5],out CanRepair); |
| | | int.TryParse(tables[5], out CanRepair); |
| | | |
| | | int.TryParse(tables[6],out PackCount); |
| | | int.TryParse(tables[6], out PackCount); |
| | | |
| | | int.TryParse(tables[7],out UseLV); |
| | | int.TryParse(tables[7], out UseLV); |
| | | |
| | | int.TryParse(tables[8],out CanSell); |
| | | int.TryParse(tables[8], out CanSell); |
| | | |
| | | int.TryParse(tables[9],out CanTrade); |
| | | int.TryParse(tables[9], out CanTrade); |
| | | |
| | | string[] JumpComposeCondiStringArray = tables[10].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); |
| | | JumpComposeCondi = new int[JumpComposeCondiStringArray.Length]; |
| | | for (int i=0;i<JumpComposeCondiStringArray.Length;i++) |
| | | { |
| | | int.TryParse(JumpComposeCondiStringArray[i],out JumpComposeCondi[i]); |
| | | } |
| | | string[] JumpComposeCondiStringArray = tables[10].Trim().Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries); |
| | | JumpComposeCondi = new int[JumpComposeCondiStringArray.Length]; |
| | | for (int i = 0; i < JumpComposeCondiStringArray.Length; i++) |
| | | { |
| | | int.TryParse(JumpComposeCondiStringArray[i], out JumpComposeCondi[i]); |
| | | } |
| | | |
| | | int.TryParse(tables[11],out CanDrop); |
| | | int.TryParse(tables[11], out CanDrop); |
| | | |
| | | int.TryParse(tables[12],out CanBind); |
| | | int.TryParse(tables[12], out CanBind); |
| | | |
| | | int.TryParse(tables[13],out CDType); |
| | | int.TryParse(tables[13], out CDType); |
| | | |
| | | int.TryParse(tables[14],out CDTime); |
| | | int.TryParse(tables[14], out CDTime); |
| | | |
| | | int.TryParse(tables[15],out GoldPrice); |
| | | int.TryParse(tables[15], out GoldPrice); |
| | | |
| | | int.TryParse(tables[16],out GoldPaperPrice); |
| | | int.TryParse(tables[16], out GoldPaperPrice); |
| | | |
| | | int.TryParse(tables[17],out SilverPrice); |
| | | int.TryParse(tables[17], out SilverPrice); |
| | | |
| | | int.TryParse(tables[18],out UseTag); |
| | | int.TryParse(tables[18], out UseTag); |
| | | |
| | | int.TryParse(tables[19],out Effect1); |
| | | int.TryParse(tables[19], out Effect1); |
| | | |
| | | int.TryParse(tables[20],out EffectValueA1); |
| | | int.TryParse(tables[20], out EffectValueA1); |
| | | |
| | | int.TryParse(tables[21],out EffectValueB1); |
| | | int.TryParse(tables[21], out EffectValueB1); |
| | | |
| | | int.TryParse(tables[22],out EffectValueC1); |
| | | int.TryParse(tables[22], out EffectValueC1); |
| | | |
| | | int.TryParse(tables[23],out Effect2); |
| | | int.TryParse(tables[23], out Effect2); |
| | | |
| | | int.TryParse(tables[24],out EffectValueA2); |
| | | int.TryParse(tables[24], out EffectValueA2); |
| | | |
| | | int.TryParse(tables[25],out EffectValueB2); |
| | | int.TryParse(tables[25], out EffectValueB2); |
| | | |
| | | int.TryParse(tables[26],out EffectValueC2); |
| | | int.TryParse(tables[26], out EffectValueC2); |
| | | |
| | | int.TryParse(tables[27],out Effect3); |
| | | int.TryParse(tables[27], out Effect3); |
| | | |
| | | int.TryParse(tables[28],out EffectValueA3); |
| | | int.TryParse(tables[28], out EffectValueA3); |
| | | |
| | | int.TryParse(tables[29],out EffectValueB3); |
| | | int.TryParse(tables[29], out EffectValueB3); |
| | | |
| | | int.TryParse(tables[30],out EffectValueC3); |
| | | int.TryParse(tables[30], out EffectValueC3); |
| | | |
| | | int.TryParse(tables[31],out Effect4); |
| | | int.TryParse(tables[31], out Effect4); |
| | | |
| | | int.TryParse(tables[32],out EffectValueA4); |
| | | int.TryParse(tables[32], out EffectValueA4); |
| | | |
| | | int.TryParse(tables[33],out EffectValueB4); |
| | | int.TryParse(tables[33], out EffectValueB4); |
| | | |
| | | int.TryParse(tables[34],out EffectValueC4); |
| | | int.TryParse(tables[34], out EffectValueC4); |
| | | |
| | | int.TryParse(tables[35],out Effect5); |
| | | int.TryParse(tables[35], out Effect5); |
| | | |
| | | int.TryParse(tables[36],out EffectValueA5); |
| | | int.TryParse(tables[36], out EffectValueA5); |
| | | |
| | | int.TryParse(tables[37],out EffectValueB5); |
| | | int.TryParse(tables[37], out EffectValueB5); |
| | | |
| | | int.TryParse(tables[38],out EffectValueC5); |
| | | int.TryParse(tables[38], out EffectValueC5); |
| | | |
| | | int.TryParse(tables[39],out AddSkill1); |
| | | int.TryParse(tables[39], out AddSkill1); |
| | | |
| | | int.TryParse(tables[40],out AddSkill2); |
| | | int.TryParse(tables[40], out AddSkill2); |
| | | |
| | | int.TryParse(tables[41],out JobLimit); |
| | | int.TryParse(tables[41], out JobLimit); |
| | | |
| | | int.TryParse(tables[42],out RealmLimit); |
| | | int.TryParse(tables[42], out RealmLimit); |
| | | |
| | | int.TryParse(tables[43],out ItemColor); |
| | | int.TryParse(tables[43], out ItemColor); |
| | | |
| | | int.TryParse(tables[44],out StarLevel); |
| | | int.TryParse(tables[44], out StarLevel); |
| | | |
| | | int.TryParse(tables[45],out MaxHoleCount); |
| | | int.TryParse(tables[45], out MaxHoleCount); |
| | | |
| | | int.TryParse(tables[46],out CanBreak); |
| | | int.TryParse(tables[46], out CanBreak); |
| | | |
| | | int.TryParse(tables[47],out MaxEndure); |
| | | int.TryParse(tables[47], out MaxEndure); |
| | | |
| | | int.TryParse(tables[48],out EndureReduceType); |
| | | int.TryParse(tables[48], out EndureReduceType); |
| | | |
| | | int.TryParse(tables[49],out BindType); |
| | | int.TryParse(tables[49], out BindType); |
| | | |
| | | int.TryParse(tables[50],out MaxSkillCnt); |
| | | int.TryParse(tables[50], out MaxSkillCnt); |
| | | |
| | | int.TryParse(tables[51],out ExpireTime); |
| | | int.TryParse(tables[51], out ExpireTime); |
| | | |
| | | int.TryParse(tables[52],out MaxFitLV); |
| | | int.TryParse(tables[52], out MaxFitLV); |
| | | |
| | | int.TryParse(tables[53],out SuiteiD); |
| | | int.TryParse(tables[53], out SuiteiD); |
| | | |
| | | DropinstantEffName = tables[54]; |
| | | DropinstantEffName = tables[54]; |
| | | |
| | | IconKey = tables[55]; |
| | | IconKey = tables[55]; |
| | | |
| | | int.TryParse(tables[56],out ChangeOrd); |
| | | int.TryParse(tables[56], out ChangeOrd); |
| | | |
| | | Description = tables[57]; |
| | | Description = tables[57]; |
| | | |
| | | QualityName = tables[58]; |
| | | QualityName = tables[58]; |
| | | |
| | | int.TryParse(tables[59],out QualityEchoType); |
| | | int.TryParse(tables[59], out QualityEchoType); |
| | | |
| | | int.TryParse(tables[60],out LimitSTR); |
| | | int.TryParse(tables[60], out LimitSTR); |
| | | |
| | | int.TryParse(tables[61],out LimitPHY); |
| | | int.TryParse(tables[61], out LimitPHY); |
| | | |
| | | int.TryParse(tables[62],out LimitPNE); |
| | | int.TryParse(tables[62], out LimitPNE); |
| | | |
| | | Template = tables[63]; |
| | | Template = tables[63]; |
| | | |
| | | int.TryParse(tables[64],out DropItemPattern); |
| | | int.TryParse(tables[64], out DropItemPattern); |
| | | |
| | | int.TryParse(tables[65],out SellTip); |
| | | int.TryParse(tables[65], out SellTip); |
| | | |
| | | int.TryParse(tables[66],out BatchUse); |
| | | int.TryParse(tables[66], out BatchUse); |
| | | |
| | | int.TryParse(tables[67],out Jump); |
| | | int.TryParse(tables[67], out Jump); |
| | | |
| | | string[] GetWayStringArray = tables[68].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); |
| | | GetWay = new int[GetWayStringArray.Length]; |
| | | for (int i=0;i<GetWayStringArray.Length;i++) |
| | | { |
| | | int.TryParse(GetWayStringArray[i],out GetWay[i]); |
| | | } |
| | | string[] GetWayStringArray = tables[68].Trim().Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries); |
| | | GetWay = new int[GetWayStringArray.Length]; |
| | | for (int i = 0; i < GetWayStringArray.Length; i++) |
| | | { |
| | | int.TryParse(GetWayStringArray[i], out GetWay[i]); |
| | | } |
| | | |
| | | ItemTypeName = tables[69]; |
| | | ItemTypeName = tables[69]; |
| | | |
| | | string[] UseCondiTypeStringArray = tables[70].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); |
| | | UseCondiType = new int[UseCondiTypeStringArray.Length]; |
| | | for (int i=0;i<UseCondiTypeStringArray.Length;i++) |
| | | { |
| | | int.TryParse(UseCondiTypeStringArray[i],out UseCondiType[i]); |
| | | } |
| | | string[] UseCondiTypeStringArray = tables[70].Trim().Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries); |
| | | UseCondiType = new int[UseCondiTypeStringArray.Length]; |
| | | for (int i = 0; i < UseCondiTypeStringArray.Length; i++) |
| | | { |
| | | int.TryParse(UseCondiTypeStringArray[i], out UseCondiType[i]); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | |
| | | static Dictionary<string, ItemConfig> configs = new Dictionary<string, ItemConfig>(); |
| | | public static ItemConfig Get(string id) |
| | | { |
| | | if (!inited) |
| | | { |
| | | if (!inited) |
| | | { |
| | | Debug.Log("ItemConfig 还未完成初始化。"); |
| | | return null; |
| | | } |
| | | |
| | | |
| | | if (configs.ContainsKey(id)) |
| | | { |
| | | return configs[id]; |
| | |
| | | rawDatas.Remove(id); |
| | | } |
| | | |
| | | if (id != "0" && config == null) |
| | | { |
| | | Debug.LogErrorFormat("尝试去获得不存在的物品:id->{0},请联系<color==yellow>贞亮和陈有</color>。", id); |
| | | } |
| | | |
| | | return config; |
| | | } |
| | | |
| | | public static ItemConfig Get(int id) |
| | | public static ItemConfig Get(int id) |
| | | { |
| | | return Get(id.ToString()); |
| | | } |
| | |
| | | return values; |
| | | } |
| | | |
| | | public static bool Has(string id) |
| | | public static bool Has(string id) |
| | | { |
| | | return configs.ContainsKey(id) || rawDatas.ContainsKey(id); |
| | | } |
| | | |
| | | public static bool Has(int id) |
| | | public static bool Has(int id) |
| | | { |
| | | return Has(id.ToString()); |
| | | } |
| | | |
| | | public static bool inited { get; private set; } |
| | | public static bool inited { get; private set; } |
| | | protected static Dictionary<string, string> rawDatas = new Dictionary<string, string>(); |
| | | public static void Init(bool sync=false) |
| | | public static void Init(bool sync = false) |
| | | { |
| | | inited = false; |
| | | var path = string.Empty; |
| | | inited = false; |
| | | var path = string.Empty; |
| | | if (AssetSource.refdataFromEditor) |
| | | { |
| | | path = ResourcesPath.CONFIG_FODLER +"/Item.txt"; |
| | | path = ResourcesPath.CONFIG_FODLER + "/Item.txt"; |
| | | } |
| | | else |
| | | { |
| | |
| | | } |
| | | |
| | | configs.Clear(); |
| | | var tempConfig = new ItemConfig(); |
| | | var tempConfig = new ItemConfig(); |
| | | var preParse = tempConfig is IConfigPostProcess; |
| | | |
| | | if (sync) |
| | |
| | | } |
| | | for (int i = 3; i < lines.Length; i++) |
| | | { |
| | | try |
| | | { |
| | | var line = lines[i]; |
| | | var index = line.IndexOf("\t"); |
| | | if (index == -1) |
| | | { |
| | | continue; |
| | | } |
| | | var id = line.Substring(0, index); |
| | | try |
| | | { |
| | | var line = lines[i]; |
| | | var index = line.IndexOf("\t"); |
| | | if (index == -1) |
| | | { |
| | | continue; |
| | | } |
| | | var id = line.Substring(0, index); |
| | | |
| | | if (preParse) |
| | | { |
| | | var config = new ItemConfig(line); |
| | | configs[id] = config; |
| | | (config as IConfigPostProcess).OnConfigParseCompleted(); |
| | | } |
| | | else |
| | | { |
| | | rawDatas[id] = line; |
| | | } |
| | | } |
| | | catch (System.Exception ex) |
| | | if (preParse) |
| | | { |
| | | var config = new ItemConfig(line); |
| | | configs[id] = config; |
| | | (config as IConfigPostProcess).OnConfigParseCompleted(); |
| | | } |
| | | else |
| | | { |
| | | rawDatas[id] = line; |
| | | } |
| | | } |
| | | catch (System.Exception ex) |
| | | { |
| | | Debug.LogError(ex); |
| | | } |
| | | } |
| | | inited = true; |
| | | inited = true; |
| | | } |
| | | else |
| | | { |
| | | ThreadPool.QueueUserWorkItem((object _object) => |
| | | { |
| | | var lines = File.ReadAllLines(path); |
| | | if (!preParse) |
| | | { |
| | | rawDatas = new Dictionary<string, string>(lines.Length - 3); |
| | | } |
| | | if (!preParse) |
| | | { |
| | | rawDatas = new Dictionary<string, string>(lines.Length - 3); |
| | | } |
| | | for (int i = 3; i < lines.Length; i++) |
| | | { |
| | | try |
| | | { |
| | | var line = lines[i]; |
| | | var index = line.IndexOf("\t"); |
| | | if (index == -1) |
| | | { |
| | | continue; |
| | | } |
| | | var id = line.Substring(0, index); |
| | | try |
| | | { |
| | | var line = lines[i]; |
| | | var index = line.IndexOf("\t"); |
| | | if (index == -1) |
| | | { |
| | | continue; |
| | | } |
| | | var id = line.Substring(0, index); |
| | | |
| | | if (preParse) |
| | | { |
| | | var config = new ItemConfig(line); |
| | | configs[id] = config; |
| | | (config as IConfigPostProcess).OnConfigParseCompleted(); |
| | | } |
| | | else |
| | | { |
| | | rawDatas[id] = line; |
| | | } |
| | | } |
| | | catch (System.Exception ex) |
| | | if (preParse) |
| | | { |
| | | var config = new ItemConfig(line); |
| | | configs[id] = config; |
| | | (config as IConfigPostProcess).OnConfigParseCompleted(); |
| | | } |
| | | else |
| | | { |
| | | rawDatas[id] = line; |
| | | } |
| | | } |
| | | catch (System.Exception ex) |
| | | { |
| | | Debug.LogError(ex); |
| | | } |