rubydraw 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -1,5 +1,8 @@
1
1
  Rubydraw is a high level game/graphics library, like Gosu or Rubygame, and is written in Ruby.
2
- Its only dependency is ruby-sdl-ffi, which it uses to access SDL functions.
2
+ Its only dependency is ruby-sdl-ffi, which it uses to access SDL functions. Also, thanks,
3
+ Rubygame, for documenting your code (which, completely by coninsidence, also uses ruby-sdl-ffi),
4
+ otherwise I wouldn't have the slightest idea on how to use the base library's undocumented code!
5
+ You have been very helpful. :)
3
6
  –––––
4
7
  NOTE: I can't get +ruby-sdl-ffi+ (the library Rubydraw uses to access SDL) to work with +Ruby
5
8
  1.9.2+, so I don't know if it even does. If it does work, and/or you know how to make it work,
Binary file
data/examples/sound_ex.rb CHANGED
@@ -5,11 +5,15 @@ class MyWindow < Rubydraw::Window
5
5
  def initialize
6
6
  super(300, 300)
7
7
  @sound = Rubydraw::Sound.new("media/hooray.ogg")
8
+ @sound2 = Rubydraw::Sound.new("media/noise.o.ogg")
8
9
  whenever Rubydraw::Events::QuitRequest do
9
10
  close
10
11
  end
11
12
  whenever Rubydraw::Events::KeyPressed do
12
- @sound.play
13
+ @sound.play if @sound.stopped?
14
+ end
15
+ whenever Rubydraw::Events::FocusLoss do
16
+ @sound2.play if @sound2.stopped?
13
17
  end
14
18
  end
15
19
  end
@@ -15,7 +15,7 @@ module Rubydraw
15
15
  if @sdl_image.pointer.null?
16
16
  # SDL couln't load the image; usually happens because it doesn't
17
17
  # exist.
18
- raise Rubydraw::SDLError "Failed to load image from: '#{full_path}'"
18
+ raise Rubydraw::SDLError "Failed to load image: #{SDL.GetError}"
19
19
  end
20
20
  end
21
21
 
@@ -28,6 +28,7 @@ module Rubydraw
28
28
  source_rect = SDL::Rect.new([0, 0, width, height])
29
29
  blit_rect = SDL::Rect.new([position.x, position.y, window.width, window.height])
30
30
  SDL::BlitSurface(@sdl_image, source_rect, window.sdl_surface, blit_rect)
31
+ self
31
32
  end
32
33
 
33
34
  # Returns the image width
@@ -39,11 +40,5 @@ module Rubydraw
39
40
  def height
40
41
  @sdl_image.h
41
42
  end
42
-
43
- # Returns the SDL image that was created in Image#initialize.
44
- # Rubydraw::Window uses this to draw this Image instance.
45
- def sdl_image
46
- @sdl_image
47
- end
48
43
  end
49
44
  end
@@ -8,6 +8,8 @@ module Rubydraw
8
8
  # Rubydraw::Sound#play: Plays the sound. *Note*: this method exits
9
9
  # immediatley; it doesn't wait until the sound is finished.
10
10
  class Sound
11
+ # Used to specify the volume (from 0 to 1) when this sound is played.
12
+ # Set at 1 by default
11
13
  attr_accessor(:volume)
12
14
  # Create a new sound with the given file path. Raise an SDLError if for
13
15
  # some reason it couln't load the sound.
@@ -21,25 +23,53 @@ module Rubydraw
21
23
  if @sdl_sound.pointer.null?
22
24
  raise SDLError "Failed to load sound from: #{full_path} because '#{SDL.GetError}'"
23
25
  end
26
+ # The default volume. Can be changed with Sound's volume arrtibute.
24
27
  @volume = 1
25
- @channel = -1
28
+ # Allocate a new SDL channel all for this sound to use.
29
+ @channel = SDL::Mixer.AllocateChannels(SDL::Mixer.AllocateChannels(-1) + 1) - 1
26
30
  end
27
31
 
28
- # Play this sound, and restart it if it's already playing.
32
+ # Play this sound, but don't restart it if it's already playing.
29
33
  def play
30
- SDL::Mixer.HaltChannel(@channel)
31
- @channel = SDL::Mixer.GroupAvailable(-1)
32
- if @channel == -1
33
- SDL::Mixer.AllocateChannel(SDL::Mixer.AllocateChannel(-1) + 1)
34
- @channel = SDL::Mixer.GroupAvailible
35
- end
36
34
  SDL::Mixer.Volume(@channel, (SDL::Mixer::MAX_VOLUME * @volume).to_i)
37
35
  result = SDL::Mixer.PlayChannelTimed(@channel, @sdl_sound, 0, -1)
38
36
  raise(SDLError, "Failed to play sound: #{SDL.GetError}") if result == -1
39
37
  self
38
+ end
39
+
40
+ # Pause the sound so it can be resumed later.
41
+ def pause
42
+ SDL::Mixer.Pause(@channel)
43
+ self
44
+ end
45
+
46
+ # Stop the sound. Unlike pause because Sound#play will start from the
47
+ # beginning afterward.
48
+ def stop
49
+ SDL::Mixer.HaltChannel(@channel)
50
+ self
51
+ end
52
+
53
+ # Resume the sound from where it was paused.
54
+ def resume
55
+ SDL::Mixer.Resume(@channel)
56
+ self
57
+ end
58
+
59
+
60
+ # Returns whether or not this sound is paused.
61
+ def paused?
62
+ SDL::Mixer.Paused(@channel) == 1
63
+ end
64
+
65
+ # Returns whether or not this sound is playing.
66
+ def playing?
67
+ (SDL::Mixer.Playing(@channel) == 1) and not paused?
68
+ end
40
69
 
41
- #@playing = true
42
- #SDL::Mixer::FadeInMusicPos(@sdl_sound, 0, 0, 0)
70
+ # Returns whether or not this sound is stopped.
71
+ def stopped?
72
+ not playing?
43
73
  end
44
74
  end
45
75
  end
data/lib/rubydraw.rb CHANGED
@@ -14,7 +14,10 @@ files = %w[
14
14
  files.each {|f| require("rubydraw/" + f)}
15
15
 
16
16
  # Rubydraw is a high level game/graphics library, like Gosu or Rubygame, and is written completely
17
- # in Ruby. Its only dependency is ruby-sdl-ffi, which it uses to access SDL functions.
17
+ # in Ruby. Its only dependency is ruby-sdl-ffi, which it uses to access SDL functions. Also, thanks,
18
+ # Rubygame, for documenting your code (which, completely by coninsidence, also uses ruby-sdl-ffi),
19
+ # otherwise I wouldn't have the slightest idea on how to use the base library's undocumented code!
20
+ # You have been very helpful. :)
18
21
  #
19
22
  # NOTE: I can't get +ruby-sdl-ffi+ (the library Rubydraw uses to access SDL) to work with +Ruby
20
23
  # 1.9.2,+ so I don't know if it even does. If it does work, and/or you know how to make it work,
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubydraw
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 4
10
- version: 0.1.4
9
+ - 5
10
+ version: 0.1.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - J. Wostenberg
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-11-16 00:00:00 -07:00
18
+ date: 2011-11-17 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -62,6 +62,7 @@ files:
62
62
  - examples/sound_ex.rb
63
63
  - examples/media/bug.png
64
64
  - examples/media/hooray.ogg
65
+ - examples/media/noise.ogg
65
66
  has_rdoc: true
66
67
  homepage: https://github.com/awostenberg/rubydraw
67
68
  licenses: []