Sha256: 55c4cd04001c733632f4d23c2d662e9673b64cc69942dc166026d5c1a4ccbf85

Contents?: true

Size: 879 Bytes

Versions: 3

Compression:

Stored size: 879 Bytes

Contents

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

    def initialize(opts={})
      default_opts = {
        :x => 0,
        :y => 0
      }
      @opts = default_opts.merge!(opts)
      @x = @opts[:x]
      @y = @opts[:y]
      @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

3 entries across 3 versions & 1 rubygems

Version Path
lotu-0.1.7 lib/lotu/actor.rb
lotu-0.1.6 lib/lotu/actor.rb
lotu-0.1.5 lib/lotu/actor.rb