Class: MonstersManual
Constant Summary
MonstersManualContent::MONSTERS_MANUAL_CONTENT
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of MonstersManual.
12
13
14
15
16
17
|
# File 'lib/monsters/monsters_manual.rb', line 12
def initialize
@monsters = {}
@sources = {}
@challenges = {}
@types = {}
end
|
Instance Attribute Details
Returns the value of attribute monsters.
8
9
10
|
# File 'lib/monsters/monsters_manual.rb', line 8
def monsters
@monsters
end
|
Instance Method Details
#add_monster(monster) ⇒ Object
81
82
83
84
85
86
87
88
89
90
91
92
93
|
# 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 ⇒ Object
58
59
60
|
# File 'lib/monsters/monsters_manual.rb', line 58
def challenges
@challenges.keys.sort
end
|
#get(monster_key) ⇒ Object
Retrieve a monster by its monster key
50
51
52
|
# File 'lib/monsters/monsters_manual.rb', line 50
def get( monster_key )
@monsters[ monster_key ]
end
|
#save(filename) ⇒ Object
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# 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) ⇒ Object
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# 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
|
54
55
56
|
# File 'lib/monsters/monsters_manual.rb', line 54
def sources
@sources.keys.sort
end
|
62
63
64
|
# File 'lib/monsters/monsters_manual.rb', line 62
def types
@types.keys.sort
end
|
#validate_loaded ⇒ Object
95
96
97
|
# File 'lib/monsters/monsters_manual.rb', line 95
def validate_loaded
raise 'Monster manual not loadad' if @monsters.empty?
end
|