diff options
| author | realtradam <[email protected]> | 2022-01-01 14:21:20 -0500 |
|---|---|---|
| committer | realtradam <[email protected]> | 2022-01-01 14:21:20 -0500 |
| commit | acf82d111953f9b0a99f6870c0de31ec20c6d21b (patch) | |
| tree | e529eba79c1907c816f637204ca2fe582c5d5e7c | |
| parent | 6f8c1fea6d5925c2f1ccac2918a13cbf6eac9932 (diff) | |
| download | FelECS-acf82d111953f9b0a99f6870c0de31ec20c6d21b.tar.gz FelECS-acf82d111953f9b0a99f6870c0de31ec20c6d21b.zip | |
.
| -rw-r--r-- | lib/felflame/scene_manager.rb | 22 | ||||
| -rw-r--r-- | lib/felflame/stage_manager.rb | 41 | ||||
| -rw-r--r-- | lib/felflame/system_manager.rb | 2 | ||||
| -rw-r--r-- | spec/scene_manager_spec.rb | 6 |
4 files changed, 35 insertions, 36 deletions
diff --git a/lib/felflame/scene_manager.rb b/lib/felflame/scene_manager.rb index 06a0dfa..2b0d714 100644 --- a/lib/felflame/scene_manager.rb +++ b/lib/felflame/scene_manager.rb @@ -1,19 +1,23 @@ module FelFlame class Scenes - # The Constant name assigned to this Scene - attr_reader :const_name - # Allows overwriting the storage of systems, such as for clearing. # This method should generally only need to be used internally and # not by a game developer/ # @!visibility private attr_writer :systems + # How early this Scene should be executed in a list of Scenes + attr_accessor :priority + + def priority=(priority) + @priority = priority + FelFlame::Stage.scenes = FelFlame::Stage.scenes.sort_by(&:priority) + end + # 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 @@ -46,10 +50,10 @@ module FelFlame def remove(*systems_to_remove) self.systems -= systems_to_remove self.systems = systems.sort_by(&:priority) - systems_to_remove.each do |system| - system.scenes.delete system - end - FelFlame::Stage.update_systems_list if FelFlame::Stage.scenes.include? self + #systems_to_remove.each do |system| + # system.scenes.delete system + #end + #FelFlame::Stage.update_systems_list if FelFlame::Stage.scenes.include? self true end @@ -60,7 +64,7 @@ module FelFlame system.scenes.delete self end systems.clear - FelFlame::Stage.update_systems_list if FelFlame::Stage.scenes.include? self + #FelFlame::Stage.update_systems_list if FelFlame::Stage.scenes.include? self true end end diff --git a/lib/felflame/stage_manager.rb b/lib/felflame/stage_manager.rb index 05b5c19..4ea33da 100644 --- a/lib/felflame/stage_manager.rb +++ b/lib/felflame/stage_manager.rb @@ -4,16 +4,17 @@ module FelFlame # Allows clearing of scenes and systems. # Used internally by FelFlame and shouldn't need to be ever used by developers # @!visibility private - attr_writer :scenes, :systems + attr_writer :scenes # Add any number of Scenes to the Stage # @return [Boolean] +true+ def add(*scenes_to_add) self.scenes |= scenes_to_add - scenes_to_add.each do |scene| - self.systems |= scene.systems - end - self.systems = systems.sort_by(&:priority) + #scenes_to_add.each do |scene| + # self.systems |= scene.systems + #end + self.scenes = scenes.sort_by(&:priority) + #self.systems = systems.sort_by(&:priority) true end @@ -21,7 +22,8 @@ module FelFlame # @return [Boolean] +true+ def remove(*scenes_to_remove) self.scenes -= scenes_to_remove - update_systems_list + self.scenes = scenes.sort_by(&:priority) + #update_systems_list true end @@ -29,19 +31,19 @@ module FelFlame # This is used internally by FelFlame and shouldn't need to be ever used by developers # @return [Boolean] +true+ # @!visibility private - def update_systems_list - systems.clear - scenes.each do |scene| - self.systems |= scene.systems - end - self.systems = systems.sort_by(&:priority) - true - end + #def update_systems_list + # systems.clear + # scenes.each do |scene| + # self.systems |= scene.systems + # end + # self.systems = systems.sort_by(&:priority) + # true + #end # Clears all Scenes that were added to the Stage # @return [Boolean] +true+ def clear - systems.clear + #systems.clear scenes.clear true end @@ -49,7 +51,8 @@ module FelFlame # Executes one frame of the game. This executes all the Systems in the Scenes added to the Stage. Systems that exist in two or more different Scenes will still only get executed once. # @return [Boolean] +true+ def call - systems.each(&:call) + #systems.each(&:call) + scenes.each(&:call) true end @@ -62,9 +65,9 @@ module FelFlame # Stores systems in the order the stage manager needs to call them # This method should generally only need to be used internally and not by a game developer # @!visibility private - def systems - @systems ||= [] - end + #def systems + # @systems ||= [] + #end end end end diff --git a/lib/felflame/system_manager.rb b/lib/felflame/system_manager.rb index 183b359..ab9b3b3 100644 --- a/lib/felflame/system_manager.rb +++ b/lib/felflame/system_manager.rb @@ -4,7 +4,6 @@ module FelFlame attr_accessor :priority # The Constant name assigned to this System - attr_reader :const_name # Allows overwriting the storage of triggers, such as for clearing. # This method should generally only need to be used internally and @@ -80,7 +79,6 @@ module FelFlame # @param block [Proc] The code you wish to be executed when the system is triggered. Can be defined by using a +do end+ block or using +{ }+ braces. def initialize(name, priority: 0, &block) FelFlame::Systems.const_set(name, self) - @const_name = name @priority = priority @block = block @scenes = [] diff --git a/spec/scene_manager_spec.rb b/spec/scene_manager_spec.rb index a9f1064..0a209a3 100644 --- a/spec/scene_manager_spec.rb +++ b/spec/scene_manager_spec.rb @@ -56,12 +56,6 @@ describe 'Scenes' do expect(@scene.systems).to eq([]) end - it 'has the correct constant name' do - match = FelFlame::Scenes.new('Match') - expect(FelFlame::Scenes::Match.const_name).to eq('Match') - expect(match.const_name).to eq('Match') - end - it 'can execute Systems in the correct order' do @scene.add @system2, @system3, @system1 @scene.call |
