class RpgTools::DiceBag

Attributes

base[RW]
dices[RW]
rolls[RW]
set[RW]
total[RW]

Public Class Methods

new(base) click to toggle source
# File lib/rpg_tools/dice_bag.rb, line 5
def initialize(base)
  @base  = base.upcase
  @dices = set_bag_content(@base.gsub(/[D].+/, '').to_i)
  @rolls = 0
  @set   = []
  @total = 0
end

Public Instance Methods

roll() click to toggle source
# File lib/rpg_tools/dice_bag.rb, line 13
def roll
  @set = roll_dices_set
  calculate_total_and_show_set
end
Also aliased as: roll!
roll!()
Alias for: roll

Private Instance Methods

calculate_total_and_show_set() click to toggle source
# File lib/rpg_tools/dice_bag.rb, line 47
def calculate_total_and_show_set
  @total = @set.inject{ |sum, x| sum + x }
  @set
end
empty_bag_check(dice_number) click to toggle source
# File lib/rpg_tools/dice_bag.rb, line 21
def empty_bag_check(dice_number)
  if dice_number.zero?
    raise ArgumentError.new("You can't create an empty bag.")
  end
end
roll_dices_set() click to toggle source
# File lib/rpg_tools/dice_bag.rb, line 37
def roll_dices_set
  @dices.each do |dice|
    dice.roll
  end

  @dices.each_with_object([]) do |dice, response|
    response << dice.value
  end
end
set_bag_content(dice_number) click to toggle source
# File lib/rpg_tools/dice_bag.rb, line 27
def set_bag_content(dice_number)
  empty_bag_check(dice_number)

  [].tap do |bag|
    dice_number.times do
      bag << Dice.new(@base.gsub(/^\d+/, ''))
    end
  end
end