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
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
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