summaryrefslogtreecommitdiffhomepage
path: root/component_manager.rb
diff options
context:
space:
mode:
Diffstat (limited to 'component_manager.rb')
-rw-r--r--component_manager.rb48
1 files changed, 26 insertions, 22 deletions
diff --git a/component_manager.rb b/component_manager.rb
index f54c5f6..2f1b2e2 100644
--- a/component_manager.rb
+++ b/component_manager.rb
@@ -2,32 +2,36 @@
#require 'app/ECS/components/00_test_component.rb'
#require 'app/ECS/components/01_based.rb'
-
-class Components
- class <<self
- def entity_destroyed(entity_id)
- constants.each do |component|
- component.delete(entity_id) unless (component.id & Entity.signatures[entity_id]).zero?
+class FelFlame
+ class Components
+ @component_map = []
+ class <<self
+ def entity_destroyed(entity_id)
+ @component_map.delete(entity_id)
+ constants.each do |component| #TODO change delete to remove
+ component.delete(entity_id) unless (component.signature & FelFlame::Entity.signatures[entity_id]).zero?
+ end
end
- end
- def entity_created(entity_id)
- constants.each do |component|
- const_get(component.to_s).add(entity_id) unless (const_get(component.to_s).id & Entity.signatures[entity_id]).zero?
- end
- end
-
- def new(component_name, *attrs, **attrs_with_defaults)
- const_set(component_name, Class.new(Helper::BaseComponent) {})
- attrs.each do |attr|
- Components.const_get(component_name).attr_accessor attr
+ def entity_created(entity_id)
+ constants.each do |component|
+ const_get(component.to_s).add(entity_id) unless (const_get(component.to_s).signature & FelFlame::Entity.signatures[entity_id]).zero?
+ end
+ @component_map[entity_id] = []
end
- attrs_with_defaults.each do |attr, default|
- Components.const_get(component_name).attr_writer attr
- Components.const_get(component_name).define_method(attr) do
- return default unless instance_variable_defined? "@#{attr}"
- instance_variable_get "@#{attr}"
+ def new(component_name, *attrs, **attrs_with_defaults)
+ const_set(component_name, Class.new(FelFlame::Helper::BaseComponent) {})
+ attrs.each do |attr|
+ FelFlame::Components.const_get(component_name).attr_accessor attr
+ end
+ attrs_with_defaults.each do |attr, _default|
+ FelFlame::Components.const_get(component_name).attr_accessor attr
+ end
+ FelFlame::Components.const_get(component_name).define_method(:initialize) do
+ attrs_with_defaults.each do |attr, default|
+ instance_variable_set("@#{attr}", default)
+ end
end
end
end