Sha256: e9e3d36e98f8be010e2b21348171a196380483955cfb2d33577c80107e608176

Contents?: true

Size: 934 Bytes

Versions: 1

Compression:

Stored size: 934 Bytes

Contents

module Lotu
  class Actor
    attr_accessor :parent, :x, :y, :systems

    def initialize(opts={})
      default_opts = {
        :x => 0,
        :y => 0,
        :color => 0xffffffff
      }
      opts = default_opts.merge!(opts)
      @x = opts[:x]
      @y = opts[:y]
      @color = opts[:color]
      @parent = $window
      @parent.update_queue << self

      # Add extra functionality
      self.extend Drawable
      self.extend Controllable
      self.extend Eventful
      self.extend Collidable

      @systems = {}
    end

    # Easy access to delta-time
    def dt
      $window.dt
    end

    # Remove ourselves from the update queue
    def die
      @parent.update_queue.delete(self)
    end

    def activate_system(klass, opts={})
      @systems[klass] = klass.new(self, opts)
    end

    def update
      @systems.each_pair do |klass, system|
        system.update
      end
    end

    def draw;end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lotu-0.1.4 lib/lotu/actor.rb