class Dice::Result attr_reader :rolls def initialize @rolls = [] end # @param other [Dice::Result] def ==(other) sides == other.sides && face == other.face end # @param roll [Dice::Roll] def add_roll(roll) @rolls << roll end # @return [Integer] def total @rolls.sum(&:face) end def increase_sides_below_max(max_value, increase_by) @rolls.each do |roll| roll.increase_side_below_max(max_value, increase_by) end end def to_s "#{total} (#{@rolls.map(&:face).join(', ')})" end end