gosu_extensions 0.1.15 → 0.1.16
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/units/thing.rb +14 -13
- data/spec/lib/units/thing_spec.rb +95 -0
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.16
|
data/lib/units/thing.rb
CHANGED
@@ -22,6 +22,11 @@ class Thing
|
|
22
22
|
|
23
23
|
# Default layer is Layer::Players.
|
24
24
|
#
|
25
|
+
def self.layer layer
|
26
|
+
InitializerHooks.register self do
|
27
|
+
self.layer = layer
|
28
|
+
end
|
29
|
+
end
|
25
30
|
def layer
|
26
31
|
@layer || Layer::Players
|
27
32
|
end
|
@@ -64,12 +69,6 @@ class Thing
|
|
64
69
|
end
|
65
70
|
end
|
66
71
|
|
67
|
-
def layer layer
|
68
|
-
InitializerHooks.register self do
|
69
|
-
self.layer = layer
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
72
|
# Plays a random sound of the given sounds.
|
74
73
|
#
|
75
74
|
def plays paths, options = {}
|
@@ -122,20 +121,22 @@ class Thing
|
|
122
121
|
result
|
123
122
|
end
|
124
123
|
|
125
|
-
# Add this thing to
|
124
|
+
# Add this thing to an environment.
|
126
125
|
#
|
127
126
|
# Note: Adds the body and the shape.
|
128
127
|
#
|
129
|
-
def add_to
|
130
|
-
|
131
|
-
|
128
|
+
def add_to environment
|
129
|
+
environment.add_body self.shape.body # could develop into adding multiple bodies
|
130
|
+
environment.add_shape self.shape
|
132
131
|
end
|
133
132
|
|
134
|
-
#
|
133
|
+
# Draws its image.
|
135
134
|
#
|
136
135
|
def draw
|
137
|
-
|
138
|
-
|
136
|
+
self.image.draw_rot self.position.x, self.position.y, self.layer, self.drawing_rotation, 0.5, 0.5, *self.current_size
|
137
|
+
end
|
138
|
+
def current_size
|
139
|
+
[1.0, 1.0] # default implementation - change this to [1.0, 2.0] if you want a "light" version ;)
|
139
140
|
end
|
140
141
|
|
141
142
|
end
|
@@ -7,12 +7,107 @@ describe Thing do
|
|
7
7
|
@thing = Thing.new @window
|
8
8
|
end
|
9
9
|
|
10
|
+
describe "current_size" do
|
11
|
+
it "should return [1.0, 1.0] by default" do
|
12
|
+
@thing.current_size.should == [1.0, 1.0]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "draw" do
|
17
|
+
before(:each) do
|
18
|
+
@image = stub :image
|
19
|
+
@thing.stub! :image => @image,
|
20
|
+
:position => Struct.new(:x, :y).new(:some_x, :some_y),
|
21
|
+
:layer => :some_layer,
|
22
|
+
:drawing_rotation => :some_drawing_rotation,
|
23
|
+
:current_size => [:size_x, :size_y]
|
24
|
+
end
|
25
|
+
it "should delegate to the image" do
|
26
|
+
@image.should_receive(:draw_rot).once.with :some_x, :some_y, :some_layer, :some_drawing_rotation, 0.5, 0.5, :size_x, :size_y
|
27
|
+
|
28
|
+
@thing.draw
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "add_to" do
|
33
|
+
before(:each) do
|
34
|
+
@environment = stub :environment, :null_object => true
|
35
|
+
@body = stub :body
|
36
|
+
@shape = stub :shape, :body => @body
|
37
|
+
@thing.stub! :shape => @shape
|
38
|
+
end
|
39
|
+
it "should add its body to the given environment" do
|
40
|
+
@environment.should_receive(:add_body).once.with @body
|
41
|
+
|
42
|
+
@thing.add_to @environment
|
43
|
+
end
|
44
|
+
it "should add its shape to the given environment" do
|
45
|
+
@environment.should_receive(:add_shape).once.with @shape
|
46
|
+
|
47
|
+
@thing.add_to @environment
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "threaded" do
|
52
|
+
it "should delegate to the window" do
|
53
|
+
some_block = Proc.new {}
|
54
|
+
|
55
|
+
@window.should_receive(:threaded).once.with :some_time, &some_block
|
56
|
+
|
57
|
+
@thing.threaded :some_time, &some_block
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
10
61
|
describe "window" do
|
11
62
|
it "should return the window" do
|
12
63
|
@thing.window.should == @window
|
13
64
|
end
|
14
65
|
end
|
15
66
|
|
67
|
+
describe "destroy!" do
|
68
|
+
context 'already destroyed' do
|
69
|
+
before(:each) do
|
70
|
+
@thing.destroyed = true
|
71
|
+
end
|
72
|
+
it "should not unregister" do
|
73
|
+
@window.should_receive(:unregister).never
|
74
|
+
|
75
|
+
@thing.destroy!
|
76
|
+
end
|
77
|
+
it "should not set destroyed" do
|
78
|
+
@thing.should_receive(:destroyed=).never
|
79
|
+
|
80
|
+
@thing.destroy!
|
81
|
+
end
|
82
|
+
end
|
83
|
+
context 'not yet destroyed' do
|
84
|
+
before(:each) do
|
85
|
+
@window.stub! :unregister => nil
|
86
|
+
end
|
87
|
+
it "should unregister" do
|
88
|
+
@window.should_receive(:unregister).once.with @thing
|
89
|
+
|
90
|
+
@thing.destroy!
|
91
|
+
end
|
92
|
+
it "should set destroyed" do
|
93
|
+
@thing.should_receive(:destroyed=).once.with true
|
94
|
+
|
95
|
+
@thing.destroy!
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
describe "destroyed?" do
|
101
|
+
it "should be false after creating the object" do
|
102
|
+
@thing.destroyed?.should == false
|
103
|
+
end
|
104
|
+
end
|
105
|
+
describe "destroyed=" do
|
106
|
+
it "should exist" do
|
107
|
+
lambda { @thing.destroyed = true }.should_not raise_error
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
16
111
|
describe "layer" do
|
17
112
|
context 'default' do
|
18
113
|
it "should be on the player layer" do
|