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