Elin Decompiled Documentation EA 23.317 Nightly
Loading...
Searching...
No Matches
ModPackage Class Reference
Inheritance diagram for ModPackage:

Classes

struct  SheetIndex
 

Public Member Functions

void CopyContentTo (string dir)
 
IReadOnlyList< FileInfo > ParseTalkText (DirectoryInfo dir)
 
IReadOnlyList< FileInfo > ParseMap (DirectoryInfo dir, bool addToList=true)
 
IReadOnlyList< FileInfo > ParseMapPiece (DirectoryInfo dir, bool addToList=true)
 
IReadOnlyList< FileInfo > ParseTextureReplace (DirectoryInfo dir)
 
IReadOnlyList< FileInfo > ParseTexture (DirectoryInfo dir)
 
IReadOnlyList< FileInfo > ParsePortrait (DirectoryInfo dir)
 
void ParseLangMod (DirectoryInfo dir)
 
IReadOnlyList< FileInfo > ParseSound (DirectoryInfo dir)
 
override void GenerateCustomContentProfiles ()
 
override SortedDictionary< string, string > ExportSourceLocalizations ()
 
override void ImportSourceLocalizations (IReadOnlyDictionary< string, string > texts)
 
override void ClearSourceLocalizations (string lang)
 
override string UpdateSourceLocalizationFile (string lang, bool force=false)
 
void AddOrUpdateLang (DirectoryInfo dir)
 
void UpdateDialogs (DirectoryInfo dir, string dirTemp)
 
void UpdateTalks (DirectoryInfo dir, string dirTemp)
 
void UpdateExcelBook (FileInfo f, string dirTemp, bool updateOnlyText)
 
int UpdateExcelSheet (ISheet destSheet, ISheet oldSheet, bool updateOnlytext)
 

Detailed Description

Definition at line 10 of file ModPackage.cs.

Member Function Documentation

◆ AddOrUpdateLang()

void ModPackage.AddOrUpdateLang ( DirectoryInfo  dir)
inline

Definition at line 334 of file ModPackage.cs.

335 {
336 Core core = EClass.core;
337 SourceManager sources = core.sources;
338 DirectoryInfo[] directories = dir.GetDirectories();
339 foreach (DirectoryInfo directoryInfo in directories)
340 {
341 if (!directoryInfo.Name.StartsWith("_") && !TryAddLang(directoryInfo, isNew: false))
342 {
343 Debug.Log("Generating Language Mod Contents:" + directoryInfo.FullName);
344 IO.CopyDir(CorePath.packageCore + "Lang/EN", directoryInfo.FullName);
345 Directory.CreateDirectory(directoryInfo.FullName + "/Dialog");
346 IO.CopyDir(CorePath.packageCore + "Lang/_Dialog", directoryInfo.FullName + "/Dialog");
347 sources.ExportSourceTexts(directoryInfo.FullName + "/Game");
348 IO.Copy(CorePath.packageCore + "Lang/lang.ini", directoryInfo.FullName + "/");
349 TryAddLang(directoryInfo, isNew: true);
350 }
351 }
352 bool TryAddLang(DirectoryInfo dirLang, bool isNew)
353 {
354 string name = dirLang.Name;
355 FileInfo[] files = dirLang.GetFiles();
356 foreach (FileInfo fileInfo in files)
357 {
358 if (fileInfo.Name == "lang.ini")
359 {
360 LangSetting langSetting = new LangSetting(fileInfo.FullName)
361 {
362 id = name,
363 dir = dirLang.FullName + "/"
364 };
365 if (isNew)
366 {
367 langSetting.SetVersion();
368 }
369 else if ((Application.isEditor || Lang.runUpdate) && !Lang.IsBuiltin(dirLang.Name) && langSetting.GetVersion() < core.version.GetInt())
370 {
371 sources.Init();
372 Log.system = "Updated Language Files:" + Environment.NewLine + Environment.NewLine;
373 Debug.Log("Updating Language:" + langSetting.name + "/" + langSetting.GetVersion() + "/" + core.version.GetInt());
374 string text = dirLang.FullName + "/Game";
375 Directory.Move(text, text + "_temp");
376 sources.ExportSourceTexts(text);
377 sources.UpdateSourceTexts(text);
378 IO.DeleteDirectory(text + "_temp");
379 text = dirLang.FullName + "/Dialog";
380 Directory.Move(text, text + "_temp");
381 IO.CopyDir(CorePath.packageCore + "Lang/_Dialog", text);
382 UpdateDialogs(new DirectoryInfo(text), text + "_temp");
383 IO.DeleteDirectory(text + "_temp");
384 text = dirLang.FullName + "/Data";
385 IO.CopyDir(text, text + "_temp");
386 IO.Copy(CorePath.packageCore + "Lang/EN/Data/god_talk.xlsx", text);
387 IO.Copy(CorePath.packageCore + "Lang/EN/Data/chara_talk.xlsx", text);
388 UpdateTalks(new DirectoryInfo(text), text + "_temp");
389 IO.DeleteDirectory(text + "_temp");
390 langSetting.SetVersion();
391 IO.SaveText(dirLang.FullName + "/update.txt", Log.system);
392 }
393 MOD.langs[name] = langSetting;
394 return true;
395 }
396 }
397 return false;
398 }
399 }
Version version
Definition: BaseCore.cs:17
static string packageCore
Definition: CorePath.cs:153
Definition: Core.cs:14
SourceManager sources
Definition: Core.cs:33
Definition: EClass.cs:6
static Core core
Definition: EClass.cs:7
Definition: IO.cs:10
static void DeleteDirectory(string path)
Definition: IO.cs:392
static void Copy(string fromPath, string toPath)
Definition: IO.cs:309
static void SaveText(string path, string text)
Definition: IO.cs:103
static void CopyDir(string sourceDirectory, string targetDirectory, Func< string, bool > funcExclude=null)
Definition: IO.cs:276
string name
Definition: LangSetting.cs:24
void SetVersion()
Definition: LangSetting.cs:114
int GetVersion()
Definition: LangSetting.cs:100
Definition: Lang.cs:7
static bool IsBuiltin(string id)
Definition: Lang.cs:65
static bool runUpdate
Definition: Lang.cs:25
Definition: Log.cs:4
static string system
Definition: Log.cs:5
Definition: MOD.cs:7
static Dictionary< string, LangSetting > langs
Definition: MOD.cs:8
void UpdateDialogs(DirectoryInfo dir, string dirTemp)
Definition: ModPackage.cs:401
void UpdateTalks(DirectoryInfo dir, string dirTemp)
Definition: ModPackage.cs:418
void UpdateSourceTexts(string path)
void ExportSourceTexts(string path)
int GetInt()
Definition: Version.cs:21

References EClass.core, Debug, LangSetting.GetVersion(), Lang.IsBuiltin(), MOD.langs, LangSetting.name, CorePath.packageCore, Lang.runUpdate, LangSetting.SetVersion(), Core.sources, Log.system, UpdateDialogs(), and UpdateTalks().

Referenced by ModManager.ParseExtra().

◆ ClearSourceLocalizations()

override void ModPackage.ClearSourceLocalizations ( string  lang)
inline

Definition at line 296 of file ModPackage.cs.

297 {
298 Mapping.RebuildLangModMapping(lang);
299 for (FileInfo fileInfo = Mapping.RelocateFile("SourceLocalization.json"); fileInfo != null; fileInfo = Mapping.RelocateFile("SourceLocalization.json"))
300 {
301 fileInfo.Delete();
302 Debug.Log("#source-localization deleted " + fileInfo.ShortPath());
303 }
304 Mapping.RebuildLangModMapping(Lang.langCode);
305 }
static string langCode
Definition: Lang.cs:29

References Debug, and Lang.langCode.

◆ CopyContentTo()

void ModPackage.CopyContentTo ( string  dir)
inline

Definition at line 19 of file ModPackage.cs.

20 {
22 IO.CopyAll(dirInfo.FullName, dir);
23 EClass.ui.Say(dir);
24 }
static UI ui
Definition: EClass.cs:17
static void CopyAll(string fromPath, string toPath, bool overwrite=true)
Definition: IO.cs:337

References EClass.ui.

Referenced by LayerMod.OnInit().

◆ ExportSourceLocalizations()

override SortedDictionary< string, string > ModPackage.ExportSourceLocalizations ( )
inline

Definition at line 265 of file ModPackage.cs.

266 {
267 SortedDictionary<string, string> sortedDictionary = new SortedDictionary<string, string>();
268 try
269 {
270 foreach (SourceData.BaseRow sourceRow in sourceRows)
271 {
272 foreach (KeyValuePair<string, string> item in sourceRow.ExportTexts(sourceRow.UseAlias ? "alias" : "id"))
273 {
274 item.Deconstruct(out var key, out var value);
275 string key2 = key;
276 string value2 = value;
277 sortedDictionary[key2] = value2;
278 }
279 }
280 }
281 catch (Exception arg)
282 {
283 Debug.LogError($"#source failed to export localization for {title}/{id}\n{arg}");
284 }
285 return sortedDictionary;
286 }

References $, Debug, and item.

Referenced by UpdateSourceLocalizationFile().

◆ GenerateCustomContentProfiles()

override void ModPackage.GenerateCustomContentProfiles ( )
inline

Definition at line 203 of file ModPackage.cs.

204 {
205 customContent.Clear();
206 foreach (SourceData.BaseRow sourceRow in sourceRows)
207 {
208 if (!(sourceRow is SourceChara.Row r))
209 {
210 if (!(sourceRow is SourceReligion.Row row))
211 {
212 if (!(sourceRow is SourceZone.Row r2))
213 {
214 if (!(sourceRow is SourceElement.Row r3))
215 {
216 if (!(sourceRow is SourceMaterial.Row r4))
217 {
218 if (!(sourceRow is SourceStat.Row r5))
219 {
220 if (!(sourceRow is SourceThing.Row r6))
221 {
222 if (!(sourceRow is SourceFaction.Row) && sourceRow is SourceQuest.Row)
223 {
224 }
225 }
226 else
227 {
228 customContent.Add(CustomThingContent.CreateFromRow(r6, this));
229 }
230 }
231 else
232 {
233 customContent.Add(CustomStatContent.CreateFromRow(r5, this));
234 }
235 }
236 else
237 {
238 customContent.Add(CustomMaterialContent.CreateFromRow(r4, this));
239 }
240 }
241 else
242 {
243 customContent.Add(CustomElementContent.CreateFromRow(r3, this));
244 }
245 }
246 else
247 {
248 customContent.Add(CustomZoneContent.CreateFromRow(r2, this));
249 }
250 }
251 else if (row.id.StartsWith("cwl") || row.id.StartsWith("custom"))
252 {
253 customContent.Add(CustomReligionContent.CreateFromRow(row, this));
254 }
255 }
256 else
257 {
258 ModUtil.FixDefaultCharaRowPref(r);
259 customContent.Add(CustomCharaContent.CreateFromRow(r, this));
260 }
261 }
262 customContent.RemoveAll((ICustomContent p) => p == null);
263 }
static CustomCharaContent CreateFromRow(SourceChara.Row r, ModPackage owner=null)
static CustomElementContent CreateFromRow(SourceElement.Row r, ModPackage owner=null)
static CustomMaterialContent CreateFromRow(SourceMaterial.Row r, ModPackage owner=null)
static CustomStatContent CreateFromRow(SourceStat.Row r, ModPackage owner=null)
static CustomThingContent CreateFromRow(SourceThing.Row r, ModPackage mod=null)
static CustomZoneContent CreateFromRow(SourceZone.Row r, ModPackage owner=null)

References CustomCharaContent.CreateFromRow(), CustomElementContent.CreateFromRow(), CustomMaterialContent.CreateFromRow(), CustomStatContent.CreateFromRow(), CustomThingContent.CreateFromRow(), and CustomZoneContent.CreateFromRow().

◆ ImportSourceLocalizations()

override void ModPackage.ImportSourceLocalizations ( IReadOnlyDictionary< string, string >  texts)
inline

Definition at line 288 of file ModPackage.cs.

289 {
290 foreach (SourceData.BaseRow sourceRow in sourceRows)
291 {
292 sourceRow.ImportTexts(texts, sourceRow.UseAlias ? "alias" : "id");
293 }
294 }

◆ ParseLangMod()

void ModPackage.ParseLangMod ( DirectoryInfo  dir)
inline

Definition at line 161 of file ModPackage.cs.

162 {
163 if (Mapping == null)
164 {
165 Mapping = new FileMapping(dir.Parent);
166 }
167 Mapping.RebuildLangModMapping(EClass.core.config?.lang ?? EClass.core.debug.langCode.ToString());
168 Lang.excelDialog = null;
169 Debug.Log("LangMod: " + string.Join(", ", Mapping.OrderedLangMods));
170 if (Mapping.SourceSheets.Count > 0)
171 {
172 Debug.Log($"Source Sheets: {Mapping.SourceSheets.Count}, {Mapping.SourceLangMod}");
173 }
174 }
string lang
Definition: CoreConfig.cs:593
Lang.LangCode langCode
Definition: CoreDebug.cs:129
CoreDebug debug
Definition: Core.cs:31
CoreConfig config
Definition: Core.cs:70

References $, Core.config, EClass.core, Core.debug, Debug, CoreConfig.lang, and CoreDebug.langCode.

Referenced by ModManager.ParseExtra().

◆ ParseMap()

IReadOnlyList< FileInfo > ModPackage.ParseMap ( DirectoryInfo  dir,
bool  addToList = true 
)
inline

Definition at line 44 of file ModPackage.cs.

45 {
46 List<FileInfo> list = new List<FileInfo>();
47 FileInfo[] files = dir.GetFiles("*.z", SearchOption.TopDirectoryOnly);
48 foreach (FileInfo fileInfo in files)
49 {
50 string key = Path.ChangeExtension(fileInfo.Name, null);
51 if (addToList)
52 {
53 MOD.listMaps.Add(fileInfo);
54 }
55 maps[key] = fileInfo;
56 list.Add(fileInfo);
57 }
58 if (list.Count > 0)
59 {
60 Debug.Log($"Map: {maps.Count}");
61 }
62 return list;
63 }
static List< FileInfo > listMaps
Definition: MOD.cs:22

References $, Debug, and MOD.listMaps.

Referenced by ModManager.ParseExtra().

◆ ParseMapPiece()

IReadOnlyList< FileInfo > ModPackage.ParseMapPiece ( DirectoryInfo  dir,
bool  addToList = true 
)
inline

Definition at line 65 of file ModPackage.cs.

66 {
67 List<FileInfo> list = new List<FileInfo>();
68 FileInfo[] files = dir.GetFiles("*.mp", SearchOption.TopDirectoryOnly);
69 foreach (FileInfo fileInfo in files)
70 {
71 string key = Path.ChangeExtension(fileInfo.Name, null);
72 if (addToList)
73 {
74 MOD.listPartialMaps.Add(fileInfo);
75 }
76 partialMaps[key] = fileInfo;
77 list.Add(fileInfo);
78 }
79 if (list.Count > 0)
80 {
81 Debug.Log($"PartialMap: {partialMaps.Count}");
82 }
83 return list;
84 }
static List< FileInfo > listPartialMaps
Definition: MOD.cs:24

References $, Debug, and MOD.listPartialMaps.

Referenced by ModManager.ParseExtra().

◆ ParsePortrait()

IReadOnlyList< FileInfo > ModPackage.ParsePortrait ( DirectoryInfo  dir)
inline

Definition at line 123 of file ModPackage.cs.

124 {
125 List<FileInfo> list = new List<FileInfo>();
126 FileInfo[] files = dir.GetFiles("*.png", SearchOption.TopDirectoryOnly);
127 foreach (FileInfo fileInfo in files)
128 {
129 string name = fileInfo.Name;
130 if (name.StartsWith("BG_", StringComparison.Ordinal))
131 {
132 Portrait.modPortraitBGs.Add(fileInfo);
133 }
134 else if (name.StartsWith("BGF_", StringComparison.Ordinal))
135 {
136 Portrait.modPortraitBGFs.Add(fileInfo);
137 }
138 else if (name.EndsWith("-full.png", StringComparison.Ordinal))
139 {
140 Portrait.modFull.Add(fileInfo);
141 }
142 else if (name.EndsWith("-overlay.png", StringComparison.Ordinal))
143 {
144 Portrait.modOverlays.Add(fileInfo);
145 }
146 else
147 {
148 Portrait.modPortraits.Add(fileInfo);
149 }
150 Portrait.allIds.Add(name);
151 portraits[name] = fileInfo;
152 list.Add(fileInfo);
153 }
154 if (list.Count > 0)
155 {
156 Debug.Log($"Portrait: {portraits.Count}");
157 }
158 return list;
159 }
void Add(FileInfo fi, string path=null, string prefix="")
Definition: ModItemList.cs:85
static ModItemList< Sprite > modPortraitBGFs
Definition: Portrait.cs:8
static ModItemList< Sprite > modPortraitBGs
Definition: Portrait.cs:10
static ModItemList< Sprite > modOverlays
Definition: Portrait.cs:14
static ModItemList< Sprite > modPortraits
Definition: Portrait.cs:12
static HashSet< string > allIds
Definition: Portrait.cs:20
static ModItemList< Sprite > modFull
Definition: Portrait.cs:16

References $, ModItemList< T >.Add(), Portrait.allIds, Debug, Portrait.modFull, Portrait.modOverlays, Portrait.modPortraitBGFs, Portrait.modPortraitBGs, and Portrait.modPortraits.

Referenced by ModManager.ParseExtra().

◆ ParseSound()

IReadOnlyList< FileInfo > ModPackage.ParseSound ( DirectoryInfo  dir)
inline

Definition at line 176 of file ModPackage.cs.

177 {
178 List<FileInfo> list = new List<FileInfo>();
179 FileInfo[] files = dir.GetFiles("*.*", SearchOption.AllDirectories);
180 foreach (FileInfo fileInfo in files)
181 {
182 if (ModUtil.GetAudioType(fileInfo.Extension) != 0)
183 {
184 string key = Path.ChangeExtension(Path.GetRelativePath(dir.FullName, fileInfo.FullName).NormalizePath(), null);
185 Dictionary<string, FileInfo> dictionary = MOD.sounds;
186 FileInfo value = (sounds[key] = fileInfo);
187 dictionary[key] = value;
188 list.Add(fileInfo);
189 }
190 }
191 if (list.Count > 0)
192 {
193 Debug.Log($"Sound: {sounds.Count}");
194 }
195 int num = sounds.Keys.Count((string k) => k.StartsWith("BGM/"));
196 if (num > 0)
197 {
198 Debug.Log($"BGM: {num}");
199 }
200 return list;
201 }
static Dictionary< string, FileInfo > sounds
Definition: MOD.cs:26

References $, Debug, and MOD.sounds.

Referenced by ModManager.ParseExtra().

◆ ParseTalkText()

IReadOnlyList< FileInfo > ModPackage.ParseTalkText ( DirectoryInfo  dir)
inline

Definition at line 26 of file ModPackage.cs.

27 {
28 List<FileInfo> list = new List<FileInfo>();
29 FileInfo[] files = dir.GetFiles("*.xlsx", SearchOption.TopDirectoryOnly);
30 foreach (FileInfo fileInfo in files)
31 {
32 ExcelData excelData = new ExcelData(fileInfo.FullName);
33 TalkText.modList.Add(excelData);
34 talkTexts.Add(excelData);
35 list.Add(fileInfo);
36 }
37 if (list.Count > 0)
38 {
39 Debug.Log($"TalkText: {talkTexts.Count}");
40 }
41 return list;
42 }
static List< ExcelData > modList
Definition: TalkText.cs:5

References $, Debug, and TalkText.modList.

Referenced by ModManager.ParseExtra().

◆ ParseTexture()

IReadOnlyList< FileInfo > ModPackage.ParseTexture ( DirectoryInfo  dir)
inline

Definition at line 103 of file ModPackage.cs.

104 {
105 List<FileInfo> list = new List<FileInfo>();
106 FileInfo[] files = dir.GetFiles("*.png", SearchOption.AllDirectories);
107 foreach (FileInfo fileInfo in files)
108 {
109 string key = Path.ChangeExtension(Path.GetRelativePath(dir.FullName, fileInfo.FullName).NormalizePath(), null);
110 string text = Path.ChangeExtension(fileInfo.FullName, null);
111 Dictionary<string, string> dictModItems = SpriteReplacer.dictModItems;
112 string value = (textures[key] = text);
113 dictModItems[key] = value;
114 list.Add(fileInfo);
115 }
116 if (list.Count > 0)
117 {
118 Debug.Log($"Texture: {textures.Count}");
119 }
120 return list;
121 }
static Dictionary< string, string > dictModItems

References $, Debug, and SpriteReplacer.dictModItems.

Referenced by ModManager.ParseExtra().

◆ ParseTextureReplace()

IReadOnlyList< FileInfo > ModPackage.ParseTextureReplace ( DirectoryInfo  dir)
inline

Definition at line 86 of file ModPackage.cs.

87 {
88 List<FileInfo> list = new List<FileInfo>();
89 FileInfo[] files = dir.GetFiles("*.png", SearchOption.TopDirectoryOnly);
90 foreach (FileInfo fileInfo in files)
91 {
92 string key = Path.ChangeExtension(fileInfo.Name, null);
93 textureReplaces[key] = fileInfo;
94 list.Add(fileInfo);
95 }
96 if (list.Count > 0)
97 {
98 Debug.Log($"Texture Replace: {textureReplaces.Count}");
99 }
100 return list;
101 }

References $, and Debug.

Referenced by ModManager.ParseExtra().

◆ UpdateDialogs()

void ModPackage.UpdateDialogs ( DirectoryInfo  dir,
string  dirTemp 
)
inline

Definition at line 401 of file ModPackage.cs.

402 {
403 DirectoryInfo[] directories = dir.GetDirectories();
404 foreach (DirectoryInfo directoryInfo in directories)
405 {
406 UpdateDialogs(directoryInfo, dirTemp + "/" + directoryInfo.Name);
407 }
408 FileInfo[] files = dir.GetFiles();
409 foreach (FileInfo fileInfo in files)
410 {
411 if (fileInfo.Name.EndsWith("xlsx"))
412 {
413 UpdateExcelBook(fileInfo, dirTemp, updateOnlyText: true);
414 }
415 }
416 }
void UpdateExcelBook(FileInfo f, string dirTemp, bool updateOnlyText)
Definition: ModPackage.cs:430

References UpdateDialogs(), and UpdateExcelBook().

Referenced by AddOrUpdateLang(), and UpdateDialogs().

◆ UpdateExcelBook()

void ModPackage.UpdateExcelBook ( FileInfo  f,
string  dirTemp,
bool  updateOnlyText 
)
inline

Definition at line 430 of file ModPackage.cs.

431 {
432 string path = dirTemp + "/" + f.Name;
433 if (!File.Exists(path))
434 {
435 return;
436 }
437 XSSFWorkbook xSSFWorkbook;
438 using (FileStream @is = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
439 {
440 xSSFWorkbook = new XSSFWorkbook((Stream)@is);
441 }
442 XSSFWorkbook xSSFWorkbook2;
443 using (FileStream is2 = File.Open(f.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
444 {
445 xSSFWorkbook2 = new XSSFWorkbook((Stream)is2);
446 }
447 for (int i = 0; i < xSSFWorkbook2.NumberOfSheets; i++)
448 {
449 ISheet sheetAt = xSSFWorkbook2.GetSheetAt(i);
450 ISheet sheet = xSSFWorkbook.GetSheet(sheetAt.SheetName);
451 if (sheet == null)
452 {
453 Log.system = Log.system + "Old sheet not found:" + sheetAt.SheetName + Environment.NewLine;
454 continue;
455 }
456 int num = UpdateExcelSheet(sheetAt, sheet, updateOnlyText);
457 Log.system = Log.system + ((num == 0) ? "(No Changes) " : "(Updated) ") + f.FullName + "(" + sheetAt.SheetName + ")" + Environment.NewLine;
458 if (num != 0)
459 {
460 Log.system = Log.system + num + Environment.NewLine;
461 }
462 Log.system += Environment.NewLine;
463 }
464 using FileStream stream = new FileStream(f.FullName, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
465 xSSFWorkbook2.Write(stream);
466 }
int UpdateExcelSheet(ISheet destSheet, ISheet oldSheet, bool updateOnlytext)
Definition: ModPackage.cs:468

References UpdateExcelSheet().

Referenced by UpdateDialogs(), and UpdateTalks().

◆ UpdateExcelSheet()

int ModPackage.UpdateExcelSheet ( ISheet  destSheet,
ISheet  oldSheet,
bool  updateOnlytext 
)
inline

Definition at line 468 of file ModPackage.cs.

469 {
470 Dictionary<string, string[]> dictionary = new Dictionary<string, string[]>();
471 int num = 0;
472 int num2 = 0;
473 int num3 = 10;
474 IRow row2 = destSheet.GetRow(0);
475 IRow row3 = oldSheet.GetRow(0);
476 List<SheetIndex> list = new List<SheetIndex>();
477 int cellnum = FindField(row2, "id");
478 int cellnum2 = FindField(row3, "id");
479 for (int i = 0; i < row2.LastCellNum; i++)
480 {
481 ICell cell = row2.GetCell(i);
482 if (cell == null)
483 {
484 break;
485 }
486 string stringCellValue = cell.StringCellValue;
487 if (stringCellValue == "id" || (updateOnlytext && stringCellValue != "text"))
488 {
489 continue;
490 }
491 for (int j = 0; j < row3.LastCellNum; j++)
492 {
493 cell = row3.GetCell(j);
494 if (cell == null)
495 {
496 break;
497 }
498 if (cell.StringCellValue == stringCellValue)
499 {
500 list.Add(new SheetIndex
501 {
502 dest = i,
503 old = j
504 });
505 Debug.Log(destSheet.SheetName + "/" + stringCellValue + "/" + i + "/" + j);
506 break;
507 }
508 }
509 }
510 for (int k = 2; k <= oldSheet.LastRowNum; k++)
511 {
512 IRow row4 = oldSheet.GetRow(k);
513 if (row4 == null)
514 {
515 if (num2 >= num3)
516 {
517 break;
518 }
519 num2++;
520 continue;
521 }
522 num2 = 0;
523 ICell cell2 = row4.GetCell(cellnum2);
524 if (cell2 == null)
525 {
526 continue;
527 }
528 string text = ((cell2.CellType == CellType.Numeric) ? cell2.NumericCellValue.ToString() : cell2.StringCellValue);
529 if (text.IsEmpty())
530 {
531 continue;
532 }
533 string[] array = new string[list.Count];
534 for (int l = 0; l < list.Count; l++)
535 {
536 ICell cell3 = row4.GetCell(list[l].old);
537 if (cell3 != null)
538 {
539 string stringCellValue2 = cell3.StringCellValue;
540 if (!stringCellValue2.IsEmpty())
541 {
542 array[l] = stringCellValue2;
543 }
544 }
545 }
546 dictionary.Add(text, array);
547 }
548 num2 = 0;
549 for (int m = 2; m <= destSheet.LastRowNum; m++)
550 {
551 IRow row5 = destSheet.GetRow(m);
552 if (row5 == null)
553 {
554 if (num2 >= num3)
555 {
556 break;
557 }
558 num2++;
559 continue;
560 }
561 num2 = 0;
562 ICell cell4 = row5.GetCell(cellnum);
563 if (cell4 == null)
564 {
565 continue;
566 }
567 string text2 = ((cell4.CellType == CellType.Numeric) ? cell4.NumericCellValue.ToString() : cell4.StringCellValue);
568 if (text2.IsEmpty() || !dictionary.ContainsKey(text2))
569 {
570 continue;
571 }
572 string[] array2 = dictionary[text2];
573 for (int n = 0; n < list.Count; n++)
574 {
575 ICell cell5 = row5.GetCell(list[n].dest) ?? row5.CreateCell(list[n].dest, CellType.String);
576 if (cell5 != null)
577 {
578 cell5.SetCellValue(array2[n]);
579 cell5.SetCellType(CellType.String);
580 cell5.SetAsActiveCell();
581 num++;
582 }
583 }
584 }
585 return num;
586 static int FindField(IRow row, string id)
587 {
588 for (int num4 = 0; num4 < row.LastCellNum; num4++)
589 {
590 ICell cell6 = row.GetCell(num4);
591 if (cell6 == null)
592 {
593 break;
594 }
595 if (cell6.StringCellValue == id)
596 {
597 return num4;
598 }
599 }
600 return -1;
601 }
602 }

References Debug.

Referenced by UpdateExcelBook().

◆ UpdateSourceLocalizationFile()

override string ModPackage.UpdateSourceLocalizationFile ( string  lang,
bool  force = false 
)
inline

Definition at line 307 of file ModPackage.cs.

308 {
309 if (!base.IsSourceLocalizable)
310 {
311 return null;
312 }
313 IReadOnlyDictionary<string, string> modEntries = SourceLocalization.GetModEntries(id, lang);
314 SortedDictionary<string, string> sortedDictionary = ExportSourceLocalizations();
315 SortedDictionary<string, string> final = new SortedDictionary<string, string>();
316 foreach (var (key, defaultValue) in sortedDictionary)
317 {
318 final[key] = modEntries.GetValueOrDefault(key, defaultValue);
319 }
320 string text3 = Path.Combine(dirInfo.FullName, "LangMod/" + lang + "/SourceLocalization.json");
321 if (force || modEntries.Count != final.Count || modEntries.Any((KeyValuePair<string, string> kv) => !final.ContainsKey(kv.Key)))
322 {
323 JsonSerializerSettings setting = new JsonSerializerSettings
324 {
325 PreserveReferencesHandling = PreserveReferencesHandling.None,
326 NullValueHandling = NullValueHandling.Ignore
327 };
328 IO.SaveFile(text3, final, compress: false, setting);
329 SourceLocalization.UpdateModEntries(id, lang, final);
330 }
331 return text3;
332 }
static void SaveFile(string path, object obj, bool compress=false, JsonSerializerSettings setting=null)
Definition: IO.cs:88
override SortedDictionary< string, string > ExportSourceLocalizations()
Definition: ModPackage.cs:265

References ExportSourceLocalizations().

Referenced by LayerMod.OnInit().

◆ UpdateTalks()

void ModPackage.UpdateTalks ( DirectoryInfo  dir,
string  dirTemp 
)
inline

Definition at line 418 of file ModPackage.cs.

419 {
420 FileInfo[] files = dir.GetFiles();
421 foreach (FileInfo fileInfo in files)
422 {
423 if (fileInfo.Name == "god_talk.xlsx" || fileInfo.Name == "chara_talk.xlsx")
424 {
425 UpdateExcelBook(fileInfo, dirTemp, updateOnlyText: false);
426 }
427 }
428 }

References UpdateExcelBook().

Referenced by AddOrUpdateLang().


The documentation for this class was generated from the following file: