86 {
87 string[] prefetchSheetNames = new string[2] { "Element", "Material" };
88 SourceCache[] array = imports.Select(SourceCache.GetOrCreate).Distinct().ToArray();
89 Dictionary<SourceCache, (string, ISheet[], ISheet[])> dictionary = (from c in array
90 where c.IsDirtyOrEmpty
91 select
PrefetchWorkbook(c.SheetFile.FullName, prefetchSheetNames)).ToArray().ToDictionary(((
string file, ISheet[]
sheets, ISheet[] fetched) p) => SourceCache.GetOrCreate(p.file));
93 HashSet<SourceData> hashSet = new HashSet<SourceData> { elements };
94 SourceCache[] array2 = array;
95 foreach (SourceCache sourceCache in array2)
96 {
97 string arg = sourceCache.SheetFile.ShortPath();
98 if (
fileProviders.TryGetValue(sourceCache.SheetFile.FullName, out var value))
99 {
100 sourceCache.SetMod(value);
101 }
102 if (sourceCache.IsDirtyOrEmpty)
103 {
104 if (!dictionary.TryGetValue(sourceCache, out var value2) || value2.Item3.Length == 0)
105 {
106 continue;
107 }
108 ISheet[]
item = value2.Item3;
109 foreach (ISheet sheet
in item)
110 {
111 ExcelParser.allowTrimming = true;
112 try
113 {
115 if (!item2.IsEmpty())
116 {
117 sourceCache.EmplaceCache(sheet.SheetName, item2);
118 value?.sourceRows.UnionWith(item2);
119 Debug.Log(
$"#source workbook {arg}:{sheet.SheetName}:{item2.Length}");
120 }
121 }
122 finally
123 {
124 ExcelParser.allowTrimming = false;
125 }
126 }
127 continue;
128 }
129 string[] array3 = prefetchSheetNames;
130 foreach (string text in array3)
131 {
132 if (sourceCache.TryGetCache(text, out var rows))
133 {
134 int num3 = elements.ImportRows(rows);
135 value?.sourceRows.UnionWith(rows);
136 Debug.Log(
$"#source workbook-cache {arg}:{text}:{num3}");
137 }
138 }
139 }
140 array2 = array;
141 foreach (SourceCache sourceCache2 in array2)
142 {
143 string text2 = sourceCache2.SheetFile.ShortPath();
144 string key;
145 if (sourceCache2.IsDirtyOrEmpty)
146 {
147 if (!dictionary.TryGetValue(sourceCache2, out var value3) || value3.Item2.Length == 0)
148 {
149 continue;
150 }
151 Debug.Log(
"#source workbook " + text2);
152 ISheet[]
item = value3.Item2;
153 foreach (ISheet sheet2
in item)
154 {
155 if (prefetchSheetNames.Contains(sheet2.SheetName))
156 {
157 continue;
158 }
159 key = sheet2.SheetName;
160 int allowTrimming;
161 switch (key)
162 {
163 default:
164 allowTrimming = ((!(key == "Word")) ? 1 : 0);
165 break;
166 case "General":
167 case "Game":
168 case "Note":
169 case "List":
170 allowTrimming = 0;
171 break;
172 }
173 ExcelParser.allowTrimming = (byte)allowTrimming != 0;
174 try
175 {
177 if ((object)sourceData != null)
178 {
179 int? num4 = array4?.Length;
180 if (num4.HasValue && num4.GetValueOrDefault() > 0)
181 {
182 sourceCache2.EmplaceCache(sheet2.SheetName, array4);
183 sourceCache2.Mod?.sourceRows.UnionWith(array4);
184 hashSet.Add(sourceData);
185 }
186 }
187 }
188 finally
189 {
190 ExcelParser.allowTrimming = false;
191 }
192 }
193 continue;
194 }
195 foreach (KeyValuePair<
string,
SourceData.
BaseRow[]> item3 in sourceCache2.Source)
196 {
197 item3.Deconstruct(out key, out var value4);
198 string text3 = key;
202 {
203 if (sourceData2 is
SourceElement || (
object)sourceData2 ==
null)
204 {
205 continue;
206 }
207 }
208 else
209 {
211 }
212 if (array5 == null)
213 {
214 Debug.Log(
"#source cached rows are empty " + text2 +
":" + text3);
215 continue;
216 }
218 sourceCache2.Mod?.sourceRows.UnionWith(array5);
219 Debug.Log(
$"#source workbook-cache {text2}:{text3}:{num5}");
220 hashSet.Add(sourceData2);
221 }
222 }
223 if (resetData)
224 {
226 }
227 return hashSet;
228 }
override int ImportRows(IEnumerable< BaseRow > sourceRows)
static void HotInit(IEnumerable< SourceData > sourceData)
Dictionary< string, EMod > fileProviders
SourceData FindSourceByName(string name)
string ISheet[] ISheet[] fetched PrefetchWorkbook(string file, string[] prefetchNames)
SourceData.BaseRow[] LoadBySheetName(ISheet sheet, string file)