Class: FelFlame::Entities
- Inherits:
-
Object
- Object
- FelFlame::Entities
- Defined in:
- lib/felflame.rb,
lib/felflame/entity_manager.rb
Overview
Creates and manages Entities. Allows iterating or accessing Entities using array methods directly on the class. Entities are just collections of Components.
Instance Method Summary collapse
-
#add(*components_to_add) ⇒ Boolean
Add any number components to the Entity.
-
#components ⇒ Hash<Component_Manager, Array<Integer>>
A hash that uses component manager constant names as keys, and where the values of those keys are arrays that contain the the components attached to this entity.
-
#delete ⇒ Boolean
Removes this Entity from the list and purges all references to this Entity from other Components, as well as its data.
-
#initialize(*components) ⇒ Entity
constructor
Creating a new Entity.
-
#remove(*components_to_remove) ⇒ Boolean
Remove a component from the Entity.
Constructor Details
#initialize(*components) ⇒ Entity
Creating a new Entity
7 8 9 10 11 12 |
# File 'lib/felflame/entity_manager.rb', line 7 def initialize(*components) # Add each component add(*components) self.class._data.push self end |
Instance Method Details
#add(*components_to_add) ⇒ Boolean
Add any number components to the Entity.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/felflame/entity_manager.rb', line 36 def add(*components_to_add) components_to_add.each do |component| if components[component.class].nil? components[component.class] = [component] component.entities.push self check_systems component, :addition_triggers elsif !components[component.class].include? component components[component.class].push component component.entities.push self check_systems component, :addition_triggers end end true end |
#components ⇒ Hash<Component_Manager, Array<Integer>>
A hash that uses component manager constant names as keys, and where the values of those keys are arrays that contain the the components attached to this entity.
16 17 18 |
# File 'lib/felflame/entity_manager.rb', line 16 def components @components ||= {} end |
#delete ⇒ Boolean
Removes this Entity from the list and purges all references to this Entity from other Components, as well as its data.
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/felflame/entity_manager.rb', line 22 def delete components.each do |component_manager, component_array| component_array.reverse_each do |component| component.entities.delete(self) end end FelFlame::Entities._data.delete self @components = {} true end |
#remove(*components_to_remove) ⇒ Boolean
Remove a component from the Entity
66 67 68 69 70 71 72 73 |
# File 'lib/felflame/entity_manager.rb', line 66 def remove(*components_to_remove) components_to_remove.each do |component| check_systems component, :removal_triggers if component.entities.include? self component.entities.delete self components[component.class].delete component end true end |