dxruby_sdl 0.0.13 → 0.0.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/README.md +28 -10
- data/dxruby_sdl.gemspec +3 -1
- data/lib/dxruby_sdl.rb +1 -0
- data/lib/dxruby_sdl/image.rb +10 -1
- data/lib/dxruby_sdl/render_target.rb +25 -0
- data/lib/dxruby_sdl/sound.rb +28 -3
- data/lib/dxruby_sdl/version.rb +1 -1
- data/lib/dxruby_sdl/window.rb +11 -0
- data/spec/lib/dxruby_sdl/image_spec.rb +37 -0
- data/spec/lib/dxruby_sdl/input_spec.rb +42 -42
- data/spec/lib/dxruby_sdl/sound_spec.rb +48 -8
- data/spec/lib/dxruby_sdl/sprite_spec.rb +6 -6
- metadata +35 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: abfa04925d04461b51b1c1d3bb737e31f785e766
|
4
|
+
data.tar.gz: e4c5e19a4272e8928f49ad42abb8bb06ef3cef35
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9630462d2db0faec4efa96f40a739f5c509465ee731dd6a90c2eaae57b546560528a2d776b086d9c3e1b3a38ab5d2d67c8c029dfe351095187e5b9b0dfb10f7
|
7
|
+
data.tar.gz: 3f01412b02aa5a3b90ee807fbd2f2d5448e4a7b03e6dda3974cafe82d3a60203f56d5389f02707dfb6a5232cd3a7ef76b53708d6140fe35aaec9a2ea3b4ec28e
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -19,23 +19,41 @@ Current API compatibility status: http://dxruby-apis.herokuapp.com/en/
|
|
19
19
|
|
20
20
|
(1) SDL
|
21
21
|
|
22
|
+
with MacPorts.
|
23
|
+
|
22
24
|
```
|
23
|
-
(if you use MacPorts.)
|
24
25
|
$ sudo port install libsdl libsdl_image libsdl_mixer libsdl_sound libsdl_ttf
|
25
26
|
```
|
26
27
|
|
28
|
+
with Homebrew
|
29
|
+
|
30
|
+
# update homebrew
|
31
|
+
$ brew update
|
32
|
+
$ brew upgrade
|
33
|
+
$ brew doctor
|
34
|
+
|
35
|
+
# install sdl etc.
|
36
|
+
$ brew install sdl
|
37
|
+
$ brew install sdl_image
|
38
|
+
$ brew install sdl_mixer
|
39
|
+
$ brew install sdl_ttf
|
40
|
+
|
27
41
|
(2) SGE
|
28
42
|
|
43
|
+
$ curl -O http://www.digitalfanatics.org/cal/sge/files/sge030809.tar.gz
|
44
|
+
$ tar xvzf sge030809.tar.gz
|
45
|
+
$ cd sge030809
|
46
|
+
$ curl https://gist.github.com/steved555/963525/raw/7b638e4100f9dd1a9d00560b98ea2ddd4375b2b0/sge_030809_freetype.patch | patch
|
47
|
+
$ curl https://gist.github.com/steved555/963524/raw/c03396e1fb8bb87e9f4ba92597d087f730c6c48b/sge_030809_cmap.patch | patch
|
48
|
+
$ curl https://gist.github.com/steved555/963522/raw/5b277a0a6b08a1c077fbe2c96eead4ef1d761856/sge-030809-build.patch | patch
|
49
|
+
$ sed -i -e 's/-soname/-install_name/g' Makefile
|
50
|
+
$ make
|
51
|
+
$ sudo make install
|
52
|
+
|
53
|
+
with Homebrew
|
54
|
+
|
29
55
|
```
|
30
|
-
$
|
31
|
-
$ tar xvzf sge030809.tar.gz
|
32
|
-
$ cd sge030809
|
33
|
-
$ curl https://gist.github.com/steved555/963525/raw/7b638e4100f9dd1a9d00560b98ea2ddd4375b2b0/sge_030809_freetype.patch | patch
|
34
|
-
$ curl https://gist.github.com/steved555/963524/raw/c03396e1fb8bb87e9f4ba92597d087f730c6c48b/sge_030809_cmap.patch | patch
|
35
|
-
$ curl https://gist.github.com/steved555/963522/raw/5b277a0a6b08a1c077fbe2c96eead4ef1d761856/sge-030809-build.patch | patch
|
36
|
-
$ sed -i -e 's/-soname/-install_name/g' Makefile
|
37
|
-
$ make
|
38
|
-
$ sudo make install
|
56
|
+
$ brew install https://gist.githubusercontent.com/ymmtmdk/5b15f2b06aef5549eb5a/raw/ebf4c9758b1f772f0f6073e7b2bdbb5e9665ee74/libsge.rb
|
39
57
|
```
|
40
58
|
|
41
59
|
(3) MS PGohic (DXRuby's default font)
|
data/dxruby_sdl.gemspec
CHANGED
@@ -19,8 +19,10 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
21
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
22
|
-
spec.add_development_dependency 'rake'
|
22
|
+
spec.add_development_dependency 'rake', '~> 10.4'
|
23
23
|
spec.add_development_dependency 'rspec', '~> 2.14'
|
24
|
+
spec.add_development_dependency 'rspec-its'
|
25
|
+
spec.add_development_dependency 'rspec-collection_matchers'
|
24
26
|
spec.add_development_dependency 'coveralls'
|
25
27
|
spec.add_development_dependency 'travis-lint'
|
26
28
|
spec.add_development_dependency 'rubocop', '0.15.0'
|
data/lib/dxruby_sdl.rb
CHANGED
data/lib/dxruby_sdl/image.rb
CHANGED
@@ -39,6 +39,12 @@ module DXRubySDL
|
|
39
39
|
@_surface =
|
40
40
|
SDL::Surface.new(SDL::SWSURFACE, width, height, Window.send(:screen))
|
41
41
|
@_surface.fill_rect(0, 0, width, height, @color)
|
42
|
+
|
43
|
+
# TODO: a値が0の時にしか対応していない。
|
44
|
+
# 1から254の値に対応すること
|
45
|
+
if color[3] == 0
|
46
|
+
set_color_key(@color[0..2])
|
47
|
+
end
|
42
48
|
end
|
43
49
|
|
44
50
|
def width
|
@@ -51,7 +57,6 @@ module DXRubySDL
|
|
51
57
|
|
52
58
|
def set_color_key(color)
|
53
59
|
@_surface.set_color_key(SDL::SRCCOLORKEY | SDL::RLEACCEL, color)
|
54
|
-
@_surface = @_surface.display_format_alpha
|
55
60
|
end
|
56
61
|
|
57
62
|
def compare(x, y, color)
|
@@ -114,6 +119,10 @@ module DXRubySDL
|
|
114
119
|
return self
|
115
120
|
end
|
116
121
|
|
122
|
+
def draw(x, y, image, x1 = 0, y1 = 0, width = image.width, height = image.height)
|
123
|
+
SDL.blitSurface(image._surface, x1, y1, width, height, self._surface, x, y)
|
124
|
+
end
|
125
|
+
|
117
126
|
def draw_font(x, y, string, font, color = [255, 255, 255])
|
118
127
|
if string.empty?
|
119
128
|
return
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'forwardable'
|
4
|
+
|
5
|
+
module DXRubySDL
|
6
|
+
class RenderTarget
|
7
|
+
extend Forwardable
|
8
|
+
|
9
|
+
attr_reader :_surface
|
10
|
+
|
11
|
+
def initialize(width, height, color)
|
12
|
+
@image = Image.new(width, height, color)
|
13
|
+
@_surface = @image._surface
|
14
|
+
end
|
15
|
+
|
16
|
+
def_delegators :@image, :draw
|
17
|
+
|
18
|
+
def draw_font(x, y, string, font, option = {})
|
19
|
+
color = option[:color] || [255, 255, 255]
|
20
|
+
@image.draw_font(x, y, string, font, color)
|
21
|
+
end
|
22
|
+
|
23
|
+
alias_method :drawFont, :draw_font
|
24
|
+
end
|
25
|
+
end
|
data/lib/dxruby_sdl/sound.rb
CHANGED
@@ -6,6 +6,17 @@ module DXRubySDL
|
|
6
6
|
class Sound
|
7
7
|
extend Forwardable
|
8
8
|
|
9
|
+
module Common
|
10
|
+
MAX_DXRUBY_VOLUME = 255
|
11
|
+
private_constant :MAX_DXRUBY_VOLUME
|
12
|
+
MAX_SDL_VOLUME = 128
|
13
|
+
private_constant :MAX_SDL_VOLUME
|
14
|
+
|
15
|
+
def dxruby_volume_to_sdl_volume(volume)
|
16
|
+
(volume * MAX_SDL_VOLUME.to_f / MAX_DXRUBY_VOLUME).round
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
9
20
|
@sdl_mixer_openend = false
|
10
21
|
|
11
22
|
def initialize(filename)
|
@@ -21,13 +32,15 @@ module DXRubySDL
|
|
21
32
|
end
|
22
33
|
end
|
23
34
|
|
24
|
-
def_delegators :@sound, :play, :set_volume
|
35
|
+
def_delegators :@sound, :play, :set_volume, :stop
|
25
36
|
|
26
37
|
alias_method :setVolume, :set_volume
|
27
38
|
|
28
39
|
private
|
29
40
|
|
30
41
|
class Music
|
42
|
+
include Common
|
43
|
+
|
31
44
|
def initialize(filename)
|
32
45
|
@music = SDL::Mixer::Music.load(filename)
|
33
46
|
end
|
@@ -37,12 +50,20 @@ module DXRubySDL
|
|
37
50
|
end
|
38
51
|
|
39
52
|
def set_volume(volume, time = 0)
|
40
|
-
|
53
|
+
if time > 0
|
54
|
+
raise NotImplementedError, 'Sound#set_volume(volume, time != 0)'
|
55
|
+
end
|
56
|
+
@music.set_volume_music(dxruby_volume_to_sdl_volume(volume))
|
57
|
+
end
|
58
|
+
|
59
|
+
def stop
|
60
|
+
SDL::Mixer.halt_music
|
41
61
|
end
|
42
62
|
end
|
43
63
|
private_constant :Music
|
44
64
|
|
45
65
|
class Wave
|
66
|
+
include Common
|
46
67
|
extend Forwardable
|
47
68
|
|
48
69
|
def initialize(filename)
|
@@ -63,7 +84,11 @@ module DXRubySDL
|
|
63
84
|
if time > 0
|
64
85
|
raise NotImplementedError, 'Sound#set_volume(volume, time != 0)'
|
65
86
|
end
|
66
|
-
@wave.set_volume(volume)
|
87
|
+
@wave.set_volume(dxruby_volume_to_sdl_volume(volume))
|
88
|
+
end
|
89
|
+
|
90
|
+
def stop
|
91
|
+
SDL::Mixer.halt(@last_played_channel)
|
67
92
|
end
|
68
93
|
end
|
69
94
|
private_constant :Wave
|
data/lib/dxruby_sdl/version.rb
CHANGED
data/lib/dxruby_sdl/window.rb
CHANGED
@@ -74,6 +74,16 @@ module DXRubySDL
|
|
74
74
|
screen.put(image._surface, x, y)
|
75
75
|
end
|
76
76
|
|
77
|
+
def draw_scale(x, y, image, scalex, scaley, centerx = nil, centery = nil, z = 0)
|
78
|
+
opt = {
|
79
|
+
scale_x: scalex,
|
80
|
+
scale_y: scaley,
|
81
|
+
center_x: centerx,
|
82
|
+
center_y: centery,
|
83
|
+
}
|
84
|
+
draw_ex(x, y, image, opt)
|
85
|
+
end
|
86
|
+
|
77
87
|
def draw_ex(x, y, image, hash = {})
|
78
88
|
if hash[:z] && hash[:z] != 0
|
79
89
|
raise NotImplementedError, 'Window.draw_ex(x, y, image, z: != 0)'
|
@@ -145,6 +155,7 @@ end run
|
|
145
155
|
attr_writer :height
|
146
156
|
attr_writer :scale
|
147
157
|
|
158
|
+
alias_method :drawScale, :draw_scale
|
148
159
|
alias_method :drawEx, :draw_ex
|
149
160
|
alias_method :drawFont, :draw_font
|
150
161
|
alias_method :openFilename, :open_filename
|
@@ -196,6 +196,43 @@ describe DXRubySDL::Image, '画像を表すクラス' do
|
|
196
196
|
end
|
197
197
|
end
|
198
198
|
|
199
|
+
shared_context 'Source and Destination Images' do
|
200
|
+
let(:source_image) { DXRubySDL::Image.new(640, 480) }
|
201
|
+
let(:dest_image) { DXRubySDL::Image.new(640, 480) }
|
202
|
+
end
|
203
|
+
|
204
|
+
describe '#draw' do
|
205
|
+
context 'nothing argumet' do
|
206
|
+
include_context 'Source and Destination Images'
|
207
|
+
|
208
|
+
subject { source_image.draw(0, 0, dest_image) }
|
209
|
+
|
210
|
+
before do
|
211
|
+
allow(SDL).to receive(:blitSurface)
|
212
|
+
subject
|
213
|
+
end
|
214
|
+
|
215
|
+
describe SDL do
|
216
|
+
it { expect(SDL).to have_received(:blitSurface).with( dest_image._surface, 0, 0, dest_image.width, dest_image.height, source_image._surface, 0, 0).once }
|
217
|
+
end
|
218
|
+
end
|
219
|
+
|
220
|
+
context 'Specify argument' do
|
221
|
+
include_context 'Source and Destination Images'
|
222
|
+
|
223
|
+
subject { source_image.draw(0, 0, dest_image, 100, 200, 300, 400) }
|
224
|
+
|
225
|
+
before do
|
226
|
+
allow(SDL).to receive(:blitSurface)
|
227
|
+
subject
|
228
|
+
end
|
229
|
+
|
230
|
+
describe SDL do
|
231
|
+
it { expect(SDL).to have_received(:blitSurface).with(dest_image._surface, 100, 200, 300, 400, source_image._surface, 0, 0).once }
|
232
|
+
end
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
199
236
|
shared_context '#draw_font' do
|
200
237
|
let!(:font) { DXRubySDL::Font.new(32) }
|
201
238
|
let(:args) { [0, 0, 'やあ', font] }
|
@@ -157,17 +157,17 @@ describe DXRubySDL::Input,
|
|
157
157
|
j
|
158
158
|
}
|
159
159
|
|
160
|
-
it { should
|
160
|
+
it { should be true }
|
161
161
|
end
|
162
162
|
|
163
163
|
context "#{_key}キーが押されている場合" do
|
164
164
|
let(:_keys) { [SDL::Key.const_get(_key)] }
|
165
165
|
|
166
|
-
it { should
|
166
|
+
it { should be true }
|
167
167
|
end
|
168
168
|
|
169
169
|
context 'ボタンやキーが押されていない場合' do
|
170
|
-
it { should
|
170
|
+
it { should be false }
|
171
171
|
end
|
172
172
|
end
|
173
173
|
end
|
@@ -195,11 +195,11 @@ describe DXRubySDL::Input,
|
|
195
195
|
context "#{_key}キーが押されている場合" do
|
196
196
|
let(:_keys) { [SDL::Key.const_get(_key)] }
|
197
197
|
|
198
|
-
it { should
|
198
|
+
it { should be true }
|
199
199
|
end
|
200
200
|
|
201
201
|
context 'ボタンやキーが押されていない場合' do
|
202
|
-
it { should
|
202
|
+
it { should be false }
|
203
203
|
end
|
204
204
|
end
|
205
205
|
end
|
@@ -258,17 +258,17 @@ describe DXRubySDL::Input,
|
|
258
258
|
j
|
259
259
|
}
|
260
260
|
|
261
|
-
it { should
|
261
|
+
it { should be true }
|
262
262
|
end
|
263
263
|
|
264
264
|
context "#{_key}キーが押されている場合" do
|
265
265
|
let(:_keys) { [SDL::Key.const_get(_key)] }
|
266
266
|
|
267
|
-
it { should
|
267
|
+
it { should be true }
|
268
268
|
end
|
269
269
|
|
270
270
|
context 'ボタンやキーが押されていない場合' do
|
271
|
-
it { should
|
271
|
+
it { should be false }
|
272
272
|
end
|
273
273
|
end
|
274
274
|
end
|
@@ -296,11 +296,11 @@ describe DXRubySDL::Input,
|
|
296
296
|
context "#{_key}キーが押されている場合" do
|
297
297
|
let(:_keys) { [SDL::Key.const_get(_key)] }
|
298
298
|
|
299
|
-
it { should
|
299
|
+
it { should be true }
|
300
300
|
end
|
301
301
|
|
302
302
|
context 'ボタンやキーが押されていない場合' do
|
303
|
-
it { should
|
303
|
+
it { should be false }
|
304
304
|
end
|
305
305
|
end
|
306
306
|
end
|
@@ -364,7 +364,7 @@ describe DXRubySDL::Input,
|
|
364
364
|
let(:_keys) { [SDL::Key::ESCAPE] }
|
365
365
|
let(:key_code) { DXRubySDL::K_ESCAPE }
|
366
366
|
|
367
|
-
it { should
|
367
|
+
it { should be true }
|
368
368
|
end
|
369
369
|
end
|
370
370
|
|
@@ -391,7 +391,7 @@ describe DXRubySDL::Input,
|
|
391
391
|
let(:_keys) { [SDL::Key::ESCAPE] }
|
392
392
|
let(:key_code) { DXRubySDL::K_ESCAPE }
|
393
393
|
|
394
|
-
it { should
|
394
|
+
it { should be true }
|
395
395
|
|
396
396
|
context 'キーが押しっぱなしの場合' do
|
397
397
|
before do
|
@@ -399,7 +399,7 @@ describe DXRubySDL::Input,
|
|
399
399
|
down_keys.add(key_code)
|
400
400
|
end
|
401
401
|
|
402
|
-
it { should
|
402
|
+
it { should be false }
|
403
403
|
end
|
404
404
|
|
405
405
|
context 'キーが押しっぱなしだが、' \
|
@@ -410,11 +410,11 @@ describe DXRubySDL::Input,
|
|
410
410
|
i = 0
|
411
411
|
DXRubySDL::Window.loop do
|
412
412
|
if first
|
413
|
-
expect(described_class.send(method, key_code)).to
|
413
|
+
expect(described_class.send(method, key_code)).to be true
|
414
414
|
first = false
|
415
415
|
else
|
416
416
|
if i.even?
|
417
|
-
expect(described_class.send(method, key_code)).to
|
417
|
+
expect(described_class.send(method, key_code)).to be false
|
418
418
|
end
|
419
419
|
end
|
420
420
|
i += 1
|
@@ -453,19 +453,19 @@ describe DXRubySDL::Input,
|
|
453
453
|
describe 'マウスの左ボタン(M_LBUTTON)を指定する' do
|
454
454
|
let(:button) { DXRubySDL::M_LBUTTON }
|
455
455
|
|
456
|
-
it { should
|
456
|
+
it { should be true }
|
457
457
|
end
|
458
458
|
|
459
459
|
describe 'マウスの中ボタン(M_MBUTTON)を指定する' do
|
460
460
|
let(:button) { DXRubySDL::M_MBUTTON }
|
461
461
|
|
462
|
-
it { should
|
462
|
+
it { should be false }
|
463
463
|
end
|
464
464
|
|
465
465
|
describe 'マウスの右ボタン(M_RBUTTON)を指定する' do
|
466
466
|
let(:button) { DXRubySDL::M_RBUTTON }
|
467
467
|
|
468
|
-
it { should
|
468
|
+
it { should be false }
|
469
469
|
end
|
470
470
|
end
|
471
471
|
|
@@ -478,19 +478,19 @@ describe DXRubySDL::Input,
|
|
478
478
|
describe 'マウスの左ボタン(M_LBUTTON)を指定する' do
|
479
479
|
let(:button) { DXRubySDL::M_LBUTTON }
|
480
480
|
|
481
|
-
it { should
|
481
|
+
it { should be false }
|
482
482
|
end
|
483
483
|
|
484
484
|
describe 'マウスの中ボタン(M_MBUTTON)を指定する' do
|
485
485
|
let(:button) { DXRubySDL::M_MBUTTON }
|
486
486
|
|
487
|
-
it { should
|
487
|
+
it { should be true }
|
488
488
|
end
|
489
489
|
|
490
490
|
describe 'マウスの右ボタン(M_RBUTTON)を指定する' do
|
491
491
|
let(:button) { DXRubySDL::M_RBUTTON }
|
492
492
|
|
493
|
-
it { should
|
493
|
+
it { should be false }
|
494
494
|
end
|
495
495
|
end
|
496
496
|
|
@@ -503,19 +503,19 @@ describe DXRubySDL::Input,
|
|
503
503
|
describe 'マウスの左ボタン(M_LBUTTON)を指定する' do
|
504
504
|
let(:button) { DXRubySDL::M_LBUTTON }
|
505
505
|
|
506
|
-
it { should
|
506
|
+
it { should be false }
|
507
507
|
end
|
508
508
|
|
509
509
|
describe 'マウスの中ボタン(M_MBUTTON)を指定する' do
|
510
510
|
let(:button) { DXRubySDL::M_MBUTTON }
|
511
511
|
|
512
|
-
it { should
|
512
|
+
it { should be false }
|
513
513
|
end
|
514
514
|
|
515
515
|
describe 'マウスの右ボタン(M_RBUTTON)を指定する' do
|
516
516
|
let(:button) { DXRubySDL::M_RBUTTON }
|
517
517
|
|
518
|
-
it { should
|
518
|
+
it { should be true }
|
519
519
|
end
|
520
520
|
end
|
521
521
|
end
|
@@ -550,19 +550,19 @@ describe DXRubySDL::Input,
|
|
550
550
|
describe 'マウスの左ボタン(M_LBUTTON)を指定する' do
|
551
551
|
let(:button) { DXRubySDL::M_LBUTTON }
|
552
552
|
|
553
|
-
it { should
|
553
|
+
it { should be true }
|
554
554
|
end
|
555
555
|
|
556
556
|
describe 'マウスの中ボタン(M_MBUTTON)を指定する' do
|
557
557
|
let(:button) { DXRubySDL::M_MBUTTON }
|
558
558
|
|
559
|
-
it { should
|
559
|
+
it { should be false }
|
560
560
|
end
|
561
561
|
|
562
562
|
describe 'マウスの右ボタン(M_RBUTTON)を指定する' do
|
563
563
|
let(:button) { DXRubySDL::M_RBUTTON }
|
564
564
|
|
565
|
-
it { should
|
565
|
+
it { should be false }
|
566
566
|
end
|
567
567
|
end
|
568
568
|
|
@@ -575,19 +575,19 @@ describe DXRubySDL::Input,
|
|
575
575
|
describe 'マウスの左ボタン(M_LBUTTON)を指定する' do
|
576
576
|
let(:button) { DXRubySDL::M_LBUTTON }
|
577
577
|
|
578
|
-
it { should
|
578
|
+
it { should be false }
|
579
579
|
end
|
580
580
|
|
581
581
|
describe 'マウスの中ボタン(M_MBUTTON)を指定する' do
|
582
582
|
let(:button) { DXRubySDL::M_MBUTTON }
|
583
583
|
|
584
|
-
it { should
|
584
|
+
it { should be true }
|
585
585
|
end
|
586
586
|
|
587
587
|
describe 'マウスの右ボタン(M_RBUTTON)を指定する' do
|
588
588
|
let(:button) { DXRubySDL::M_RBUTTON }
|
589
589
|
|
590
|
-
it { should
|
590
|
+
it { should be false }
|
591
591
|
end
|
592
592
|
end
|
593
593
|
|
@@ -600,19 +600,19 @@ describe DXRubySDL::Input,
|
|
600
600
|
describe 'マウスの左ボタン(M_LBUTTON)を指定する' do
|
601
601
|
let(:button) { DXRubySDL::M_LBUTTON }
|
602
602
|
|
603
|
-
it { should
|
603
|
+
it { should be false }
|
604
604
|
end
|
605
605
|
|
606
606
|
describe 'マウスの中ボタン(M_MBUTTON)を指定する' do
|
607
607
|
let(:button) { DXRubySDL::M_MBUTTON }
|
608
608
|
|
609
|
-
it { should
|
609
|
+
it { should be false }
|
610
610
|
end
|
611
611
|
|
612
612
|
describe 'マウスの右ボタン(M_RBUTTON)を指定する' do
|
613
613
|
let(:button) { DXRubySDL::M_RBUTTON }
|
614
614
|
|
615
|
-
it { should
|
615
|
+
it { should be true }
|
616
616
|
end
|
617
617
|
end
|
618
618
|
end
|
@@ -632,19 +632,19 @@ describe DXRubySDL::Input,
|
|
632
632
|
describe 'マウスの左ボタン(M_LBUTTON)を指定する' do
|
633
633
|
let(:button) { DXRubySDL::M_LBUTTON }
|
634
634
|
|
635
|
-
it { should
|
635
|
+
it { should be false }
|
636
636
|
end
|
637
637
|
|
638
638
|
describe 'マウスの中ボタン(M_MBUTTON)を指定する' do
|
639
639
|
let(:button) { DXRubySDL::M_MBUTTON }
|
640
640
|
|
641
|
-
it { should
|
641
|
+
it { should be false }
|
642
642
|
end
|
643
643
|
|
644
644
|
describe 'マウスの右ボタン(M_RBUTTON)を指定する' do
|
645
645
|
let(:button) { DXRubySDL::M_RBUTTON }
|
646
646
|
|
647
|
-
it { should
|
647
|
+
it { should be false }
|
648
648
|
end
|
649
649
|
end
|
650
650
|
|
@@ -657,19 +657,19 @@ describe DXRubySDL::Input,
|
|
657
657
|
describe 'マウスの左ボタン(M_LBUTTON)を指定する' do
|
658
658
|
let(:button) { DXRubySDL::M_LBUTTON }
|
659
659
|
|
660
|
-
it { should
|
660
|
+
it { should be false }
|
661
661
|
end
|
662
662
|
|
663
663
|
describe 'マウスの中ボタン(M_MBUTTON)を指定する' do
|
664
664
|
let(:button) { DXRubySDL::M_MBUTTON }
|
665
665
|
|
666
|
-
it { should
|
666
|
+
it { should be false }
|
667
667
|
end
|
668
668
|
|
669
669
|
describe 'マウスの右ボタン(M_RBUTTON)を指定する' do
|
670
670
|
let(:button) { DXRubySDL::M_RBUTTON }
|
671
671
|
|
672
|
-
it { should
|
672
|
+
it { should be false }
|
673
673
|
end
|
674
674
|
end
|
675
675
|
|
@@ -682,19 +682,19 @@ describe DXRubySDL::Input,
|
|
682
682
|
describe 'マウスの左ボタン(M_LBUTTON)を指定する' do
|
683
683
|
let(:button) { DXRubySDL::M_LBUTTON }
|
684
684
|
|
685
|
-
it { should
|
685
|
+
it { should be false }
|
686
686
|
end
|
687
687
|
|
688
688
|
describe 'マウスの中ボタン(M_MBUTTON)を指定する' do
|
689
689
|
let(:button) { DXRubySDL::M_MBUTTON }
|
690
690
|
|
691
|
-
it { should
|
691
|
+
it { should be false }
|
692
692
|
end
|
693
693
|
|
694
694
|
describe 'マウスの右ボタン(M_RBUTTON)を指定する' do
|
695
695
|
let(:button) { DXRubySDL::M_RBUTTON }
|
696
696
|
|
697
|
-
it { should
|
697
|
+
it { should be false }
|
698
698
|
end
|
699
699
|
end
|
700
700
|
end
|
@@ -2,6 +2,16 @@
|
|
2
2
|
require 'spec_helper'
|
3
3
|
|
4
4
|
describe DXRubySDL::Sound, '音を表すクラス' do
|
5
|
+
shared_context 'WAVE file', wave: true do
|
6
|
+
let(:path) { fixture_path('sound.wav') }
|
7
|
+
let(:sound) { DXRubySDL::Sound.new(path) }
|
8
|
+
end
|
9
|
+
|
10
|
+
shared_context 'MIDI file', midi: true do
|
11
|
+
let(:path) { fixture_path('bgm.mid') }
|
12
|
+
let(:sound) { DXRubySDL::Sound.new(path) }
|
13
|
+
end
|
14
|
+
|
5
15
|
describe '.new' do
|
6
16
|
shared_context '.new' do
|
7
17
|
subject { DXRubySDL::Sound.new(fixture_path(filename)) }
|
@@ -25,10 +35,7 @@ describe DXRubySDL::Sound, '音を表すクラス' do
|
|
25
35
|
end
|
26
36
|
|
27
37
|
describe '#play' do
|
28
|
-
context 'WAVE
|
29
|
-
let(:path) { fixture_path('sound.wav') }
|
30
|
-
let(:sound) { DXRubySDL::Sound.new(path) }
|
31
|
-
|
38
|
+
context 'WAVE file', wave: true do
|
32
39
|
subject { sound.play }
|
33
40
|
|
34
41
|
it 'SDL::Mixer.play_channelを呼び出す' do
|
@@ -62,10 +69,7 @@ describe DXRubySDL::Sound, '音を表すクラス' do
|
|
62
69
|
end
|
63
70
|
end
|
64
71
|
|
65
|
-
context 'MIDI
|
66
|
-
let(:path) { fixture_path('bgm.mid') }
|
67
|
-
let(:sound) { DXRubySDL::Sound.new(path) }
|
68
|
-
|
72
|
+
context 'MIDI file', midi: true do
|
69
73
|
subject { sound.play }
|
70
74
|
|
71
75
|
it 'SDL::Mixer.play_musicを呼び出す' do
|
@@ -76,4 +80,40 @@ describe DXRubySDL::Sound, '音を表すクラス' do
|
|
76
80
|
end
|
77
81
|
end
|
78
82
|
end
|
83
|
+
|
84
|
+
describe '#stop' do
|
85
|
+
context 'WAVE file', wave: true do
|
86
|
+
let(:path) { fixture_path('sound.wav') }
|
87
|
+
let(:sound) { DXRubySDL::Sound.new(path) }
|
88
|
+
|
89
|
+
subject { sound.stop }
|
90
|
+
|
91
|
+
before do
|
92
|
+
allow(SDL::Mixer).to receive(:halt)
|
93
|
+
sound.play
|
94
|
+
subject
|
95
|
+
end
|
96
|
+
|
97
|
+
describe SDL::Mixer do
|
98
|
+
it { expect(SDL::Mixer).to have_received(:halt).with(0).once }
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
context 'MIDI file', midi: true do
|
103
|
+
let(:path) { fixture_path('bgm.mid') }
|
104
|
+
let(:sound) { DXRubySDL::Sound.new(path) }
|
105
|
+
|
106
|
+
subject { sound.stop }
|
107
|
+
|
108
|
+
before do
|
109
|
+
allow(SDL::Mixer).to receive(:halt_music)
|
110
|
+
sound.play
|
111
|
+
subject
|
112
|
+
end
|
113
|
+
|
114
|
+
describe SDL::Mixer do
|
115
|
+
it { expect(SDL::Mixer).to have_received(:halt_music).with(no_args).once }
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
79
119
|
end
|
@@ -47,9 +47,9 @@ describe DXRubySDL::Sprite, 'ゲームのキャラを扱う場合の基本とな
|
|
47
47
|
shared_examples 'return' do |val|
|
48
48
|
describe '戻り値' do
|
49
49
|
if val
|
50
|
-
it { should
|
50
|
+
it { should be true }
|
51
51
|
else
|
52
|
-
it { should
|
52
|
+
it { should be false }
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|
@@ -541,7 +541,7 @@ describe DXRubySDL::Sprite, 'ゲームのキャラを扱う場合の基本とな
|
|
541
541
|
subject { sprite }
|
542
542
|
|
543
543
|
context '呼び出す前' do
|
544
|
-
its(:vanished?) { should
|
544
|
+
its(:vanished?) { should be false }
|
545
545
|
end
|
546
546
|
|
547
547
|
context '呼び出した後' do
|
@@ -549,7 +549,7 @@ describe DXRubySDL::Sprite, 'ゲームのキャラを扱う場合の基本とな
|
|
549
549
|
sprite.vanish
|
550
550
|
end
|
551
551
|
|
552
|
-
its(:vanished?) { should
|
552
|
+
its(:vanished?) { should be true }
|
553
553
|
end
|
554
554
|
end
|
555
555
|
end
|
@@ -558,13 +558,13 @@ describe DXRubySDL::Sprite, 'ゲームのキャラを扱う場合の基本とな
|
|
558
558
|
subject { sprite.vanished? }
|
559
559
|
|
560
560
|
context 'Spriteが有効な場合' do
|
561
|
-
it { should
|
561
|
+
it { should be false }
|
562
562
|
end
|
563
563
|
|
564
564
|
context 'vanishを呼び出してSpriteを無効化している場合' do
|
565
565
|
before { sprite.vanish }
|
566
566
|
|
567
|
-
it { should
|
567
|
+
it { should be true }
|
568
568
|
end
|
569
569
|
end
|
570
570
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dxruby_sdl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kouji Takao
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-03-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -28,16 +28,16 @@ dependencies:
|
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '10.4'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '10.4'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +52,34 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '2.14'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec-its
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec-collection_matchers
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: coveralls
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -176,6 +204,7 @@ files:
|
|
176
204
|
- lib/dxruby_sdl/font.rb
|
177
205
|
- lib/dxruby_sdl/image.rb
|
178
206
|
- lib/dxruby_sdl/input.rb
|
207
|
+
- lib/dxruby_sdl/render_target.rb
|
179
208
|
- lib/dxruby_sdl/sound.rb
|
180
209
|
- lib/dxruby_sdl/sound_effect.rb
|
181
210
|
- lib/dxruby_sdl/sprite.rb
|