示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#4
0
 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);
 }