Sha256: 474f7344b83b6215730413dc4061dca7bb8007b4c9a42d3dbf5169ea817b1fb6

Contents?: true

Size: 1.3 KB

Versions: 9

Compression:

Stored size: 1.3 KB

Contents

#
#
# TODO This is almost a generator.
#
class Wave
  
  attr_reader :generated_type, :execution_amount, :positioning_function
  
  class << self
    def uniform_random
      lambda { |window, instance| instance.warp_to *window.uniform_random_position }
    end
    def top_border offset = 0
      lambda { |window, instance| instance.warp_to rand(window.width), -offset }
    end
    def right_border offset = 0
      lambda { |window, instance| instance.warp_to window.width+offset, rand(window.height) }
    end
    def bottom_border offset = 0
      lambda { |window, instance| instance.warp_to rand(window.width), window.height+offset }
    end
    def left_border offset = 0
      lambda { |window, instance| instance.warp_to -offset, rand(window.height) }
    end
  end
  
  #
  #
  # Note: The function needs a param generated_type.
  #
  def initialize generated_type, execution_amount = 1, &positioning_function
    @generated_type      = generated_type
    @execution_amount    = execution_amount
    @positioning_function = positioning_function || Wave.uniform_random
  end
  
  #
  #
  def for_scheduling window
    lambda do
      self.execution_amount.times do
        instance = self.generated_type.new window
        instance.show
        self.positioning_function.call(window, instance)
      end
    end
  end
  
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
gosu_extensions-0.3.8 lib/core/wave.rb
gosu_extensions-0.3.7 lib/core/wave.rb
gosu_extensions-0.3.6 lib/core/wave.rb
gosu_extensions-0.3.5 lib/core/wave.rb
gosu_extensions-0.3.4 lib/core/wave.rb
gosu_extensions-0.3.3 lib/core/wave.rb
gosu_extensions-0.3.2 lib/core/wave.rb
gosu_extensions-0.3.1 lib/core/wave.rb
gosu_extensions-0.3.0 lib/core/wave.rb