private static void ExportDeclaration() { ExporterMod.Log($"Start exporting all declarations"); var outputPath = Path.Combine(Exporter.outputPath, "typings"); if (Directory.Exists(outputPath)) { Directory.Delete(outputPath, true); } Directory.CreateDirectory(outputPath); TypeScriptHelper.SaveAllTypesDeclaration(outputPath); ExporterMod.Log($"Complete exporting all declarations", true); }
private static void ExportLangbase(string languagesPath, int index) { if (index >= LanguageMap.Count) { LongEventHandler.QueueLongEvent(delegate { Prefs.LangFolderName = originLangFolderName; PlayDataLoader.ClearAllPlayData(); PlayDataLoader.LoadAllPlayData(false); ExportDeclaration(); }, "LoadingLongEvent", false, null); return; } string code = LanguageMap[index][0]; string folderName = LanguageMap[index][1]; LoadedLanguage lang = null; foreach (var loadedLanugage in LanguageDatabase.AllLoadedLanguages) { if (loadedLanugage.folderName == folderName) { lang = loadedLanugage; break; } } if (lang == null) { throw new Exception($"{ExporterMod.Name} Language '{code}-{folderName}' no found."); } var path = Path.Combine(languagesPath, code); Directory.CreateDirectory(path); LongEventHandler.QueueLongEvent(delegate { Prefs.LangFolderName = folderName; ExporterMod.Log($"Start Loading language {Prefs.LangFolderName}"); PlayDataLoader.ClearAllPlayData(); PlayDataLoader.LoadAllPlayData(false); LongEventHandler.QueueLongEvent(delegate { ExporterMod.Log($"Complete Loading language {Prefs.LangFolderName}", true); ExporterMod.Log($"Start exporting language {Prefs.LangFolderName}"); var allLangTypes = typeof(ELang).AllSubclassesNonAbstract().ToList(); allLangTypes.Sort((Type a, Type b) => { return(a.Name.CompareTo(b.Name)); }); foreach (var langType in allLangTypes) { var typeArguments = new Type[] { langType, (Activator.CreateInstance(langType) as ELang).DefType }; var databaseType = typeof(Database <,>).MakeGenericType(typeArguments); var category = databaseType.GetProperty("Category").GetValue(null, null) as string; databaseType.GetMethod("Save", BindingFlags.Static | BindingFlags.Public).Invoke(null, new[] { Path.Combine(path, category) }); } ExporterMod.Log($"Complete exporting language {Prefs.LangFolderName}", true); ExportLangbase(languagesPath, index + 1); }, "LoadingLongEvent", false, null); }, "LoadingLongEvent", false, null); //LongEventHandler.QueueLongEvent(delegate { //}, $"LoadingLongEvent", false, null); }