Class: AdventureRL::EventHandlers::EventHandler
- Inherits:
-
Object
- Object
- AdventureRL::EventHandlers::EventHandler
- Defined in:
- lib/AdventureRL/EventHandlers/EventHandler.rb
Overview
An EventHandler can have multiple Event s. You can subscribe an object to a specific Event using its name, through the EventHandler.
Direct Known Subclasses
Instance Method Summary collapse
-
#add_event(event) ⇒ Object
(also: #add, #<<)
Add an Event to this EventHandler.
-
#initialize(settings = {}) ⇒ EventHandler
constructor
A new instance of EventHandler.
-
#subscribe(object) ⇒ Object
Subscribe an
objectto all Event s in this EventHandler. -
#trigger(event_name, *args) ⇒ Object
Trigger the Event with the name
event_name. -
#unsubscribe(object) ⇒ Object
Unsubscribe an
objectfrom all Event s in this EventHandler.
Constructor Details
#initialize(settings = {}) ⇒ EventHandler
Returns a new instance of EventHandler.
7 8 9 |
# File 'lib/AdventureRL/EventHandlers/EventHandler.rb', line 7 def initialize settings = {} @events = [] end |
Instance Method Details
#add_event(event) ⇒ Object Also known as: add, <<
Add an Event to this EventHandler.
12 13 14 15 16 17 18 |
# 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) ⇒ Object
Subscribe an object to all Event s in this EventHandler.
23 24 25 26 27 28 29 30 31 |
# 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) ⇒ Object
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.
44 45 46 47 48 49 50 |
# 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) ⇒ Object
Unsubscribe an object from all Event s in this EventHandler.
34 35 36 37 38 |
# File 'lib/AdventureRL/EventHandlers/EventHandler.rb', line 34 def unsubscribe object @events.each do |event| event.remove_object object end end |