protected override IEnumerable <KeyValuePair <string, AssetDumpColumnInfo> > GetLists() { foreach (var list in base.GetLists()) { yield return(list); } if (!TextDump.IsReadyForFinalDump()) { yield break; } yield return(new KeyValuePair <string, AssetDumpColumnInfo>("actor/animal", ItemLookupAndAssetCols)); foreach (var animal in new[] { "cat", "chicken" }) { foreach (var state in new[] { "wild", "pet" }) { yield return(new KeyValuePair <string, AssetDumpColumnInfo>($"actor/animal/action/{animal}/{state}", StdExcelAssetCols)); } } yield return(new KeyValuePair <string, AssetDumpColumnInfo>("actor/gameitem/recipe/recycling", ItemLookup)); foreach (var mapdir in new[] { "eventpoint", "popupinfo", "mapinfo" }) { yield return(new KeyValuePair <string, AssetDumpColumnInfo>($"map/{mapdir}", StdExcelAssetCols)); } }
protected override IEnumerable <TranslationGenerator> GetLocalizationGenerators() { foreach (var generator in base.GetLocalizationGenerators()) { yield return(generator); } var readyToDump = TextDump.IsReadyForFinalDump(); if (!readyToDump) { yield break; } foreach (var dir in new[] { "scene/common", "housing/base", "h/scene", "prefabs/tutorial_ui", "scene/map", "title/scene" }) { yield return(() => GetBindLocalizers(dir)); } yield return(GetStaticLocalizers); yield return(GetPopupLocalizers); yield return(GetHousingItemLocalizers); yield return(GetItemLocalizers); yield return(MakeManagerResourceLocalizers); yield return(WrapTranslationCollector("Fallback/PersonalityLines", FallbackPersonalityLinesLocalizer)); yield return(MakeCharacterCategoryLocalizers); yield return(WrapTranslationCollector("GameInfoTables/AgentLifeStyle", AgentLifeStyleLocalizer)); yield return(GetRecipeLocalizers); yield return(WrapTranslationCollector("Manager/Resources/DateActionName", DateActionNameLocalizer)); yield return(WrapTranslationCollector("Manager/Resources/MapName", MapNameLocalizer)); yield return(WrapTranslationCollector("Manager/Resources/ActionName", ActionNameLocalizer)); yield return(WrapTranslationCollector("Manager/Resources/SickName", SickNameLocalizer)); yield return(() => new[] { MapLabelPostProcessor(new StringTranslationDumper("Manager/Resources/BaseName", BaseNameLocalizer)) }); yield return(WrapTranslationCollector("Manager/Resources/MiniMapIconName", MiniMapIconNameLocalizer)); yield return(GetHAnimationLocalizers); // add this one an extra time at the end yield return(() => GetBindLocalizers("scene/map")); }
protected IEnumerable <ITranslationDumper> GetScenarioTextMergers() { if (!TextDump.IsReadyForFinalDump()) { yield break; } var needle = CombinePaths("", "abdata", "adv", "scenario", ""); var paths = TextDump.GetTranslationPaths().Where(k => k.Contains(needle)).ToList(); paths.Sort(); paths.Reverse(); var personalityCheckChars = "01234567890-".ToCharArray(); var mappings = new Dictionary <string, Dictionary <string, string> >(); var fileMaps = new Dictionary <string, List <string> >(); foreach (var path in paths) { var parts = path.Split(PathSplitter).ToList(); var personalityIndex = parts.IndexOf("scenario") + 1; if (personalityIndex == 0) { continue; } var personality = parts[personalityIndex]; var isPersonalityFile = personality.Length > 1 && personality.StartsWith("c") && personalityCheckChars.Contains(personality[1]); if (!isPersonalityFile) { continue; } if (!mappings.TryGetValue(personality, out var personalityMap)) { mappings[personality] = personalityMap = new Dictionary <string, string>(new TrimmedStringComparer()); } if (!fileMaps.TryGetValue(personality, out var personalityFiles)) { fileMaps[personality] = personalityFiles = new List <string>(); } personalityFiles.Add(path); foreach (var entry in TextDump.GetTranslationsForPath(path) .Where(entry => !entry.Value.IsNullOrEmpty())) { AddLocalizationToResults(personalityMap, entry); } } foreach (var translationDumper in BuildTranslationMergers(fileMaps, mappings)) { yield return(translationDumper); } }
protected override IEnumerable <KeyValuePair <string, AssetDumpColumnInfo> > GetLists() { foreach (var list in base.GetLists()) { yield return(list); } if (TextDump.IsReadyForFinalDump()) { yield return(new KeyValuePair <string, AssetDumpColumnInfo>("title", TitleAssetCols)); } }
protected override IEnumerable <KeyValuePair <string, string> > HandleChaListData(TextAsset asset, AssetDumpColumnInfo assetDumpColumnInfo) { if (!TextDump.IsReadyForFinalDump()) { foreach (var result in base.HandleChaListData(asset, assetDumpColumnInfo)) { yield return(result); } } else { // now try and redump/populate if (!TextDump.IsReadyForFinalDump()) { yield break; } var categoryName = asset.name.Substring(0, asset.name.LastIndexOf("_", StringComparison.Ordinal)); var category = (ChaListDefine.CategoryNo)Enum.Parse(typeof(ChaListDefine.CategoryNo), categoryName); var catInfo = Singleton <Character> .Instance.chaListCtrl.GetCategoryInfo(category); var lookupDict = new Dictionary <string, string>(); foreach (var value in catInfo.Select(c => c.Value)) { if (!value.Name.IsNullOrEmpty()) { lookupDict[$"{value.Kind}_{value.Id}"] = value.Name; } } var chaListData = MessagePackSerializer.Deserialize <ChaListData>(asset.bytes); foreach (var entry in chaListData.dictList.Values) { foreach (var id in chaListData.dictList.Keys) { var key = chaListData.GetInfo(id, "Name"); if (string.IsNullOrEmpty(key)) { continue; } if (!lookupDict.TryGetValue($"{chaListData.GetInfo(id, "Kind")}_{id}", out var val)) { val = string.Empty; } yield return(new KeyValuePair <string, string>(key, val)); } } } }
protected IEnumerable <ITranslationDumper> GetCommunicationTextMergers() { if (!TextDump.IsReadyForFinalDump()) { yield break; } var needle = CombinePaths("", "abdata", "communication", ""); var paths = TextDump.GetTranslationPaths().Where(k => k.Contains(needle)).ToList(); paths.Sort(); paths.Reverse(); var splitter = new HashSet <char> { Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar }.ToArray(); var mappings = new Dictionary <string, Dictionary <string, string> >(); var fileMaps = new Dictionary <string, List <string> >(); foreach (var path in paths) { var parent = Path.GetFileName(Path.GetDirectoryName(path)); if (parent is null) { continue; } if (!mappings.TryGetValue(parent, out var personalityMap)) { mappings[parent] = personalityMap = new Dictionary <string, string>(new TrimmedStringComparer()); } if (!fileMaps.TryGetValue(parent, out var personalityFiles)) { fileMaps[parent] = personalityFiles = new List <string>(); } personalityFiles.Add(path); foreach (var entry in TextDump.GetTranslationsForPath(path) .Where(entry => !entry.Value.IsNullOrEmpty())) { AddLocalizationToResults(personalityMap, entry); } } foreach (var translationDumper in BuildTranslationMergers(fileMaps, mappings)) { yield return(translationDumper); } }
protected virtual IEnumerable <TranslationGenerator> GetLocalizationGenerators() { yield return(GetHookedTextLocalizationGenerators); yield return(GetAutoLocalizerDumpers); yield return(GetStaticLocalizers); yield return(WrapTranslationCollector("Personalities", PersonalityLocalizer)); #if LOCALIZE yield return(GetOtherDataLocalizers); #endif if (TextDump.IsReadyForFinalDump()) { yield return(GetInstanceLocalizers); } }
protected override IEnumerable <TranslationGenerator> GetLocalizationGenerators() { foreach (var generator in base.GetLocalizationGenerators()) { yield return(generator); } var readyToDump = TextDump.IsReadyForFinalDump(); yield return(LocalizationMappingLocalizers); yield return(WrapTranslationCollector("Tutorials/TutorialTitles", TutorialTitleLocalizer)); yield return(GetTutorialPrefabLocalizers); // this crashes, and doesn't find anything not covered already //foreach (var entry in GetUILocalizers(Singleton<Manager.Resources>.Instance.DefinePack, nameof(Singleton<Manager.Resources>.Instance.DefinePack))) //{ // yield return entry; //} }
protected override IEnumerable <TranslationGenerator> GetLocalizationGenerators() { foreach (var generator in base.GetLocalizationGenerators()) { yield return(generator); } var readyToDump = TextDump.IsReadyForFinalDump(); foreach (var dir in new[] { "scene/common", "housing/base", "h/scene", "prefabs/tutorial_ui", "scene/map", "title/scene" }) { yield return(() => GetBindLocalizers(dir)); } // this crashes, and doesn't find anything not covered already //foreach (var entry in GetUILocalizers(Singleton<Manager.Resources>.Instance.DefinePack, nameof(Singleton<Manager.Resources>.Instance.DefinePack))) //{ // yield return entry; //} yield return(LocalizationMappingLocalizers); yield return(WrapTranslationCollector("Tutorials/TutorialTitles", TutorialTitleLocalizer)); yield return(GetTutorialPrefabLocalizers); yield return(GetStaticLocalizers); yield return(GetPopupLocalizers); yield return(GetHousingItemLocalizers); yield return(GetItemLocalizers); yield return(MakeManagerResourceLocalizers); yield return(WrapTranslationCollector("Fallback/PersonalityLines", FallbackPersonalityLinesLocalizer)); if (!readyToDump) { yield break; } yield return(MakeCharacterCategoryLocalizers); yield return(WrapTranslationCollector("GameInfoTables/AgentLifeStyle", AgentLifeStyleLocalizer)); yield return(GetRecipeLocalizers); yield return(WrapTranslationCollector("Manager/Resources/DateActionName", DateActionNameLocalizer)); yield return(WrapTranslationCollector("Manager/Resources/MapName", MapNameLocalizer)); yield return(WrapTranslationCollector("Manager/Resources/ActionName", ActionNameLocalizer)); yield return(WrapTranslationCollector("Manager/Resources/SickName", SickNameLocalizer)); yield return(() => new[] { MapLabelPostProcessor(new StringTranslationDumper("Manager/Resources/BaseName", BaseNameLocalizer)) }); yield return(WrapTranslationCollector("Manager/Resources/MiniMapIconName", MiniMapIconNameLocalizer)); yield return(GetHAnimationLocalizers); // add this one an extra time at the end yield return(() => GetBindLocalizers("scene/map")); }