summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2022-01-01 14:21:20 -0500
committerrealtradam <[email protected]>2022-01-01 14:21:20 -0500
commitacf82d111953f9b0a99f6870c0de31ec20c6d21b (patch)
treee529eba79c1907c816f637204ca2fe582c5d5e7c
parent6f8c1fea6d5925c2f1ccac2918a13cbf6eac9932 (diff)
downloadFelECS-acf82d111953f9b0a99f6870c0de31ec20c6d21b.tar.gz
FelECS-acf82d111953f9b0a99f6870c0de31ec20c6d21b.zip
.
-rw-r--r--lib/felflame/scene_manager.rb22
-rw-r--r--lib/felflame/stage_manager.rb41
-rw-r--r--lib/felflame/system_manager.rb2
-rw-r--r--spec/scene_manager_spec.rb6
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