class MonkeyMusic::LevelLoader
LevelLoader
defines a DSL for building levels in a ruby file
Public Class Methods
new(level)
click to toggle source
# File lib/monkey_music/level_loader.rb, line 6 def initialize(level) @level = level @legend = {} end
Public Instance Methods
boost_cooldown(cooldown)
click to toggle source
# File lib/monkey_music/level_loader.rb, line 24 def boost_cooldown(cooldown) @level.boost_cooldown = cooldown end
carrying_capacity(capacity)
click to toggle source
# File lib/monkey_music/level_loader.rb, line 20 def carrying_capacity(capacity) @level.players.each { |p| p.monkey.capacity = capacity } end
layout(layout)
click to toggle source
# File lib/monkey_music/level_loader.rb, line 32 def layout(layout) # Transform layout into x y indexed array units = (layout.lines.map { |l| l.chomp.split(//) }).transpose @level.width = units.length @level.height = units[0].length # Add units from layout to level @level.height.times do |y| @level.width.times do |x| curr_character = units[x][y] unit = parse_character(curr_character) @level.add(unit, x, y) if unit end end end
legend(legend)
click to toggle source
# File lib/monkey_music/level_loader.rb, line 28 def legend(legend) @legend = legend end
time_limit(time_limit)
click to toggle source
# File lib/monkey_music/level_loader.rb, line 15 def time_limit(time_limit) @level.time_limit = time_limit @level.players.each {|p| p.remaining_time = time_limit } end
turn_limit(turn_limit)
click to toggle source
# File lib/monkey_music/level_loader.rb, line 11 def turn_limit(turn_limit) @level.turn_limit = turn_limit end
Private Instance Methods
parse_character(character)
click to toggle source
# File lib/monkey_music/level_loader.rb, line 49 def parse_character(character) klass = @legend[character] if klass unit = if (klass <= Monkey) klass.from_players(@level.players) elsif klass <= Track klass.from_user(@level.user) elsif klass == User @level.user else klass.new end if unit unit.character = character unit end end end