summaryrefslogtreecommitdiffhomepage
path: root/scene_manager.rb
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2021-07-07 17:49:00 -0400
committerrealtradam <[email protected]>2021-07-07 17:49:00 -0400
commit09fc5ef46b911f9d7e31cdedd240e7afc4c11c92 (patch)
tree65d0ac1ffaf269cded9c5df681dee8d9dc7f0d73 /scene_manager.rb
parent4758c32fbd5cba714341f9735a994fd244664ff7 (diff)
downloadFelECS-09fc5ef46b911f9d7e31cdedd240e7afc4c11c92.tar.gz
FelECS-09fc5ef46b911f9d7e31cdedd240e7afc4c11c92.zip
completed functionality
Diffstat (limited to 'scene_manager.rb')
-rw-r--r--scene_manager.rb52
1 files changed, 51 insertions, 1 deletions
diff --git a/scene_manager.rb b/scene_manager.rb
index 31be12e..f18a39f 100644
--- a/scene_manager.rb
+++ b/scene_manager.rb
@@ -1,4 +1,54 @@
class FelFlame
- class Scene
+ class Scenes
+ # The Constant name assigned to this Scene
+ attr_reader :const_name
+
+ attr_writer :systems
+
+ # Create a new Scene using the name given
+ # @param name [String] String format must follow requirements of a constant
+ def initialize(name)
+ FelFlame::Scenes.const_set(name, self)
+ @const_name = name
+ end
+
+ # The list of Systems this Scene contains
+ # @return [Array<System>]
+ def systems
+ @systems ||= []
+ end
+
+ # Execute all systems in this Scene, in the order of their priority
+ # @return [Boolean] +true+
+ def call
+ systems.each(&:call)
+ true
+ end
+
+ # Adds any number of Systems to this Scene
+ # @return [Boolean] +true+
+ def add(*systems_to_add)
+ self.systems |= systems_to_add
+ systems.sort_by!(&:priority)
+ FelFlame::Stage.update_systems_list if FelFlame::Stage.scenes.include? self
+ true
+ end
+
+ # Removes any number of SystemS from this Scene
+ # @return [Boolean] +true+
+ def remove(*systems_to_remove)
+ self.systems -= systems_to_remove
+ systems.sort_by!(&:priority)
+ FelFlame::Stage.update_systems_list if FelFlame::Stage.scenes.include? self
+ true
+ end
+
+ # Removes all Systems from this Scene
+ # @return [Boolean] +true+
+ def clear
+ systems.clear
+ FelFlame::Stage.update_systems_list if FelFlame::Stage.scenes.include? self
+ true
+ end
end
end