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
@@ -0,0 +1,31 @@
1
+ require "spec_helper"
2
+
3
+ describe Slickr::EntityManager do
4
+ let!(:entity) { mock }
5
+
6
+ before do
7
+ Slickr::EntityManager.register(entity, (class SpatialBehavior; self; end))
8
+ end
9
+
10
+ it "registers an entity" do
11
+ Slickr::EntityManager.entities.should include entity
12
+ end
13
+
14
+ it "registers an entity with a behavior" do
15
+ Slickr::EntityManager.entities[entity].should include :spatial
16
+ end
17
+
18
+ it "finds entities with a specific behavior" do
19
+ Slickr::EntityManager.entities_with(:spatial).should include entity
20
+ end
21
+
22
+ it "finds entities with a subset of behaviors" do
23
+ Slickr::EntityManager.register(entity, (class Size; self; end))
24
+ Slickr::EntityManager.entities_with(:size).should include entity
25
+ end
26
+
27
+ it "finds entities with multiple behaviors" do
28
+ Slickr::EntityManager.register(entity, (class Size; self; end))
29
+ Slickr::EntityManager.entities_with(:spatial, :size).should include entity
30
+ end
31
+ end
@@ -0,0 +1,21 @@
1
+ require "spec_helper"
2
+
3
+ describe Slickr::Entity do
4
+ before do
5
+ Slickr::Entity.reset
6
+ end
7
+
8
+ it "has behaviors" do
9
+ Slickr::Entity.behaviors.should respond_to :each
10
+ end
11
+
12
+ it "uses behaviors" do
13
+ Slickr::Entity.use :foo
14
+ Slickr::Entity.behaviors.should == [[:foo, {}]]
15
+ end
16
+
17
+ it "uses behaviors with specific characteristics" do
18
+ Slickr::Entity.use :bar, speed: 10
19
+ Slickr::Entity.behaviors.should == [[:bar, {speed: 10}]]
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ require "spec_helper"
2
+
3
+ describe Slickr::Generators::Behavior do
4
+ let!(:generator) { described_class.new("spatial") }
5
+
6
+ before do
7
+ generator.start
8
+ end
9
+
10
+ it "has a name" do
11
+ generator.name.should == "spatial"
12
+ end
13
+
14
+ it "generates a new component file" do
15
+ build.join("lib", "behaviors", "spatial.rb").should exist
16
+ end
17
+ end
@@ -0,0 +1,21 @@
1
+ require "spec_helper"
2
+
3
+ describe Slickr::Generators::Entity do
4
+ let!(:generator) { described_class.new("hero") }
5
+
6
+ before do
7
+ generator.start
8
+ end
9
+
10
+ it "has a name" do
11
+ generator.name.should == "hero"
12
+ end
13
+
14
+ it "generates a new entity file" do
15
+ build.join("lib", "entities", "hero.rb").should exist
16
+ end
17
+
18
+ it "generates a new renderer file" do
19
+ build.join("lib", "renderers", "hero.rb").should exist
20
+ end
21
+ end
@@ -0,0 +1,120 @@
1
+ require "spec_helper"
2
+
3
+ describe Slickr::Generators::Project do
4
+ let!(:generator) { described_class.new("A Game") }
5
+
6
+ before do
7
+ generator.start
8
+ end
9
+
10
+ it "creates the project directory" do
11
+ game.should be_directory
12
+ end
13
+
14
+ it "creates a java directory" do
15
+ game.join("java").should be_directory
16
+ end
17
+
18
+ it "creates a lib directory" do
19
+ game.join("lib").should be_directory
20
+ end
21
+
22
+ it "creates a lib/renderers directory" do
23
+ game.join("lib", "renderers").should be_directory
24
+ end
25
+
26
+ it "creates a lib/behaviors directory" do
27
+ game.join("lib", "behaviors").should be_directory
28
+ end
29
+
30
+ it "creates a lib/reactors directory" do
31
+ game.join("lib", "reactors").should be_directory
32
+ end
33
+
34
+ it "creates a lib/entities directory" do
35
+ game.join("lib", "entities").should be_directory
36
+ end
37
+
38
+ it "creates an assets directory" do
39
+ game.join("assets").should be_directory
40
+ end
41
+
42
+ it "copies jinput.jar into the java directory" do
43
+ game.join("java", "jinput.jar").should exist
44
+ end
45
+
46
+ it "copies lwjgl.jar into the java directory" do
47
+ game.join("java", "lwjgl.jar").should exist
48
+ end
49
+
50
+ it "copies slick.jar into the java directory" do
51
+ game.join("java", "slick.jar").should exist
52
+ end
53
+
54
+ it "copies libjinput-osx.jnilib into the project directory" do
55
+ game.join("libjinput-osx.jnilib").should exist
56
+ end
57
+
58
+ it "copies liblwjgl.jnilib into the project directory" do
59
+ game.join("liblwjgl.jnilib").should exist
60
+ end
61
+
62
+ it "copies openal.dylib into the project directory" do
63
+ game.join("openal.dylib").should exist
64
+ end
65
+
66
+ it "creates the behaviors file" do
67
+ game.join("lib", "behaviors.rb").should exist
68
+ end
69
+
70
+ it "creates the renderers file" do
71
+ game.join("lib", "renderers.rb").should exist
72
+ end
73
+
74
+ it "creates the reactors file" do
75
+ game.join("lib", "reactors.rb").should exist
76
+ end
77
+
78
+ it "creates the reactors file" do
79
+ game.join("lib", "entities.rb").should exist
80
+ end
81
+
82
+ it "creates the engine file skeleton" do
83
+ File.read(game.join("lib", "engine.rb")).should == <<-CODE
84
+ $LOAD_PATH << File.expand_path("../../java", __FILE__)
85
+ require "java"
86
+ require "lwjgl.jar"
87
+ require "slick.jar"
88
+
89
+ $LOAD_PATH << File.expand_path("../../lib", __FILE__)
90
+ require "behaviors"
91
+ require "entities"
92
+ require "renderers"
93
+ require "reactors"
94
+
95
+ java_import org.newdawn.slick.AppGameContainer
96
+ java_import org.newdawn.slick.BasicGame
97
+ java_import org.newdawn.slick.Color
98
+ java_import org.newdawn.slick.GameContainer
99
+ java_import org.newdawn.slick.Graphics
100
+ java_import org.newdawn.slick.Image
101
+ java_import org.newdawn.slick.Input
102
+
103
+ class Engine < BasicGame
104
+ def init(container)
105
+ end
106
+
107
+ def update(container, delta)
108
+ end
109
+
110
+ def render(container, graphics)
111
+ end
112
+ end
113
+
114
+ game = AppGameContainer.new(Engine.new("A Game"))
115
+ game.set_display_mode(800, 600, false)
116
+ game.start
117
+
118
+ CODE
119
+ end
120
+ end
@@ -0,0 +1,17 @@
1
+ require "spec_helper"
2
+
3
+ describe Slickr::Generators::Reactor do
4
+ let!(:generator) { described_class.new("input") }
5
+
6
+ before do
7
+ generator.start
8
+ end
9
+
10
+ it "has a name" do
11
+ generator.name.should == "input"
12
+ end
13
+
14
+ it "generates a new system file" do
15
+ build.join("lib", "reactors", "input.rb").should exist
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ require "spec_helper"
2
+
3
+ describe Slickr::Generators::Renderer do
4
+ let!(:generator) { described_class.new("hero") }
5
+
6
+ before do
7
+ generator.start
8
+ end
9
+
10
+ it "has a name" do
11
+ generator.name.should == "hero"
12
+ end
13
+
14
+ it "generates a new renderers file" do
15
+ build.join("lib", "renderers", "hero.rb").should exist
16
+ end
17
+ end
@@ -0,0 +1,25 @@
1
+ require "spec_helper"
2
+
3
+ describe Slickr::Reactor do
4
+ it "is concerned with entities implementing certain behaviors" do
5
+ class InputReactor < Slickr::Reactor
6
+ concerned_with :spatiality
7
+ end
8
+
9
+ InputReactor.concerns.should include :spatiality
10
+ end
11
+
12
+ it "has a list of entities who implement the behaviors it's concerned about" do
13
+ module Spatiality
14
+ def prepare(*) end
15
+ end
16
+
17
+ class Hero < Slickr::Entity
18
+ use Spatiality
19
+ end
20
+
21
+ hero = Hero.new
22
+ reactor = InputReactor.new
23
+ reactor.entities.should include hero
24
+ end
25
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,9 +1,22 @@
1
1
  $: << File.expand_path("../../lib", __FILE__)
2
- require "rspec"
3
2
  require "slickr"
4
- require "fakefs/safe"
5
- require "fakefs/spec_helpers"
3
+
4
+ module Helpers
5
+ def build
6
+ root.join("spec", "build")
7
+ end
8
+
9
+ def game
10
+ build.join("A Game")
11
+ end
12
+
13
+ def root
14
+ Pathname.new(__FILE__).join("..", "..").expand_path
15
+ end
16
+ end
6
17
 
7
18
  RSpec.configure do |c|
8
- c.include FakeFS::SpecHelpers
19
+ c.include Helpers
20
+ c.before { Dir.chdir(build) }
21
+ c.after { build.children.each { |c| c.rmtree unless c.basename.to_s == ".gitkeep" }}
9
22
  end
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slickr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matte Noble
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-03-17 00:00:00.000000000 Z
11
+ date: 2014-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: i18n
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: active_support
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
@@ -70,56 +70,28 @@ dependencies:
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ! '>='
73
+ - - '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ! '>='
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: debugger
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ! '>='
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ! '>='
80
+ - - '>='
95
81
  - !ruby/object:Gem::Version
96
82
  version: '0'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: rspec
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
- - - ! '>='
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ! '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: fakefs
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ! '>='
87
+ - - '>='
116
88
  - !ruby/object:Gem::Version
117
89
  version: '0'
118
90
  type: :development
119
91
  prerelease: false
120
92
  version_requirements: !ruby/object:Gem::Requirement
121
93
  requirements:
122
- - - ! '>='
94
+ - - '>='
123
95
  - !ruby/object:Gem::Version
124
96
  version: '0'
125
97
  description: Slick2D JRuby project generator
@@ -132,31 +104,56 @@ extra_rdoc_files: []
132
104
  files:
133
105
  - .gitignore
134
106
  - .rspec
107
+ - .travis.yml
135
108
  - Gemfile
136
109
  - LICENSE.txt
137
110
  - README.md
138
111
  - Rakefile
139
112
  - bin/slickr
140
- - files/Rakefile
141
- - files/jinput.jar
142
- - files/libjinput-osx.jnilib
143
- - files/liblwjgl.jnilib
144
- - files/lwjgl.jar
145
- - files/openal.dylib
146
- - files/slick.jar
147
113
  - lib/slickr.rb
148
- - lib/slickr/actions/create.rb
114
+ - lib/slickr/actions/generate.rb
115
+ - lib/slickr/behavior.rb
149
116
  - lib/slickr/cli.rb
117
+ - lib/slickr/entity.rb
118
+ - lib/slickr/entity_manager.rb
119
+ - lib/slickr/generators/base.rb
120
+ - lib/slickr/generators/behavior.rb
121
+ - lib/slickr/generators/entity.rb
122
+ - lib/slickr/generators/files/Rakefile
123
+ - lib/slickr/generators/files/jinput.jar
124
+ - lib/slickr/generators/files/libjinput-osx.jnilib
125
+ - lib/slickr/generators/files/liblwjgl.jnilib
126
+ - lib/slickr/generators/files/lwjgl.jar
127
+ - lib/slickr/generators/files/openal.dylib
128
+ - lib/slickr/generators/files/slick.jar
129
+ - lib/slickr/generators/project.rb
130
+ - lib/slickr/generators/reactor.rb
131
+ - lib/slickr/generators/renderer.rb
132
+ - lib/slickr/generators/templates/behavior.erb
133
+ - lib/slickr/generators/templates/behaviors.erb
134
+ - lib/slickr/generators/templates/engine.erb
135
+ - lib/slickr/generators/templates/entities.erb
136
+ - lib/slickr/generators/templates/entity.erb
137
+ - lib/slickr/generators/templates/reactor.erb
138
+ - lib/slickr/generators/templates/reactors.erb
139
+ - lib/slickr/generators/templates/renderer.erb
140
+ - lib/slickr/generators/templates/renderers.erb
141
+ - lib/slickr/reactor.rb
142
+ - lib/slickr/renderer.rb
150
143
  - lib/slickr/tasks.rb
151
144
  - lib/slickr/version.rb
152
145
  - slickr.gemspec
153
- - spec/slickj/actions/create_spec.rb
146
+ - spec/build/.gitkeep
147
+ - spec/slickr/actions/generate_spec.rb
148
+ - spec/slickr/entity_manager_spec.rb
149
+ - spec/slickr/entity_spec.rb
150
+ - spec/slickr/generators/behavior_spec.rb
151
+ - spec/slickr/generators/entity_spec.rb
152
+ - spec/slickr/generators/project_spec.rb
153
+ - spec/slickr/generators/reactor_spec.rb
154
+ - spec/slickr/generators/renderer_spec.rb
155
+ - spec/slickr/reactor_spec.rb
154
156
  - spec/spec_helper.rb
155
- - templates/components.erb
156
- - templates/engine.erb
157
- - templates/entities.erb
158
- - templates/renderers.erb
159
- - templates/systems.erb
160
157
  homepage:
161
158
  licenses:
162
159
  - MIT
@@ -167,12 +164,12 @@ require_paths:
167
164
  - lib
168
165
  required_ruby_version: !ruby/object:Gem::Requirement
169
166
  requirements:
170
- - - ! '>='
167
+ - - '>='
171
168
  - !ruby/object:Gem::Version
172
169
  version: '0'
173
170
  required_rubygems_version: !ruby/object:Gem::Requirement
174
171
  requirements:
175
- - - ! '>='
172
+ - - '>='
176
173
  - !ruby/object:Gem::Version
177
174
  version: '0'
178
175
  requirements: []
@@ -182,5 +179,15 @@ signing_key:
182
179
  specification_version: 4
183
180
  summary: Slick2D JRuby project generator
184
181
  test_files:
185
- - spec/slickj/actions/create_spec.rb
182
+ - spec/build/.gitkeep
183
+ - spec/slickr/actions/generate_spec.rb
184
+ - spec/slickr/entity_manager_spec.rb
185
+ - spec/slickr/entity_spec.rb
186
+ - spec/slickr/generators/behavior_spec.rb
187
+ - spec/slickr/generators/entity_spec.rb
188
+ - spec/slickr/generators/project_spec.rb
189
+ - spec/slickr/generators/reactor_spec.rb
190
+ - spec/slickr/generators/renderer_spec.rb
191
+ - spec/slickr/reactor_spec.rb
186
192
  - spec/spec_helper.rb
193
+ has_rdoc: