diff options
| author | realtradam <[email protected]> | 2021-07-07 17:49:00 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2021-07-07 17:49:00 -0400 |
| commit | 09fc5ef46b911f9d7e31cdedd240e7afc4c11c92 (patch) | |
| tree | 65d0ac1ffaf269cded9c5df681dee8d9dc7f0d73 /scene_manager.rb | |
| parent | 4758c32fbd5cba714341f9735a994fd244664ff7 (diff) | |
| download | FelECS-09fc5ef46b911f9d7e31cdedd240e7afc4c11c92.tar.gz FelECS-09fc5ef46b911f9d7e31cdedd240e7afc4c11c92.zip | |
completed functionality
Diffstat (limited to 'scene_manager.rb')
| -rw-r--r-- | scene_manager.rb | 52 |
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 |
