chingu 0.8rc2 → 0.8rc3
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/README.rdoc +66 -19
- data/benchmarks/arrays_bench.rb +22 -0
- data/benchmarks/game_objects_benchmark.rb +29 -35
- data/chingu.gemspec +16 -2
- data/examples/example18_animation_trait.rb +14 -9
- data/examples/example19.yml +305 -561
- data/examples/example19_edit_viewport.rb +3 -1
- data/examples/example1_basics.rb +4 -4
- data/examples/example21.yml +62 -54
- data/examples/example21_sidescroller_with_edit.rb +13 -21
- data/examples/example4_gamestates.rb +0 -2
- data/examples/example7_gfx_helpers.rb +1 -1
- data/examples/example8_traits.rb +1 -2
- data/examples/example9_collision_detection.rb +1 -1
- data/examples/game1.rb +1 -1
- data/lib/chingu.rb +1 -2
- data/lib/chingu/animation.rb +13 -5
- data/lib/chingu/assets.rb +2 -2
- data/lib/chingu/basic_game_object.rb +33 -30
- data/lib/chingu/game_object.rb +0 -5
- data/lib/chingu/game_object_list.rb +34 -21
- data/lib/chingu/game_states/edit.rb +2 -5
- data/lib/chingu/game_states/fade_to.rb +0 -1
- data/lib/chingu/game_states/pause.rb +1 -1
- data/lib/chingu/helpers/game_object.rb +0 -1
- data/lib/chingu/parallax.rb +3 -9
- data/lib/chingu/simple_menu.rb +7 -8
- data/lib/chingu/traits/animation.rb +2 -4
- data/lib/chingu/traits/sprite.rb +16 -13
- data/lib/chingu/window.rb +1 -1
- data/spec/chingu/animation_spec.rb +88 -0
- data/spec/chingu/assets_spec.rb +58 -0
- data/spec/chingu/basic_game_object_spec.rb +111 -0
- data/spec/chingu/game_object_list_spec.rb +78 -0
- data/spec/chingu/game_object_spec.rb +50 -14
- data/spec/chingu/game_state_manager_spec.rb +105 -0
- data/spec/chingu/helpers/input_client_spec.rb +4 -0
- data/spec/chingu/helpers/input_dispatcher_spec.rb +4 -0
- data/spec/chingu/images/droid_11x15.bmp +0 -0
- data/spec/chingu/parallax_spec.rb +25 -16
- data/spec/chingu/window_spec.rb +55 -0
- data/spec/spec_helper.rb +1 -5
- metadata +17 -3
@@ -0,0 +1,105 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Chingu
|
4
|
+
describe GameStateManager do
|
5
|
+
before :each do
|
6
|
+
@game = Chingu::Window.new
|
7
|
+
end
|
8
|
+
|
9
|
+
after :each do
|
10
|
+
@game.close
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "initial configuration" do
|
14
|
+
it "$window should have a game_state_manager" do
|
15
|
+
@game.game_state_manager.should_not be_nil
|
16
|
+
end
|
17
|
+
it "should have 0 game states" do
|
18
|
+
@game.game_state_manager.game_states.count.should == 0
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "push_game_state" do
|
23
|
+
before :each do
|
24
|
+
@game.push_game_state(Chingu::GameStates::Pause)
|
25
|
+
@game.push_game_state(Chingu::GameStates::Edit)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should change current game state" do
|
29
|
+
@game.current_game_state.class.should == Chingu::GameStates::Edit
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should keep last game state" do
|
33
|
+
@game.game_state_manager.previous_game_state.class.should == Chingu::GameStates::Pause
|
34
|
+
@game.current_game_state.class.should == Chingu::GameStates::Edit
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should increment total # of game states" do
|
38
|
+
@game.game_states.count.should == 2
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "pop_game_state" do
|
44
|
+
before :each do
|
45
|
+
@game.push_game_state(Chingu::GameStates::Pause)
|
46
|
+
@game.push_game_state(Chingu::GameStates::Edit)
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should replace current game state with last one" do
|
50
|
+
@game.pop_game_state
|
51
|
+
@game.current_game_state.class.should == Chingu::GameStates::Pause
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should decrement total # of game states" do
|
55
|
+
@game.pop_game_state
|
56
|
+
@game.game_states.count.should == 1
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe "switch_game_state" do
|
61
|
+
before :each do
|
62
|
+
@game.push_game_state(Chingu::GameStates::Pause)
|
63
|
+
@game.switch_game_state(Chingu::GameStates::Edit)
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should replace current game state" do
|
67
|
+
@game.current_game_state.class.should == Chingu::GameStates::Edit
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should not change the total amount of game states" do
|
71
|
+
@game.game_states.count.should == 1
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe "clear_game_states" do
|
76
|
+
it "should clear all game states" do
|
77
|
+
@game.push_game_state(Chingu::GameStates::Pause)
|
78
|
+
@game.switch_game_state(Chingu::GameStates::Edit)
|
79
|
+
@game.clear_game_states
|
80
|
+
@game.game_states.count.should == 0
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe "transitional_game_state" do
|
85
|
+
before :each do
|
86
|
+
@game.transitional_game_state(Chingu::GameStates::FadeTo)
|
87
|
+
@game.push_game_state(Chingu::GameStates::Pause)
|
88
|
+
@game.push_game_state(Chingu::GameStates::Edit)
|
89
|
+
end
|
90
|
+
|
91
|
+
#it "should get back to the last game state after popping" do
|
92
|
+
# @game.pop_game_state
|
93
|
+
# @game.update
|
94
|
+
# sleep 4
|
95
|
+
# @game.update
|
96
|
+
# @game.current_game_state.class.should == Chingu::GameStates::Pause
|
97
|
+
#end
|
98
|
+
|
99
|
+
it "keep track of amount of created game states" do
|
100
|
+
@game.game_states.count.should == 2
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
end
|
@@ -13,6 +13,10 @@ module Chingu
|
|
13
13
|
@handler2 = @subject.method :handler2
|
14
14
|
end
|
15
15
|
|
16
|
+
after :each do
|
17
|
+
$window = nil
|
18
|
+
end
|
19
|
+
|
16
20
|
describe "#holding?" do
|
17
21
|
it "should be true if that key is being held down" do
|
18
22
|
$window.should_receive(:button_down?).with(Gosu::KbSpace).and_return(true)
|
@@ -33,6 +33,10 @@ describe Chingu::Helpers::InputDispatcher do
|
|
33
33
|
$window.stub!(:button_down?).and_return(false)
|
34
34
|
end
|
35
35
|
|
36
|
+
after :each do
|
37
|
+
$window = nil
|
38
|
+
end
|
39
|
+
|
36
40
|
it "should dispatch if a key is being held" do
|
37
41
|
@client.should_receive(:handler).with(no_args)
|
38
42
|
$window.stub!(:button_down?).with(Gosu::KbA).and_return(true)
|
Binary file
|
@@ -1,34 +1,43 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module Chingu
|
4
|
-
|
5
4
|
describe Parallax do
|
6
|
-
before :
|
5
|
+
before :each do
|
7
6
|
@game = Chingu::Window.new
|
8
7
|
|
9
8
|
# Gosu uses the paths based on where rspec is, not where this file is, so we need to do it manually!
|
10
9
|
Gosu::Image::autoload_dirs.unshift File.join(File.dirname(File.expand_path(__FILE__)), 'images')
|
11
10
|
end
|
11
|
+
|
12
|
+
after :each do
|
13
|
+
@game.close
|
14
|
+
end
|
12
15
|
|
13
|
-
|
14
|
-
before :all do
|
15
|
-
@parallax = Parallax.new
|
16
|
-
@parallax << {:image => "rect_20x20.png", :repeat_x => true, :repeat_y => true}
|
17
|
-
@parallax.add_layer(:image => "rect_20x20.png", :repeat_x => true, :repeat_y => true)
|
18
|
-
@parallax << ParallaxLayer.new(:image => "rect_20x20.png", :repeat_x => true, :repeat_y => true)
|
19
|
-
end
|
20
|
-
|
16
|
+
describe "layers" do
|
21
17
|
it "should have 3 different ways of adding layers" do
|
22
|
-
|
18
|
+
subject << {:image => "rect_20x20.png", :repeat_x => true, :repeat_y => true}
|
19
|
+
subject.add_layer(:image => "rect_20x20.png", :repeat_x => true, :repeat_y => true)
|
20
|
+
subject << ParallaxLayer.new(:image => "rect_20x20.png", :repeat_x => true, :repeat_y => true)
|
21
|
+
|
22
|
+
subject.layers.count.should equal 3
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should have incrementing zorder" do
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
3.times do
|
27
|
+
subject.add_layer(:image => "rect_20x20.png")
|
28
|
+
end
|
29
|
+
subject.layers[1].zorder.should equal (subject.layers[0].zorder + 1)
|
30
|
+
subject.layers[2].zorder.should equal (subject.layers[0].zorder + 2)
|
29
31
|
end
|
32
|
+
|
33
|
+
it "should start incrementing zorder in layers from Parallax-instance zorder if available" do
|
34
|
+
parallax = Parallax.new(:zorder => 2000)
|
35
|
+
3.times { parallax.add_layer(:image => "rect_20x20.png") }
|
36
|
+
parallax.layers[0].zorder.should == 2000
|
37
|
+
parallax.layers[1].zorder.should == 2001
|
38
|
+
parallax.layers[2].zorder.should == 2002
|
39
|
+
end
|
40
|
+
|
30
41
|
end
|
31
|
-
|
32
42
|
end
|
33
|
-
|
34
43
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Chingu
|
4
|
+
|
5
|
+
describe "Window" do
|
6
|
+
before :each do
|
7
|
+
@game = Chingu::Window.new
|
8
|
+
end
|
9
|
+
|
10
|
+
after :each do
|
11
|
+
@game.close
|
12
|
+
end
|
13
|
+
|
14
|
+
it { @game.should respond_to :close }
|
15
|
+
it { @game.should respond_to :fps }
|
16
|
+
it { @game.should respond_to :update }
|
17
|
+
it { @game.should respond_to :draw }
|
18
|
+
it { @game.should respond_to :root }
|
19
|
+
it { @game.should respond_to :game_state_manager }
|
20
|
+
it { @game.should respond_to :factor }
|
21
|
+
it { @game.should respond_to :cursor }
|
22
|
+
it { @game.should respond_to :root }
|
23
|
+
it { @game.should respond_to :milliseconds_since_last_tick }
|
24
|
+
|
25
|
+
context "a new Chingu::Window" do
|
26
|
+
|
27
|
+
it "should return itself as current scope" do
|
28
|
+
@game.current_scope.should == @game
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should have 0 game objects" do
|
32
|
+
@game.game_objects.size.should == 0
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context "each game iteration" do
|
37
|
+
it "$window.update() should call update() on all unpaused game objects" do
|
38
|
+
GameObject.create.should_receive(:update)
|
39
|
+
GameObject.create(:paused => true).should_not_receive(:update)
|
40
|
+
@game.update
|
41
|
+
end
|
42
|
+
|
43
|
+
it "$window.draw() should call draw() on all visible game objects" do
|
44
|
+
GameObject.create.should_receive(:draw)
|
45
|
+
@game.draw
|
46
|
+
end
|
47
|
+
|
48
|
+
it "$window.draw() should not call draw() on invisible game objects" do
|
49
|
+
GameObject.create(:visible => false).should_not_receive(:draw)
|
50
|
+
@game.game_objects.first.visible?.should == false
|
51
|
+
@game.draw
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,23 +1,19 @@
|
|
1
|
+
# encoding: utf-8
|
1
2
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
3
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
4
|
|
4
|
-
|
5
|
-
# encoding: utf-8
|
6
5
|
require 'rubygems'
|
7
6
|
require 'rspec'
|
8
7
|
require 'chingu/require_all'
|
9
8
|
|
10
9
|
require 'chingu'
|
11
|
-
require 'chingu/helpers/options_setter'
|
12
10
|
|
13
11
|
def media_path(file)
|
14
12
|
File.join($window.root, "..", "..", "examples", "media", file)
|
15
13
|
end
|
16
14
|
|
17
15
|
if defined?(Rcov)
|
18
|
-
|
19
16
|
# all_app_files = Dir.glob('lib/**/*.rb')
|
20
17
|
# all_app_files.each{|rb| require rb}
|
21
|
-
|
22
18
|
end
|
23
19
|
|
metadata
CHANGED
@@ -4,8 +4,8 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: true
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
version: 0.
|
7
|
+
- 8rc3
|
8
|
+
version: 0.8rc3
|
9
9
|
platform: ruby
|
10
10
|
authors:
|
11
11
|
- ippa
|
@@ -13,7 +13,7 @@ autorequire:
|
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
15
|
|
16
|
-
date: 2010-
|
16
|
+
date: 2010-12-12 00:00:00 +01:00
|
17
17
|
default_executable:
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
@@ -114,6 +114,7 @@ files:
|
|
114
114
|
- README.rdoc
|
115
115
|
- Rakefile
|
116
116
|
- benchmarks/README.txt
|
117
|
+
- benchmarks/arrays_bench.rb
|
117
118
|
- benchmarks/benchmark.rb
|
118
119
|
- benchmarks/benchmark3.rb
|
119
120
|
- benchmarks/benchmark4.rb
|
@@ -249,16 +250,23 @@ files:
|
|
249
250
|
- lib/chingu/traits/viewport.rb
|
250
251
|
- lib/chingu/viewport.rb
|
251
252
|
- lib/chingu/window.rb
|
253
|
+
- spec/chingu/animation_spec.rb
|
254
|
+
- spec/chingu/assets_spec.rb
|
255
|
+
- spec/chingu/basic_game_object_spec.rb
|
252
256
|
- spec/chingu/fpscounter_spec.rb
|
257
|
+
- spec/chingu/game_object_list_spec.rb
|
253
258
|
- spec/chingu/game_object_spec.rb
|
259
|
+
- spec/chingu/game_state_manager_spec.rb
|
254
260
|
- spec/chingu/helpers/input_client_spec.rb
|
255
261
|
- spec/chingu/helpers/input_dispatcher_spec.rb
|
256
262
|
- spec/chingu/helpers/options_setter_spec.rb
|
263
|
+
- spec/chingu/images/droid_11x15.bmp
|
257
264
|
- spec/chingu/images/rect_20x20.png
|
258
265
|
- spec/chingu/inflector_spec.rb
|
259
266
|
- spec/chingu/input_spec.rb
|
260
267
|
- spec/chingu/parallax_spec.rb
|
261
268
|
- spec/chingu/text_spec.rb
|
269
|
+
- spec/chingu/window_spec.rb
|
262
270
|
- spec/spec_helper.rb
|
263
271
|
- specs.watchr
|
264
272
|
has_rdoc: true
|
@@ -325,8 +333,13 @@ test_files:
|
|
325
333
|
- examples/game1.rb
|
326
334
|
- examples/game_of_life.rb
|
327
335
|
- examples/tool1_input_codes.rb
|
336
|
+
- spec/chingu/animation_spec.rb
|
337
|
+
- spec/chingu/assets_spec.rb
|
338
|
+
- spec/chingu/basic_game_object_spec.rb
|
328
339
|
- spec/chingu/fpscounter_spec.rb
|
340
|
+
- spec/chingu/game_object_list_spec.rb
|
329
341
|
- spec/chingu/game_object_spec.rb
|
342
|
+
- spec/chingu/game_state_manager_spec.rb
|
330
343
|
- spec/chingu/helpers/input_client_spec.rb
|
331
344
|
- spec/chingu/helpers/input_dispatcher_spec.rb
|
332
345
|
- spec/chingu/helpers/options_setter_spec.rb
|
@@ -334,4 +347,5 @@ test_files:
|
|
334
347
|
- spec/chingu/input_spec.rb
|
335
348
|
- spec/chingu/parallax_spec.rb
|
336
349
|
- spec/chingu/text_spec.rb
|
350
|
+
- spec/chingu/window_spec.rb
|
337
351
|
- spec/spec_helper.rb
|