class RpgTools::Dice::Bag
Attributes
content[RW]
dice_hash[RW]
modifiers[RW]
value[RW]
Public Class Methods
new(base)
click to toggle source
# File lib/rpg_tools/dice/bag.rb, line 12 def initialize(base) @dice_hash = Utils::Parser.new(base).handle @content = [] @modifiers = dice_hash[:modifiers] @value = 0 end
Public Instance Methods
roll()
click to toggle source
# File lib/rpg_tools/dice/bag.rb, line 19 def roll invalid_dice! if dice_klass.nil? fill_bag! roll_bag_content! return @total if modifiers.empty? @total = Utils::ModifierCalculator.new(@total, modifiers).recalculate end
Also aliased as: roll!
Private Instance Methods
dice_klass()
click to toggle source
# File lib/rpg_tools/dice/bag.rb, line 44 def dice_klass NOTATIONS[type] end
fill_bag!()
click to toggle source
# File lib/rpg_tools/dice/bag.rb, line 34 def fill_bag! quantity.times { @content << dice_klass.new(sides) } end
invalid_dice!()
click to toggle source
# File lib/rpg_tools/dice/bag.rb, line 60 def invalid_dice! raise ArgumentError, 'Unsupported dice type.' end
quantity()
click to toggle source
# File lib/rpg_tools/dice/bag.rb, line 56 def quantity dice_hash[:quantity] end
roll_bag_content!()
click to toggle source
# File lib/rpg_tools/dice/bag.rb, line 38 def roll_bag_content! @content.map(&:roll) @total = @content.map(&:value).inject(0, :+) end
sides()
click to toggle source
# File lib/rpg_tools/dice/bag.rb, line 52 def sides dice_hash[:sides] end
type()
click to toggle source
# File lib/rpg_tools/dice/bag.rb, line 48 def type dice_hash[:type] end