class CoopAl::SessionLog

SessionLog

Public Class Methods

new(date_generator, options) click to toggle source
# File lib/coop_al/session_log.rb, line 6
def initialize(date_generator, options)
  @date_generator = date_generator
  @encounter_count = options[:encounter_count]
  @party_size = options[:party_size]
  @dm_name = options[:dm_name]
  @accumulated_xp = 0
  @accumulated_treasure = Value.new
  @sessions = []
end

Public Instance Methods

dump(s) click to toggle source
# File lib/coop_al/session_log.rb, line 28
def dump(s)
  @sessions.each { |e| e.dump(s) }
  s.puts "Session Count: #{@sessions.size}"
end
record_downtime(adventure_name) click to toggle source
# File lib/coop_al/session_log.rb, line 23
def record_downtime(adventure_name)
  ensure_active_session(adventure_name)
  active_session.add_encounter(Downtime.new)
end
record_encounter(adventure_name, encounter_name, monsters, xp, loot) click to toggle source
# File lib/coop_al/session_log.rb, line 16
def record_encounter(adventure_name, encounter_name, monsters, xp, loot)
  ensure_active_session(adventure_name)
  @accumulated_xp += xp / @party_size
  @accumulated_treasure += loot.treasure_value / @party_size
  active_session.add_encounter(SessionEncounter.new(encounter_name, monsters, xp / @party_size, loot.treasure_value / @party_size, loot.items.dup))
end

Private Instance Methods

active_session() click to toggle source
# File lib/coop_al/session_log.rb, line 39
def active_session
  @sessions.last
end
ensure_active_session(adventure_name) click to toggle source
# File lib/coop_al/session_log.rb, line 35
def ensure_active_session(adventure_name)
  start_new_session(adventure_name) if @sessions.empty? || active_session.done?
end
session_number() click to toggle source
# File lib/coop_al/session_log.rb, line 47
def session_number
  @sessions.size + 1
end
start_new_session(adventure_name) click to toggle source
# File lib/coop_al/session_log.rb, line 43
def start_new_session(adventure_name)
  @sessions.push(Session.new(session_number, @date_generator, adventure_name, @dm_name, @accumulated_xp, @accumulated_treasure.dup, @encounter_count))
end