/// <summary> /// Constructor /// </summary> /// <param name="defaultTemplateProvider">Default Template Provider</param> /// <param name="cachedDbAccess">Cached Db Access</param> /// <param name="dailyRoutineFunctionNameGenerator">Daily routine function name generator</param> /// <param name="dailyRoutineEventPlaceholderResolver">Legacy Daily routine event placeholder resolver</param> /// <param name="scribanLanguageKeyGenerator">Scriban language key generator</param> /// <param name="languageKeyGenerator">Language Key Generator</param> /// <param name="conditionTranslator">Condition translator</param> /// <param name="localizerFactory">Localizer Factory</param> public ConditionRenderer(ICachedExportDefaultTemplateProvider defaultTemplateProvider, IExportCachedDbAccess cachedDbAccess, ILegacyDailyRoutineEventPlaceholderResolver dailyRoutineEventPlaceholderResolver, IDailyRoutineFunctionNameGenerator dailyRoutineFunctionNameGenerator, IScribanLanguageKeyGenerator scribanLanguageKeyGenerator, ILanguageKeyGenerator languageKeyGenerator, IConditionTranslator conditionTranslator, IStringLocalizerFactory localizerFactory) { _defaultTemplateProvider = defaultTemplateProvider; _conditionTranslator = conditionTranslator; _localizer = localizerFactory.Create(typeof(ConditionRenderer)); _elementRenderes = new Dictionary <ConditionType, ConditionRendererDispatcher>(); _elementRenderes.Add(ConditionType.Group, new ConditionRendererDispatcher(TemplateType.GeneralLogicGroup, defaultTemplateProvider, new GroupConditionResolver(this, defaultTemplateProvider, localizerFactory), new ScribanGroupConditionRenderer(this, defaultTemplateProvider, cachedDbAccess, localizerFactory))); _elementRenderes.Add(ConditionType.PlayerValueCondition, new ConditionRendererDispatcher(TemplateType.TaleConditionPlayerValue, defaultTemplateProvider, new NpcValueConditionResolver(defaultTemplateProvider, cachedDbAccess, languageKeyGenerator, localizerFactory, true), new ScribanNpcValueConditionRenderer(defaultTemplateProvider, cachedDbAccess, scribanLanguageKeyGenerator, localizerFactory, true))); _elementRenderes.Add(ConditionType.NpcValueCondition, new ConditionRendererDispatcher(TemplateType.TaleConditionNpcValue, defaultTemplateProvider, new NpcValueConditionResolver(defaultTemplateProvider, cachedDbAccess, languageKeyGenerator, localizerFactory, false), new ScribanNpcValueConditionRenderer(defaultTemplateProvider, cachedDbAccess, scribanLanguageKeyGenerator, localizerFactory, false))); _elementRenderes.Add(ConditionType.PlayerInventoryCondition, new ConditionRendererDispatcher(TemplateType.TaleConditionPlayerInventory, defaultTemplateProvider, new InventoryConditionResolver(defaultTemplateProvider, cachedDbAccess, languageKeyGenerator, localizerFactory), new ScribanInventoryConditionRenderer(defaultTemplateProvider, cachedDbAccess, scribanLanguageKeyGenerator, localizerFactory, true))); _elementRenderes.Add(ConditionType.NpcInventoryCondition, new ConditionRendererDispatcher(TemplateType.TaleConditionNpcInventory, defaultTemplateProvider, new InventoryConditionResolver(defaultTemplateProvider, cachedDbAccess, languageKeyGenerator, localizerFactory), new ScribanInventoryConditionRenderer(defaultTemplateProvider, cachedDbAccess, scribanLanguageKeyGenerator, localizerFactory, false))); _elementRenderes.Add(ConditionType.ChooseQuestValueCondition, new ConditionRendererDispatcher(TemplateType.TaleConditionQuestValue, defaultTemplateProvider, new QuestValueConditionResolver(defaultTemplateProvider, cachedDbAccess, languageKeyGenerator, localizerFactory), new ScribanQuestValueConditionRenderer(defaultTemplateProvider, cachedDbAccess, scribanLanguageKeyGenerator, localizerFactory))); _elementRenderes.Add(ConditionType.QuestStateCondition, new ConditionRendererDispatcher(TemplateType.TaleConditionQuestState, defaultTemplateProvider, new QuestStateConditionResolver(defaultTemplateProvider, cachedDbAccess, languageKeyGenerator, localizerFactory), new ScribanQuestStateConditionRenderer(cachedDbAccess, scribanLanguageKeyGenerator, localizerFactory))); _elementRenderes.Add(ConditionType.NpcAliveStateCondition, new ConditionRendererDispatcher(TemplateType.TaleConditionNpcAliveState, defaultTemplateProvider, new NpcAliveStateConditionResolver(defaultTemplateProvider, cachedDbAccess, languageKeyGenerator, localizerFactory), new ScribanNpcAliveStateConditionRenderer(cachedDbAccess, scribanLanguageKeyGenerator, localizerFactory))); _elementRenderes.Add(ConditionType.CurrentSkillValueCondition, new ConditionRendererDispatcher(TemplateType.TaleConditionCurrentSkillValue, defaultTemplateProvider, new CurrentSkillValueConditionResolver(defaultTemplateProvider, cachedDbAccess, languageKeyGenerator, localizerFactory), new ScribanCurrentSkillValueConditionRenderer(defaultTemplateProvider, cachedDbAccess, scribanLanguageKeyGenerator, localizerFactory))); _elementRenderes.Add(ConditionType.GameTimeCondition, new ConditionRendererDispatcher(TemplateType.TaleConditionGameTime, defaultTemplateProvider, new GameTimeConditionResolver(defaultTemplateProvider, cachedDbAccess, localizerFactory), new ScribanGameTimeConditionRenderer(defaultTemplateProvider, cachedDbAccess, localizerFactory))); _elementRenderes.Add(ConditionType.PlayerSkillValueCondition, new ConditionRendererDispatcher(TemplateType.TaleConditionPlayerSkillValue, defaultTemplateProvider, new SkillValueConditionResolver(defaultTemplateProvider, cachedDbAccess, languageKeyGenerator, localizerFactory), new ScribanSkillValueConditionRenderer(defaultTemplateProvider, cachedDbAccess, scribanLanguageKeyGenerator, localizerFactory))); _elementRenderes.Add(ConditionType.NpcSkillValueCondition, new ConditionRendererDispatcher(TemplateType.TaleConditionNpcSkillValue, defaultTemplateProvider, new SkillValueConditionResolver(defaultTemplateProvider, cachedDbAccess, languageKeyGenerator, localizerFactory), new ScribanSkillValueConditionRenderer(defaultTemplateProvider, cachedDbAccess, scribanLanguageKeyGenerator, localizerFactory))); _elementRenderes.Add(ConditionType.PlayerLearnedSkillCondition, new ConditionRendererDispatcher(TemplateType.TaleConditionPlayerLearnedSkill, defaultTemplateProvider, new LearnedSkillConditionResolver(defaultTemplateProvider, cachedDbAccess, languageKeyGenerator, localizerFactory), new ScribanLearnedSkillConditionRenderer(defaultTemplateProvider, cachedDbAccess, scribanLanguageKeyGenerator, localizerFactory, true))); _elementRenderes.Add(ConditionType.PlayerNotLearnedSkillCondition, new ConditionRendererDispatcher(TemplateType.TaleConditionPlayerNotLearnedSkill, defaultTemplateProvider, new LearnedSkillConditionResolver(defaultTemplateProvider, cachedDbAccess, languageKeyGenerator, localizerFactory), new ScribanLearnedSkillConditionRenderer(defaultTemplateProvider, cachedDbAccess, scribanLanguageKeyGenerator, localizerFactory, true))); _elementRenderes.Add(ConditionType.NpcLearnedSkillCondition, new ConditionRendererDispatcher(TemplateType.TaleConditionNpcLearnedSkill, defaultTemplateProvider, new LearnedSkillConditionResolver(defaultTemplateProvider, cachedDbAccess, languageKeyGenerator, localizerFactory), new ScribanLearnedSkillConditionRenderer(defaultTemplateProvider, cachedDbAccess, scribanLanguageKeyGenerator, localizerFactory, false))); _elementRenderes.Add(ConditionType.NpcNotLearnedSkillCondition, new ConditionRendererDispatcher(TemplateType.TaleConditionNpcNotLearnedSkill, defaultTemplateProvider, new LearnedSkillConditionResolver(defaultTemplateProvider, cachedDbAccess, languageKeyGenerator, localizerFactory), new ScribanLearnedSkillConditionRenderer(defaultTemplateProvider, cachedDbAccess, scribanLanguageKeyGenerator, localizerFactory, false))); _elementRenderes.Add(ConditionType.RandomValueCondition, new ConditionRendererDispatcher(TemplateType.TaleConditionRandomValue, defaultTemplateProvider, new RandomValueConditionResolver(defaultTemplateProvider, localizerFactory), new ScribanRandomValueConditionRenderer(cachedDbAccess, defaultTemplateProvider, localizerFactory))); _elementRenderes.Add(ConditionType.DailyRoutineEventIsDisabledCondition, new ConditionRendererDispatcher(TemplateType.TaleConditionDailyRoutineEventDisabled, defaultTemplateProvider, new DailyRoutineEventStateConditionResolver(defaultTemplateProvider, cachedDbAccess, dailyRoutineEventPlaceholderResolver, languageKeyGenerator, localizerFactory), new ScribanDailyRoutineEventStateConditionRenderer(cachedDbAccess, dailyRoutineFunctionNameGenerator, scribanLanguageKeyGenerator, localizerFactory))); _elementRenderes.Add(ConditionType.DailyRoutineEventIsEnabledCondition, new ConditionRendererDispatcher(TemplateType.TaleConditionDailyRoutineEventEnabled, defaultTemplateProvider, new DailyRoutineEventStateConditionResolver(defaultTemplateProvider, cachedDbAccess, dailyRoutineEventPlaceholderResolver, languageKeyGenerator, localizerFactory), new ScribanDailyRoutineEventStateConditionRenderer(cachedDbAccess, dailyRoutineFunctionNameGenerator, scribanLanguageKeyGenerator, localizerFactory))); _elementRenderes.Add(ConditionType.CodeCondition, new ConditionRendererDispatcher(TemplateType.TaleConditionCode, defaultTemplateProvider, new CodeConditionResolver(localizerFactory), new ScribanCodeConditionRenderer(cachedDbAccess, localizerFactory))); _elementRenderes.Add(ConditionType.ItemValueCondition, new ConditionRendererDispatcher(TemplateType.TaleConditionItemValue, defaultTemplateProvider, new ItemValueConditionResolver(defaultTemplateProvider, cachedDbAccess, languageKeyGenerator, localizerFactory), new ScribanItemValueConditionRenderer(defaultTemplateProvider, cachedDbAccess, scribanLanguageKeyGenerator, localizerFactory))); }
/// <summary> /// Constructor /// </summary> /// <param name="actionTranslator">Translation service for actions</param> /// <param name="conditionTranslator">Translation service for conditions</param> /// <param name="localizerFactory">Localizer Factory</param> public ReferenceAnalyzer(IActionTranslator actionTranslator, IConditionTranslator conditionTranslator, IStringLocalizerFactory localizerFactory) { _actionTranslator = actionTranslator; _conditionTranslator = conditionTranslator; _localizer = localizerFactory.Create(typeof(ReferenceAnalyzer)); }