18 lines
806 B
C#
18 lines
806 B
C#
using RpgRoller.Contracts;
|
|
using RpgRoller.Domain;
|
|
|
|
namespace RpgRoller.Services;
|
|
|
|
public sealed class RollEngine(StandardRollEngine standardRollEngine, D6RollEngine d6RollEngine, RolemasterRollEngine rolemasterRollEngine)
|
|
{
|
|
public (int Total, string Breakdown, IReadOnlyList<RollDieResult> Dice) Roll(RulesetKind ruleset, DiceExpression expression, int wildDice, bool allowFumble, int? fumbleRange, bool rolemasterAutoRetry = false, int situationalModifier = 0)
|
|
{
|
|
if (ruleset == RulesetKind.D6)
|
|
return d6RollEngine.Roll(expression, wildDice, allowFumble);
|
|
|
|
if (ruleset == RulesetKind.Rolemaster)
|
|
return rolemasterRollEngine.Roll(expression, fumbleRange, rolemasterAutoRetry, situationalModifier);
|
|
|
|
return standardRollEngine.Roll(expression);
|
|
}
|
|
} |