class AdventureRL::EventHandlers::EventHandler

An EventHandler can have multiple Event s. You can subscribe an object to a specific Event using its name, through the EventHandler.

Public Class Methods

new(settings = {}) click to toggle source
# File lib/AdventureRL/EventHandlers/EventHandler.rb, line 7
def initialize settings = {}
  @events = []
end

Public Instance Methods

<<(event)
Alias for: add_event
add(event)
Alias for: add_event
add_event(event) click to toggle source

Add an Event to this EventHandler.

# File lib/AdventureRL/EventHandlers/EventHandler.rb, line 12
def add_event event
  Helpers::Error.error(
    "Passed `event' is not an instance of `Event'.",
    "Got `#{event.inspect}:#{event.class.name}'."
  )  unless (event.is_a? Event)
  @events << event
end
Also aliased as: add, <<
subscribe(object) click to toggle source

Subscribe an object to all Event s in this EventHandler.

# File lib/AdventureRL/EventHandlers/EventHandler.rb, line 23
def subscribe object
  Helpers::Error.error(
    "Object `#{object.inspect}:#{object.class.name}' cannot subscribe",
    "to this EventHandler `#{self.inspect}:#{self.class.name}'."
  )  unless (valid_object? object)
  @events.each do |event|
    event.add_object object
  end
end
trigger(event_name, *args) click to toggle source

Trigger the Event with the name event_name. Returns true if the Event was found and false if not. Optionally, additional args arguments can be passed, which will be passed to the trigger methods on the Event s.

# File lib/AdventureRL/EventHandlers/EventHandler.rb, line 44
def trigger event_name, *args
  event = @events.detect do |evnt|
    evnt.get_name == event_name
  end
  event.trigger *args  if (event)
  return !!event
end
unsubscribe(object) click to toggle source

Unsubscribe an object from all Event s in this EventHandler.

# File lib/AdventureRL/EventHandlers/EventHandler.rb, line 34
def unsubscribe object
  @events.each do |event|
    event.remove_object object
  end
end

Private Instance Methods

valid_object?(object) click to toggle source

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

# File lib/AdventureRL/EventHandlers/EventHandler.rb, line 57
def valid_object? object
  return !!object
end