rubysketch 0.5.24 → 0.5.26
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/ChangeLog.md +11 -0
- data/VERSION +1 -1
- data/lib/rubysketch/context.rb +8 -8
- data/lib/rubysketch/easings.rb +1 -1
- data/lib/rubysketch/sprite.rb +18 -10
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26c49c9860053850965c49ba550e222dbbc31dd41c26ed5a0e3ccba96cc70f30
|
4
|
+
data.tar.gz: f6d5e3eff58ce12340eccf50bb9dc2d21f19403ad54828890fe49c19428a9f30
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fbab1d6a12f52dbbef8c66be6dc86fccfb5da9c63807ea579ca4b61042d4e8df0fa223f533eb2ef6505054b4d4e0cfe812e9eadebd6926ae65ec0a22243c0760
|
7
|
+
data.tar.gz: a942e138e2350c873a148cf2ec17f58c6aded29685956f00c35eb50583403d3771dfe84b8ea3d303c01c0026e93fdd079716b47699f21d4a86189de378f96234
|
data/ChangeLog.md
CHANGED
@@ -1,6 +1,17 @@
|
|
1
1
|
# rubysketch ChangeLog
|
2
2
|
|
3
3
|
|
4
|
+
## [v0.5.26] - 2023-07-26
|
5
|
+
|
6
|
+
- Rescue exceptions thrown at sprite event handlers
|
7
|
+
|
8
|
+
|
9
|
+
## [v0.5.25] - 2023-07-22
|
10
|
+
|
11
|
+
- Freeze EASINGS
|
12
|
+
- Fix that clearTimer() fails clearing timer in very rare cases
|
13
|
+
|
14
|
+
|
4
15
|
## [v0.5.24] - 2023-07-21
|
5
16
|
|
6
17
|
- Add animate(), animateValue(), and EASINGS
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.26
|
data/lib/rubysketch/context.rb
CHANGED
@@ -9,7 +9,7 @@ module RubySketch
|
|
9
9
|
# @private
|
10
10
|
def initialize(window)
|
11
11
|
super
|
12
|
-
@timers__, @nextTimerID__ = {}, 0
|
12
|
+
@timers__, @firingTimers__, @nextTimerID__ = {}, {}, 0
|
13
13
|
|
14
14
|
@layer__ = window.add_overlay SpriteLayer.new
|
15
15
|
|
@@ -44,7 +44,7 @@ module RubySketch
|
|
44
44
|
def setInterval(seconds = 0, *args, id: nextTimerID__, now: false, &block)
|
45
45
|
return unless block
|
46
46
|
time = Time.now.to_f
|
47
|
-
block.call
|
47
|
+
block.call(*args) if now
|
48
48
|
setInterval__ id, time, seconds, args, &block
|
49
49
|
end
|
50
50
|
|
@@ -59,7 +59,7 @@ module RubySketch
|
|
59
59
|
now, nextTime = Time.now.to_f, startTime + seconds
|
60
60
|
nextTime = now if nextTime < now
|
61
61
|
setTimeout__ id, nextTime do
|
62
|
-
block.call
|
62
|
+
block.call(*args)
|
63
63
|
setInterval__ id, nextTime, seconds, args, &block
|
64
64
|
end
|
65
65
|
end
|
@@ -71,7 +71,7 @@ module RubySketch
|
|
71
71
|
# @return [nil] nil
|
72
72
|
#
|
73
73
|
def clearTimer(id)
|
74
|
-
@timers__.delete id
|
74
|
+
[@timers__, @firingTimers__].each {|timers| timers.delete id}
|
75
75
|
nil
|
76
76
|
end
|
77
77
|
|
@@ -87,11 +87,11 @@ module RubySketch
|
|
87
87
|
# @private
|
88
88
|
def fireTimers__()
|
89
89
|
now = Time.now.to_f
|
90
|
-
|
91
|
-
@timers__.delete_if do |
|
92
|
-
(now >= time).tap {|fire|
|
90
|
+
@firingTimers__.clear
|
91
|
+
@timers__.delete_if do |id, (time, args, block)|
|
92
|
+
(now >= time).tap {|fire| @firingTimers__[id] = [block, args] if fire}
|
93
93
|
end
|
94
|
-
|
94
|
+
@firingTimers__.each {|_, (block, args)| block.call(*args)}
|
95
95
|
end
|
96
96
|
|
97
97
|
# Animate with easing functions
|
data/lib/rubysketch/easings.rb
CHANGED
data/lib/rubysketch/sprite.rb
CHANGED
@@ -879,6 +879,7 @@ module RubySketch
|
|
879
879
|
@sprite = sprite
|
880
880
|
super(*a, **k, &b)
|
881
881
|
|
882
|
+
@error = nil
|
882
883
|
@pointer = nil
|
883
884
|
@pointerPrev = nil
|
884
885
|
@pointersPressed = []
|
@@ -915,7 +916,7 @@ module RubySketch
|
|
915
916
|
end
|
916
917
|
|
917
918
|
def on_update(e)
|
918
|
-
@update
|
919
|
+
call_block @update
|
919
920
|
end
|
920
921
|
|
921
922
|
def on_pointer_down(e)
|
@@ -923,8 +924,8 @@ module RubySketch
|
|
923
924
|
updatePointersPressedAndReleased e, true
|
924
925
|
@pointerDownStartPos = to_screen @pointer.pos
|
925
926
|
if e.view_index == 0
|
926
|
-
@mousePressed
|
927
|
-
@touchStarted
|
927
|
+
call_block @mousePressed if e.any? {|p| p.id == @pointer.id}
|
928
|
+
call_block @touchStarted
|
928
929
|
end
|
929
930
|
end
|
930
931
|
|
@@ -933,10 +934,10 @@ module RubySketch
|
|
933
934
|
updatePointersPressedAndReleased e, false
|
934
935
|
if e.view_index == 0
|
935
936
|
if e.any? {|p| p.id == @pointer.id}
|
936
|
-
@mouseReleased
|
937
|
-
@mouseClicked
|
937
|
+
call_block @mouseReleased
|
938
|
+
call_block @mouseClicked if mouseClicked?
|
938
939
|
end
|
939
|
-
@touchEnded
|
940
|
+
call_block @touchEnded
|
940
941
|
end
|
941
942
|
@pointerDownStartPos = nil
|
942
943
|
@pointersReleased.clear
|
@@ -946,8 +947,8 @@ module RubySketch
|
|
946
947
|
updatePointerStates e
|
947
948
|
if e.view_index == 0
|
948
949
|
mouseMoved = e.drag? ? @mouseDragged : @mouseMoved
|
949
|
-
mouseMoved
|
950
|
-
@touchMoved
|
950
|
+
call_block mouseMoved if e.any? {|p| p.id == @pointer.id}
|
951
|
+
call_block @touchMoved
|
951
952
|
end
|
952
953
|
end
|
953
954
|
|
@@ -957,12 +958,12 @@ module RubySketch
|
|
957
958
|
|
958
959
|
def on_contact_begin(e)
|
959
960
|
v = e.view
|
960
|
-
@contact
|
961
|
+
call_block @contact, v.sprite, e.action if @contact && v.respond_to?(:sprite)
|
961
962
|
end
|
962
963
|
|
963
964
|
def will_contact?(v)
|
964
965
|
return true unless @will_contact && v.respond_to?(:sprite)
|
965
|
-
@will_contact
|
966
|
+
call_block @will_contact, v.sprite
|
966
967
|
end
|
967
968
|
|
968
969
|
private
|
@@ -1002,6 +1003,13 @@ module RubySketch
|
|
1002
1003
|
.then {|pos, startPos| (pos - startPos).length < 3}
|
1003
1004
|
end
|
1004
1005
|
|
1006
|
+
def call_block(block, *args)
|
1007
|
+
block.call(*args) if block && !@error
|
1008
|
+
rescue Exception => e
|
1009
|
+
@error = e
|
1010
|
+
$stderr.puts e.full_message
|
1011
|
+
end
|
1012
|
+
|
1005
1013
|
end# SpriteView
|
1006
1014
|
|
1007
1015
|
|
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.5.
|
4
|
+
version: 0.5.26
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- xordog
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-07-
|
11
|
+
date: 2023-07-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xot
|