slickr 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. checksums.yaml +6 -14
  2. data/.rspec +0 -1
  3. data/.travis.yml +4 -0
  4. data/Gemfile +0 -2
  5. data/README.md +58 -52
  6. data/Rakefile +4 -0
  7. data/lib/slickr.rb +18 -1
  8. data/lib/slickr/actions/generate.rb +51 -0
  9. data/lib/slickr/behavior.rb +68 -0
  10. data/lib/slickr/cli.rb +12 -3
  11. data/lib/slickr/entity.rb +64 -0
  12. data/lib/slickr/entity_manager.rb +105 -0
  13. data/lib/slickr/generators/base.rb +95 -0
  14. data/lib/slickr/generators/behavior.rb +9 -0
  15. data/lib/slickr/generators/entity.rb +10 -0
  16. data/{files → lib/slickr/generators/files}/Rakefile +0 -0
  17. data/{files → lib/slickr/generators/files}/jinput.jar +0 -0
  18. data/{files → lib/slickr/generators/files}/libjinput-osx.jnilib +0 -0
  19. data/{files → lib/slickr/generators/files}/liblwjgl.jnilib +0 -0
  20. data/{files → lib/slickr/generators/files}/lwjgl.jar +0 -0
  21. data/{files → lib/slickr/generators/files}/openal.dylib +0 -0
  22. data/{files → lib/slickr/generators/files}/slick.jar +0 -0
  23. data/lib/slickr/generators/project.rb +36 -0
  24. data/lib/slickr/generators/reactor.rb +9 -0
  25. data/lib/slickr/generators/renderer.rb +9 -0
  26. data/lib/slickr/generators/templates/behavior.erb +3 -0
  27. data/lib/slickr/generators/templates/behaviors.erb +1 -0
  28. data/{templates → lib/slickr/generators/templates}/engine.erb +13 -9
  29. data/lib/slickr/generators/templates/entities.erb +1 -0
  30. data/lib/slickr/generators/templates/entity.erb +2 -0
  31. data/lib/slickr/generators/templates/reactor.erb +4 -0
  32. data/lib/slickr/generators/templates/reactors.erb +1 -0
  33. data/lib/slickr/generators/templates/renderer.erb +4 -0
  34. data/lib/slickr/generators/templates/renderers.erb +1 -0
  35. data/lib/slickr/reactor.rb +86 -0
  36. data/lib/slickr/renderer.rb +37 -0
  37. data/lib/slickr/tasks.rb +1 -3
  38. data/lib/slickr/version.rb +1 -1
  39. data/slickr.gemspec +0 -2
  40. data/spec/build/.gitkeep +0 -0
  41. data/spec/slickr/actions/generate_spec.rb +38 -0
  42. data/spec/slickr/entity_manager_spec.rb +31 -0
  43. data/spec/slickr/entity_spec.rb +21 -0
  44. data/spec/slickr/generators/behavior_spec.rb +17 -0
  45. data/spec/slickr/generators/entity_spec.rb +21 -0
  46. data/spec/slickr/generators/project_spec.rb +120 -0
  47. data/spec/slickr/generators/reactor_spec.rb +17 -0
  48. data/spec/slickr/generators/renderer_spec.rb +17 -0
  49. data/spec/slickr/reactor_spec.rb +25 -0
  50. data/spec/spec_helper.rb +17 -4
  51. metadata +64 -57
  52. data/lib/slickr/actions/create.rb +0 -79
  53. data/spec/slickj/actions/create_spec.rb +0 -174
  54. data/templates/components.erb +0 -5
  55. data/templates/entities.erb +0 -5
  56. data/templates/renderers.erb +0 -5
  57. data/templates/systems.erb +0 -5
@@ -1,79 +0,0 @@
1
- module Slickr
2
- module Actions
3
- class Create
4
- def initialize(name)
5
- @name = name
6
- end
7
-
8
- def start
9
- empty_directory "java"
10
- empty_directory "assets"
11
- empty_directory "lib"
12
- empty_directory "lib", "renderers"
13
- empty_directory "lib", "components"
14
- empty_directory "lib", "systems"
15
- empty_directory "lib", "entities"
16
-
17
- copy_file "jinput.jar", "java"
18
- copy_file "lwjgl.jar", "java"
19
- copy_file "slick.jar", "java"
20
-
21
- copy_file "libjinput-osx.jnilib"
22
- copy_file "liblwjgl.jnilib"
23
- copy_file "openal.dylib"
24
-
25
- copy_file "Rakefile"
26
-
27
- template "engine.erb", "engine.rb"
28
- template "components.erb", "components.rb"
29
- template "renderers.erb", "renderers.rb"
30
- template "systems.erb", "systems.rb"
31
- template "entities.erb", "entities.rb"
32
- end
33
-
34
- def empty_directory(*path)
35
- project_directory.join(*path).mkpath
36
- end
37
-
38
- def copy_file(filename, destination="")
39
- FileUtils.cp(root.join("files", filename), project_directory.join(destination, filename))
40
- end
41
-
42
- def template(filename, destination)
43
- file = lib_file(destination)
44
- file.write(render(template_source(filename)))
45
- file.close
46
- end
47
-
48
- protected
49
-
50
- def lib_file(filename)
51
- project_directory.join("lib", filename).open("w+")
52
- end
53
-
54
- def render(source)
55
- ERB.new(source).result(binding)
56
- end
57
-
58
- def template_source(filename)
59
- root.join("templates", filename).read
60
- end
61
-
62
- def module_name
63
- name.gsub(" ", "_").camelize
64
- end
65
-
66
- def name
67
- @name
68
- end
69
-
70
- def project_directory
71
- @project_directory ||= Pathname.new(name)
72
- end
73
-
74
- def root
75
- @root ||= Pathname.new(__FILE__).join("../../../../").expand_path
76
- end
77
- end
78
- end
79
- end
@@ -1,174 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Slickr::Actions::Create do
4
- let!(:action) { described_class.new("A Game") }
5
- let!(:rootdir) { Pathname.new(__FILE__).join("../../../../").expand_path }
6
- let!(:gamedir) { Pathname.new("A Game") }
7
-
8
- before do
9
- # Need the actual template contents so we can compare the rendered output
10
- engine = rootdir.join("templates", "engine.erb").read
11
- renderers = rootdir.join("templates", "renderers.erb").read
12
- components = rootdir.join("templates", "components.erb").read
13
- systems = rootdir.join("templates", "systems.erb").read
14
-
15
- FakeFS.activate!
16
-
17
- rootdir.mkpath
18
- rootdir.join("files").mkpath
19
-
20
- # The contents of these don't matter, so just make empty files
21
- FileUtils.touch(rootdir.join("files", "Rakefile"))
22
- FileUtils.touch(rootdir.join("files", "jinput.jar"))
23
- FileUtils.touch(rootdir.join("files", "lwjgl.jar"))
24
- FileUtils.touch(rootdir.join("files", "slick.jar"))
25
- FileUtils.touch(rootdir.join("files", "libjinput-osx.jnilib"))
26
- FileUtils.touch(rootdir.join("files", "liblwjgl.jnilib"))
27
- FileUtils.touch(rootdir.join("files", "openal.dylib"))
28
-
29
- # Write templates to FakeFS
30
- rootdir.join("templates").mkpath
31
- rootdir.join("templates", "engine.erb").open("w+") { |f| f << engine }
32
- rootdir.join("templates", "components.erb").open("w+") { |f| f << components }
33
- rootdir.join("templates", "renderers.erb").open("w+") { |f| f << renderers }
34
- rootdir.join("templates", "systems.erb").open("w+") { |f| f << systems }
35
-
36
- # Finally
37
- action.start
38
- end
39
-
40
- after do
41
- FakeFS.deactivate!
42
- end
43
-
44
- it "creates the project directory" do
45
- gamedir.should be_directory
46
- end
47
-
48
- it "creates a java directory" do
49
- gamedir.join("java").should be_directory
50
- end
51
-
52
- it "creates a lib directory" do
53
- gamedir.join("lib").should be_directory
54
- end
55
-
56
- it "creates a lib/renderers directory" do
57
- gamedir.join("lib", "renderers").should be_directory
58
- end
59
-
60
- it "creates a lib/components directory" do
61
- gamedir.join("lib", "components").should be_directory
62
- end
63
-
64
- it "creates a lib/systems directory" do
65
- gamedir.join("lib", "systems").should be_directory
66
- end
67
-
68
- it "creates a lib/entities directory" do
69
- gamedir.join("lib", "entities").should be_directory
70
- end
71
-
72
- it "creates an assets directory" do
73
- gamedir.join("assets").should be_directory
74
- end
75
-
76
- it "copies jinput.jar into the java directory" do
77
- gamedir.join("java", "jinput.jar").should exist
78
- end
79
-
80
- it "copies lwjgl.jar into the java directory" do
81
- gamedir.join("java", "lwjgl.jar").should exist
82
- end
83
-
84
- it "copies slick.jar into the java directory" do
85
- gamedir.join("java", "slick.jar").should exist
86
- end
87
-
88
- it "copies libjinput-osx.jnilib into the project directory" do
89
- gamedir.join("libjinput-osx.jnilib").should exist
90
- end
91
-
92
- it "copies liblwjgl.jnilib into the project directory" do
93
- gamedir.join("liblwjgl.jnilib").should exist
94
- end
95
-
96
- it "copies openal.dylib into the project directory" do
97
- gamedir.join("openal.dylib").should exist
98
- end
99
-
100
- it "creates the engine file skeleton" do
101
- File.read(gamedir.join("lib", "engine.rb")).should == <<-CODE
102
- $LOAD_PATH << File.expand_path("../../java", __FILE__)
103
- require "java"
104
- require "lwjgl.jar"
105
- require "slick.jar"
106
-
107
- java_import org.newdawn.slick.AppGameContainer
108
- java_import org.newdawn.slick.BasicGame
109
- java_import org.newdawn.slick.Color
110
- java_import org.newdawn.slick.GameContainer
111
- java_import org.newdawn.slick.Graphics
112
- java_import org.newdawn.slick.Image
113
- java_import org.newdawn.slick.Input
114
-
115
- module AGame
116
- class Engine < BasicGame
117
- def init(container)
118
- end
119
-
120
- def update(container, delta)
121
- end
122
-
123
- def render(container, graphics)
124
- end
125
- end
126
- end
127
-
128
- game = AppGameContainer.new(AGame::Engine.new("A Game"))
129
- game.set_display_mode(800, 600, false)
130
- game.start
131
-
132
- CODE
133
- end
134
-
135
- it "creates the components file" do
136
- File.read(gamedir.join("lib", "components.rb")).should == <<-CODE
137
- module AGame
138
- module Components
139
- end
140
- end
141
-
142
- CODE
143
- end
144
-
145
- it "creates the renderers file" do
146
- File.read(gamedir.join("lib", "renderers.rb")).should == <<-CODE
147
- module AGame
148
- module Renderers
149
- end
150
- end
151
-
152
- CODE
153
- end
154
-
155
- it "creates the systems file" do
156
- File.read(gamedir.join("lib", "systems.rb")).should == <<-CODE
157
- module AGame
158
- module Systems
159
- end
160
- end
161
-
162
- CODE
163
- end
164
-
165
- it "creates the systems file" do
166
- File.read(gamedir.join("lib", "entities.rb")).should == <<-CODE
167
- module AGame
168
- module Entities
169
- end
170
- end
171
-
172
- CODE
173
- end
174
- end
@@ -1,5 +0,0 @@
1
- module <%= module_name %>
2
- module Components
3
- end
4
- end
5
-
@@ -1,5 +0,0 @@
1
- module <%= module_name %>
2
- module Entities
3
- end
4
- end
5
-
@@ -1,5 +0,0 @@
1
- module <%= module_name %>
2
- module Renderers
3
- end
4
- end
5
-
@@ -1,5 +0,0 @@
1
- module <%= module_name %>
2
- module Systems
3
- end
4
- end
5
-