rubysketch 0.7 → 0.7.2
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/.github/workflows/utils.rb +1 -1
- data/ChangeLog.md +13 -0
- data/Gemfile.lock +2 -4
- data/Rakefile +0 -1
- data/VERSION +1 -1
- data/lib/rubysketch/context.rb +57 -44
- data/lib/rubysketch/sprite.rb +164 -18
- data/lib/rubysketch.rb +10 -8
- data/rubysketch.gemspec +6 -6
- data/src/RubySketch.mm +2 -2
- data/test/test_context.rb +31 -0
- data/test/test_sound.rb +0 -3
- metadata +50 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 128e3372ca4c86e23ed577d27da331f1e032fc5d62caef06914ef6b5b5e26587
|
4
|
+
data.tar.gz: c6e0ce577b7a63fb20eb7d07283fba86e4816d7dd334759ea51ce0c803012d60
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 840bcc958ab2ce6f9fb5f32b77de389b7adc8b8d048ddcc97a07b54786ded6f3b09d2b66335c53d7852d0f22b0becc5a581bdddac0e2744ec20cf49d941e2f22
|
7
|
+
data.tar.gz: e1f631877a8eba471de0122ea02a025f1ee250f3a1558a0795ea6fa9b54120597e48153aa3afa6ba729f72a2e5782e07ccfbaa5179172850bdca85c00ab54303
|
data/.github/workflows/utils.rb
CHANGED
@@ -20,7 +20,7 @@ def setup_dependencies(build: true, only: nil)
|
|
20
20
|
|
21
21
|
exts.each do |ext|
|
22
22
|
gem = RENAMES[ext.to_sym].then {|s| s || ext}
|
23
|
-
ver = gemspec[/
|
23
|
+
ver = gemspec[/add_dependency.*['"]#{gem}['"].*['"]\s*>=\s*([\d\.]+)\s*['"]/, 1]
|
24
24
|
opts = '-c advice.detachedHead=false --depth 1'
|
25
25
|
clone = "git clone #{opts} https://github.com/xord/#{ext}.git ../#{ext}"
|
26
26
|
|
data/ChangeLog.md
CHANGED
@@ -1,6 +1,19 @@
|
|
1
1
|
# rubysketch ChangeLog
|
2
2
|
|
3
3
|
|
4
|
+
## [v0.7.2] - 2025-01-14
|
5
|
+
|
6
|
+
- Update workflow files
|
7
|
+
- Set minumum version for runtime dependency
|
8
|
+
|
9
|
+
|
10
|
+
## [v0.7.1] - 2025-01-13
|
11
|
+
|
12
|
+
- Add SpriteWorld class
|
13
|
+
- addSprite and removeSprite can take many sprites
|
14
|
+
- Sprite#hide returns self
|
15
|
+
|
16
|
+
|
4
17
|
## [v0.7] - 2024-07-06
|
5
18
|
|
6
19
|
- Support Windows
|
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.
|
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-
|
13
|
+
arm64-darwin-23
|
16
14
|
|
17
15
|
DEPENDENCIES
|
18
16
|
rake
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.7
|
1
|
+
0.7.2
|
data/lib/rubysketch/context.rb
CHANGED
@@ -3,18 +3,20 @@ module RubySketch
|
|
3
3
|
|
4
4
|
class Context < Processing::Context
|
5
5
|
|
6
|
-
Sprite
|
7
|
-
|
8
|
-
|
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
|
-
@
|
17
|
+
@world__ = createWorld
|
16
18
|
|
17
|
-
|
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
|
119
|
+
setTimeout id: id, &eachDrawBlock
|
118
120
|
end
|
119
121
|
end
|
120
|
-
setTimeout
|
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
|
-
|
196
|
+
@world__.createSprite(*args, context: self, **kwargs)
|
193
197
|
end
|
194
198
|
|
195
|
-
# Adds
|
199
|
+
# Adds sprites to the physics engine.
|
196
200
|
#
|
197
|
-
# @param [Sprite]
|
201
|
+
# @param [Sprite] sprites sprite objects
|
198
202
|
#
|
199
|
-
# @return [Sprite] added sprite
|
203
|
+
# @return [Sprite] first added sprite
|
200
204
|
#
|
201
|
-
def addSprite(
|
202
|
-
@
|
203
|
-
sprite
|
205
|
+
def addSprite(*sprites)
|
206
|
+
@world__.addSprite(*sprites)
|
204
207
|
end
|
205
208
|
|
206
|
-
# Removes
|
209
|
+
# Removes sprites from the physics engine.
|
207
210
|
#
|
208
|
-
# @param [Sprite]
|
211
|
+
# @param [Sprite] sprites sprite objects
|
209
212
|
#
|
210
|
-
# @return [Sprite] removed sprite
|
213
|
+
# @return [Sprite] first removed sprite
|
211
214
|
#
|
212
|
-
def removeSprite(
|
213
|
-
@
|
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
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
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
|
data/lib/rubysketch/sprite.rb
CHANGED
@@ -65,7 +65,7 @@ module RubySketch
|
|
65
65
|
|
66
66
|
@context__ = context || Context.context__
|
67
67
|
@shape__ = shape
|
68
|
-
@view__ =
|
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
|
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
|
-
|
980
|
-
|
981
|
-
|
982
|
-
|
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
|
-
|
989
|
-
|
990
|
-
|
991
|
-
|
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
|
-
|
1002
|
-
|
1003
|
-
|
1004
|
-
|
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#
|
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
|
-
|
8
|
-
|
7
|
+
WINDOW__ = Processing::Window.new(w, h) {start}
|
8
|
+
CONTEXT__ = RubySketch::Context.new WINDOW__
|
9
9
|
|
10
10
|
refine Object do
|
11
|
-
(
|
12
|
-
|
13
|
-
|
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::
|
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.
|
29
|
-
s.
|
30
|
-
s.
|
31
|
-
s.
|
32
|
-
s.
|
33
|
-
s.
|
28
|
+
s.add_dependency 'xot', '~> 0.3.2', '>= 0.3.2'
|
29
|
+
s.add_dependency 'rucy', '~> 0.3.2', '>= 0.3.2'
|
30
|
+
s.add_dependency 'beeps', '~> 0.3.2', '>= 0.3.2'
|
31
|
+
s.add_dependency 'rays', '~> 0.3.2', '>= 0.3.2'
|
32
|
+
s.add_dependency 'reflexion', '~> 0.3.2', '>= 0.3.2'
|
33
|
+
s.add_dependency 'processing', '~> 1.1', '>= 1.1.2'
|
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::
|
76
|
-
"RubySketch::
|
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,31 @@
|
|
1
|
+
require_relative 'helper'
|
2
|
+
|
3
|
+
|
4
|
+
class TestContext < Test::Unit::TestCase
|
5
|
+
|
6
|
+
RS = RubySketch
|
7
|
+
P = Processing
|
8
|
+
|
9
|
+
def context()
|
10
|
+
RS::Context.new P::Window.new
|
11
|
+
end
|
12
|
+
|
13
|
+
def sprite(*args, **kwargs)
|
14
|
+
RS::Sprite.new(*args, **kwargs)
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_addSprite()
|
18
|
+
sp = sprite
|
19
|
+
assert_nil context.addSprite()
|
20
|
+
assert_equal sp, context.addSprite(sp)
|
21
|
+
assert_equal sp, context.addSprite(sp, sprite)
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_removeSprite()
|
25
|
+
sp = sprite
|
26
|
+
assert_nil context.removeSprite()
|
27
|
+
assert_equal sp, context.removeSprite(sp)
|
28
|
+
assert_equal sp, context.removeSprite(sp, sprite)
|
29
|
+
end
|
30
|
+
|
31
|
+
end# TestContext
|
data/test/test_sound.rb
CHANGED
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:
|
4
|
+
version: 0.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- xordog
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-01-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xot
|
@@ -16,70 +16,100 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 0.3.2
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.3.2
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
27
|
- - "~>"
|
25
28
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
29
|
+
version: 0.3.2
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.3.2
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: rucy
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - "~>"
|
32
38
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
39
|
+
version: 0.3.2
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 0.3.2
|
34
43
|
type: :runtime
|
35
44
|
prerelease: false
|
36
45
|
version_requirements: !ruby/object:Gem::Requirement
|
37
46
|
requirements:
|
38
47
|
- - "~>"
|
39
48
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
49
|
+
version: 0.3.2
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 0.3.2
|
41
53
|
- !ruby/object:Gem::Dependency
|
42
54
|
name: beeps
|
43
55
|
requirement: !ruby/object:Gem::Requirement
|
44
56
|
requirements:
|
45
57
|
- - "~>"
|
46
58
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
59
|
+
version: 0.3.2
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.3.2
|
48
63
|
type: :runtime
|
49
64
|
prerelease: false
|
50
65
|
version_requirements: !ruby/object:Gem::Requirement
|
51
66
|
requirements:
|
52
67
|
- - "~>"
|
53
68
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
69
|
+
version: 0.3.2
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: 0.3.2
|
55
73
|
- !ruby/object:Gem::Dependency
|
56
74
|
name: rays
|
57
75
|
requirement: !ruby/object:Gem::Requirement
|
58
76
|
requirements:
|
59
77
|
- - "~>"
|
60
78
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
79
|
+
version: 0.3.2
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.3.2
|
62
83
|
type: :runtime
|
63
84
|
prerelease: false
|
64
85
|
version_requirements: !ruby/object:Gem::Requirement
|
65
86
|
requirements:
|
66
87
|
- - "~>"
|
67
88
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
89
|
+
version: 0.3.2
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 0.3.2
|
69
93
|
- !ruby/object:Gem::Dependency
|
70
94
|
name: reflexion
|
71
95
|
requirement: !ruby/object:Gem::Requirement
|
72
96
|
requirements:
|
73
97
|
- - "~>"
|
74
98
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
99
|
+
version: 0.3.2
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 0.3.2
|
76
103
|
type: :runtime
|
77
104
|
prerelease: false
|
78
105
|
version_requirements: !ruby/object:Gem::Requirement
|
79
106
|
requirements:
|
80
107
|
- - "~>"
|
81
108
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
109
|
+
version: 0.3.2
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 0.3.2
|
83
113
|
- !ruby/object:Gem::Dependency
|
84
114
|
name: processing
|
85
115
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,6 +117,9 @@ dependencies:
|
|
87
117
|
- - "~>"
|
88
118
|
- !ruby/object:Gem::Version
|
89
119
|
version: '1.1'
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: 1.1.2
|
90
123
|
type: :runtime
|
91
124
|
prerelease: false
|
92
125
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -94,6 +127,9 @@ dependencies:
|
|
94
127
|
- - "~>"
|
95
128
|
- !ruby/object:Gem::Version
|
96
129
|
version: '1.1'
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: 1.1.2
|
97
133
|
description: A game engine based on the Processing API.
|
98
134
|
email: xordog@gmail.com
|
99
135
|
executables: []
|
@@ -132,6 +168,7 @@ files:
|
|
132
168
|
- src/RubySketch.h
|
133
169
|
- src/RubySketch.mm
|
134
170
|
- test/helper.rb
|
171
|
+
- test/test_context.rb
|
135
172
|
- test/test_sound.rb
|
136
173
|
- test/test_sprite.rb
|
137
174
|
homepage: https://github.com/xord/rubysketch
|
@@ -159,5 +196,6 @@ specification_version: 4
|
|
159
196
|
summary: A game engine based on the Processing API.
|
160
197
|
test_files:
|
161
198
|
- test/helper.rb
|
199
|
+
- test/test_context.rb
|
162
200
|
- test/test_sound.rb
|
163
201
|
- test/test_sprite.rb
|