コード例 #1
0
ファイル: RerollNode.cs プロジェクト: garyray-k/DiceRoller
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder(Expression?.ToString() ?? String.Empty);

            if (MaxRerollsExpr != null)
            {
                sb.AppendFormat(".rerollN({0}, ", MaxRerollsExpr.ToString());
            }
            else if (MaxRerolls == 1)
            {
                sb.Append(".rerollOnce(");
            }
            else if (MaxRerolls == 0)
            {
                sb.Append(".reroll(");
            }
            else
            {
                // MaxRerolls was not 0 or 1 and MaxRerollsExpr is null, this should never happen.
                sb.Append(".<<UNKNOWN REROLL>>(");
            }

            sb.Append(Comparison.ToString());
            sb.Append(")");

            return(sb.ToString());
        }
コード例 #2
0
ファイル: RerollNode.cs プロジェクト: garyray-k/DiceRoller
        protected override long EvaluateInternal(RollData data, DiceAST root, int depth)
        {
            var rolls = MaxRerollsExpr?.Evaluate(data, root, depth + 1) ?? 0;

            rolls += Comparison.Evaluate(data, root, depth + 1);
            rolls += Expression.Evaluate(data, root, depth + 1);
            rolls += MaybeReroll(data, root, depth);

            return(rolls);
        }