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 ISheet[]
item = value2.Item3;
107 foreach (ISheet sheet
in item)
108 {
110 sourceCache.EmplaceCache(sheet.SheetName, item2);
111 value?.sourceRows.UnionWith(item2);
112 Debug.Log(
$"#source workbook {arg}:{sheet.SheetName}:{item2.Length}");
113 }
114 }
115 continue;
116 }
117 string[] array3 = prefetchSheetNames;
118 foreach (string text in array3)
119 {
120 if (sourceCache.TryGetCache(text, out var rows))
121 {
122 int num = elements.ImportRows(rows);
123 value?.sourceRows.UnionWith(rows);
124 Debug.Log(
$"#source workbook-cache {arg}:{text}:{num}");
125 }
126 }
127 }
128 array2 = array;
129 foreach (SourceCache sourceCache2 in array2)
130 {
131 string text2 = sourceCache2.SheetFile.ShortPath();
132 if (sourceCache2.IsDirtyOrEmpty)
133 {
134 if (!dictionary.TryGetValue(sourceCache2, out var value3) || value3.Item2.Length == 0)
135 {
136 continue;
137 }
138 Debug.Log(
"#source workbook " + text2);
139 ISheet[]
item = value3.Item2;
140 foreach (ISheet sheet2
in item)
141 {
142 if (prefetchSheetNames.Contains(sheet2.SheetName))
143 {
144 continue;
145 }
147 if ((object)sourceData != null)
148 {
149 int? num2 = array4?.Length;
150 if (num2.HasValue && num2.GetValueOrDefault() > 0)
151 {
152 sourceCache2.EmplaceCache(sheet2.SheetName, array4);
153 sourceCache2.Mod?.sourceRows.UnionWith(array4);
154 hashSet.Add(sourceData);
155 }
156 }
157 }
158 continue;
159 }
160 foreach (KeyValuePair<
string,
SourceData.
BaseRow[]> item3 in sourceCache2.Source)
161 {
162 item3.Deconstruct(out var key, out var value4);
163 string text3 = key;
167 {
168 if (sourceData2 is
SourceElement || (
object)sourceData2 ==
null)
169 {
170 continue;
171 }
172 }
173 else
174 {
176 }
177 if (array5 == null)
178 {
179 Debug.Log(
"#source cached rows are empty " + text2 +
":" + text3);
180 continue;
181 }
183 sourceCache2.Mod?.sourceRows.UnionWith(array5);
184 Debug.Log(
$"#source workbook-cache {text2}:{text3}:{num3}");
185 hashSet.Add(sourceData2);
186 }
187 }
188 if (resetData)
189 {
191 }
192 return hashSet;
193 }
static SourceManager sources
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)