class MonstersManual

Attributes

monsters[R]

Public Class Methods

new() click to toggle source
# File lib/monsters/monsters_manual.rb, line 12
def initialize
  @monsters = {}
  @sources = {}
  @challenges = {}
  @types = {}
end

Public Instance Methods

add_monster( monster ) click to toggle source
# File lib/monsters/monsters_manual.rb, line 81
def add_monster( monster )
  @monsters[monster.key]=monster

  @sources[monster.source] ||= []
  @sources[monster.source] << monster.key

  @challenges[monster.challenge] ||= []
  @challenges[monster.challenge] << monster.key

  @types[monster.type] ||= []
  @types[monster.type] << monster.key

end
challenges() click to toggle source
# File lib/monsters/monsters_manual.rb, line 58
def challenges
  @challenges.keys.sort
end
get( monster_key ) click to toggle source

Retrieve a monster by its monster key

# File lib/monsters/monsters_manual.rb, line 50
def get( monster_key )
  @monsters[ monster_key ]
end
load() click to toggle source
# File lib/monsters/monsters_manual.rb, line 19
def load
  @monsters = {}
  MONSTERS_MANUAL_CONTENT[:monsters].each do |m|
    monster = Monster.new( m[:challenge], m[:name], m[:type], m[:source] )
    monster.xp_value = m[:xp_value]
    monster.boss = m[:boss]
    @monsters[ monster.key ] = monster
  end

  @sources = MONSTERS_MANUAL_CONTENT[:sources]
  @challenges = MONSTERS_MANUAL_CONTENT[:challenges]
  @types = MONSTERS_MANUAL_CONTENT[:types]

end
save( filename ) click to toggle source
# File lib/monsters/monsters_manual.rb, line 34
def save( filename )
  monster_manual = {
      monsters: @monsters.map{ |_, m| m.to_hash },
      sources: @sources,
      challenges: @challenges,
      types: @types
  }
  File.open( filename, 'w' ) do |f|
    f.puts 'module MonstersManualContent'
    f.puts "\t MONSTERS_MANUAL_CONTENT = "
    PP.pp(monster_manual,f)
    f.puts 'end'
  end
end
select( sources: :all, types: :all, min_challenge: :none, max_challenge: :none ) click to toggle source
# File lib/monsters/monsters_manual.rb, line 66
def select( sources: :all, types: :all, min_challenge: :none, max_challenge: :none )
  validate_loaded

  sources_ids = ( sources == :all ? @sources.values.flatten : sources.map{ |s| @sources[s] }.flatten )
  types_ids = ( types == :all ? @types.values.flatten : types.map{ |t| @types[t] }.flatten )

  challenges = @challenges.keys
  challenges.reject!{ |c| c > max_challenge } if max_challenge != :none
  challenges.reject!{ |c| c < min_challenge } if min_challenge != :none
  challenges_ids = challenges.map{ |c| @challenges[ c ] }.flatten

  monsters_ids = sources_ids & types_ids & challenges_ids
  monsters_ids.map{ |m| @monsters[m] }
end
sources() click to toggle source
# File lib/monsters/monsters_manual.rb, line 54
def sources
  @sources.keys.sort
end
types() click to toggle source
# File lib/monsters/monsters_manual.rb, line 62
def types
  @types.keys.sort
end
validate_loaded() click to toggle source
# File lib/monsters/monsters_manual.rb, line 95
def validate_loaded
  raise 'Monster manual not loadad' if @monsters.empty?
end