Class: BuildingGenerator
- Inherits:
-
Object
- Object
- BuildingGenerator
- Defined in:
- lib/rofltim.rb
Instance Method Summary collapse
- #build(x, y, width) ⇒ Object
- #destroy_if_necessary ⇒ Object
- #generate_if_necessary ⇒ Object
-
#initialize(world, background) ⇒ BuildingGenerator
constructor
A new instance of BuildingGenerator.
- #maximum_height_delta ⇒ Object
- #minimium_gap ⇒ Object
- #minimum_height_clearance ⇒ Object
- #next_y(previous_building) ⇒ Object
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_necessary ⇒ Object
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_necessary ⇒ Object
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_delta ⇒ Object
241 |
# File 'lib/rofltim.rb', line 241 def maximum_height_delta; 10 end |
#minimium_gap ⇒ Object
240 |
# File 'lib/rofltim.rb', line 240 def minimium_gap; 16 end |
#minimum_height_clearance ⇒ Object
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 |