gamebox 0.2.1 → 0.3.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 (95) hide show
  1. data/Gemfile +1 -8
  2. data/Rakefile +13 -37
  3. data/TODO.txt +27 -27
  4. data/docs/getting_started.rdoc +2 -2
  5. data/gamebox.gemspec +33 -191
  6. data/lib/gamebox.rb +18 -14
  7. data/lib/gamebox/actor.rb +37 -27
  8. data/lib/gamebox/actor_factory.rb +4 -5
  9. data/lib/gamebox/actor_view.rb +8 -0
  10. data/lib/gamebox/actors/collidable_debugger.rb +2 -2
  11. data/lib/gamebox/actors/curtain.rb +3 -3
  12. data/lib/gamebox/actors/emitter.rb +51 -0
  13. data/lib/gamebox/actors/label.rb +27 -7
  14. data/lib/gamebox/actors/logo.rb +1 -1
  15. data/lib/gamebox/actors/spatial_debugger.rb +25 -10
  16. data/lib/gamebox/arbiter.rb +61 -34
  17. data/lib/gamebox/behavior.rb +3 -3
  18. data/lib/gamebox/behaviors/animated.rb +1 -1
  19. data/lib/gamebox/behaviors/audible.rb +1 -1
  20. data/lib/gamebox/behaviors/collidable.rb +9 -4
  21. data/lib/gamebox/behaviors/collidable/aabb_collidable.rb +26 -1
  22. data/lib/gamebox/behaviors/collidable/circle_collidable.rb +3 -3
  23. data/lib/gamebox/behaviors/collidable/polygon_collidable.rb +1 -1
  24. data/lib/gamebox/behaviors/graphical.rb +30 -4
  25. data/lib/gamebox/behaviors/layered.rb +1 -1
  26. data/lib/gamebox/behaviors/physical.rb +113 -30
  27. data/lib/gamebox/behaviors/timed.rb +33 -0
  28. data/lib/gamebox/behaviors/updatable.rb +1 -1
  29. data/lib/gamebox/class_finder.rb +1 -21
  30. data/lib/gamebox/console_app.rb +33 -31
  31. data/lib/gamebox/constants.rb +481 -0
  32. data/lib/gamebox/data/config/objects.yml +7 -0
  33. data/lib/gamebox/gamebox_application.rb +10 -33
  34. data/lib/gamebox/gamebox_generator.rb +32 -32
  35. data/lib/gamebox/input_manager.rb +73 -32
  36. data/lib/gamebox/lib/inflector.rb +1 -1
  37. data/lib/gamebox/lib/range_ext.rb +5 -0
  38. data/lib/gamebox/lib/rect.rb +548 -548
  39. data/lib/gamebox/lib/sorted_list.rb +1 -1
  40. data/lib/gamebox/lib/symbol_ext.rb +8 -0
  41. data/lib/gamebox/physical_director.rb +1 -1
  42. data/lib/gamebox/physical_stage.rb +3 -3
  43. data/lib/gamebox/physics.rb +0 -3
  44. data/lib/gamebox/resource_manager.rb +22 -17
  45. data/lib/gamebox/sound_manager.rb +3 -2
  46. data/lib/gamebox/spatial_hash.rb +60 -31
  47. data/lib/gamebox/spatial_stagehand.rb +30 -6
  48. data/lib/gamebox/spec/helper.rb +7 -7
  49. data/lib/gamebox/stage.rb +18 -19
  50. data/lib/gamebox/stage_manager.rb +33 -23
  51. data/lib/gamebox/stagehand.rb +3 -0
  52. data/lib/gamebox/svg_document.rb +1 -1
  53. data/lib/gamebox/tasks/gamebox_tasks.rake +133 -0
  54. data/lib/gamebox/templates/actor.erb +0 -2
  55. data/lib/gamebox/templates/actor_view.erb +1 -3
  56. data/lib/gamebox/templates/template_app/Gemfile +3 -2
  57. data/lib/gamebox/templates/template_app/Rakefile +3 -8
  58. data/lib/gamebox/templates/template_app/config/environment.rb +7 -39
  59. data/lib/gamebox/templates/template_app/src/demo_stage.rb +1 -2
  60. data/lib/gamebox/templates/template_app/src/my_actor.rb +0 -3
  61. data/lib/gamebox/version.rb +2 -2
  62. data/lib/gamebox/viewport.rb +44 -8
  63. data/lib/gamebox/views/graphical_actor_view.rb +22 -16
  64. data/lib/gamebox/wrapped_screen.rb +9 -1
  65. data/script/perf_spatial_hash.rb +49 -58
  66. data/script/perf_struct_vs_array.rb +32 -0
  67. data/spec/actor_factory_spec.rb +61 -0
  68. data/spec/actor_spec.rb +24 -18
  69. data/spec/actor_view_spec.rb +51 -6
  70. data/spec/animated_spec.rb +27 -6
  71. data/spec/arbiter_spec.rb +12 -24
  72. data/spec/backstage_spec.rb +1 -1
  73. data/spec/behavior_spec.rb +3 -3
  74. data/spec/class_finder_spec.rb +13 -0
  75. data/spec/collidable_spec.rb +30 -10
  76. data/spec/emitter_spec.rb +20 -0
  77. data/spec/helper.rb +5 -21
  78. data/spec/input_manager_spec.rb +134 -0
  79. data/spec/label_spec.rb +0 -1
  80. data/spec/physical_spec.rb +114 -5
  81. data/spec/resource_manager_spec.rb +1 -2
  82. data/spec/spatial_hash_spec.rb +23 -7
  83. data/spec/spatial_stagehand_spec.rb +97 -0
  84. data/spec/stage_manager_spec.rb +0 -1
  85. data/spec/stage_spec.rb +2 -2
  86. data/spec/viewport_spec.rb +92 -48
  87. metadata +223 -119
  88. data/.gitignore +0 -11
  89. data/History.txt +0 -80
  90. data/VERSION +0 -1
  91. data/lib/gamebox/event_compat.rb +0 -285
  92. data/lib/gamebox/lib/diy.rb +0 -371
  93. data/lib/gamebox/lib/numbers_ext.rb +0 -3
  94. data/lib/gamebox/tasks/gamebox_tasks.rb +0 -61
  95. data/load_paths.rb +0 -20
@@ -1,5 +1,4 @@
1
1
  require File.join(File.dirname(__FILE__),'helper')
2
- require 'resource_manager'
3
2
 
4
3
  describe 'A new resource manager' do
5
4
  before do
@@ -7,7 +6,7 @@ describe 'A new resource manager' do
7
6
  end
8
7
 
9
8
  it 'should load an actor image' do
10
- @res_man.should_receive(:load_image).with("string.png").and_return(:surf)
9
+ @res_man.expects(:load_image).with("string.png").returns(:surf)
11
10
  @res_man.load_actor_image("FoopyPants").should == :surf
12
11
  end
13
12
 
@@ -1,10 +1,11 @@
1
1
  require File.join(File.dirname(__FILE__),'helper')
2
- require 'spatial_hash'
2
+
3
3
 
4
4
  describe 'a new SpacialHash' do
5
5
  before do
6
6
  @hash = SpatialHash.new 10
7
7
  end
8
+
8
9
  it 'should be constructable' do
9
10
  @hash.cell_size.should == 10
10
11
  end
@@ -26,6 +27,7 @@ describe 'a new SpacialHash' do
26
27
  @hash.add box
27
28
 
28
29
  buckets = @hash.instance_variable_get('@buckets')
30
+
29
31
  buckets[0][0].first.should == box
30
32
  buckets[0][1].first.should == box
31
33
  buckets[1][0].first.should == box
@@ -42,6 +44,7 @@ describe 'a new SpacialHash' do
42
44
 
43
45
  buckets[1][1].should be_nil
44
46
  buckets[0][1].should be_nil
47
+
45
48
  end
46
49
 
47
50
  it 'can remove points' do
@@ -87,12 +90,25 @@ describe 'a new SpacialHash' do
87
90
  end
88
91
 
89
92
  class Point
90
- attr_accessor :x,:y
91
- def initialize(x,y);@x=x;@y=y;end
93
+ extend Publisher
94
+ can_fire :remove_me
95
+ include Kvo
96
+ kvo_attr_accessor :x, :y
97
+ def initialize(x,y)
98
+ self.x = x
99
+ self.y = y
100
+ end
92
101
  end
93
102
 
94
- class Item < Point
95
- def initialize(x,y,w=1,h=1);@x=x;@y=y;@w=w;@h=h;end
96
- def width;@w;end
97
- def height;@h;end
103
+ class Item
104
+ extend Publisher
105
+ can_fire :remove_me
106
+ include Kvo
107
+ kvo_attr_accessor :x, :y, :width, :height
108
+ def initialize(x,y,w=1,h=1)
109
+ self.x = x
110
+ self.y = y
111
+ self.width = w
112
+ self.height = h
113
+ end
98
114
  end
@@ -0,0 +1,97 @@
1
+ require File.join(File.dirname(__FILE__),'helper')
2
+
3
+ describe 'a new SpacialStagehand' do
4
+ before do
5
+ @target = SpatialStagehand.new :stage, {}
6
+ @hash = @target.instance_variable_get("@spatial_actors")
7
+ end
8
+
9
+ describe "it constructs" do
10
+ it 'should be constructable with default params' do
11
+ @target.cell_size.should == 50
12
+ end
13
+
14
+ it 'passes on cell_size' do
15
+ @target = SpatialStagehand.new :stage, {:cell_size => 99}
16
+ @target.cell_size.should == 99
17
+ end
18
+ end
19
+
20
+ describe "#cell_size" do
21
+ it "returns the cell size" do
22
+ @hash.cell_size = :size
23
+ @target.cell_size.should == :size
24
+ end
25
+ it "sets the cell size" do
26
+ @target.cell_size = :size
27
+ @hash.cell_size.should == :size
28
+ end
29
+ end
30
+
31
+ describe "#auto_resize" do
32
+ it "returns the resize setting" do
33
+ @hash.auto_resize = :resize
34
+ @target.auto_resize.should == :resize
35
+ end
36
+
37
+ it "sets the resize setting" do
38
+ @target.auto_resize = :resize
39
+ @hash.auto_resize.should == :resize
40
+ end
41
+ end
42
+
43
+ describe "#moved_items" do
44
+ it "returns all the moved items" do
45
+ @hash.instance_variable_set("@moved_items", :moved_items => :moved_items)
46
+ @target.moved_items.should == [:moved_items]
47
+ end
48
+ end
49
+
50
+ describe "#items" do
51
+ it "returns all the items" do
52
+ @hash.instance_variable_set("@items", :items => :items)
53
+ @target.items.should == [:items]
54
+ end
55
+ end
56
+
57
+ describe "#buckets" do
58
+ it "returns all the buckets" do
59
+ @hash.instance_variable_set("@buckets", :buckets)
60
+ @target.buckets.should == :buckets
61
+ end
62
+ end
63
+
64
+ describe "#add" do
65
+ it 'should add the actor to the hash' do
66
+ @actor = stub(:when)
67
+ @hash.expects(:add).with(@actor)
68
+ @target.add(@actor)
69
+ end
70
+ end
71
+
72
+ describe "#remove" do
73
+ it "removes the actor from the hash" do
74
+ @hash.expects(:remove).with(:actor)
75
+ @target.remove(:actor)
76
+ end
77
+ end
78
+
79
+ describe "#items_at" do
80
+ it "calls through to hash" do
81
+ @hash.expects(:items_at).with(:x, :y)
82
+ @target.items_at(:x,:y)
83
+ end
84
+ end
85
+ describe "#items_in" do
86
+ it "calls through to hash" do
87
+ @hash.expects(:items_in).with(:x, :y, :w, :h)
88
+ @target.items_in(:x,:y, :w, :h)
89
+ end
90
+ end
91
+ describe "#neighbors_of" do
92
+ it "calls through to hash" do
93
+ @hash.expects(:neighbors_of).with(:actor, 3)
94
+ @target.neighbors_of(:actor, 3)
95
+ end
96
+ end
97
+ end
@@ -1,5 +1,4 @@
1
1
  require File.join(File.dirname(__FILE__),'helper')
2
- require 'stage_manager'
3
2
 
4
3
  describe 'A new stage manager' do
5
4
  before do
data/spec/stage_spec.rb CHANGED
@@ -1,12 +1,12 @@
1
1
  require File.join(File.dirname(__FILE__),'helper')
2
- require 'stage'
2
+
3
3
 
4
4
  describe 'A new stage' do
5
5
  FakeDrawable = Struct.new :layer, :parallax
6
6
 
7
7
  before do
8
8
  @config = {:screen_resolution => [800,600] }
9
- @actor_factory = stub(:actor_factory, :director= => nil)
9
+ @actor_factory = stub(:director= => nil)
10
10
  @stage = Stage.new :input_manager, @actor_factory,
11
11
  :resource_manager, :sound_manager, @config, :backstage, {}
12
12
  end
@@ -1,5 +1,5 @@
1
1
  require File.join(File.dirname(__FILE__),'helper')
2
- require 'viewport'
2
+
3
3
 
4
4
  class Vec
5
5
  attr_accessor :x, :y
@@ -10,106 +10,150 @@ class Vec
10
10
  end
11
11
 
12
12
  describe 'A new viewport' do
13
- before do
14
- @viewport = Viewport.new 800, 600
15
- end
13
+ subject { Viewport.new 800, 600 }
16
14
 
17
15
  it 'should construct with width and height' do
18
- @viewport.width.should equal(800)
19
- @viewport.height.should equal(600)
20
- @viewport.x_offset.should equal(0)
21
- @viewport.y_offset.should equal(0)
16
+ subject.width.should == 800
17
+ subject.height.should == 600
18
+ subject.x_offset.should == 0
19
+ subject.y_offset.should == 0
22
20
  end
23
21
 
24
22
  it 'should center the viewport on an actor when follow' do
25
23
  actor = Vec.new 900, 200
26
- @viewport.follow actor
24
+ subject.follow actor
27
25
 
28
- @viewport.x_offset.should equal(-500)
29
- @viewport.y_offset.should equal(100)
30
- @viewport.follow_target.should equal(actor)
26
+ subject.x_offset.should == -500
27
+ subject.y_offset.should == 100
28
+ subject.follow_target.should equal(actor)
31
29
  end
32
30
 
33
31
  it 'should center the viewport on an actor (plus offset) when follow' do
34
32
  actor = Vec.new 900, 200
35
- @viewport.follow actor, [40,-20]
33
+ subject.follow actor, [40,-20]
36
34
 
37
- @viewport.x_offset.should equal(-460)
38
- @viewport.y_offset.should equal(80)
39
- @viewport.follow_target.should equal(actor)
35
+ subject.x_offset.should == -460
36
+ subject.y_offset.should == 80
37
+ subject.follow_target.should equal(actor)
40
38
  end
41
39
 
42
40
  it 'should respect parallax scrolling layers for offsets' do
43
- @viewport.x_offset = -200
44
- @viewport.y_offset = -300
41
+ subject.x_offset = -200
42
+ subject.y_offset = -300
45
43
 
46
- @viewport.x_offset(2).should equal(-100)
47
- @viewport.y_offset(2).should equal(-150)
44
+ subject.x_offset(2).should == -100
45
+ subject.y_offset(2).should == -150
48
46
  end
49
47
 
50
48
  it 'should return a zero offset on INFINITY' do
51
- @viewport.x_offset = -200
52
- @viewport.y_offset = -300
49
+ subject.x_offset = -200
50
+ subject.y_offset = -300
53
51
 
54
- @viewport.x_offset(Float::INFINITY).should equal(0)
55
- @viewport.y_offset(Float::INFINITY).should equal(0)
52
+ subject.x_offset(Float::INFINITY).should == 0
53
+ subject.y_offset(Float::INFINITY).should == 0
56
54
  end
57
55
 
58
56
  it 'shouldn\'t update anything unless following a target' do
59
- @viewport.x_offset = -200
60
- @viewport.y_offset = -300
57
+ subject.x_offset = -200
58
+ subject.y_offset = -300
61
59
 
62
- @viewport.update 3000
60
+ subject.update 3000
63
61
 
64
- @viewport.x_offset.should equal(-200)
65
- @viewport.y_offset.should equal(-300)
62
+ subject.x_offset.should == -200
63
+ subject.y_offset.should == -300
66
64
  end
67
65
 
68
66
  it 'should follow a target if target has gone right;down of its buffer' do
69
67
  actor = Vec.new 900, 200
70
- @viewport.follow actor, [0,0], [100,200]
68
+ subject.follow actor, [0,0], [100,200]
71
69
 
72
- @viewport.update 100
70
+ subject.update 100
73
71
  actor.x = 990
74
72
  actor.y = 390
75
73
 
76
- @viewport.update 100
77
- @viewport.x_offset.should equal(-500)
78
- @viewport.y_offset.should equal(100)
74
+ subject.update 100
75
+ subject.x_offset.should == -500
76
+ subject.y_offset.should == 100
79
77
 
80
78
  actor.x = 1001
81
79
  actor.y = 401
82
- @viewport.update 100
80
+ subject.update 100
83
81
 
84
- @viewport.x_offset.should equal(-501)
85
- @viewport.y_offset.should equal(99)
82
+ subject.x_offset.should == -501
83
+ subject.y_offset.should == 99
86
84
  end
87
85
 
88
86
  it 'should follow a target if target has gone left;up of its buffer' do
89
87
  actor = Vec.new 900, 200
90
- @viewport.should_receive(:fire).with(:scrolled).twice
91
- @viewport.follow actor, [0,0], [100,200]
88
+ subject.expects(:fire).with(:scrolled).twice
89
+ subject.follow actor, [0,0], [100,200]
92
90
 
93
- @viewport.update 100
91
+ subject.update 100
94
92
  actor.x = 810
95
93
  actor.y = 10
96
94
 
97
- @viewport.update 100
98
- @viewport.x_offset.should equal(-500)
99
- @viewport.y_offset.should equal(100)
95
+ subject.update 100
96
+ subject.x_offset.should == -500
97
+ subject.y_offset.should == 100
100
98
 
101
99
  actor.x = 799
102
100
  actor.y = -1
103
- @viewport.update 100
101
+ subject.update 100
104
102
 
105
- @viewport.x_offset.should equal(-499)
106
- @viewport.y_offset.should equal(101)
103
+ subject.x_offset.should == -499
104
+ subject.y_offset.should == 101
105
+ end
106
+
107
+ it 'should respect the speed setting' do
108
+ actor = Vec.new 900, 200
109
+ subject.speed = 0.5
110
+ subject.follow actor, [0,0], [100,200]
111
+
112
+ subject.update 100
113
+ actor.x = 990
114
+ actor.y = 390
115
+
116
+ subject.update 100
117
+ subject.x_offset.should == -500
118
+ subject.y_offset.should == 100
119
+
120
+ actor.x = 1002
121
+ actor.y = 402
122
+ subject.update 100
123
+
124
+ subject.x_offset.should == -501
125
+ subject.y_offset.should == 99
126
+
127
+ end
128
+
129
+ it 'enforces speed is >= 0 and <= 1' do
130
+ subject.speed.should == 1
131
+
132
+ subject.speed = 0
133
+ subject.speed.should == 0
134
+
135
+ subject.speed = 2
136
+ subject.speed.should == 1
137
+
138
+ subject.speed = 0.1
139
+ subject.speed.should be_within(0.001).of(0.1)
107
140
  end
108
141
 
109
142
  it 'should fire :scrolled event when targeting an actor' do
110
143
  actor = Vec.new 900, 200
111
- @viewport.should_receive(:fire).with(:scrolled)
112
- @viewport.follow actor, [0,0], [100,200]
144
+ subject.expects(:fire).with(:scrolled)
145
+ subject.follow actor, [0,0], [100,200]
146
+ end
147
+
148
+ describe "#bounds" do
149
+ it 'returns the bounds as [x1,y1,x2,y2]' do
150
+ subject.bounds.should == [0,0,800,600]
151
+
152
+ subject.x_offset = -10
153
+ subject.y_offset = -100
154
+
155
+ subject.bounds.should == [10,100,810,700]
156
+ end
113
157
  end
114
158
 
115
159
  end
metadata CHANGED
@@ -1,125 +1,227 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: gamebox
3
- version: !ruby/object:Gem::Version
4
- hash: 21
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 2
9
- - 1
10
- version: 0.2.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.2
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Shawn Anderson
14
9
  - Jason Roelofs
15
10
  - Karlin Fox
16
11
  autorequire:
17
12
  bindir: bin
18
13
  cert_chain: []
19
-
20
- date: 2010-11-02 00:00:00 -04:00
21
- default_executable: gamebox
22
- dependencies:
23
- - !ruby/object:Gem::Dependency
24
- name: rspec
14
+ date: 2011-11-19 00:00:00.000000000Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: gosu
18
+ requirement: &2157000860 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
24
+ type: :runtime
25
25
  prerelease: false
26
- requirement: &id001 !ruby/object:Gem::Requirement
26
+ version_requirements: *2157000860
27
+ - !ruby/object:Gem::Dependency
28
+ name: constructor
29
+ requirement: &2157000400 !ruby/object:Gem::Requirement
27
30
  none: false
28
- requirements:
29
- - - ">="
30
- - !ruby/object:Gem::Version
31
- hash: 3
32
- segments:
33
- - 0
34
- version: "0"
35
- type: :development
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: jeweler
31
+ requirements:
32
+ - - ! '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
39
36
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
37
+ version_requirements: *2157000400
38
+ - !ruby/object:Gem::Dependency
39
+ name: publisher
40
+ requirement: &2156999940 !ruby/object:Gem::Requirement
41
41
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 3
46
- segments:
47
- - 0
48
- version: "0"
49
- type: :development
50
- version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
52
- name: gosu
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ type: :runtime
53
47
  prerelease: false
54
- requirement: &id003 !ruby/object:Gem::Requirement
48
+ version_requirements: *2156999940
49
+ - !ruby/object:Gem::Dependency
50
+ name: diy
51
+ requirement: &2156999520 !ruby/object:Gem::Requirement
55
52
  none: false
56
- requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- hash: 3
60
- segments:
61
- - 0
62
- version: "0"
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
63
57
  type: :runtime
64
- version_requirements: *id003
65
- - !ruby/object:Gem::Dependency
66
- name: bundler
67
58
  prerelease: false
68
- requirement: &id004 !ruby/object:Gem::Requirement
59
+ version_requirements: *2156999520
60
+ - !ruby/object:Gem::Dependency
61
+ name: tween
62
+ requirement: &2156999100 !ruby/object:Gem::Requirement
69
63
  none: false
70
- requirements:
71
- - - ">="
72
- - !ruby/object:Gem::Version
73
- hash: 3
74
- segments:
75
- - 0
76
- version: "0"
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
77
68
  type: :runtime
78
- version_requirements: *id004
79
- - !ruby/object:Gem::Dependency
80
- name: constructor
81
69
  prerelease: false
82
- requirement: &id005 !ruby/object:Gem::Requirement
70
+ version_requirements: *2156999100
71
+ - !ruby/object:Gem::Dependency
72
+ name: require_all
73
+ requirement: &2156998660 !ruby/object:Gem::Requirement
83
74
  none: false
84
- requirements:
85
- - - ">="
86
- - !ruby/object:Gem::Version
87
- hash: 3
88
- segments:
89
- - 0
90
- version: "0"
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ type: :runtime
80
+ prerelease: false
81
+ version_requirements: *2156998660
82
+ - !ruby/object:Gem::Dependency
83
+ name: kvo
84
+ requirement: &2156998220 !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: *2156998220
93
+ - !ruby/object:Gem::Dependency
94
+ name: pry
95
+ requirement: &2156997700 !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - =
99
+ - !ruby/object:Gem::Version
100
+ version: 0.9.6
101
+ type: :runtime
102
+ prerelease: false
103
+ version_requirements: *2156997700
104
+ - !ruby/object:Gem::Dependency
105
+ name: pry-remote
106
+ requirement: &2156997240 !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
91
112
  type: :runtime
92
- version_requirements: *id005
93
- - !ruby/object:Gem::Dependency
94
- name: publisher
95
113
  prerelease: false
96
- requirement: &id006 !ruby/object:Gem::Requirement
114
+ version_requirements: *2156997240
115
+ - !ruby/object:Gem::Dependency
116
+ name: chipmunk
117
+ requirement: &2156996740 !ruby/object:Gem::Requirement
97
118
  none: false
98
- requirements:
99
- - - ">="
100
- - !ruby/object:Gem::Version
101
- hash: 3
102
- segments:
103
- - 0
104
- version: "0"
119
+ requirements:
120
+ - - ! '>='
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
105
123
  type: :runtime
106
- version_requirements: *id006
124
+ prerelease: false
125
+ version_requirements: *2156996740
126
+ - !ruby/object:Gem::Dependency
127
+ name: rspec-core
128
+ requirement: &2156996300 !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: *2156996300
137
+ - !ruby/object:Gem::Dependency
138
+ name: rspec-mocks
139
+ requirement: &2156995860 !ruby/object:Gem::Requirement
140
+ none: false
141
+ requirements:
142
+ - - ! '>='
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ type: :development
146
+ prerelease: false
147
+ version_requirements: *2156995860
148
+ - !ruby/object:Gem::Dependency
149
+ name: rspec-expectations
150
+ requirement: &2156995360 !ruby/object:Gem::Requirement
151
+ none: false
152
+ requirements:
153
+ - - ! '>='
154
+ - !ruby/object:Gem::Version
155
+ version: '0'
156
+ type: :development
157
+ prerelease: false
158
+ version_requirements: *2156995360
159
+ - !ruby/object:Gem::Dependency
160
+ name: mocha
161
+ requirement: &2156994940 !ruby/object:Gem::Requirement
162
+ none: false
163
+ requirements:
164
+ - - ! '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ type: :development
168
+ prerelease: false
169
+ version_requirements: *2156994940
170
+ - !ruby/object:Gem::Dependency
171
+ name: rspec
172
+ requirement: &2156994520 !ruby/object:Gem::Requirement
173
+ none: false
174
+ requirements:
175
+ - - ! '>='
176
+ - !ruby/object:Gem::Version
177
+ version: '0'
178
+ type: :development
179
+ prerelease: false
180
+ version_requirements: *2156994520
181
+ - !ruby/object:Gem::Dependency
182
+ name: rake
183
+ requirement: &2156994060 !ruby/object:Gem::Requirement
184
+ none: false
185
+ requirements:
186
+ - - ! '>='
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ type: :development
190
+ prerelease: false
191
+ version_requirements: *2156994060
192
+ - !ruby/object:Gem::Dependency
193
+ name: polaris
194
+ requirement: &2156993640 !ruby/object:Gem::Requirement
195
+ none: false
196
+ requirements:
197
+ - - ! '>='
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: *2156993640
203
+ - !ruby/object:Gem::Dependency
204
+ name: rcov
205
+ requirement: &2156993220 !ruby/object:Gem::Requirement
206
+ none: false
207
+ requirements:
208
+ - - ! '>='
209
+ - !ruby/object:Gem::Version
210
+ version: '0'
211
+ type: :development
212
+ prerelease: false
213
+ version_requirements: *2156993220
107
214
  description: Framework for building and distributing games using Gosu
108
215
  email: shawn42@gmail.com
109
- executables:
216
+ executables:
110
217
  - gamebox
111
218
  extensions: []
112
-
113
- extra_rdoc_files:
114
- - README.txt
115
- files:
116
- - .gitignore
219
+ extra_rdoc_files: []
220
+ files:
117
221
  - Gemfile
118
- - History.txt
119
222
  - README.txt
120
223
  - Rakefile
121
224
  - TODO.txt
122
- - VERSION
123
225
  - bin/gamebox
124
226
  - docs/CODE_REVIEW
125
227
  - docs/gamebox.bat
@@ -133,6 +235,7 @@ files:
133
235
  - lib/gamebox/actor_view.rb
134
236
  - lib/gamebox/actors/collidable_debugger.rb
135
237
  - lib/gamebox/actors/curtain.rb
238
+ - lib/gamebox/actors/emitter.rb
136
239
  - lib/gamebox/actors/fps.rb
137
240
  - lib/gamebox/actors/label.rb
138
241
  - lib/gamebox/actors/logo.rb
@@ -152,10 +255,12 @@ files:
152
255
  - lib/gamebox/behaviors/graphical.rb
153
256
  - lib/gamebox/behaviors/layered.rb
154
257
  - lib/gamebox/behaviors/physical.rb
258
+ - lib/gamebox/behaviors/timed.rb
155
259
  - lib/gamebox/behaviors/updatable.rb
156
260
  - lib/gamebox/class_finder.rb
157
261
  - lib/gamebox/config_manager.rb
158
262
  - lib/gamebox/console_app.rb
263
+ - lib/gamebox/constants.rb
159
264
  - lib/gamebox/data/config/objects.yml
160
265
  - lib/gamebox/data/fonts/Asimov.ttf
161
266
  - lib/gamebox/data/fonts/GAMEBOX_FONTS_GO_HERE
@@ -164,7 +269,6 @@ files:
164
269
  - lib/gamebox/data/music/GAMEBOX_MUSIC_GOES_HERE
165
270
  - lib/gamebox/data/sounds/GAMEBOX_SOUND_FX_GO_HERE
166
271
  - lib/gamebox/director.rb
167
- - lib/gamebox/event_compat.rb
168
272
  - lib/gamebox/ftor.rb
169
273
  - lib/gamebox/gamebox_application.rb
170
274
  - lib/gamebox/gamebox_generator.rb
@@ -174,16 +278,16 @@ files:
174
278
  - lib/gamebox/input_manager.rb
175
279
  - lib/gamebox/lib/aliasing.rb
176
280
  - lib/gamebox/lib/code_statistics.rb
177
- - lib/gamebox/lib/diy.rb
178
281
  - lib/gamebox/lib/inflections.rb
179
282
  - lib/gamebox/lib/inflector.rb
180
283
  - lib/gamebox/lib/linked_list.rb
181
284
  - lib/gamebox/lib/metaclass.rb
182
- - lib/gamebox/lib/numbers_ext.rb
183
285
  - lib/gamebox/lib/platform.rb
184
286
  - lib/gamebox/lib/publisher_ext.rb
287
+ - lib/gamebox/lib/range_ext.rb
185
288
  - lib/gamebox/lib/rect.rb
186
289
  - lib/gamebox/lib/sorted_list.rb
290
+ - lib/gamebox/lib/symbol_ext.rb
187
291
  - lib/gamebox/physical_director.rb
188
292
  - lib/gamebox/physical_stage.rb
189
293
  - lib/gamebox/physics.rb
@@ -196,7 +300,7 @@ files:
196
300
  - lib/gamebox/stage_manager.rb
197
301
  - lib/gamebox/stagehand.rb
198
302
  - lib/gamebox/svg_document.rb
199
- - lib/gamebox/tasks/gamebox_tasks.rb
303
+ - lib/gamebox/tasks/gamebox_tasks.rake
200
304
  - lib/gamebox/templates/actor.erb
201
305
  - lib/gamebox/templates/actor_spec.erb
202
306
  - lib/gamebox/templates/actor_view.erb
@@ -223,71 +327,71 @@ files:
223
327
  - lib/gamebox/viewport.rb
224
328
  - lib/gamebox/views/graphical_actor_view.rb
225
329
  - lib/gamebox/wrapped_screen.rb
226
- - load_paths.rb
227
330
  - script/perf_polaris.rb
228
331
  - script/perf_spatial_hash.rb
332
+ - script/perf_struct_vs_array.rb
333
+ - spec/actor_factory_spec.rb
229
334
  - spec/actor_spec.rb
230
335
  - spec/actor_view_spec.rb
231
336
  - spec/animated_spec.rb
232
337
  - spec/arbiter_spec.rb
233
338
  - spec/backstage_spec.rb
234
339
  - spec/behavior_spec.rb
340
+ - spec/class_finder_spec.rb
235
341
  - spec/collidable_spec.rb
342
+ - spec/emitter_spec.rb
236
343
  - spec/helper.rb
344
+ - spec/input_manager_spec.rb
237
345
  - spec/label_spec.rb
238
346
  - spec/physical_spec.rb
239
347
  - spec/resource_manager_spec.rb
240
348
  - spec/spatial_hash_spec.rb
349
+ - spec/spatial_stagehand_spec.rb
241
350
  - spec/stage_manager_spec.rb
242
351
  - spec/stage_spec.rb
243
352
  - spec/viewport_spec.rb
244
- has_rdoc: true
245
353
  homepage: http://shawn42.github.com/gamebox
246
354
  licenses: []
247
-
248
355
  post_install_message:
249
- rdoc_options:
250
- - --charset=UTF-8
251
- require_paths:
356
+ rdoc_options: []
357
+ require_paths:
252
358
  - lib
253
- required_ruby_version: !ruby/object:Gem::Requirement
359
+ required_ruby_version: !ruby/object:Gem::Requirement
254
360
  none: false
255
- requirements:
256
- - - ">="
257
- - !ruby/object:Gem::Version
258
- hash: 3
259
- segments:
260
- - 0
261
- version: "0"
262
- required_rubygems_version: !ruby/object:Gem::Requirement
361
+ requirements:
362
+ - - ! '>='
363
+ - !ruby/object:Gem::Version
364
+ version: '0'
365
+ required_rubygems_version: !ruby/object:Gem::Requirement
263
366
  none: false
264
- requirements:
265
- - - ">="
266
- - !ruby/object:Gem::Version
267
- hash: 3
268
- segments:
269
- - 0
270
- version: "0"
367
+ requirements:
368
+ - - ! '>='
369
+ - !ruby/object:Gem::Version
370
+ version: '0'
271
371
  requirements: []
272
-
273
372
  rubyforge_project: gamebox
274
- rubygems_version: 1.3.7
373
+ rubygems_version: 1.8.6
275
374
  signing_key:
276
375
  specification_version: 3
277
376
  summary: Framework for building and distributing games using Gosu
278
- test_files:
377
+ test_files:
378
+ - spec/actor_factory_spec.rb
279
379
  - spec/actor_spec.rb
280
380
  - spec/actor_view_spec.rb
281
381
  - spec/animated_spec.rb
282
382
  - spec/arbiter_spec.rb
283
383
  - spec/backstage_spec.rb
284
384
  - spec/behavior_spec.rb
385
+ - spec/class_finder_spec.rb
285
386
  - spec/collidable_spec.rb
387
+ - spec/emitter_spec.rb
286
388
  - spec/helper.rb
389
+ - spec/input_manager_spec.rb
287
390
  - spec/label_spec.rb
288
391
  - spec/physical_spec.rb
289
392
  - spec/resource_manager_spec.rb
290
393
  - spec/spatial_hash_spec.rb
394
+ - spec/spatial_stagehand_spec.rb
291
395
  - spec/stage_manager_spec.rb
292
396
  - spec/stage_spec.rb
293
397
  - spec/viewport_spec.rb