gosu_extensions 0.1.8 → 0.1.9
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/Rakefile +5 -1
- data/VERSION +1 -1
- data/generator/gogogosu.rb +26 -0
- data/lib/traits/pod.rb +6 -0
- data/lib/traits/short_lived.rb +5 -0
- data/spec/lib/extensions/numeric_spec.rb +11 -0
- data/spec/lib/traits/shooter_spec.rb +14 -0
- data/spec/lib/traits/short_lived_spec.rb +60 -0
- data/spec/lib/traits/shot_spec.rb +51 -0
- data/spec/lib/traits/targetable_spec.rb +20 -0
- data/spec/lib/traits/targeting_spec.rb +9 -0
- data/spec/lib/traits/turnable_spec.rb +65 -0
- metadata +12 -5
data/Rakefile
CHANGED
@@ -8,9 +8,13 @@ begin
|
|
8
8
|
gemspec.description = ""
|
9
9
|
gemspec.authors = ["Florian Hanke"]
|
10
10
|
gemspec.rdoc_options = ["--inline-source", "--charset=UTF-8"]
|
11
|
-
gemspec.files = FileList["[A-Z]*", "{
|
11
|
+
gemspec.files = FileList["[A-Z]*", "{generator,lib}/**/*"]
|
12
|
+
gemspec.test_files = FileList["spec/**/*_spec.rb"]
|
12
13
|
gemspec.add_dependency 'gosu'
|
13
14
|
gemspec.add_dependency 'chipmunk'
|
15
|
+
# gemspec.bindir = 'bin'
|
16
|
+
# gemspec.executables = ['bin/gogogosu']
|
17
|
+
# gemspec.default_executable = 'bin/gogogosu'
|
14
18
|
end
|
15
19
|
Jeweler::GemcutterTasks.new
|
16
20
|
rescue LoadError => e
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.9
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Generator
|
2
|
+
class Gogogosu
|
3
|
+
|
4
|
+
def initialize
|
5
|
+
@basedir = Dir.pwd
|
6
|
+
end
|
7
|
+
|
8
|
+
# Generates a directory.
|
9
|
+
#
|
10
|
+
def dir name
|
11
|
+
Dir.mkdir name unless File.file?(name) || File.exist?(name)
|
12
|
+
if block_given?
|
13
|
+
Dir.chdir name
|
14
|
+
yield
|
15
|
+
Dir.chdir '..'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# Generates a file. Will be rendered with erb.
|
20
|
+
#
|
21
|
+
def file name
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
data/lib/traits/pod.rb
CHANGED
data/lib/traits/short_lived.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
module ShortLived
|
2
2
|
|
3
|
+
# TODO Explain better what to do.
|
4
|
+
#
|
5
|
+
class LifetimeMissingError < StandardError; end
|
6
|
+
|
3
7
|
def self.included klass
|
4
8
|
klass.extend ClassMethods
|
5
9
|
end
|
@@ -7,6 +11,7 @@ module ShortLived
|
|
7
11
|
def initialize window
|
8
12
|
super window
|
9
13
|
|
14
|
+
raise ShortLived::LifetimeMissingError.new unless self.respond_to? :lifetime
|
10
15
|
threaded self.lifetime do
|
11
16
|
self.destroy!
|
12
17
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '/../../spec_helper')
|
2
|
+
|
3
|
+
describe Shooter do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@shooter = Class.new do
|
7
|
+
include Shooter
|
8
|
+
end
|
9
|
+
end
|
10
|
+
it "should define a constant Shoot" do
|
11
|
+
Shooter::Shoot.should == :shoot
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '/../../spec_helper')
|
2
|
+
|
3
|
+
describe ShortLived do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
@window = stub :window
|
7
|
+
end
|
8
|
+
|
9
|
+
class SuperClass; def initialize(*); end; end
|
10
|
+
|
11
|
+
module ThreadedMock
|
12
|
+
def threaded lifetime
|
13
|
+
# TODO
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.threaded_mock expected
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'lifetime given as block' do
|
22
|
+
before(:each) do
|
23
|
+
@short_lived_class = Class.new(SuperClass) do
|
24
|
+
include ShortLived
|
25
|
+
|
26
|
+
lifetime { 10 + 10 }
|
27
|
+
|
28
|
+
def threaded(*); end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
it "should define a method lifetime which returns the result of the block" do
|
32
|
+
@short_lived_class.new(@window).lifetime.should == 20
|
33
|
+
end
|
34
|
+
end
|
35
|
+
context 'lifetime given normally' do
|
36
|
+
before(:each) do
|
37
|
+
@short_lived_class = Class.new(SuperClass) do
|
38
|
+
include ShortLived
|
39
|
+
|
40
|
+
lifetime 30
|
41
|
+
|
42
|
+
def threaded(*); end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
it "should define a method lifetime which returns the set value" do
|
46
|
+
@short_lived_class.new(@window).lifetime.should == 30
|
47
|
+
end
|
48
|
+
end
|
49
|
+
context 'no lifetime given – what now?' do
|
50
|
+
before(:each) do
|
51
|
+
@short_lived_class = Class.new(SuperClass) do
|
52
|
+
include ShortLived
|
53
|
+
end
|
54
|
+
end
|
55
|
+
it "should raise a LifetimeMissingError" do
|
56
|
+
lambda { @short_lived_class.new(@window) }.should raise_error(ShortLived::LifetimeMissingError)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '/../../spec_helper')
|
2
|
+
|
3
|
+
describe Shot do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@shot = Class.new do
|
7
|
+
include Shot
|
8
|
+
end.new
|
9
|
+
end
|
10
|
+
it "should define an attr_reader :velocity" do
|
11
|
+
lambda { @shot.velocity }.should_not raise_error
|
12
|
+
end
|
13
|
+
it "should define an attr_writer :velocity" do
|
14
|
+
lambda { @shot.velocity = :some_value }.should_not raise_error
|
15
|
+
end
|
16
|
+
it "should define an attr_reader :originator" do
|
17
|
+
lambda { @shot.originator }.should_not raise_error
|
18
|
+
end
|
19
|
+
it "should define an attr_writer :originator" do
|
20
|
+
lambda { @shot.originator = :some_value }.should_not raise_error
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "shoot_from" do
|
24
|
+
before(:each) do
|
25
|
+
@window = stub :window, :null_object => true
|
26
|
+
@shot.stub :position= => nil
|
27
|
+
@shot.stub :window => @window
|
28
|
+
@shooter = stub :shooter, :muzzle_position => :some_muzzle_position
|
29
|
+
end
|
30
|
+
it "should return itself" do
|
31
|
+
@shot.shoot_from(@shooter).should == @shot
|
32
|
+
end
|
33
|
+
it "should set its position to the muzzle position of the shooter" do
|
34
|
+
@shot.should_receive(:position=).once.with :some_muzzle_position
|
35
|
+
|
36
|
+
@shot.shoot_from @shooter
|
37
|
+
end
|
38
|
+
it "should set its originator to the shooter" do
|
39
|
+
@shot.should_receive(:originator=).once.with @shooter
|
40
|
+
|
41
|
+
@shot.shoot_from @shooter
|
42
|
+
end
|
43
|
+
it "should register itself with the window" do
|
44
|
+
# TODO Or should it?
|
45
|
+
@window.should_receive(:register).once.with @shot
|
46
|
+
|
47
|
+
@shot.shoot_from @shooter
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '/../../spec_helper')
|
2
|
+
|
3
|
+
describe Targetable do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@targetable = Class.new do
|
7
|
+
include Targetable
|
8
|
+
end.new
|
9
|
+
end
|
10
|
+
describe "distance_from" do
|
11
|
+
before(:each) do
|
12
|
+
@targetable.stub! :position => CP::Vec2.new(6, 8)
|
13
|
+
@shooter = stub :shooter, :position => CP::Vec2.new(3, 4)
|
14
|
+
end
|
15
|
+
it "should return the right distance" do
|
16
|
+
@targetable.distance_from(@shooter).should == 5.0
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '/../../spec_helper')
|
2
|
+
|
3
|
+
describe Turnable do
|
4
|
+
|
5
|
+
context 'default' do
|
6
|
+
before(:each) do
|
7
|
+
@turnable = Class.new do
|
8
|
+
include Turnable
|
9
|
+
end.new
|
10
|
+
end
|
11
|
+
describe "turn_speed" do
|
12
|
+
it "should have a defined turn_speed method" do
|
13
|
+
lambda { @turnable.turn_speed }.should_not raise_error
|
14
|
+
end
|
15
|
+
it "should return the class defined turn_speed" do
|
16
|
+
@turnable.turn_speed.should == 0.5
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'non-default' do
|
22
|
+
before(:each) do
|
23
|
+
@turnable = Class.new do
|
24
|
+
include Turnable
|
25
|
+
|
26
|
+
turn_speed 1.3
|
27
|
+
end.new
|
28
|
+
@turnable.stub! :rotation => 1.0
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "Constants" do
|
32
|
+
it "should have turn left" do
|
33
|
+
Turnable::Left.should == :turn_left
|
34
|
+
end
|
35
|
+
it "should have turn right" do
|
36
|
+
Turnable::Right.should == :turn_right
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "turn_speed" do
|
41
|
+
it "should have a defined turn_speed method" do
|
42
|
+
lambda { @turnable.turn_speed }.should_not raise_error
|
43
|
+
end
|
44
|
+
it "should return the class defined turn_speed divided by 2" do
|
45
|
+
@turnable.turn_speed.should == 0.65
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "turn_left" do
|
50
|
+
it "should subtract an amount from the rotation" do
|
51
|
+
@turnable.should_receive(:rotation=).once.with 0.9935
|
52
|
+
|
53
|
+
@turnable.turn_left
|
54
|
+
end
|
55
|
+
end
|
56
|
+
describe "turn_right" do
|
57
|
+
it "should add an amount to the rotation" do
|
58
|
+
@turnable.should_receive(:rotation=).once.with 1.0065
|
59
|
+
|
60
|
+
@turnable.turn_right
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
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
|
+
- 9
|
9
|
+
version: 0.1.9
|
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-
|
17
|
+
date: 2010-04-04 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -52,6 +52,7 @@ extra_rdoc_files: []
|
|
52
52
|
files:
|
53
53
|
- Rakefile
|
54
54
|
- VERSION
|
55
|
+
- generator/gogogosu.rb
|
55
56
|
- lib/controls.rb
|
56
57
|
- lib/extensions/module.rb
|
57
58
|
- lib/extensions/numeric.rb
|
@@ -111,5 +112,11 @@ rubygems_version: 1.3.6
|
|
111
112
|
signing_key:
|
112
113
|
specification_version: 3
|
113
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!
|
114
|
-
test_files:
|
115
|
-
|
115
|
+
test_files:
|
116
|
+
- spec/lib/extensions/numeric_spec.rb
|
117
|
+
- spec/lib/traits/shooter_spec.rb
|
118
|
+
- spec/lib/traits/short_lived_spec.rb
|
119
|
+
- spec/lib/traits/shot_spec.rb
|
120
|
+
- spec/lib/traits/targetable_spec.rb
|
121
|
+
- spec/lib/traits/targeting_spec.rb
|
122
|
+
- spec/lib/traits/turnable_spec.rb
|