Sha256: 387b56a717aec375ca0287aa76ea1be97660373d669d503ac01dfd24d0a57e62

Contents?: true

Size: 1.57 KB

Versions: 4

Compression:

Stored size: 1.57 KB

Contents

module Lotu
  class Window < Gosu::Window
    # delta time
    attr_reader :dt, :systems, :fonts
    attr_accessor :update_queue, :draw_queue, :input_listeners, :font

    def initialize(params={})
      super(800, 600, false)

      # Handy global window variable
      $window = self

      # Systems setup
      @systems = {}
      @update_queue = []
      @draw_queue = []
      @input_register = Hash.new{|hash,key| hash[key] = []}

      @fps_counter = FpsCounter.new
      @last_time = Gosu::milliseconds
      @fonts = Hash.new{|h,k| h[k] = Gosu::Font.new(self, Gosu::default_font_name, k)}

      # Add extra functionality
      extend Controllable
      extend Resourceful
      extend Systems::Collision
    end

    def update
      new_time = Gosu::milliseconds
      @dt = (new_time - @last_time)/1000.0
      @last_time = new_time
      @fps_counter.update(@dt)

      @systems.each_value do |system|
        system.update
      end

      @update_queue.each do |item|
        item.update
      end
    end

    def draw
      @draw_queue.each do |item|
        item.draw
      end
    end

    def button_down(id)
      @input_register[id].each do |item|
        item.button_down(id)
      end
    end

    def button_up(id)
      @input_register[id].each do |item|
        item.button_up(id)
      end
    end

    # Register controller
    def register_for_input(controller)
      controller.keys.each_key do |key|
        @input_register[key] << controller
      end
      @update_queue << controller
    end

    def register_for_draw(object)
      @draw_queue << object
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
lotu-0.1.7 lib/lotu/window.rb
lotu-0.1.6 lib/lotu/window.rb
lotu-0.1.5 lib/lotu/window.rb
lotu-0.1.4 lib/lotu/window.rb