gosu_extensions 0.1.10 → 0.1.11
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.
- data/VERSION +1 -1
- data/lib/gosu_extensions.rb +3 -3
- data/lib/traits/damaging.rb +38 -4
- data/lib/traits/short_lived.rb +1 -2
- data/spec/lib/traits/attachable_spec.rb +39 -0
- data/spec/lib/traits/damaging_spec.rb +38 -0
- metadata +5 -3
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.1.
|
|
1
|
+
0.1.11
|
data/lib/gosu_extensions.rb
CHANGED
|
@@ -49,6 +49,6 @@ require 'scheduling'
|
|
|
49
49
|
require 'waves'
|
|
50
50
|
require 'layer'
|
|
51
51
|
|
|
52
|
-
DEFAULT_SCREEN_WIDTH = 1200
|
|
53
|
-
DEFAULT_SCREEN_HEIGHT = 700
|
|
54
|
-
SUBSTEPS = 10
|
|
52
|
+
DEFAULT_SCREEN_WIDTH = 1200 unless defined?(DEFAULT_SCREEN_WIDTH)
|
|
53
|
+
DEFAULT_SCREEN_HEIGHT = 700 unless defined?(DEFAULT_SCREEN_HEIGHT)
|
|
54
|
+
SUBSTEPS = 10 unless defined?(SUBSTEPS)
|
data/lib/traits/damaging.rb
CHANGED
|
@@ -2,16 +2,50 @@
|
|
|
2
2
|
#
|
|
3
3
|
# Example:
|
|
4
4
|
# class Rocket
|
|
5
|
-
# it_is ShortLived
|
|
6
5
|
# it_is Damaging
|
|
6
|
+
#
|
|
7
|
+
# damage { rand(10) + 5 }
|
|
8
|
+
# end
|
|
9
|
+
#
|
|
10
|
+
# OR
|
|
11
|
+
# class Rocket
|
|
12
|
+
# it_is Damaging
|
|
13
|
+
#
|
|
14
|
+
# damage 15
|
|
15
|
+
# end
|
|
16
|
+
#
|
|
17
|
+
# OR
|
|
18
|
+
#
|
|
19
|
+
# class Rocket
|
|
20
|
+
# it_is Damaging
|
|
21
|
+
#
|
|
22
|
+
# def damage
|
|
23
|
+
# # Define your own damage method.
|
|
24
|
+
# end
|
|
7
25
|
# end
|
|
8
26
|
#
|
|
9
27
|
module Damaging
|
|
10
28
|
|
|
11
|
-
|
|
29
|
+
# TODO Explain better what to do.
|
|
30
|
+
#
|
|
31
|
+
class DamageMissingError < StandardError; end
|
|
32
|
+
|
|
33
|
+
def self.included klass
|
|
34
|
+
klass.extend ClassMethods
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def initialize window
|
|
38
|
+
raise DamageMissingError.new unless self.respond_to? :damage
|
|
39
|
+
super window
|
|
40
|
+
end
|
|
12
41
|
|
|
13
|
-
|
|
14
|
-
|
|
42
|
+
module ClassMethods
|
|
43
|
+
|
|
44
|
+
def damage damage = nil, &block
|
|
45
|
+
block = lambda { damage } unless block_given?
|
|
46
|
+
define_method :damage, &block
|
|
47
|
+
end
|
|
48
|
+
|
|
15
49
|
end
|
|
16
50
|
|
|
17
51
|
end
|
data/lib/traits/short_lived.rb
CHANGED
|
@@ -9,9 +9,8 @@ module ShortLived
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def initialize window
|
|
12
|
+
raise LifetimeMissingError.new unless self.respond_to? :lifetime
|
|
12
13
|
super window
|
|
13
|
-
|
|
14
|
-
raise ShortLived::LifetimeMissingError.new unless self.respond_to? :lifetime
|
|
15
14
|
threaded self.lifetime do
|
|
16
15
|
self.destroy!
|
|
17
16
|
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), '/../../spec_helper')
|
|
2
|
+
|
|
3
|
+
describe Attachable do
|
|
4
|
+
|
|
5
|
+
before(:each) do
|
|
6
|
+
@attachable = test_class_with(Attachable).new stub(:window)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe "move_relative" do
|
|
10
|
+
before(:each) do
|
|
11
|
+
@attachable.stub! :relative_position => "+ attachable position", :position= => nil, :rotation= => nil
|
|
12
|
+
@pod = stub :pod, :position => "pod position ", :rotation => :some_rotation
|
|
13
|
+
end
|
|
14
|
+
it "should set the position to the pod's position plus the relative position" do
|
|
15
|
+
@attachable.should_receive(:position=).once.with "pod position + attachable position"
|
|
16
|
+
|
|
17
|
+
@attachable.move_relative @pod
|
|
18
|
+
end
|
|
19
|
+
it "should set the rotation to the pod's rotation" do
|
|
20
|
+
@attachable.should_receive(:rotation=).once.with :some_rotation
|
|
21
|
+
|
|
22
|
+
@attachable.move_relative @pod
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe "relative_position" do
|
|
27
|
+
it "should be a writer" do
|
|
28
|
+
lambda { @attachable.relative_position = :some_position }.should_not raise_error
|
|
29
|
+
end
|
|
30
|
+
it "should have a reader" do
|
|
31
|
+
lambda { @attachable.relative_position }.should_not raise_error
|
|
32
|
+
end
|
|
33
|
+
it "should read what is written" do
|
|
34
|
+
@attachable.relative_position = :some_position
|
|
35
|
+
@attachable.relative_position.should == :some_position
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), '/../../spec_helper')
|
|
2
|
+
|
|
3
|
+
describe Damaging do
|
|
4
|
+
|
|
5
|
+
before(:each) do
|
|
6
|
+
@window = stub :window
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
context 'damage given as block' do
|
|
10
|
+
before(:each) do
|
|
11
|
+
@damaging = test_class_with(Damaging) do
|
|
12
|
+
damage { 10 + 10 }
|
|
13
|
+
end.new @window
|
|
14
|
+
end
|
|
15
|
+
it "should define a method lifetime which returns the result of the block" do
|
|
16
|
+
@damaging.damage.should == 20
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
context 'damage given normally' do
|
|
20
|
+
before(:each) do
|
|
21
|
+
@damaging = test_class_with(Damaging) do
|
|
22
|
+
damage 30
|
|
23
|
+
end.new @window
|
|
24
|
+
end
|
|
25
|
+
it "should define a method damage which returns the set value" do
|
|
26
|
+
@damaging.damage.should == 30
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
context 'no damage given – what now?' do
|
|
30
|
+
before(:each) do
|
|
31
|
+
@damaging_class = test_class_with Damaging
|
|
32
|
+
end
|
|
33
|
+
it "should raise a DamageMissingError" do
|
|
34
|
+
lambda { @damaging_class.new(@window) }.should raise_error(Damaging::DamageMissingError)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
metadata
CHANGED
|
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
|
5
5
|
segments:
|
|
6
6
|
- 0
|
|
7
7
|
- 1
|
|
8
|
-
-
|
|
9
|
-
version: 0.1.
|
|
8
|
+
- 11
|
|
9
|
+
version: 0.1.11
|
|
10
10
|
platform: ruby
|
|
11
11
|
authors:
|
|
12
12
|
- Florian Hanke
|
|
@@ -14,7 +14,7 @@ autorequire:
|
|
|
14
14
|
bindir: bin
|
|
15
15
|
cert_chain: []
|
|
16
16
|
|
|
17
|
-
date: 2010-04-
|
|
17
|
+
date: 2010-04-05 00:00:00 +02:00
|
|
18
18
|
default_executable:
|
|
19
19
|
dependencies:
|
|
20
20
|
- !ruby/object:Gem::Dependency
|
|
@@ -114,6 +114,8 @@ specification_version: 3
|
|
|
114
114
|
summary: Default extensions built onto the popular Gosu Framework. Uses Chipmunk for game physics. That's it for now. I'm working on them. Anyway, GAME ON!
|
|
115
115
|
test_files:
|
|
116
116
|
- spec/lib/extensions/numeric_spec.rb
|
|
117
|
+
- spec/lib/traits/attachable_spec.rb
|
|
118
|
+
- spec/lib/traits/damaging_spec.rb
|
|
117
119
|
- spec/lib/traits/shooter_spec.rb
|
|
118
120
|
- spec/lib/traits/short_lived_spec.rb
|
|
119
121
|
- spec/lib/traits/shot_spec.rb
|