diff options
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | README.mdown | 3 | ||||
| -rw-r--r-- | Rakefile | 6 | ||||
| -rw-r--r-- | coverage/coverage_badge_total.svg | 35 | ||||
| -rw-r--r-- | entity_manager.rb | 98 | ||||
| -rw-r--r-- | scene_manager.rb | 0 | ||||
| -rw-r--r-- | stage_manager.rb | 0 | ||||
| -rw-r--r-- | test.rb | 18 | ||||
| -rw-r--r-- | tests/_test_helper.rb | 28 | ||||
| -rw-r--r-- | tests/_test_sample.rb | 14 | ||||
| -rw-r--r-- | tests/component_manager_test.rb | 15 | ||||
| -rw-r--r-- | tests/entity_manager_test.rb | 18 | ||||
| -rw-r--r-- | tests/scene_manager_test.rb | 15 | ||||
| -rw-r--r-- | tests/signatures_test.rb | 15 | ||||
| -rw-r--r-- | tests/stage_manager_test.rb | 15 | ||||
| -rw-r--r-- | tests/system_manager_test.rb | 15 |
16 files changed, 231 insertions, 66 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c6f541 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +coverage/* +!coverage/coverage_badge_total.svg diff --git a/README.mdown b/README.mdown index b43cd37..4b684cc 100644 --- a/README.mdown +++ b/README.mdown @@ -1,6 +1,9 @@  +[](https://codeclimate.com/github/realtradam/FelFlame/maintainability) +[](https://codeclimate.com/github/realtradam/FelFlame/test_coverage) + # What is this? This is a Ruby ECS Framework for developing games. It is still a work in progress in the early stages, is not fit for use, and does not work. diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..4c11b1c --- /dev/null +++ b/Rakefile @@ -0,0 +1,6 @@ + +require 'rake/testtask' + +Rake::TestTask.new do |t| + t.pattern = "tests/**/*_test.rb" +end diff --git a/coverage/coverage_badge_total.svg b/coverage/coverage_badge_total.svg new file mode 100644 index 0000000..480a39f --- /dev/null +++ b/coverage/coverage_badge_total.svg @@ -0,0 +1,35 @@ +<svg contentScriptType="text/ecmascript" contentStyleType="text/css" preserveAspectRatio="xMidYMid meet" version="1.0" height="20" width="120" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink"> + + +<linearGradient id="smooth" x2="0" y2="120"> +<stop offset="0" stop-color="#bbb" stop-opacity=".1"/> +<stop offset="1" stop-opacity=".1"/> +</linearGradient> +<clipPath id="round"> +<rect height="20" width="120" rx="3" fill="#fff"/> +</clipPath> +<g clip-path="url(#round)"> +<rect height="20" width="60" fill="#555"/> +<rect x="60" height="20" width="60" fill="#cccc00"/> +<rect height="20" width="120" fill="url(#smooth)"/> +</g> +<g fill="#fff" text-anchor="middle" font-family="Verdana,sans-serif" font-size="11"> +<text x="30" y="15" fill="#010101" fill-opacity="0.3"> +scov total +</text> +<text x="30" y="14"> +scov total +</text> +</g> +<g fill="#fff" text-anchor="middle" font-family="Verdana,sans-serif" font-size="11"> +<text x="90" y="15" fill="#010101" fill-opacity="0.3"> +32% +</text> +<text x="90" y="14"> +32% +</text> +</g> + +</svg>
\ No newline at end of file diff --git a/entity_manager.rb b/entity_manager.rb index 7d0d1ff..177ce1a 100644 --- a/entity_manager.rb +++ b/entity_manager.rb @@ -1,62 +1,64 @@ -class Entity - attr_accessor :id +class FelFlame + class Entities + attr_accessor :id - def initialize(*signature) - final_signature = 0 - signature.each do |sig| - final_signature += sig + def initialize(*signature) + final_signature = 0 + signature.each do |sig| + final_signature += sig + end + @id = Entities.generate_new_id + self.class.all.push self + self.class.signatures.push final_signature + Components.entity_created(@id) end - @id = Entity.generate_new_id - self.class.all.push self - self.class.signatures.push final_signature - Components.entity_created(@id) - end - class <<self - # All entities that exist - def all - @all ||= [] - end + class <<self + # All entities that exist + def all + @all ||= [] + end - def id_queue - @id_queue ||= [] - end + def id_queue + @id_queue ||= [] + end - def generate_new_id - if id_queue.empty? - all.size - else - id_queue.shift + def generate_new_id + if id_queue.empty? + all.size + else + id_queue.shift + end end - end - # What components a given entity uses - def signatures - @signatures ||= [] - end + # What components a given entity uses + def signatures + @signatures ||= [] + end - def destroy_entity(entity_id) - if all[entity_id].nil? - puts 'Entity can not be destroyed, id out of bounds' - elsif entity_id < all.size - 1 - Components.constants.each do |constant| - unless (signatures[entity_id] & Components::const_get(constant).id).zero? - Components::const_get(constant).delete(entity_id) + def destroy_entity(entity_id) + if all[entity_id].nil? + puts 'Entity can not be destroyed, id out of bounds' + elsif entity_id < all.size - 1 + Components.constants.each do |constant| + unless (signatures[entity_id] & Components::const_get(constant).id).zero? + Components::const_get(constant).delete(entity_id) + end end - end - all[entity_id] = nil - signatures[entity_id] = nil - id_queue.push entity_id - elsif entity_id == all.size - 1 - Components.constants.each do |constant| - unless (signatures[entity_id] & Components::const_get(constant).id).zero? - Components::const_get(constant).delete(entity_id) + all[entity_id] = nil + signatures[entity_id] = nil + id_queue.push entity_id + elsif entity_id == all.size - 1 + Components.constants.each do |constant| + unless (signatures[entity_id] & Components::const_get(constant).id).zero? + Components::const_get(constant).delete(entity_id) + end end + all.pop + signatures.pop + else + puts 'Unknown error with destroy_entity, entity not destroyed' end - all.pop - signatures.pop - else - puts 'Unknown error with destroy_entity, entity not destroyed' end end end diff --git a/scene_manager.rb b/scene_manager.rb new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/scene_manager.rb diff --git a/stage_manager.rb b/stage_manager.rb new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/stage_manager.rb diff --git a/test.rb b/test.rb deleted file mode 100644 index 13fd401..0000000 --- a/test.rb +++ /dev/null @@ -1,18 +0,0 @@ -require_relative './entity_manager.rb' -require_relative './component_manager.rb' -require_relative './system_manager.rb' - -move = '0001'.to_i(2) -base = '0010'.to_i(2) -both = '0011'.to_i(2) -Entity.new(move) -Entity.new(base) -Entity.new(both) - -3.times do - Systems.constants.each do |constant| - puts "|----#{constant.to_s.upcase}----|" - Systems::const_get(constant).run - end - #ECS::Entity.destroy_entity(ECS::Entity.all.last.id) unless ECS::Entity.all.empty? -end diff --git a/tests/_test_helper.rb b/tests/_test_helper.rb new file mode 100644 index 0000000..25975f4 --- /dev/null +++ b/tests/_test_helper.rb @@ -0,0 +1,28 @@ +require 'simplecov' +require 'simplecov_small_badge' + +# SimpleCovSmallBadge fix +SimpleCovSmallBadge::Formatter.class_eval do + private + def state(covered_percent) + if SimpleCov.minimum_coverage[:line]&.positive? + if covered_percent >= SimpleCov.minimum_coverage[:line] + 'good' + else + 'bad' + end + else + 'unknown' + end + end +end + +SimpleCov.start do + SimpleCov.add_filter 'tests' + SimpleCov.formatters = SimpleCov::Formatter::MultiFormatter.new([ + SimpleCov::Formatter::HTMLFormatter, + SimpleCovSmallBadge::Formatter + ]) +end + +require 'minitest/autorun' diff --git a/tests/_test_sample.rb b/tests/_test_sample.rb new file mode 100644 index 0000000..afc3384 --- /dev/null +++ b/tests/_test_sample.rb @@ -0,0 +1,14 @@ +require 'minitest/autorun' +require_relative '_test_helper.rb' + +require_relative 'stuff_we_testing' + +describe 'Sample' do + before do + #setup vars here + end + + it 'does something' do + #_(@thing).mustequal 'something + end +end diff --git a/tests/component_manager_test.rb b/tests/component_manager_test.rb new file mode 100644 index 0000000..956f604 --- /dev/null +++ b/tests/component_manager_test.rb @@ -0,0 +1,15 @@ +require 'minitest/autorun' +require_relative '_test_helper.rb' + +require_relative '../component_manager.rb' + +describe 'Sample' do + before do + #setup vars here + end + + it 'does something' do + _(4).must_equal 4 + #_(@thing).mustequal 'something + end +end diff --git a/tests/entity_manager_test.rb b/tests/entity_manager_test.rb new file mode 100644 index 0000000..f6e7c66 --- /dev/null +++ b/tests/entity_manager_test.rb @@ -0,0 +1,18 @@ +require 'minitest/autorun' +require_relative '_test_helper.rb' + +require_relative '../entity_manager.rb' + +describe 'Entities' do + before do + @one = FelFlame::Entities.new + @two = FelFlame::Entities.new + @three = FelFlame::Entities.new + end + + it 'Has correct ID\'s' do + _(@one.id).must_equal 0 + _(@two.id).must_equal 1 + _(@three.id).must_equal 2 + end +end diff --git a/tests/scene_manager_test.rb b/tests/scene_manager_test.rb new file mode 100644 index 0000000..38febb8 --- /dev/null +++ b/tests/scene_manager_test.rb @@ -0,0 +1,15 @@ +require 'minitest/autorun' +require_relative '_test_helper.rb' + +require_relative '../scene_manager.rb' + +describe 'Sample' do + before do + #setup vars here + end + + it 'does something' do + _(4).must_equal 4 + #_(@thing).mustequal 'something + end +end diff --git a/tests/signatures_test.rb b/tests/signatures_test.rb new file mode 100644 index 0000000..9d1bd9a --- /dev/null +++ b/tests/signatures_test.rb @@ -0,0 +1,15 @@ +require 'minitest/autorun' +require_relative '_test_helper.rb' + +require_relative '../signatures.rb' + +describe 'Sample' do + before do + #setup vars here + end + + it 'does something' do + _(4).must_equal 4 + #_(@thing).mustequal 'something + end +end diff --git a/tests/stage_manager_test.rb b/tests/stage_manager_test.rb new file mode 100644 index 0000000..69fda0a --- /dev/null +++ b/tests/stage_manager_test.rb @@ -0,0 +1,15 @@ +require 'minitest/autorun' +require_relative '_test_helper.rb' + +require_relative '../stage_manager.rb' + +describe 'Sample' do + before do + #setup vars here + end + + it 'does something' do + _(4).must_equal 4 + #_(@thing).mustequal 'something + end +end diff --git a/tests/system_manager_test.rb b/tests/system_manager_test.rb new file mode 100644 index 0000000..e02b283 --- /dev/null +++ b/tests/system_manager_test.rb @@ -0,0 +1,15 @@ +require 'minitest/autorun' +require_relative '_test_helper.rb' + +require_relative '../system_manager.rb' + +describe 'Sample' do + before do + #setup vars here + end + + it 'does something' do + _(4).must_equal 4 + #_(@thing).mustequal 'something + end +end |
