gamebox 0.2.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
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