private Parser( PassiveTreeDefinition passiveTree, BaseItemDefinitions baseItems, SkillDefinitions skills, StatTranslators statTranslators, IBuilderFactories builderFactories, IParsingData <TStep> parsingData) { _statTranslators = statTranslators; _coreParser = new CoreParser <TStep>(parsingData, builderFactories); _givenStats = parsingData.GivenStats; _passiveNodeParser = Caching(new PassiveNodeParser(passiveTree, builderFactories, _coreParser)); _skilledPassiveNodeParser = Caching(new SkilledPassiveNodeParser(passiveTree, builderFactories)); _itemParser = Caching(new ItemParser(baseItems, builderFactories, _coreParser, statTranslators[StatTranslationFileNames.Main])); _activeSkillParser = Caching(new ActiveSkillParser(skills, builderFactories, GetOrAddUntranslatedStatParser)); _supportSkillParser = Caching(new SupportSkillParser(skills, builderFactories, GetOrAddUntranslatedStatParser)); _skillsParser = new SkillsParser(skills, _activeSkillParser, _supportSkillParser); }
private async Task InitializeAsync() { var modsTask = DataUtils.LoadRePoEAsync <Dictionary <string, JsonMod> >("mods", true); var benchOptionsTask = DataUtils.LoadRePoEAsync <JsonCraftingBenchOption[]>("crafting_bench_options", true); var statTranslatorTask = StatTranslators.CreateFromMainFileAsync(true); ModDatabase = new ModDatabase(await modsTask, await benchOptionsTask); ItemBases = await LoadBases(); UniqueBases = await LoadUniques(); StatTranslator = await statTranslatorTask; ItemBaseDictionary = ItemBases.DistinctBy(b => b.Name).ToDictionary(b => b.Name); UniqueBaseDictionary = UniqueBases.DistinctBy(b => b.UniqueName).ToDictionary(b => b.UniqueName); _root = new WordSetTreeNode(ItemBases.Select(m => m.Name)); }
public static void UpdateItemAffixes( ModifierDefinitions modifierDefinitions, StatTranslators statTranslators, string baseTargetPath) { var domainWhitelist = new[] { ModDomain.AbyssJewel, ModDomain.Crafted, ModDomain.Flask, ModDomain.Item, ModDomain.Misc }; var statTranslator = statTranslators[StatTranslationFileNames.Main]; var affixLines = modifierDefinitions.Modifiers .Where(d => d.GenerationType == ModGenerationType.Prefix || d.GenerationType == ModGenerationType.Suffix) .Where(d => domainWhitelist.Contains(d.Domain)) .Select(d => d.Stats.Select(s => new UntranslatedStat(s.StatId, (s.MinValue + s.MaxValue) / 2))) .Select(statTranslator.Translate) .SelectMany(r => r.TranslatedStats) .Select(s => s.Replace('\n', ' ').Replace('\r', ' ')) .Select(s => (s, Regex.Replace(s, @"\d+(\.\d+)?", "#"))) .DistinctBy(t => t.Item2) .OrderBy(t => t.Item2) .Select(t => t.s); var path = baseTargetPath + "PoESkillTree.Engine.GameModel/Data/ItemAffixes.txt"; File.WriteAllLines(path, affixLines); }
public static void OneTimeSetUp() { _statTranslatorTask = StatTranslators.CreateFromMainFileAsync(); _uniqueDefinitionsTask = DataUtils.LoadXmlAsync <XmlUniqueList>("Equipment.Uniques.xml"); _modDefinitionsTask = LoadModsAsync(); }
public static async Task CreateTranslatorAsync() { _translator = await StatTranslators.CreateFromMainFileAsync().ConfigureAwait(false); }