Sha256: 7f85f7fbaa3a808a632e394266195d4939d6e0578faa4101d41fd6d4ea26df1f

Contents?: true

Size: 901 Bytes

Versions: 8

Compression:

Stored size: 901 Bytes

Contents

# Directors manage actors.
class Director
  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
    actor_added actor
    actor
  end

  def remove_actor(actor)
    @dead_actors << actor
  end

  def actor_removed(actor)
  end

  def actor_added(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
      actor_removed act
    end
    @dead_actors = []
    for act in @actors
      act.update time if act.alive?
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
gamebox-0.3.4 lib/gamebox/director.rb
gamebox-0.3.3 lib/gamebox/director.rb
gamebox-0.3.2 lib/gamebox/director.rb
gamebox-0.2.1 lib/gamebox/director.rb
gamebox-0.1.1 lib/gamebox/director.rb
gamebox-0.1.0 lib/gamebox/director.rb
gamebox-0.0.9 lib/gamebox/director.rb
gamebox-0.0.8 lib/gamebox/director.rb