class RpgTools::Dice::Base

Attributes

modifiers[RW]
rolls[RW]
sides[RW]
value[RW]

Public Class Methods

new(sides = 0, modifiers = '') click to toggle source
# File lib/rpg_tools/dice/base.rb, line 6
def initialize(sides = 0, modifiers = '')
  @sides = sides.zero? ? sides_count : sides
  @modifiers = modifiers
  @value = 0
  @rolls = 0

  check_sides
end

Public Instance Methods

roll() click to toggle source
# File lib/rpg_tools/dice/base.rb, line 15
def roll
  @rolls += 1

  @value = perform_roll
end

Private Instance Methods

check_sides() click to toggle source
# File lib/rpg_tools/dice/base.rb, line 41
def check_sides
  if not_enough_sides
    raise ArgumentError, 'Your dice must have at least three sides.'
  end
end
not_enough_sides() click to toggle source
# File lib/rpg_tools/dice/base.rb, line 47
def not_enough_sides
  @sides < 3
end
perform_roll() click to toggle source
# File lib/rpg_tools/dice/base.rb, line 23
def perform_roll
  return roll_calculation if @modifiers.empty?

  roll_with_modifiers
end
roll_calculation() click to toggle source
# File lib/rpg_tools/dice/base.rb, line 33
def roll_calculation
  raise NotImplementedError
end
roll_with_modifiers() click to toggle source
# File lib/rpg_tools/dice/base.rb, line 29
def roll_with_modifiers
  Utils::ModifierCalculator.new(roll_calculation, @modifiers).recalculate
end
sides_count() click to toggle source
# File lib/rpg_tools/dice/base.rb, line 37
def sides_count
  0
end