Example #1
0
 public DamageStatConcretizer(
     IStatFactory statFactory, DamageSpecificationBuilder specificationBuilder,
     bool canApplyToSkillDamage = false, bool canApplyToAilmentDamage = false)
     : this(statFactory, specificationBuilder,
            CanApplyToDefault(canApplyToSkillDamage), CanApplyToDefault(canApplyToAilmentDamage),
            _ => new NullConditionBuilder())
 {
 }
Example #2
0
 private DamageStatConcretizer WithCanApply(DamageSpecificationBuilder specificationBuilder,
                                            bool applyToSkillDamage = false, bool applyToAilmentDamage = false,
                                            Func <IDamageSpecification, IConditionBuilder>?condition = null)
 {
     return(new DamageStatConcretizer(_statFactory, specificationBuilder,
                                      CanApplyToSkillDamage && applyToSkillDamage ? true : _applyToSkillDamage,
                                      CanApplyToAilmentDamage && applyToAilmentDamage ? true : _applyToAilmentDamage,
                                      condition ?? _condition));
 }
Example #3
0
 private DamageStatConcretizer(
     IStatFactory statFactory, DamageSpecificationBuilder specificationBuilder,
     bool?applyToSkillDamage, bool?applyToAilmentDamage,
     Func <IDamageSpecification, IConditionBuilder> condition)
 {
     _statFactory          = statFactory;
     _specificationBuilder = specificationBuilder;
     _applyToSkillDamage   = applyToSkillDamage;
     _applyToAilmentDamage = applyToAilmentDamage;
     _condition            = condition;
 }
Example #4
0
        private IEnumerable <StatBuilderResult> ApplyToAilmentDamage(
            BuildParameters parameters, StatBuilderResult result, IEnumerable <IStat> sourceStats)
        {
            var specBuilder = new DamageSpecificationBuilder().WithAilments();
            var applyStats  = sourceStats.Select(
                s => _statFactory.ApplyModifiersToAilmentDamage(s, parameters.ModifierForm)).ToList();

            foreach (var spec in specBuilder.Build(parameters))
            {
                var stats          = ConcretizeStats(spec, result.Stats);
                var valueConverter = ValueConverterForResult(parameters, result, spec)
                                     .AndThen(ApplyToDamageValueConverter(applyStats));
                yield return(new StatBuilderResult(stats, result.ModifierSource, valueConverter));
            }
        }
Example #5
0
 private DamageStatConcretizer With(DamageSpecificationBuilder specificationBuilder) =>
 new DamageStatConcretizer(_statFactory, specificationBuilder, null, null, _condition);