gosu_extensions 0.1.21 → 0.1.22

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.21
1
+ 0.1.22
@@ -45,8 +45,6 @@ class GameWindow < Gosu::Window
45
45
 
46
46
  setup_background
47
47
 
48
- setup_menu
49
-
50
48
  setup_steps
51
49
  setup_waves
52
50
  setup_scheduling
@@ -62,11 +60,12 @@ class GameWindow < Gosu::Window
62
60
  install_main_loop
63
61
  end
64
62
 
63
+ # This is the main game loop.
64
+ #
65
65
  def main_loop
66
66
  @main_loop ||= lambda do
67
+ # Smoother, but slower: GC.start if rand > 0.98
67
68
  next_step
68
- # Step the physics environment SUBSTEPS times each update.
69
- #
70
69
  SUBSTEPS.times do
71
70
  remove_shapes
72
71
  move
@@ -76,28 +75,10 @@ class GameWindow < Gosu::Window
76
75
  end
77
76
  end
78
77
  end
79
-
80
78
  def install_main_loop
81
79
  @current_loop = main_loop
82
80
  end
83
81
 
84
- def show_menu
85
- suspend
86
- end
87
-
88
- def suspend
89
- return if @suspended
90
- @current_loop = @menu.loop
91
- @suspended = Time.now
92
- p "suspended"
93
- end
94
- def continue
95
- return unless @suspended
96
- @current_loop = main_loop
97
- @suspended = false
98
- p "continued"
99
- end
100
-
101
82
  def media_path
102
83
  @media_path || 'media'
103
84
  end
@@ -177,10 +158,6 @@ class GameWindow < Gosu::Window
177
158
  end
178
159
  end
179
160
 
180
- def setup_menu
181
- @menu = Menu.new self
182
- end
183
-
184
161
  def setup_window
185
162
  self.caption = self.class.caption || ""
186
163
  end
@@ -57,8 +57,6 @@ require 'short_lived'
57
57
  $:.unshift File.join(File.dirname(__FILE__), '/units')
58
58
  require 'thing'
59
59
 
60
- require 'menu'
61
-
62
60
  DEFAULT_SCREEN_WIDTH = 1200 unless defined?(DEFAULT_SCREEN_WIDTH)
63
61
  DEFAULT_SCREEN_HEIGHT = 700 unless defined?(DEFAULT_SCREEN_HEIGHT)
64
62
  SUBSTEPS = 10 unless defined?(SUBSTEPS)
@@ -1,4 +1,8 @@
1
+ # This is a convenience trait.
1
2
  #
3
+ # Instead of calling
4
+ # @controls << Control.new(self, @player1, :some_key_code => :action)
5
+ # you can define the controls in the object itself.
2
6
  #
3
7
  module Controllable extend Trait
4
8
 
@@ -8,34 +12,22 @@ module Controllable extend Trait
8
12
 
9
13
  module ClassMethods
10
14
 
11
- # TODO alternate controls handling!
15
+ # Enables to define the controls in the object itself, as in the Example:
16
+ #
17
+ # class Spaceship < Thing
18
+ # it_is Controllable
19
+ # controls Gosu::Button::KbA => Turnable::Left,
20
+ # Gosu::Button::KbD => Turnable::Right,
21
+ # Gosu::Button::KbW => Moveable::Accelerate,
22
+ # Gosu::Button::KbS => Moveable::Backwards,
23
+ # Gosu::Button::KbSpace => Shooter::Shoot
12
24
  #
13
-
14
25
  def controls mapping
15
26
  attr_accessor :controls_mapping
16
- hook = lambda do
17
- if self.controls_mapping
18
- # primary controls taken, use alternate controls
19
- self.controls_mapping = self.alternate_controls_mapping if self.respond_to? :alternate_controls_mapping
20
- else
21
- self.controls_mapping = mapping
22
- end
27
+ InitializerHooks.register self do
28
+ self.controls_mapping = mapping
23
29
  self.window.add_controls_for self
24
30
  end
25
- InitializerHooks.register self, &hook
26
- end
27
-
28
- def alternate_controls mapping
29
- attr_accessor :alternate_controls_mapping
30
- hook = lambda do
31
- if self.controls_mapping
32
- # primary controls taken, use alternate controls
33
- self.controls_mapping = self.alternate_controls_mapping if self.respond_to? :alternate_controls_mapping
34
- else
35
- self.controls_mapping = mapping
36
- end
37
- end
38
- InitializerHooks.register self, &hook
39
31
  end
40
32
 
41
33
  end
@@ -0,0 +1,34 @@
1
+ require File.join(File.dirname(__FILE__), '/../../spec_helper')
2
+
3
+ describe Controllable do
4
+
5
+ before(:each) do
6
+ @window = stub :window
7
+ end
8
+
9
+ describe "add_controls_for" do
10
+ before(:each) do
11
+ @controllable_class = test_class_with Controllable do
12
+ controls :a => :b, :c => :d
13
+ end
14
+ end
15
+ it "should return the mapping" do
16
+ @window.should_receive(:add_controls_for).once
17
+
18
+ @controllable_class.new @window
19
+ end
20
+ end
21
+
22
+ describe "controls_mapping" do
23
+ before(:each) do
24
+ @window.stub! :add_controls_for => nil
25
+ @controllable = test_class_with Controllable do
26
+ controls :a => :b, :c => :d
27
+ end.new @window
28
+ end
29
+ it "should return the mapping" do
30
+ @controllable.controls_mapping.should == { :a => :b, :c => :d }
31
+ end
32
+ end
33
+
34
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 21
9
- version: 0.1.21
8
+ - 22
9
+ version: 0.1.22
10
10
  platform: ruby
11
11
  authors:
12
12
  - Florian Hanke
@@ -15,7 +15,7 @@ bindir: bin
15
15
  cert_chain: []
16
16
 
17
17
  date: 2010-04-07 00:00:00 +02:00
18
- default_executable: gogogosu
18
+ default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: gosu
@@ -43,8 +43,8 @@ dependencies:
43
43
  version_requirements: *id002
44
44
  description: ""
45
45
  email: florian.hanke@gmail.com
46
- executables:
47
- - gogogosu
46
+ executables: []
47
+
48
48
  extensions: []
49
49
 
50
50
  extra_rdoc_files: []
@@ -70,7 +70,6 @@ files:
70
70
  - lib/extensions/module.rb
71
71
  - lib/extensions/numeric.rb
72
72
  - lib/gosu_extensions.rb
73
- - lib/menu.rb
74
73
  - lib/traits/attachable.rb
75
74
  - lib/traits/controllable.rb
76
75
  - lib/traits/damaging.rb
@@ -128,6 +127,7 @@ test_files:
128
127
  - spec/lib/extensions/module_spec.rb
129
128
  - spec/lib/extensions/numeric_spec.rb
130
129
  - spec/lib/traits/attachable_spec.rb
130
+ - spec/lib/traits/controllable_spec.rb
131
131
  - spec/lib/traits/damaging_spec.rb
132
132
  - spec/lib/traits/imageable_spec.rb
133
133
  - spec/lib/traits/shooter_spec.rb
data/bin/gogogosu DELETED
@@ -1,33 +0,0 @@
1
- #!/usr/local/bin/ruby
2
- # TODO remove
3
-
4
- Signal.trap("INT") { puts; exit } # CTRL-C
5
-
6
- File.open(File.join(File.dirname(__FILE__), '../VERSION')) do |f|
7
- puts "Gosu Extensions #{f.read}"
8
- end
9
-
10
- application = ARGV.first
11
-
12
- puts "Usage: gogogosu <application_name>" and exit(1) unless application
13
-
14
- require File.dirname(__FILE__) + '/../generator/gogogosu'
15
-
16
- generator = Generator::Gogogosu.new
17
-
18
- generator.dir application do
19
- generator.dir 'lib' do
20
-
21
- end
22
- generator.dir 'media' do
23
-
24
- end
25
- end
26
-
27
- puts <<-START
28
- Great!
29
-
30
- Now proceed as follows:
31
- 1. cd #{application}
32
- 2.
33
- START
data/lib/menu.rb DELETED
@@ -1,30 +0,0 @@
1
- class Menu < Thing
2
-
3
- include Controllable
4
-
5
- # TODO Move away
6
- #
7
- controls Gosu::Button::KbP => :continue
8
-
9
- def initialize window
10
- @controls = []
11
- super window
12
- end
13
-
14
- # TODO duplicate
15
- #
16
- def handle_input
17
- @controls.each &:handle
18
- end
19
-
20
- def continue
21
- window.continue
22
- end
23
-
24
- def loop
25
- @loop ||= lambda do
26
- # self.handle_input
27
- end
28
- end
29
-
30
- end