Class: BuildingGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/rofltim.rb

Instance Method Summary collapse

Constructor Details

#initialize(world, background) ⇒ BuildingGenerator

Returns a new instance of BuildingGenerator.



222
223
224
225
# File 'lib/rofltim.rb', line 222

def initialize world, background
  @world = world
  @background = background
end

Instance Method Details

#build(x, y, width) ⇒ Object



251
252
253
# File 'lib/rofltim.rb', line 251

def build x, y, width
  Building.new x, y, width, @background
end

#destroy_if_necessaryObject



226
227
228
229
230
# File 'lib/rofltim.rb', line 226

def destroy_if_necessary
  while @world.buildings.any? && @world.buildings.first.x < -100
    @world.buildings.shift
  end
end

#generate_if_necessaryObject



231
232
233
234
235
236
237
238
239
# File 'lib/rofltim.rb', line 231

def generate_if_necessary
  while (b = @world.buildings.last).x < @world.horizon
    @world.buildings << build(
      b.right_x + minimium_gap + rand(24),
      next_y(b),
      rand(40) + 40
    )
  end
end

#maximum_height_deltaObject



241
# File 'lib/rofltim.rb', line 241

def maximum_height_delta; 10 end

#minimium_gapObject



240
# File 'lib/rofltim.rb', line 240

def minimium_gap; 16 end

#minimum_height_clearanceObject



242
# File 'lib/rofltim.rb', line 242

def minimum_height_clearance; 12; end

#next_y(previous_building) ⇒ Object



243
244
245
246
247
248
249
250
# File 'lib/rofltim.rb', line 243

def next_y previous_building
  p = previous_building
  delta = 0
  while delta.abs <= 1
    delta = maximum_height_delta * -1 + rand(2 * maximum_height_delta + 1)
  end
  [25, [previous_building.y - delta, minimum_height_clearance].max].min
end