class CoopAl::Session

Session

Public Class Methods

new(number, date_generator, adventure_name, dm_name, starting_xp, starting_treasure, encounter_count) click to toggle source
# File lib/coop_al/session.rb, line 6
def initialize(number, date_generator, adventure_name, dm_name, starting_xp, starting_treasure, encounter_count)
  @number = number
  @date_generator = date_generator
  @adventure_name = adventure_name
  @dm_name = dm_name
  @starting_xp = starting_xp
  @starting_treasure = starting_treasure
  @encounter_count = encounter_count
  @encounters = []

  @date_generator.add_session
end

Public Instance Methods

add_encounter(encounter) click to toggle source
# File lib/coop_al/session.rb, line 19
def add_encounter(encounter)
  @encounters << encounter
end
done?() click to toggle source
# File lib/coop_al/session.rb, line 23
def done?
  @encounters.count { |e| e.counts? } == @encounter_count
end
dump(s) click to toggle source
# File lib/coop_al/session.rb, line 27
def dump(s)
  s.puts "Adventure: #{@adventure_name}"
  s.puts "Session ##{@number}: #{@date_generator.session(@number)}"
  s.puts "DM: #{@dm_name}"
  s.puts "Starting XP: #{@starting_xp} (level #{level(@starting_xp)})"
  s.puts "XP Earned: #{xp_earned}"
  s.puts "XP Total: #{@starting_xp + xp_earned} (level #{level(@starting_xp + xp_earned)})"
  s.puts "Starting Treasure: #{@starting_treasure}"
  s.puts "Treasure +/-: #{treasure_earned}"
  s.puts "Treasure Total: #{@starting_treasure + treasure_earned}"
  @encounters.each { |e| e.dump(s) if e.counts? }
  s.puts
end

Private Instance Methods

level(xp) click to toggle source
# File lib/coop_al/session.rb, line 51
def level(xp)
  XpRequirementTable.new.level_from_xp(xp)
end
treasure_earned() click to toggle source
# File lib/coop_al/session.rb, line 47
def treasure_earned
  @encounters.inject(Value.new) { |a, e| a + e.treasure }
end
xp_earned() click to toggle source
# File lib/coop_al/session.rb, line 43
def xp_earned
  @encounters.inject(0) { |a, e| a + e.xp }
end