少年修仙传客户端代码仓库
client_Wu Xijin
2019-02-13 22b191d1a96e30596fa251437e2af6080d56acac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
//--------------------------------------------------------
//    [Author]:           Fish
//    [  Date ]:           Wednesday, February 13, 2019
//--------------------------------------------------------
 
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System;
using UnityEngine;
 
public partial class EquipWashConfig
{
 
    public readonly int id;
    public readonly int type;
    public readonly int level;
    public readonly int attType1;
    public readonly int attMax1;
    public readonly int attCostMoneyMin1;
    public readonly int attCostMoneyMax1;
    public readonly int attType2;
    public readonly int attMax2;
    public readonly int attCostMoneyMin2;
    public readonly int attCostMoneyMax2;
    public readonly int attType3;
    public readonly int attMax3;
    public readonly int attCostMoneyMin3;
    public readonly int attCostMoneyMax3;
    public readonly int costItem;
    public readonly int costCount;
    public readonly string costMoneyList;
 
    public EquipWashConfig(string input)
    {
        try
        {
            var tables = input.Split('\t');
 
            int.TryParse(tables[0],out id); 
 
            int.TryParse(tables[1],out type); 
 
            int.TryParse(tables[2],out level); 
 
            int.TryParse(tables[3],out attType1); 
 
            int.TryParse(tables[4],out attMax1); 
 
            int.TryParse(tables[5],out attCostMoneyMin1); 
 
            int.TryParse(tables[6],out attCostMoneyMax1); 
 
            int.TryParse(tables[7],out attType2); 
 
            int.TryParse(tables[8],out attMax2); 
 
            int.TryParse(tables[9],out attCostMoneyMin2); 
 
            int.TryParse(tables[10],out attCostMoneyMax2); 
 
            int.TryParse(tables[11],out attType3); 
 
            int.TryParse(tables[12],out attMax3); 
 
            int.TryParse(tables[13],out attCostMoneyMin3); 
 
            int.TryParse(tables[14],out attCostMoneyMax3); 
 
            int.TryParse(tables[15],out costItem); 
 
            int.TryParse(tables[16],out costCount); 
 
            costMoneyList = tables[17];
        }
        catch (Exception ex)
        {
            DebugEx.Log(ex);
        }
    }
 
    static Dictionary<int, EquipWashConfig> configs = new Dictionary<int, EquipWashConfig>();
    public static EquipWashConfig Get(int id)
    {   
        if (!inited)
        {
            Debug.Log("EquipWashConfig 还未完成初始化。");
            return null;
        }
        
        if (configs.ContainsKey(id))
        {
            return configs[id];
        }
 
        EquipWashConfig config = null;
        if (rawDatas.ContainsKey(id))
        {
            config = configs[id] = new EquipWashConfig(rawDatas[id]);
            rawDatas.Remove(id);
        }
 
        return config;
    }
 
    public static bool Has(int id)
    {
        return configs.ContainsKey(id) || rawDatas.ContainsKey(id);
    }
 
    public static bool inited { get; private set; }
    protected static Dictionary<int, string> rawDatas = null;
    public static void Init(bool sync=false)
    {
        inited = false;
        var path = string.Empty;
        if (AssetSource.refdataFromEditor)
        {
            path = ResourcesPath.CONFIG_FODLER +"/EquipWash.txt";
        }
        else
        {
            path = AssetVersionUtility.GetAssetFilePath("config/EquipWash.txt");
        }
 
        if (sync)
        {
            var lines = File.ReadAllLines(path);
            rawDatas = new Dictionary<int, string>(lines.Length - 3);
            for (int i = 3; i < lines.Length; i++)
            {
                var line = lines[i];
                var index = line.IndexOf("\t");
                var idString = line.Substring(0, index);
                var id = int.Parse(idString);
 
                rawDatas[id] = line;
            }
            inited = true;
        }
        else
        {
            ThreadPool.QueueUserWorkItem((object _object) =>
            {
                var lines = File.ReadAllLines(path);
                rawDatas = new Dictionary<int, string>(lines.Length - 3);
                for (int i = 3; i < lines.Length; i++)
                {
                    var line = lines[i];
                    var index = line.IndexOf("\t");
                    var idString = line.Substring(0, index);
                    var id = int.Parse(idString);
 
                    rawDatas[id] = line;
                }
 
                inited = true;
            });
        }
    }
 
}