dxruby_sdl 0.0.13 → 0.0.14
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.
- 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
|