class AdventureRL::Events::Event

Public Class Methods

new(name) click to toggle source
# File lib/AdventureRL/Events/Event.rb, line 4
def initialize name
  @name           = name
  @objects        = []
  @trigger_method = nil
end

Public Instance Methods

<<(object)
Alias for: add_object
add(object)
Alias for: add_object
add_object(object) click to toggle source

Add one or multiple object(s) to this Event.

# File lib/AdventureRL/Events/Event.rb, line 21
def add_object object
  [object].flatten.each do |obj|
    Helpers::Error.error(
      "Object `#{obj.inspect}:#{obj.class.name}' cannot be given",
      "to this Event `#{self.inspect}:#{self.class.name}'."
    )  unless (valid_object? obj)
    @objects << obj  unless (@objects.include? obj)
  end
end
Also aliased as: add, <<
get_name() click to toggle source

Returns the name of the Event.

# File lib/AdventureRL/Events/Event.rb, line 11
def get_name
  return @name
end
get_objects() click to toggle source

Returns the objects that subscribed to this Event. (see add_object)

# File lib/AdventureRL/Events/Event.rb, line 16
def get_objects
  return @objects
end
on_trigger(&block) click to toggle source

Pass a block, which will be called when this Event is triggered (see trigger). The passed block takes an argument, which is a subscribed object.

# File lib/AdventureRL/Events/Event.rb, line 42
def on_trigger &block
  Helpers::Error.error(
    "Method #on_trigger needs a block to be passed."
  )  unless (block_given?)
  @trigger_method = block
end
remove_object(object) click to toggle source

Remove one or multiple object(s) from this Event.

# File lib/AdventureRL/Events/Event.rb, line 34
def remove_object object
  [object].flatten.each do |obj|
    @objects.delete obj
  end
end
trigger(*args) click to toggle source

The block defined with on_trigger will be called for every subscribed object. Optionally, additional args arguments can be passed, which will be passed to the trigger method.

# File lib/AdventureRL/Events/Event.rb, line 53
def trigger *args
  get_objects.each do |object|
    @trigger_method.call object, *args
  end
end

Private Instance Methods

valid_object?(object) click to toggle source

Returns true if the passed object can be given to this Event, and false if not. This method should be overwritten to fit specific requirements.

# File lib/AdventureRL/Events/Event.rb, line 64
def valid_object? object
  return !!object
end