rubysketch 0.6.3 → 0.7.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f36366507d893f908da9d3b2fa6430ac8c954f6d0558abb6f1e361c85cfc9f30
4
- data.tar.gz: 3555eadca0ce22d0bcf8b229022dae9c530a35b287b9b432243977dcfa348a01
3
+ metadata.gz: 39478a6f3e2c65548b50f8f96193c444f5379a1a5e91e3ec25bdb1fa47be87d8
4
+ data.tar.gz: 17ede8ee12ae9631ea9cb926c60601f121339ab4fe923ac8bcb282739a5d2a9d
5
5
  SHA512:
6
- metadata.gz: ed560028a92b940c8424a330cd2149918fe74a39e0e749517a262356f2970bcf191dc42f38169c069918b78e27c80cf5f4deb01ee6ae72c80736fad17b9431ab
7
- data.tar.gz: f3a445a51801e064dd6565dce2f32f7776b039cde3301242a13655db022a03d6fdaa5a5c97f583a2baf096152e10f742b8545b80f04ba9427113db8333225677
6
+ metadata.gz: dd9298f2872be15f43011257793f4538b03cef526cb69b2b6391ec2a0b1fe3f828dcc6514c47971c853a3a74cb57c9c39b7341926dda2bd525e48a14a29ad38e
7
+ data.tar.gz: 33fcf3fd9474370239f7f3403ff34796c7f2301fa9ed7cd540870dfc95ce9c6f5a464db309a0412d53e106616ead1337710e3c091a77d67f247b885952fe2f64
@@ -24,7 +24,7 @@ jobs:
24
24
  run: "ruby -I.github/workflows -rutils -e 'setup_dependencies'"
25
25
 
26
26
  - name: test
27
- run: bundle exec rake quiet test
27
+ run: bundle exec rake quiet packages test
28
28
 
29
29
  - name: create gem
30
30
  id: gem
@@ -24,6 +24,9 @@ jobs:
24
24
  - name: setup dependencies
25
25
  run: "ruby -I.github/workflows -rutils -e 'setup_dependencies'"
26
26
 
27
+ - name: packages
28
+ run: bundle exec rake packages
29
+
27
30
  - name: lib
28
31
  run: bundle exec rake lib
29
32
 
data/ChangeLog.md CHANGED
@@ -1,6 +1,18 @@
1
1
  # rubysketch ChangeLog
2
2
 
3
3
 
4
+ ## [v0.7.1] - 2025-01-13
5
+
6
+ - Add SpriteWorld class
7
+ - addSprite and removeSprite can take many sprites
8
+ - Sprite#hide returns self
9
+
10
+
11
+ ## [v0.7] - 2024-07-06
12
+
13
+ - Support Windows
14
+
15
+
4
16
  ## [v0.6.3] - 2024-07-05
5
17
 
6
18
  - Update workflows for test
data/Gemfile.lock CHANGED
@@ -3,16 +3,14 @@ GEM
3
3
  specs:
4
4
  power_assert (2.0.3)
5
5
  rake (13.1.0)
6
- rexml (3.3.1)
7
- strscan
8
- strscan (3.1.0)
6
+ rexml (3.4.0)
9
7
  test-unit (3.6.1)
10
8
  power_assert
11
9
  yard (0.9.34)
12
10
 
13
11
  PLATFORMS
14
12
  arm64-darwin-21
15
- arm64-darwin-22
13
+ arm64-darwin-23
16
14
 
17
15
  DEPENDENCIES
18
16
  rake
data/Rakefile CHANGED
@@ -1,6 +1,5 @@
1
1
  # -*- mode: ruby -*-
2
2
 
3
-
4
3
  %w[../xot ../rucy ../beeps ../rays ../reflex ../processing .]
5
4
  .map {|s| File.expand_path "#{s}/lib", __dir__}
6
5
  .each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
@@ -22,6 +21,6 @@ ENV['RDOC'] = 'yardoc --no-private'
22
21
 
23
22
  default_tasks
24
23
  use_bundler
25
- test_ruby_extension
24
+ test_ruby_extension unless github_actions? && win32?
26
25
  generate_documents
27
26
  build_ruby_gem
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.3
1
+ 0.7.1
@@ -1,5 +1,5 @@
1
- require 'beeps'
2
1
  require 'processing/all'
2
+ require 'beeps'
3
3
 
4
4
  require 'rubysketch/extension'
5
5
  require 'rubysketch/helper'
@@ -3,18 +3,20 @@ module RubySketch
3
3
 
4
4
  class Context < Processing::Context
5
5
 
6
- Sprite = RubySketch::Sprite
7
- Circle = RubySketch::Circle
8
- Sound = RubySketch::Sound
6
+ Sprite = RubySketch::Sprite
7
+ SpriteWorld = RubySketch::SpriteWorld
8
+ Circle = RubySketch::Circle
9
+ Sound = RubySketch::Sound
9
10
 
10
11
  # @private
11
12
  def initialize(window)
12
13
  super
14
+ @window__ = window
13
15
  @timers__, @firingTimers__, @nextTimerID__ = {}, {}, 0
14
16
 
15
- @layer__ = window.add_overlay SpriteLayer.new
17
+ @world__ = createWorld
16
18
 
17
- window.update_window = proc do
19
+ @window__.update_window = proc do
18
20
  fireTimers__
19
21
  Beeps.process_streams!
20
22
  end
@@ -114,10 +116,10 @@ module RubySketch
114
116
  block.call fun.call(1.0), true
115
117
  else
116
118
  block.call fun.call(t), false
117
- setTimeout 0, id: id, &eachDrawBlock
119
+ setTimeout id: id, &eachDrawBlock
118
120
  end
119
121
  end
120
- setTimeout 0, id: id, &eachDrawBlock
122
+ setTimeout id: id, &eachDrawBlock
121
123
  end
122
124
 
123
125
  # Animate value with easing functions
@@ -188,30 +190,30 @@ module RubySketch
188
190
  # @param [Numeric] y y of the sprite position
189
191
  # @param [Shape] shp shape of the sprite for physics calculations
190
192
  #
193
+ # @return [Sprite] the new sprite object
194
+ #
191
195
  def createSprite(*args, **kwargs)
192
- addSprite Sprite.new(*args, **kwargs, context: self)
196
+ @world__.createSprite(*args, context: self, **kwargs)
193
197
  end
194
198
 
195
- # Adds the sprite to the physics engine.
199
+ # Adds sprites to the physics engine.
196
200
  #
197
- # @param [Sprite] sprite sprite object
201
+ # @param [Sprite] sprites sprite objects
198
202
  #
199
- # @return [Sprite] added sprite
203
+ # @return [Sprite] first added sprite
200
204
  #
201
- def addSprite(sprite)
202
- @layer__.add sprite.getInternal__ if sprite
203
- sprite
205
+ def addSprite(*sprites)
206
+ @world__.addSprite(*sprites)
204
207
  end
205
208
 
206
- # Removes the sprite from the physics engine.
209
+ # Removes sprites from the physics engine.
207
210
  #
208
- # @param [Sprite] sprite sprite object
211
+ # @param [Sprite] sprites sprite objects
209
212
  #
210
- # @return [Sprite] removed sprite
213
+ # @return [Sprite] first removed sprite
211
214
  #
212
- def removeSprite(sprite)
213
- @layer__.remove sprite.getInternal__ if sprite
214
- sprite
215
+ def removeSprite(*sprites)
216
+ @world__.removeSprite(*sprites)
215
217
  end
216
218
 
217
219
  # Draws one or more sprites.
@@ -249,6 +251,36 @@ module RubySketch
249
251
 
250
252
  alias drawSprite sprite
251
253
 
254
+ # Creates a new world to calculate the physics of sprites.
255
+ #
256
+ # @return [SpriteWorld] the new world object
257
+ #
258
+ def createWorld(pixels_per_meter: 0)
259
+ addWorld SpriteWorld.new pixels_per_meter: pixels_per_meter
260
+ end
261
+
262
+ # Adds worlds
263
+ #
264
+ # @param [SpriteWorld] worlds world objects
265
+ #
266
+ # @return [SpriteWorld] first added world
267
+ #
268
+ def addWorld(*worlds)
269
+ worlds.each {@window__.add_overlay _1.getInternal__}
270
+ worlds.first
271
+ end
272
+
273
+ # Removes worlds
274
+ #
275
+ # @param [SpriteWorld] worlds world objects
276
+ #
277
+ # @return [SpriteWorld] first removed world
278
+ #
279
+ def removeWorld(*worlds)
280
+ worlds.each {@window__.remove_overlay _1.getInternal__}
281
+ worlds.first
282
+ end
283
+
252
284
  # Loads sound file.
253
285
  #
254
286
  # @param [String] path path for sound file
@@ -271,40 +303,21 @@ module RubySketch
271
303
  # @param [Numeric] x x of gravity vector
272
304
  # @param [Numeric] y y of gracity vector
273
305
  #
274
- def gravity(*args)
275
- x, y =
276
- case arg = args.first
277
- when Vector then arg.array
278
- when Array then arg
279
- else args
280
- end
281
- @layer__.gravity x, y
306
+ # @return [nil] nil
307
+ #
308
+ def gravity(...)
309
+ @world__.gravity(...)
282
310
  end
283
311
 
284
312
  # Generates haptic feedback
285
313
  #
286
314
  # @return [nil] nil
287
315
  #
288
- def vibrate ()
316
+ def vibrate()
289
317
  Reflex.vibrate
290
318
  end
291
319
 
292
320
  end# Context
293
321
 
294
322
 
295
- # @private
296
- class SpriteLayer < Reflex::View
297
-
298
- def initialize(*a, **k, &b)
299
- super
300
- remove wall
301
- end
302
-
303
- def on_draw(e)
304
- e.block false
305
- end
306
-
307
- end# SpriteLayer
308
-
309
-
310
323
  end# RubySketch
@@ -65,7 +65,7 @@ module RubySketch
65
65
 
66
66
  @context__ = context || Context.context__
67
67
  @shape__ = shape
68
- @view__ = SpriteView.new(
68
+ @view__ = View.new(
69
69
  self, x: x, y: y, w: w, h: h,
70
70
  shape: @shape__, physics: physics, back: :white)
71
71
  @view__.set density: 1, friction: 0, restitution: 0
@@ -93,6 +93,7 @@ module RubySketch
93
93
  #
94
94
  def hide()
95
95
  @view__.hide
96
+ self
96
97
  end
97
98
 
98
99
  # Returns the sprite is visible
@@ -915,8 +916,132 @@ module RubySketch
915
916
  end# Sprite
916
917
 
917
918
 
919
+ # A class Manages sprites.
920
+ #
921
+ class SpriteWorld
922
+
923
+ # Create a new physics world
924
+ #
925
+ def initialize(pixels_per_meter: 0)
926
+ @view, @debug = View.new(pixels_per_meter: pixels_per_meter), false
927
+ end
928
+
929
+ # Creates a new sprite and add it to physics engine.
930
+ #
931
+ # @overload createSprite(x, y, w, h)
932
+ # pos(x, y), size: [w, h]
933
+ # @param [Numeric] x x of the sprite position
934
+ # @param [Numeric] y y of the sprite position
935
+ # @param [Numeric] w width of the sprite
936
+ # @param [Numeric] h height of the sprite
937
+ #
938
+ # @overload createSprite(image: img)
939
+ # pos: [0, 0], size: [image.width, image.height]
940
+ # @param [Image] img sprite image
941
+ #
942
+ # @overload createSprite(x, y, image: img)
943
+ # pos: [x, y], size: [image.width, image.height]
944
+ # @param [Numeric] x x of the sprite position
945
+ # @param [Numeric] y y of the sprite position
946
+ # @param [Image] img sprite image
947
+ #
948
+ # @overload createSprite(x, y, image: img, offset: off)
949
+ # pos: [x, y], size: [image.width, image.height], offset: [offset.x, offset.x]
950
+ # @param [Numeric] x x of the sprite position
951
+ # @param [Numeric] y y of the sprite position
952
+ # @param [Image] img sprite image
953
+ # @param [Vector] off offset of the sprite image
954
+ #
955
+ # @overload createSprite(x, y, image: img, shape: shp)
956
+ # pos: [x, y], size: [image.width, image.height]
957
+ # @param [Numeric] x x of the sprite position
958
+ # @param [Numeric] y y of the sprite position
959
+ # @param [Image] img sprite image
960
+ #
961
+ # @overload createSprite(x, y, image: img, offset: off, shape: shp)
962
+ # pos: [x, y], size: [image.width, image.height], offset: [offset.x, offset.x]
963
+ # @param [Numeric] x x of the sprite position
964
+ # @param [Numeric] y y of the sprite position
965
+ # @param [Image] img sprite image
966
+ # @param [Vector] off offset of the sprite image
967
+ # @param [Shape] shp shape of the sprite for physics calculations
968
+ #
969
+ # @overload createSprite(x, y, shape: shp)
970
+ # pos: [x, y], size: [shape.width, shape.height]
971
+ # @param [Numeric] x x of the sprite position
972
+ # @param [Numeric] y y of the sprite position
973
+ # @param [Shape] shp shape of the sprite for physics calculations
974
+ #
975
+ # @return [Sprite] the new sprite object
976
+ #
977
+ def createSprite(*args, context: nil, **kwargs)
978
+ context ||= Context.context__
979
+ addSprite Sprite.new(*args, context: context, **kwargs)
980
+ end
981
+
982
+ # Adds sprites to the physics engine.
983
+ #
984
+ # @param [Sprite] sprites sprite objects
985
+ #
986
+ # @return [Sprite] first added sprite
987
+ #
988
+ def addSprite(*sprites)
989
+ sprites.each {@view.add _1.getInternal__}
990
+ sprites.first
991
+ end
992
+
993
+ # Removes sprites from the physics engine.
994
+ #
995
+ # @param [Sprite] sprites sprite objects
996
+ #
997
+ # @return [Sprite] first removed sprite
998
+ #
999
+ def removeSprite(*sprites)
1000
+ sprites.each {@view.remove _1.getInternal__}
1001
+ sprites.first
1002
+ end
1003
+
1004
+ # Sets gravity for the physics engine.
1005
+ #
1006
+ # @overload gravity(vec)
1007
+ # @param [Vector] vec gracity vector
1008
+ #
1009
+ # @overload gravity(ary)
1010
+ # @param [Array<Numeric>] ary gravityX, gravityY
1011
+ #
1012
+ # @overload gravity(x, y)
1013
+ # @param [Numeric] x x of gravity vector
1014
+ # @param [Numeric] y y of gracity vector
1015
+ #
1016
+ # @return [nil] nil
1017
+ #
1018
+ def gravity(*args)
1019
+ x, y =
1020
+ case arg = args.first
1021
+ when Vector then arg.array
1022
+ when Array then arg
1023
+ else args
1024
+ end
1025
+ @view.gravity x, y
1026
+ nil
1027
+ end
1028
+
1029
+ def debug=(state)
1030
+ @view.debug = state
1031
+ end
1032
+
1033
+ def debug? = @view.debug?
1034
+
1035
+ # @private
1036
+ def getInternal__()
1037
+ @view
1038
+ end
1039
+
1040
+ end# SpriteWorld
1041
+
1042
+
918
1043
  # @private
919
- class SpriteView < Reflex::View
1044
+ class Sprite::View < Reflex::View
920
1045
 
921
1046
  attr_accessor :update,
922
1047
  :mousePressed, :mouseReleased, :mouseMoved, :mouseDragged, :mouseClicked,
@@ -976,33 +1101,33 @@ module RubySketch
976
1101
  updatePointerStates e
977
1102
  updatePointersPressedAndReleased e, true
978
1103
  @pointerDownStartPos = to_screen @pointer.pos
979
- if e.view_index == 0
980
- call_block @mousePressed if e.any? {|p| p.id == @pointer.id}
981
- call_block @touchStarted
982
- end
1104
+
1105
+ call_block @mousePressed if e.any? {|p| p.id == @pointer.id}
1106
+ call_block @touchStarted
1107
+
1108
+ e.block
983
1109
  end
984
1110
 
985
1111
  def on_pointer_up(e)
986
1112
  updatePointerStates e
987
1113
  updatePointersPressedAndReleased e, false
988
- if e.view_index == 0
989
- if e.any? {|p| p.id == @pointer.id}
990
- call_block @mouseReleased
991
- call_block @mouseClicked if mouseClicked?
992
- end
993
- call_block @touchEnded
1114
+
1115
+ if e.any? {|p| p.id == @pointer.id}
1116
+ call_block @mouseReleased
1117
+ call_block @mouseClicked if mouseClicked?
994
1118
  end
1119
+ call_block @touchEnded
1120
+
995
1121
  @pointerDownStartPos = nil
996
1122
  @pointersReleased.clear
997
1123
  end
998
1124
 
999
1125
  def on_pointer_move(e)
1000
1126
  updatePointerStates e
1001
- if e.view_index == 0
1002
- mouseMoved = e.drag? ? @mouseDragged : @mouseMoved
1003
- call_block mouseMoved if e.any? {|p| p.id == @pointer.id}
1004
- call_block @touchMoved
1005
- end
1127
+
1128
+ mouseMoved = e.drag? ? @mouseDragged : @mouseMoved
1129
+ call_block mouseMoved if e.any? {|p| p.id == @pointer.id}
1130
+ call_block @touchMoved
1006
1131
  end
1007
1132
 
1008
1133
  def on_pointer_cancel(e)
@@ -1070,7 +1195,28 @@ module RubySketch
1070
1195
  $stderr.puts e.full_message
1071
1196
  end
1072
1197
 
1073
- end# SpriteView
1198
+ end# Sprite::View
1199
+
1200
+
1201
+ # @private
1202
+ class SpriteWorld::View < Reflex::View
1203
+
1204
+ def initialize(*a, pixels_per_meter: 0, **k, &b)
1205
+ create_world pixels_per_meter if pixels_per_meter > 0
1206
+ super(*a, **k, &b)
1207
+ @debug = false
1208
+ remove wall
1209
+ end
1210
+
1211
+ attr_writer :debug
1212
+
1213
+ def debug? = @debug
1214
+
1215
+ def on_draw(e)
1216
+ e.block false unless debug?
1217
+ end
1218
+
1219
+ end# SpriteWorld::View
1074
1220
 
1075
1221
 
1076
1222
  end# RubySketch
data/lib/rubysketch.rb CHANGED
@@ -4,23 +4,25 @@ require 'rubysketch/all'
4
4
  module RubySketch
5
5
  w = (ENV['WIDTH'] || 500).to_i
6
6
  h = (ENV['HEIGHT'] || 500).to_i
7
- WINDOW = Processing::Window.new(w, h) {start}
8
- CONTEXT = RubySketch::Context.new WINDOW
7
+ WINDOW__ = Processing::Window.new(w, h) {start}
8
+ CONTEXT__ = RubySketch::Context.new WINDOW__
9
9
 
10
10
  refine Object do
11
- (CONTEXT.methods - Object.instance_methods).each do |method|
12
- define_method method do |*args, **kwargs, &block|
13
- CONTEXT.__send__ method, *args, **kwargs, &block
11
+ (CONTEXT__.methods - Object.instance_methods)
12
+ .reject {_1 =~ /__$/} # methods for internal use
13
+ .each do |method|
14
+ define_method(method) do |*args, **kwargs, &block|
15
+ CONTEXT__.__send__(method, *args, **kwargs, &block)
16
+ end
14
17
  end
15
- end
16
18
  end
17
19
  end# RubySketch
18
20
 
19
21
 
20
22
  begin
21
- w, c = RubySketch::WINDOW, RubySketch::CONTEXT
23
+ w, c = RubySketch::WINDOW__, RubySketch::CONTEXT__
22
24
 
23
- c.class.constants.each do |const|
25
+ c.class.constants.reject {_1 =~ /__$/}.each do |const|
24
26
  self.class.const_set const, c.class.const_get(const)
25
27
  end
26
28
 
data/rubysketch.gemspec CHANGED
@@ -25,12 +25,12 @@ Gem::Specification.new do |s|
25
25
  s.platform = Gem::Platform::RUBY
26
26
  s.required_ruby_version = '>= 3.0.0'
27
27
 
28
- s.add_runtime_dependency 'xot', '~> 0.2.1'
29
- s.add_runtime_dependency 'rucy', '~> 0.2.1'
30
- s.add_runtime_dependency 'beeps', '~> 0.2.1'
31
- s.add_runtime_dependency 'rays', '~> 0.2.1'
32
- s.add_runtime_dependency 'reflexion', '~> 0.2.1'
33
- s.add_runtime_dependency 'processing', '~> 1.0'
28
+ s.add_runtime_dependency 'xot', '~> 0.3.1'
29
+ s.add_runtime_dependency 'rucy', '~> 0.3.1'
30
+ s.add_runtime_dependency 'beeps', '~> 0.3.1'
31
+ s.add_runtime_dependency 'rays', '~> 0.3.1'
32
+ s.add_runtime_dependency 'reflexion', '~> 0.3.1'
33
+ s.add_runtime_dependency 'processing', '~> 1.1'
34
34
 
35
35
  s.files = `git ls-files`.split $/
36
36
  s.test_files = s.files.grep %r{^(test|spec|features)/}
data/src/RubySketch.mm CHANGED
@@ -72,8 +72,8 @@ ReflexViewController_show (UIViewController*, ReflexViewController*)
72
72
  CRBValue* ret = [CRuby evaluate:[NSString stringWithFormat:@
73
73
  "raise 'already started' unless require 'rubysketch'\n"
74
74
  "load '%@'\n"
75
- "RubySketch::WINDOW.__send__ :end_draw\n"
76
- "RubySketch::WINDOW.show",
75
+ "RubySketch::WINDOW__.__send__ :end_draw\n"
76
+ "RubySketch::WINDOW__.show",
77
77
  path
78
78
  ]];
79
79
  return ret && ret.toBOOL;
@@ -0,0 +1,34 @@
1
+ require_relative 'helper'
2
+
3
+
4
+ return if ci? # TODO: fix tests fail on github actions
5
+
6
+
7
+ class TestContext < Test::Unit::TestCase
8
+
9
+ RS = RubySketch
10
+ P = Processing
11
+
12
+ def context()
13
+ RS::Context.new P::Window.new
14
+ end
15
+
16
+ def sprite(*args, **kwargs)
17
+ RS::Sprite.new(*args, **kwargs)
18
+ end
19
+
20
+ def test_addSprite()
21
+ sp = sprite
22
+ assert_nil context.addSprite()
23
+ assert_equal sp, context.addSprite(sp)
24
+ assert_equal sp, context.addSprite(sp, sprite)
25
+ end
26
+
27
+ def test_removeSprite()
28
+ sp = sprite
29
+ assert_nil context.removeSprite()
30
+ assert_equal sp, context.removeSprite(sp)
31
+ assert_equal sp, context.removeSprite(sp, sprite)
32
+ end
33
+
34
+ end# TestContext
data/test/test_sound.rb CHANGED
@@ -1,6 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
-
4
1
  require_relative 'helper'
5
2
 
6
3
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubysketch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - xordog
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-07-05 00:00:00.000000000 Z
11
+ date: 2025-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xot
@@ -16,84 +16,84 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.1
19
+ version: 0.3.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.2.1
26
+ version: 0.3.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rucy
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.2.1
33
+ version: 0.3.1
34
34
  type: :runtime
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: 0.2.1
40
+ version: 0.3.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: beeps
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.2.1
47
+ version: 0.3.1
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.2.1
54
+ version: 0.3.1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rays
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.2.1
61
+ version: 0.3.1
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.2.1
68
+ version: 0.3.1
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: reflexion
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.2.1
75
+ version: 0.3.1
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.2.1
82
+ version: 0.3.1
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: processing
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '1.0'
89
+ version: '1.1'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '1.0'
96
+ version: '1.1'
97
97
  description: A game engine based on the Processing API.
98
98
  email: xordog@gmail.com
99
99
  executables: []
@@ -132,6 +132,7 @@ files:
132
132
  - src/RubySketch.h
133
133
  - src/RubySketch.mm
134
134
  - test/helper.rb
135
+ - test/test_context.rb
135
136
  - test/test_sound.rb
136
137
  - test/test_sprite.rb
137
138
  homepage: https://github.com/xord/rubysketch
@@ -159,5 +160,6 @@ specification_version: 4
159
160
  summary: A game engine based on the Processing API.
160
161
  test_files:
161
162
  - test/helper.rb
163
+ - test/test_context.rb
162
164
  - test/test_sound.rb
163
165
  - test/test_sprite.rb