shattered 0.5.0.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (223) hide show
  1. data/History.txt +6 -0
  2. data/INSTALL.txt +5 -0
  3. data/License.txt +18 -0
  4. data/Manifest.txt +175 -0
  5. data/README.txt +39 -0
  6. data/Rakefile +6 -0
  7. data/app_generators/actor/USAGE +6 -0
  8. data/app_generators/actor/actor_generator.rb +51 -0
  9. data/app_generators/actor/templates/actor.rb +4 -0
  10. data/app_generators/actor/templates/spec.rb +11 -0
  11. data/app_generators/actor/templates/unit_test.rb +9 -0
  12. data/app_generators/commands/console.rb +6 -0
  13. data/{lib/rails_generator/generators/applications/shattered_app → app_generators/shattered}/USAGE +1 -1
  14. data/app_generators/shattered/shattered_generator.rb +67 -0
  15. data/{lib → app_generators/shattered}/templates/Rakefile +4 -4
  16. data/app_generators/shattered/templates/configs/game.controls +16 -0
  17. data/app_generators/shattered/templates/configs/ogre_plugins.linux.cfg +12 -0
  18. data/app_generators/shattered/templates/configs/ogre_plugins.osx.cfg +12 -0
  19. data/{lib → app_generators/shattered}/templates/configs/ogre_plugins.windows.cfg +2 -2
  20. data/app_generators/shattered/templates/game.rb +50 -0
  21. data/{lib → app_generators/shattered}/templates/media/basic.rmaterial +0 -0
  22. data/app_generators/shattered/templates/spec/game_spec.rb +5 -0
  23. data/app_generators/shattered/templates/spec/spec_helper.rb +12 -0
  24. data/bin/shattered +39 -0
  25. data/config/hoe.rb +77 -0
  26. data/config/requirements.rb +15 -0
  27. data/lib/shattered.rb +40 -0
  28. data/lib/shattered_game/actor.rb +6 -0
  29. data/lib/shattered_game/game.rb +285 -0
  30. data/lib/{tasks → shattered_game/rake_tasks}/framework.rake +19 -24
  31. data/lib/{tasks → shattered_game/rake_tasks}/log.rake +0 -0
  32. data/lib/{tasks → shattered_game/rake_tasks}/misc.rake +1 -2
  33. data/lib/{tasks → shattered_game/rake_tasks}/pre_namespace_aliases.rake +0 -0
  34. data/lib/{tasks → shattered_game/rake_tasks}/shattered.rb +0 -0
  35. data/lib/shattered_game/rake_tasks/spec.rake +9 -0
  36. data/lib/{tasks → shattered_game/rake_tasks}/statistics.rake +0 -0
  37. data/lib/shattered_game/required.rb +2 -0
  38. data/lib/shattered_game/version.rb +9 -0
  39. data/lib/shattered_model/controls.rb +67 -0
  40. data/lib/shattered_model/input.rb +171 -0
  41. data/lib/shattered_model/key_converter.rb +44 -0
  42. data/lib/shattered_model/required.rb +4 -0
  43. data/lib/shattered_model/shattered_model.rb +28 -0
  44. data/lib/shattered_model/timed_event.rb +120 -0
  45. data/lib/shattered_model/timer.rb +78 -0
  46. data/lib/shattered_support/core_ext.rb +1 -0
  47. data/lib/shattered_support/core_ext/class.rb +3 -0
  48. data/lib/shattered_support/core_ext/class/attribute_accessors.rb +44 -0
  49. data/lib/shattered_support/core_ext/class/inheritable_attributes.rb +115 -0
  50. data/lib/shattered_support/core_ext/class/removal.rb +24 -0
  51. data/lib/shattered_support/core_ext/dir.rb +5 -0
  52. data/lib/shattered_support/core_ext/dir/search.rb +25 -0
  53. data/lib/shattered_support/core_ext/file.rb +5 -0
  54. data/lib/shattered_support/core_ext/file/search.rb +64 -0
  55. data/lib/shattered_support/core_ext/numeric.rb +5 -0
  56. data/lib/shattered_support/core_ext/numeric/time.rb +72 -0
  57. data/lib/shattered_support/core_ext/string.rb +13 -0
  58. data/lib/shattered_support/core_ext/string/access.rb +58 -0
  59. data/lib/shattered_support/core_ext/string/conversions.rb +19 -0
  60. data/lib/shattered_support/core_ext/string/inflections.rb +64 -0
  61. data/lib/shattered_support/core_ext/string/iterators.rb +17 -0
  62. data/lib/shattered_support/core_ext/string/starts_ends_with.rb +20 -0
  63. data/lib/shattered_support/error.rb +12 -0
  64. data/lib/shattered_support/inflections.rb +53 -0
  65. data/lib/shattered_support/inflector.rb +178 -0
  66. data/lib/shattered_support/pre_initialize.rb +153 -0
  67. data/lib/shattered_support/required.rb +9 -0
  68. data/lib/shattered_support/unload.rb +18 -0
  69. data/lib/shattered_view/camera.rb +7 -0
  70. data/lib/shattered_view/ogrerb/base.rb +28 -0
  71. data/lib/shattered_view/ogrerb/camera.rb +14 -0
  72. data/lib/shattered_view/ogrerb/key_manager.rb +54 -0
  73. data/lib/shattered_view/ogrerb/light.rb +25 -0
  74. data/lib/shattered_view/ogrerb/material.rb +5 -0
  75. data/lib/shattered_view/ogrerb/mesh_instance.rb +85 -0
  76. data/lib/shattered_view/ogrerb/mouse_manager.rb +109 -0
  77. data/lib/shattered_view/ogrerb/particle_system.rb +24 -0
  78. data/lib/shattered_view/ogrerb/rgb.rb +6 -0
  79. data/lib/shattered_view/ogrerb/rmaterial.rb +87 -0
  80. data/lib/shattered_view/ogrerb/scene_node.rb +76 -0
  81. data/lib/shattered_view/ogrerb/vector.rb +243 -0
  82. data/lib/shattered_view/ogrerb/window_event.rb +14 -0
  83. data/lib/shattered_view/resources.rb +64 -0
  84. data/lib/shattered_view/shattered_view.rb +248 -0
  85. data/script/destroy +14 -0
  86. data/script/generate +14 -0
  87. data/setup.rb +1585 -0
  88. data/tasks/deployment.rake +30 -0
  89. data/tasks/environment.rake +7 -0
  90. data/tasks/rcov.rake +7 -0
  91. data/tasks/testing.rake +46 -0
  92. data/tasks/website.rake +15 -0
  93. data/test/acceptance/Rakefile +10 -0
  94. data/test/acceptance/config/game.controls +17 -0
  95. data/test/acceptance/config/ogre_plugins.linux.cfg +12 -0
  96. data/test/acceptance/config/ogre_plugins.osx.cfg +12 -0
  97. data/test/acceptance/config/ogre_plugins.windows.cfg +14 -0
  98. data/test/acceptance/config/ogrerb_defaults.save +8 -0
  99. data/test/acceptance/game.rb +120 -0
  100. data/test/acceptance/lib/acceptance_test.rb +20 -0
  101. data/test/acceptance/lib/console.rb +54 -0
  102. data/test/acceptance/lib/input_test.rb +8 -0
  103. data/test/acceptance/lib/label.rb +30 -0
  104. data/test/acceptance/lib/light_test.rb +60 -0
  105. data/test/acceptance/lib/mesh_test.rb +69 -0
  106. data/test/acceptance/lib/particle_test.rb +9 -0
  107. data/test/acceptance/media/GreenSkin.jpg +0 -0
  108. data/test/acceptance/media/Ogre.material +86 -0
  109. data/test/acceptance/media/WeirdEye.png +0 -0
  110. data/test/acceptance/media/basic.rmaterial +18 -0
  111. data/test/acceptance/media/console.fontdef +7 -0
  112. data/test/acceptance/media/console.material +13 -0
  113. data/test/acceptance/media/console.png +0 -0
  114. data/test/acceptance/media/console.ttf +0 -0
  115. data/test/acceptance/media/dirt01.png +0 -0
  116. data/test/acceptance/media/fountain.material +19 -0
  117. data/test/acceptance/media/fountain.particle +40 -0
  118. data/test/acceptance/media/fountain.png +0 -0
  119. data/test/acceptance/media/fountaincolors.png +0 -0
  120. data/test/acceptance/media/ogre.mesh +0 -0
  121. data/test/acceptance/media/spheremap.png +0 -0
  122. data/test/acceptance/media/win.png +0 -0
  123. data/test/acceptance/spec/spec_helper.rb +7 -0
  124. data/test/integration/actor_generator_test.rb +43 -0
  125. data/test/integration/shattered_generator_test.rb +43 -0
  126. data/test/integration/test_helper.rb +20 -0
  127. data/test/ogre_test_defaults.save +8 -0
  128. data/test/ogre_test_plugins.linux.cfg +12 -0
  129. data/test/ogre_test_plugins.osx.cfg +12 -0
  130. data/test/ogre_test_plugins.windows.cfg +14 -0
  131. data/test/test_helper.rb +109 -0
  132. data/test/unit/shattered_game/actor_test.rb +9 -0
  133. data/test/unit/shattered_game/game_test.rb +49 -0
  134. data/test/unit/shattered_game/runner_test.rb +56 -0
  135. data/test/unit/shattered_model/controls/mouse.controls +4 -0
  136. data/test/unit/shattered_model/controls/player.controls +4 -0
  137. data/test/unit/shattered_model/controls/too_many_delims.controls +1 -0
  138. data/test/unit/shattered_model/key_controls_test.rb +89 -0
  139. data/test/unit/shattered_model/key_converter_test.rb +37 -0
  140. data/test/unit/shattered_model/keyboard_input_test.rb +32 -0
  141. data/test/unit/shattered_model/mouse_controls_test.rb +50 -0
  142. data/test/unit/shattered_model/mouse_input_test.rb +61 -0
  143. data/test/unit/shattered_model/shattered_model_test.rb +117 -0
  144. data/test/unit/shattered_model/timed_event_test.rb +79 -0
  145. data/test/unit/shattered_model/timer_test.rb +325 -0
  146. data/{lib/rails_generator/generators/components/actor/templates/actor.rb → test/unit/shattered_support/directory_test/file.test} +0 -0
  147. data/test/unit/shattered_support/numeric_ext_test.rb +38 -0
  148. data/test/unit/shattered_support/pre_initialize_test.rb +63 -0
  149. data/test/unit/shattered_support/shattered_support_test.rb +39 -0
  150. data/test/unit/shattered_support/unload_test.rb +17 -0
  151. data/test/unit/shattered_view/light_test.rb +38 -0
  152. data/test/unit/shattered_view/material_test.rb +41 -0
  153. data/test/unit/shattered_view/media_test/basic.rmaterial +18 -0
  154. data/{lib/templates/configs/empty.log → test/unit/shattered_view/media_test/beltch.ogg} +0 -0
  155. data/test/unit/shattered_view/media_test/test.mesh +0 -0
  156. data/test/unit/shattered_view/mesh_test.rb +59 -0
  157. data/test/unit/shattered_view/node_test.rb +11 -0
  158. data/test/unit/shattered_view/ogrerb/camera_test.rb +12 -0
  159. data/test/unit/shattered_view/ogrerb/key_manager_test.rb +42 -0
  160. data/test/unit/shattered_view/ogrerb/media/basic.rmaterial +18 -0
  161. data/test/unit/shattered_view/ogrerb/media/test.mesh +0 -0
  162. data/test/unit/shattered_view/ogrerb/media/test.rmaterial +1 -0
  163. data/test/unit/shattered_view/ogrerb/mesh_instance_test.rb +74 -0
  164. data/test/unit/shattered_view/ogrerb/mouse_manager_test.rb +104 -0
  165. data/test/unit/shattered_view/ogrerb/ogrerb.log +51 -0
  166. data/test/unit/shattered_view/ogrerb/resolve_ogrerb_test.rb +13 -0
  167. data/test/unit/shattered_view/ogrerb/rgb_test.rb +10 -0
  168. data/test/unit/shattered_view/ogrerb/rmaterial_test.rb +28 -0
  169. data/test/unit/shattered_view/ogrerb/scene_type_test.rb +12 -0
  170. data/test/unit/shattered_view/ogrerb/vector_test.rb +206 -0
  171. data/test/unit/shattered_view/particle_test.rb +23 -0
  172. data/test/unit/shattered_view/resources_test.rb +45 -0
  173. data/test/unit/shattered_view/test_helper.rb +1 -0
  174. data/test/unit/shattered_view/window_event_test.rb +19 -0
  175. data/test/unit/test_helper.rb +1 -0
  176. metadata +205 -121
  177. data/bin/console +0 -4
  178. data/bin/destroy +0 -9
  179. data/bin/generate +0 -7
  180. data/bin/runner +0 -9
  181. data/bin/shatter +0 -22
  182. data/lib/commands/console.rb +0 -23
  183. data/lib/game_loader.rb +0 -118
  184. data/lib/rails_generator.rb +0 -43
  185. data/lib/rails_generator/base.rb +0 -203
  186. data/lib/rails_generator/commands.rb +0 -519
  187. data/lib/rails_generator/generators/applications/shattered_app/shattered_app_generator.rb +0 -103
  188. data/lib/rails_generator/generators/components/actor/actor_generator.rb +0 -22
  189. data/lib/rails_generator/generators/components/model/USAGE +0 -17
  190. data/lib/rails_generator/generators/components/model/model_generator.rb +0 -22
  191. data/lib/rails_generator/generators/components/model/templates/fixtures.yml +0 -5
  192. data/lib/rails_generator/generators/components/model/templates/model.rb +0 -2
  193. data/lib/rails_generator/generators/components/model/templates/unit_test.rb +0 -11
  194. data/lib/rails_generator/generators/components/state/USAGE +0 -30
  195. data/lib/rails_generator/generators/components/state/state_generator.rb +0 -19
  196. data/lib/rails_generator/generators/components/state/templates/state.rb +0 -20
  197. data/lib/rails_generator/generators/components/view/USAGE +0 -30
  198. data/lib/rails_generator/generators/components/view/templates/material +0 -4
  199. data/lib/rails_generator/generators/components/view/templates/view.rb +0 -7
  200. data/lib/rails_generator/generators/components/view/view_generator.rb +0 -28
  201. data/lib/rails_generator/lookup.rb +0 -209
  202. data/lib/rails_generator/manifest.rb +0 -53
  203. data/lib/rails_generator/options.rb +0 -143
  204. data/lib/rails_generator/scripts.rb +0 -83
  205. data/lib/rails_generator/scripts/destroy.rb +0 -7
  206. data/lib/rails_generator/scripts/generate.rb +0 -7
  207. data/lib/rails_generator/scripts/update.rb +0 -12
  208. data/lib/rails_generator/simple_logger.rb +0 -46
  209. data/lib/rails_generator/spec.rb +0 -44
  210. data/lib/shatter.rb +0 -7
  211. data/lib/tasks/documentation.rake +0 -46
  212. data/lib/tasks/testing.rake +0 -102
  213. data/lib/templates/MIT-LICENSE +0 -20
  214. data/lib/templates/README +0 -35
  215. data/lib/templates/configs/boot.rb +0 -35
  216. data/lib/templates/configs/ogre.cfg +0 -4
  217. data/lib/templates/configs/runner.rb +0 -5
  218. data/lib/templates/doc/README_FOR_APP +0 -2
  219. data/lib/templates/environments/environment.rb +0 -10
  220. data/lib/templates/media/default.mesh +0 -0
  221. data/lib/templates/media/default.png +0 -0
  222. data/lib/templates/media/offset_map.rmaterial +0 -117
  223. data/lib/templates/test/test_helper.rb +0 -5
@@ -0,0 +1,30 @@
1
+ desc 'Release the website and new gem version'
2
+ task :deploy => [:check_version, :website, :release] do
3
+ puts "Remember to create a GIT tag."
4
+ end
5
+
6
+ desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
7
+ task :local_deploy => [:website_generate, :install_gem]
8
+
9
+ task :check_version do
10
+ unless ENV['VERSION']
11
+ puts 'Must pass a VERSION=x.y.z release version'
12
+ exit
13
+ end
14
+ unless ENV['VERSION'] == VERS
15
+ puts "Please update your version.rb to match the release version, currently #{VERS}"
16
+ exit
17
+ end
18
+ end
19
+
20
+ desc 'Install the package as a gem, without generating documentation(ri/rdoc)'
21
+ task :install_gem_no_doc => [:clean, :package] do
22
+ sh "#{'sudo ' unless Hoe::WINDOZE }gem install pkg/*.gem --no-rdoc --no-ri"
23
+ end
24
+
25
+ namespace :manifest do
26
+ desc 'Recreate Manifest.txt to include ALL files'
27
+ task :refresh do
28
+ `rake check_manifest | patch -p0 > Manifest.txt`
29
+ end
30
+ end
@@ -0,0 +1,7 @@
1
+ task :ruby_env do
2
+ RUBY_APP = if RUBY_PLATFORM =~ /java/
3
+ "jruby"
4
+ else
5
+ "ruby"
6
+ end unless defined? RUBY_APP
7
+ end
@@ -0,0 +1,7 @@
1
+ require 'rcov/rcovtask'
2
+
3
+ Rcov::RcovTask.new do |t|
4
+ t.test_files = FileList['test/**/*_test.rb']
5
+ t.output_dir = 'doc/output/coverage'
6
+ t.rcov_opts = []
7
+ end
@@ -0,0 +1,46 @@
1
+ # Recreated here from ActiveSupport because :uncommitted needs it before Rails is available
2
+ module Kernel
3
+ def silence_stderr
4
+ old_stderr = STDERR.dup
5
+ STDERR.reopen(RUBY_PLATFORM =~ /mswin/ ? 'NUL:' : '/dev/null')
6
+ STDERR.sync = true
7
+ yield
8
+ ensure
9
+ STDERR.reopen(old_stderr)
10
+ end
11
+ end
12
+
13
+ namespace :test do
14
+ desc "Run the unit tests in test/unit"
15
+ Rake::TestTask.new(:units) do |t|
16
+ t.libs << "test"
17
+ t.pattern = 'test/unit/**/*_test.rb'
18
+ t.verbose = true
19
+ end
20
+
21
+ desc "Run the acceptance test"
22
+ task :acceptance do
23
+ require File.dirname(__FILE__)+"/../test/acceptance/game"
24
+ Game.instance.play
25
+ end
26
+
27
+ desc "Run the integration tests in test/integration"
28
+ Rake::TestTask.new(:integration) do |t|
29
+ t.libs << "test"
30
+ t.pattern = 'test/integration/**/*_test.rb'
31
+ t.verbose = true
32
+ end
33
+
34
+ desc "Run the plugin tests in vendor/plugins/**/test (or specify with PLUGIN=name)"
35
+ Rake::TestTask.new(:plugins => :environment) do |t|
36
+ t.libs << "test"
37
+
38
+ if ENV['PLUGIN']
39
+ t.pattern = "vendor/plugins/#{ENV['PLUGIN']}/test/**/*_test.rb"
40
+ else
41
+ t.pattern = 'vendor/plugins/**/test/**/*_test.rb'
42
+ end
43
+
44
+ t.verbose = true
45
+ end
46
+ end
@@ -0,0 +1,15 @@
1
+ desc 'Generate website files using STATICMATIC!!'
2
+ task :website_generate => :ruby_env do
3
+ sh %{ staticmatic build website }
4
+ end
5
+
6
+ desc 'Upload website files to rubyforge'
7
+ task :website_upload do
8
+ host = "shattered_ruby@shatteredruby.com"
9
+ remote_dir = "~/web/shatteredruby.com/public/"
10
+ local_dir = 'website/site'
11
+ sh %{rsync -aCv #{local_dir}/ #{host}:#{remote_dir}}
12
+ end
13
+
14
+ desc 'Generate and upload website files'
15
+ task :website => [:website_generate, :website_upload, :publish_docs]
@@ -0,0 +1,10 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+ # Or in plugins/*/tasks/**/*.rake
4
+ require File.join(File.dirname(__FILE__), "game")
5
+
6
+ require 'rake'
7
+
8
+ require 'shattered_game/rake_tasks/shattered'
9
+
10
+ task :default => [:spec]
@@ -0,0 +1,17 @@
1
+ quit => press :escape
2
+ next_test => press :space
3
+ next_test => mouse.press :left or mouse.press :middle
4
+
5
+ look => mouse.move
6
+ scroll => mouse.scroll
7
+ move(:forward) => hold :w
8
+ move(:left) => hold :a
9
+ move(:backward) => hold :s
10
+ move(:right) => hold :d
11
+
12
+ #dvorak
13
+ move(:forward) => hold ","
14
+ move(:backward) => hold :o
15
+ move(:right) => hold :e
16
+
17
+
@@ -0,0 +1,12 @@
1
+ # Defines plugins to load
2
+
3
+ # Define plugin folder, not needed for mac
4
+ PluginFolder=/usr/local/lib/OGRE
5
+
6
+ # Define D3D rendering implementation plugin
7
+ Plugin=RenderSystem_GL
8
+ Plugin=Plugin_ParticleFX
9
+ Plugin=Plugin_BSPSceneManager
10
+ Plugin=Plugin_OctreeSceneManager
11
+ Plugin=Plugin_CgProgramManager
12
+
@@ -0,0 +1,12 @@
1
+ # Defines plugins to load
2
+
3
+ # Define plugin folder, not needed for mac
4
+ #PluginFolder=.
5
+
6
+ # Define D3D rendering implementation plugin
7
+ Plugin=RenderSystem_GL
8
+ Plugin=Plugin_ParticleFX
9
+ Plugin=Plugin_BSPSceneManager
10
+ Plugin=Plugin_OctreeSceneManager
11
+ #Plugin=Plugin_CgProgramManager
12
+
@@ -0,0 +1,14 @@
1
+ # Defines plugins to load
2
+
3
+ # Define plugin folder
4
+ PluginFolder=.
5
+
6
+ # Define D3D rendering implementation plugin
7
+ Plugin=RenderSystem_GL
8
+ #Plugin=RenderSystem_Direct3D7
9
+ Plugin=RenderSystem_Direct3D9
10
+ Plugin=Plugin_ParticleFX
11
+ Plugin=Plugin_BSPSceneManager
12
+ Plugin=Plugin_OctreeSceneManager
13
+ Plugin=Plugin_CgProgramManager
14
+
@@ -0,0 +1,8 @@
1
+ Render System=OpenGL Rendering Subsystem
2
+
3
+ [OpenGL Rendering Subsystem]
4
+ Colour Depth=32
5
+ FSAA=0
6
+ Full Screen=No
7
+ RTT Preferred Mode=PBuffer
8
+ Video Mode=800 x 600
@@ -0,0 +1,120 @@
1
+ # Set the SHATTERED_ROOT to the project directory
2
+ SHATTERED_ROOT = File.expand_path(File.dirname(__FILE__))
3
+ $:.unshift(SHATTERED_ROOT)
4
+
5
+ # Require shattered
6
+ require File.expand_path(File.join(File.dirname(__FILE__),'..','..','lib','shattered'))
7
+
8
+ require 'lib/console'
9
+ require 'lib/label'
10
+ require 'lib/acceptance_test.rb'
11
+
12
+ Dir["#{SHATTERED_ROOT}/lib/*_test.rb"].each do |test|
13
+ require test
14
+ end
15
+
16
+ # Game is the class that takes care of loading Actors, resources, and handles control flow.
17
+ class Game < Shattered::Game
18
+ title "Acceptance Tests for Shattered Light"
19
+
20
+ attr_reader :console, :wait_time
21
+ # Initialize is called to startup ogrerb and shattered
22
+ def initialize
23
+ super
24
+ self.controls("game").on
25
+ create_scene_manager(:general)
26
+ create_camera("main")
27
+ camera.position = v(0,0,0)
28
+ create_viewport(:color => rgb(0,0,0))
29
+
30
+ load_resources("media")
31
+ @wait_time = 1.seconds
32
+ @console = Console.new
33
+ console.puts "Hello, welcome to the acceptance tests"
34
+ add InputTest
35
+ add MeshTest
36
+ add LightTest
37
+ add ParticleTest
38
+ @total_tests = @tests.length
39
+ @current_test = nil
40
+ @speed = 1.0
41
+ next_test
42
+ end
43
+
44
+ def add(test)
45
+ @tests ||= []
46
+ @tests << test
47
+ end
48
+
49
+ def done?
50
+ @done || false
51
+ end
52
+
53
+ def next_test
54
+ return if done?
55
+ @current_test.unload if @current_test
56
+ if @tests.empty?
57
+ console.flush
58
+ console.puts "You have completed the test suite. If there were any problems please report them to:"
59
+ console.puts "http://shatteredruby.com"
60
+
61
+ console.puts "Please also include the file acceptance_test.log"
62
+ console.puts
63
+ console.puts "Press escape at any time to exit the test suite"
64
+
65
+ @done = true
66
+ picture = Ogre::OverlayManager.instance.create_overlay_element "Panel", "win_panel"
67
+ picture.set_metrics_mode Ogre::GMM_RELATIVE
68
+ picture.set_width 0.8
69
+ picture.set_height 0.8
70
+ picture.set_position 0.1, 0.1
71
+ picture.set_material_name(create(:material, :basic, :texture => "win.png").name)
72
+
73
+ overlay = Ogre::OverlayManager.instance.create "win"
74
+ overlay.add_2d picture
75
+ overlay.show
76
+
77
+ update_test_count
78
+ else
79
+ update_test_count
80
+ @current_test = @tests.shift.new
81
+ end
82
+ end
83
+
84
+ def move(direction)
85
+ @camera.position += direction * @time_elapsed * @speed
86
+ end
87
+
88
+ def look
89
+ @camera.yaw(Ogre::Radian.new(-@mouse.x*0.01))
90
+ @camera.pitch(Ogre::Radian.new(-@mouse.y*0.01))
91
+ end
92
+
93
+ def scroll
94
+
95
+ end
96
+
97
+ private
98
+
99
+ def update_test_count
100
+ if @tests.empty?
101
+ label.caption= "Complete"
102
+ else
103
+ label.caption= "Test #{@total_tests-@tests.length+1}/#{@total_tests}"
104
+ end
105
+ end
106
+
107
+ def label
108
+ @label ||= Label.new
109
+ end
110
+
111
+ # def show_config_dialog
112
+ # renderers = root.get_available_renderers
113
+ # root.set_render_system(renderers[0])
114
+ # true
115
+ # end
116
+ end
117
+
118
+
119
+ Game.instance.play if __FILE__ == $0
120
+
@@ -0,0 +1,20 @@
1
+ class AcceptanceTest < Shattered::Actor
2
+ def puts(*args)
3
+ args[0] = "#{self.class}: #{args[0]}" if args.length > 0
4
+ Game.instance.console.puts *args
5
+ end
6
+
7
+ def flush
8
+ Game.instance.console.flush
9
+ end
10
+
11
+ def complete
12
+ timer.in(wait_time/6.0) do
13
+ puts "Press the space bar to continue."
14
+ end
15
+ end
16
+
17
+ def wait_time
18
+ Game.instance.wait_time
19
+ end
20
+ end
@@ -0,0 +1,54 @@
1
+
2
+ class Console
3
+ include Shattered::View
4
+ attr_accessor :text_overlay
5
+ def initialize
6
+ height = 1
7
+ @total_buffer = []
8
+
9
+ @text_overlay = Ogre::OverlayManager.instance.create_overlay_element "TextArea", "ConsoleText"
10
+ text_overlay.set_metrics_mode Ogre::GMM_RELATIVE
11
+ text_overlay.set_position 0,0
12
+ text_overlay.set_colour rgb(0,0,0)
13
+ text_overlay.set_parameter "font_name", "Console"
14
+ text_overlay.set_parameter "colour_top", "1 1 1"
15
+ text_overlay.set_parameter "colour_bottom", "1 1 1"
16
+ text_overlay.set_parameter "char_height", "0.03"
17
+
18
+ panel = Ogre::OverlayManager.instance.create_overlay_element "Panel", "ConsoleHolder"
19
+ panel.set_metrics_mode Ogre::GMM_RELATIVE
20
+ panel.set_material_name "ConsoleBackground"
21
+ panel.set_height 0.24
22
+ panel.add_child text_overlay
23
+
24
+ overlay = Ogre::OverlayManager.instance.create "Console"
25
+ overlay.add_2d panel
26
+ overlay.show
27
+
28
+ end
29
+
30
+ def flush
31
+ @total_buffer=[]
32
+ update_display
33
+ end
34
+
35
+ def puts(*output)
36
+ super *output
37
+ @total_buffer << "" if output.length == 0
38
+ @total_buffer += output.collect do |str| " "+str; end
39
+ history = 8
40
+ @total_buffer.delete_at 0 while history < @total_buffer.length
41
+ update_display
42
+ end
43
+
44
+ def print(*output)
45
+ super *output
46
+ @total_buffer[-1]+=output.join ""
47
+ update_display
48
+ end
49
+
50
+ def update_display
51
+ text_overlay.set_caption @total_buffer.join "\n"
52
+ end
53
+
54
+ end
@@ -0,0 +1,8 @@
1
+ class InputTest < AcceptanceTest
2
+ def initialize
3
+ puts "These tests will determine if shattered is working correctly"
4
+ puts "Press the space bar to skip any test, or when instructed"
5
+ puts "Try it now"
6
+ complete
7
+ end
8
+ end
@@ -0,0 +1,30 @@
1
+ class Label
2
+ attr_reader :text_overlay
3
+ def initialize
4
+ @text_overlay = Ogre::OverlayManager.instance.create_overlay_element "TextArea", "LabelText"
5
+ text_overlay.set_metrics_mode Ogre::GMM_RELATIVE
6
+ text_overlay.set_position -0.1,-0.03
7
+ text_overlay.set_colour rgb(0,0,0)
8
+ text_overlay.set_parameter "font_name", "Console"
9
+ text_overlay.set_parameter "colour_top", "1 1 1"
10
+ text_overlay.set_parameter "colour_bottom", "1 1 1"
11
+ text_overlay.set_parameter "char_height", "0.03"
12
+
13
+ panel = Ogre::OverlayManager.instance.create_overlay_element "Panel", "LabelHolder"
14
+ panel.set_metrics_mode Ogre::GMM_RELATIVE
15
+ panel.set_material_name "ConsoleBackground"
16
+ panel.set_height 0.24
17
+ panel.set_vertical_alignment Ogre::GVA_BOTTOM
18
+ panel.set_horizontal_alignment Ogre::GHA_RIGHT
19
+ panel.add_child text_overlay
20
+
21
+ overlay = Ogre::OverlayManager.instance.create "Label"
22
+ overlay.add_2d panel
23
+ overlay.show
24
+ end
25
+
26
+ def caption=(val)
27
+ puts val
28
+ text_overlay.set_caption val
29
+ end
30
+ end
@@ -0,0 +1,60 @@
1
+
2
+ class LightTest < AcceptanceTest
3
+ mesh :ogre, :position => v(0,0,-100)
4
+ light :sky
5
+ def initialize
6
+ puts "Testing ambient light levels. The mesh should be getting brighter"
7
+ Game.instance.camera.position = :y.to_v*5
8
+ sky.ambient = rgb(-1,-1,-1)
9
+ on_unload do
10
+ sky.ambient = rgb(0.8,0.8,0.8)
11
+ end
12
+ dimmer = timer.every(:frame) do |te|
13
+ sky.ambient += rgb(te/wait_time,te/wait_time,te/wait_time)
14
+ end
15
+
16
+ timer.in(wait_time) do
17
+ dimmer.stop
18
+ sky.ambient = rgb(-1,-1,-1)
19
+ pointlights
20
+ end
21
+ end
22
+
23
+ def pointlights
24
+ puts "There should be two point lights circling the ogre. One red one green."
25
+ base = ogre.node.create_child_scene_node
26
+ one = base.create_child_scene_node
27
+ two = base.create_child_scene_node
28
+ light_one = create :light, :point, :diffuse => rgb(1,-1,-1), :specular => rgb(1,-1,-1)
29
+ light_one.set_specular_colour(0.5,0,0)
30
+ light_one.set_diffuse_colour(0.5,0,0)
31
+ light_two = create :light, :point, :diffuse => rgb(0,1,0), :specular => rgb(0,1,0)
32
+ light_two.set_specular_colour(0,0.5,0)
33
+ light_two.set_diffuse_colour(0,0.5,0)
34
+ one.attach_object light_one
35
+ two.attach_object light_two
36
+ one.position = v(0,0,100)
37
+ two.position = v(0,0,-100)
38
+ alert = timer.every(:frame) do |te|
39
+ base.rotate v(0,1,0), te*600/(wait_time)
40
+ base.rotate v(1,0,0), te*180/(wait_time)
41
+ end
42
+ timer.in(wait_time) do
43
+ alert.stop
44
+ directional
45
+ end
46
+ end
47
+
48
+ def directional
49
+ puts "Testing direction lights. The mesh should be red and green"
50
+ light_one = create :light, :directional
51
+ light_two = create :light, :directional
52
+ light_one.direction = v(1,0,0)
53
+ light_two.direction = v(-1,0,0)
54
+ light_one.set_specular_colour(0.5,0,0)
55
+ light_one.set_diffuse_colour(0.5,0,0)
56
+ light_two.set_specular_colour(0,0.5,0)
57
+ light_two.set_diffuse_colour(0,0.5,0)
58
+ complete
59
+ end
60
+ end