Sha256: ea5cd6d21dbd110a0c737b36d2d9ba8c6cb4309e260bc05cfc9eab23aeffc547

Contents?: true

Size: 900 Bytes

Versions: 1

Compression:

Stored size: 900 Bytes

Contents

# Directors manage actors.
class Director
  extend Publisher
  can_fire_anything
  attr_accessor :actors

  def initialize
    @actors = []
    @dead_actors = []
    setup
  end

  def setup
  end

  def add_actor(actor)
    @actors << actor
    actor.when :remove_me do
      remove_actor actor
    end
    fire :actor_added, actor
    actor
  end

  def remove_actor(actor)
    @dead_actors << actor
  end

  def empty?
    @actors.empty?
  end

  def pause
    @paused_actors = @actors
    @actors = []
  end

  def unpause
    unless @paused_actors.nil?
      @actors.each{|actor| actor.remove_self }
      @actors = @paused_actors
      @paused_actors = nil
    end
  end

  def update(time)
    for act in @dead_actors
      @actors.delete act
      fire :actor_removed, act
    end
    @dead_actors = []
    time_in_seconds = time / 1000.to_f
    fire :update, time, time_in_seconds
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gamebox-0.4.0.rc1 lib/gamebox/core/director.rb