ruby2d 0.6.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aba47e3b04390bdf27cf2480419d09173683eca948a494790c5bc5c617b9ffbf
4
- data.tar.gz: 8dff61a42195fdcb9d87bbfa35981c80a91ad4b4e0a61d72b9821fac479dc913
3
+ metadata.gz: befe5ad5a05dfdab4e9da310b4a016b138692dbd372f68b0fb9e5fa2c8836e78
4
+ data.tar.gz: 89523d76e354169eff325ea485b3afde30b085a1a9431d9b6135ef90eadee53a
5
5
  SHA512:
6
- metadata.gz: 87e61972f9877759df9623c3e5cd4d5141ccb8fd743f59de30359be9c4be37fbf4158a72e8b641f17847af135d5df4d523f28607341ea694a695e5566adb9906
7
- data.tar.gz: 301dae8cf14f3b85eb5c9fe0bf6925d058330cbaa9d1ee33dd6b4272cf948b2cf4ecc845c188b0e95e342bd253bea02a07afcc265656ef9657992a8d47dbab35
6
+ metadata.gz: 6e47726fb332a184bc026898f5b50d67f7463f0cc57350a37200e71f74d35e66902aaae6c61704a8ef467de461f7c8335c59feb890dcd319de2ac000ddfa265a
7
+ data.tar.gz: eb887567fc2c23d9ea7d10c12b79b6392f1e572da82d2fdc0e1bb791298de33b5a1c942c125965b3cf002d6bffdbb1dd0f150023919b300503aaf577e0dbbbc1
data/bin/ruby2d CHANGED
@@ -1,15 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
+ require 'ruby2d/colorize'
2
3
  require 'ruby2d/version'
3
4
  require 'fileutils'
4
5
 
5
- # Extending `String` to include some fancy colors
6
- class String
7
- def colorize(c); "\e[#{c}m#{self}\e[0m" end
8
- def bold; colorize('1') end
9
- def warn; colorize('1;33') end
10
- def error; colorize('1;31') end
11
- end
12
-
13
6
  # The installed gem directory
14
7
  @gem_dir = "#{Gem::Specification.find_by_name('ruby2d').gem_dir}"
15
8
 
@@ -1,17 +1,12 @@
1
1
  require 'mkmf'
2
+ require_relative '../../lib/ruby2d/colorize'
2
3
 
3
4
  S2D_VERSION = '1.0.1' # Simple 2D minimum version required
4
5
  $errors = []
5
6
 
6
- class String
7
- def colorize(c); "\e[#{c}m#{self}\e[0m" end
8
- def bold; colorize('1') end
9
- def red; colorize('1;31') end
10
- end
11
-
12
7
  def print_errors
13
8
  puts "
14
- #{"== #{"Ruby 2D Installation Errors".red} =======================================\n"}
9
+ #{"== #{"Ruby 2D Installation Errors".error} =======================================\n"}
15
10
  #{$errors.join("\n ")}\n
16
11
  #{"======================================================================="}"
17
12
  end
@@ -65,6 +65,7 @@
65
65
  #define r_define_module(name) mrb_define_module(mrb, name)
66
66
  #define r_define_class(module, name) mrb_define_class_under(mrb, module, name, mrb->object_class)
67
67
  #define r_define_method(class, name, function, args) mrb_define_method(mrb, class, name, function, args)
68
+ #define r_define_class_method(class, name, function, args) mrb_define_class_method(mrb, class, name, function, args)
68
69
  #define r_args_none (MRB_ARGS_NONE())
69
70
  #define r_args_req(n) MRB_ARGS_REQ(n)
70
71
  // Helpers
@@ -87,6 +88,7 @@
87
88
  #define r_define_module(name) rb_define_module(name)
88
89
  #define r_define_class(module, name) rb_define_class_under(module, name, rb_cObject)
89
90
  #define r_define_method(class, name, function, args) rb_define_method(class, name, function, args)
91
+ #define r_define_class_method(class, name, function, args) rb_define_singleton_method(class, name, function, args)
90
92
  #define r_args_none 0
91
93
  #define r_args_req(n) n
92
94
  // Helpers
@@ -466,6 +468,12 @@ static R_VAL ruby2d_text_ext_init(R_VAL self) {
466
468
  #endif
467
469
  S2D_Log(S2D_INFO, "Init text: %s", RSTRING_PTR(r_iv_get(self, "@text")));
468
470
 
471
+ // Trim the font file string to its actual length on MRuby
472
+ #if MRUBY
473
+ mrb_value s = r_iv_get(self, "@font");
474
+ mrb_str_resize(mrb, s, RSTRING_LEN(s));
475
+ #endif
476
+
469
477
  S2D_Text *txt = S2D_CreateText(
470
478
  RSTRING_PTR(r_iv_get(self, "@font")),
471
479
  RSTRING_PTR(r_iv_get(self, "@text")),
@@ -663,6 +671,21 @@ static R_VAL ruby2d_music_ext_stop(R_VAL self) {
663
671
  }
664
672
 
665
673
 
674
+ /*
675
+ * Ruby2D::Music#ext_volume
676
+ */
677
+ #if MRUBY
678
+ static R_VAL ruby2d_music_ext_volume(mrb_state* mrb, R_VAL self) {
679
+ mrb_value vol;
680
+ mrb_get_args(mrb, "o", &vol);
681
+ #else
682
+ static R_VAL ruby2d_music_ext_volume(R_VAL self, R_VAL vol) {
683
+ #endif
684
+ int mix_vol = NUM2INT(vol) == -1 ? -1 : MIX_MAX_VOLUME * NUM2INT(vol) / 100.0;
685
+ return INT2NUM(ceil(Mix_VolumeMusic(mix_vol) * 100.0 / MIX_MAX_VOLUME));
686
+ }
687
+
688
+
666
689
  /*
667
690
  * Ruby2D::Music#ext_fadeout
668
691
  */
@@ -1127,6 +1150,9 @@ void Init_ruby2d() {
1127
1150
  // Ruby2D::Music#ext_stop
1128
1151
  r_define_method(ruby2d_music_class, "ext_stop", ruby2d_music_ext_stop, r_args_none);
1129
1152
 
1153
+ // Ruby2D::Music#self.ext_volume
1154
+ r_define_class_method(ruby2d_music_class, "ext_volume", ruby2d_music_ext_volume, r_args_req(1));
1155
+
1130
1156
  // Ruby2D::Music#ext_fadeout
1131
1157
  r_define_method(ruby2d_music_class, "ext_fadeout", ruby2d_music_ext_fadeout, r_args_req(1));
1132
1158
 
@@ -1,7 +1,8 @@
1
1
  # Ruby2D module and native extension loader, adds DSL
2
2
 
3
- require 'ruby2d/renderable'
3
+ require 'ruby2d/colorize'
4
4
  require 'ruby2d/exceptions'
5
+ require 'ruby2d/renderable'
5
6
  require 'ruby2d/color'
6
7
  require 'ruby2d/window'
7
8
  require 'ruby2d/dsl'
@@ -0,0 +1,10 @@
1
+ # String#colorize
2
+
3
+ # Extend `String` to include some fancy colors
4
+ class String
5
+ def colorize(c); "\e[#{c}m#{self}\e[0m" end
6
+ def bold; colorize('1') end
7
+ def info; colorize('1;34') end
8
+ def warn; colorize('1;33') end
9
+ def error; colorize('1;31') end
10
+ end
@@ -40,11 +40,11 @@ module Ruby2D
40
40
  # Get the fonts directory for the current platform
41
41
  def directory
42
42
  if `uname`.include? 'Darwin' # macOS
43
- "/Library/Fonts"
43
+ '/Library/Fonts'
44
44
  elsif `uname`.include? 'Linux'
45
- "/usr/share/fonts/truetype"
45
+ '/usr/share/fonts'
46
46
  elsif `uname`.include? 'MINGW'
47
- "C:/Windows/Fonts"
47
+ 'C:/Windows/Fonts'
48
48
  end
49
49
  end
50
50
 
@@ -7,8 +7,8 @@ module Ruby2D
7
7
  attr_reader :path, :color
8
8
  attr_accessor :x, :y, :width, :height, :rotate, :data
9
9
 
10
- def initialize(opts = {})
11
- @path = opts[:path]
10
+ def initialize(path, opts = {})
11
+ @path = path
12
12
 
13
13
  unless RUBY_ENGINE == 'opal'
14
14
  unless File.exists? @path
@@ -39,6 +39,22 @@ module Ruby2D
39
39
  ext_stop
40
40
  end
41
41
 
42
+ # Returns the previous volume setting, in percentage
43
+ def self.volume
44
+ self.ext_volume(-1)
45
+ end
46
+
47
+ # Set music volume, 0 to 100%
48
+ def self.volume=(v)
49
+ # If a negative value, volume will be 0
50
+ if v < 0 then v = 0 end
51
+ self.ext_volume(v)
52
+ end
53
+
54
+ # Alias instance methods to class methods
55
+ def volume; Music.volume end
56
+ def volume=(v); Music.volume=(v) end
57
+
42
58
  # Fade out music over provided milliseconds
43
59
  def fadeout(ms)
44
60
  ext_fadeout(ms)
@@ -4,7 +4,7 @@ module Ruby2D
4
4
  class Sprite
5
5
  include Renderable
6
6
 
7
- attr_reader :x, :y, :width, :height
7
+ attr_reader :x, :y, :width, :height
8
8
  attr_accessor :rotate, :loop, :clip_x, :clip_y, :clip_width, :clip_height, :data
9
9
 
10
10
  def initialize(path, opts = {})
@@ -78,7 +78,7 @@ module Ruby2D
78
78
  # Set the x coordinate
79
79
  def x=(x)
80
80
  @x = @flip_x = x
81
- if @flip == :flip_h || @flip == :flip_hv
81
+ if @flip == :horizontal || @flip == :both
82
82
  @flip_x = x + @width
83
83
  end
84
84
  end
@@ -86,7 +86,7 @@ module Ruby2D
86
86
  # Set the y coordinate
87
87
  def y=(y)
88
88
  @y = @flip_y = y
89
- if @flip == :flip_v || @flip == :flip_hv
89
+ if @flip == :vertical || @flip == :both
90
90
  @flip_y = y + @height
91
91
  end
92
92
  end
@@ -94,7 +94,7 @@ module Ruby2D
94
94
  # Set the width
95
95
  def width=(width)
96
96
  @width = @flip_width = width
97
- if @flip == :flip_h || @flip == :flip_hv
97
+ if @flip == :horizontal || @flip == :both
98
98
  @flip_width = -width
99
99
  end
100
100
  end
@@ -102,13 +102,18 @@ module Ruby2D
102
102
  # Set the height
103
103
  def height=(height)
104
104
  @height = @flip_height = height
105
- if @flip == :flip_v || @flip == :flip_hv
105
+ if @flip == :vertical || @flip == :both
106
106
  @flip_height = -height
107
107
  end
108
108
  end
109
109
 
110
110
  # Play an animation
111
- def play(animation = nil, loop = nil, flip = nil, &done_proc)
111
+ def play(opts = {}, &done_proc)
112
+
113
+ animation = opts[:animation]
114
+ loop = opts[:loop]
115
+ flip = opts[:flip]
116
+
112
117
  if !@playing || (animation != @playing_animation && animation != nil) || flip != @flip
113
118
 
114
119
  @playing = true
@@ -127,11 +132,11 @@ module Ruby2D
127
132
  when Array
128
133
  @first_frame = 0
129
134
  @current_frame = 0
130
- @last_frame = frames.length - 1
135
+ @last_frame = frames.length - 1
131
136
  end
132
137
 
133
138
  # Set looping
134
- @loop = loop == :loop || @defaults[:loop] ? true : false
139
+ @loop = loop == true || @defaults[:loop] ? true : false
135
140
 
136
141
  set_frame
137
142
  restart_time
@@ -151,8 +156,12 @@ module Ruby2D
151
156
  # Flip the sprite
152
157
  def flip_sprite(flip)
153
158
 
154
- # A width and height must be set for the sprite for this to work
155
- unless @width && @height then return end
159
+ # The sprite width and height must be set for it to be flipped correctly
160
+ if (!@width || !@height) && flip
161
+ raise Error,
162
+ "Sprite width and height must be set in order to flip; " +
163
+ "occured playing animation `:#{@playing_animation}` with image `#{@path}`"
164
+ end
156
165
 
157
166
  @flip = flip
158
167
 
@@ -163,13 +172,13 @@ module Ruby2D
163
172
  @flip_height = @height
164
173
 
165
174
  case flip
166
- when :flip_h # horizontal
175
+ when :horizontal
167
176
  @flip_x = @x + @width
168
177
  @flip_width = -@width
169
- when :flip_v # vertical
178
+ when :vertical
170
179
  @flip_y = @y + @height
171
180
  @flip_height = -@height
172
- when :flip_hv # horizontal and vertical
181
+ when :both # horizontal and vertical
173
182
  @flip_x = @x + @width
174
183
  @flip_width = -@width
175
184
  @flip_y = @y + @height
@@ -7,11 +7,11 @@ module Ruby2D
7
7
  attr_reader :text, :size, :width, :height, :font, :color
8
8
  attr_accessor :x, :y, :rotate, :data
9
9
 
10
- def initialize(opts = {})
10
+ def initialize(text, opts = {})
11
11
  @x = opts[:x] || 0
12
12
  @y = opts[:y] || 0
13
13
  @z = opts[:z] || 0
14
- @text = (opts[:text] || "Hello Ruby!").to_s
14
+ @text = text.to_s
15
15
  @size = opts[:size] || 20
16
16
  @rotate = opts[:rotate] || 0
17
17
  @font = opts[:font] || Font.default
@@ -40,22 +40,5 @@ module Ruby2D
40
40
  @x < x and @x + @width > x and @y < y and @y + @height > y
41
41
  end
42
42
 
43
- private
44
-
45
- def resolve_path(font)
46
- if RUBY_PLATFORM =~ /darwin/
47
- font_path = "/Library/Fonts/#{font}.ttf"
48
- else
49
- # Linux
50
- font_path = "/usr/share/fonts/truetype/#{font}.ttf"
51
- end
52
-
53
- unless File.exists? font_path
54
- raise Error, "Cannot find system font"
55
- else
56
- font_path
57
- end
58
- end
59
-
60
43
  end
61
44
  end
@@ -1,5 +1,5 @@
1
1
  # Ruby2D::VERSION
2
2
 
3
3
  module Ruby2D
4
- VERSION = '0.6.1'
4
+ VERSION = '0.7.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby2d
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Black
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-05 00:00:00.000000000 Z
11
+ date: 2018-10-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal
@@ -153,6 +153,7 @@ files:
153
153
  - lib/ruby2d.rb
154
154
  - lib/ruby2d/circle.rb
155
155
  - lib/ruby2d/color.rb
156
+ - lib/ruby2d/colorize.rb
156
157
  - lib/ruby2d/dsl.rb
157
158
  - lib/ruby2d/exceptions.rb
158
159
  - lib/ruby2d/font.rb