minigl 2.5.1 → 2.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -6
- data/lib/minigl/particles.rb +23 -10
- data/test/particles_game.rb +8 -10
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d76d1851d74339e98ce7cf452a95f001ff0dc5d757641dc22920769905aa0f7
|
4
|
+
data.tar.gz: a3ac0315dc9fb04cdafaac737e90678f58d7aea3b694d8662e2cd447f2eb4622
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b2d9f56c53f76cf02461c8d76aca13836e9010e8265394e8fcc59a372e22ad145f5d8572beb33d4cf498632e425d9b0a0c905fe0f3ddd566aa31b841a96dc84e
|
7
|
+
data.tar.gz: ad58132b5c6ea3bd4b377648e3ed02421f32783ba8dadbb80cdb6edcbe12b09bea720a15fd64d41dfaa8e78aa1956490e376e62c4e5e3c3219d9e35cd9d6fc69
|
data/README.md
CHANGED
@@ -43,13 +43,9 @@ After installing the Gosu dependencies, you can just `gem install minigl`.
|
|
43
43
|
* The [wiki](https://github.com/victords/minigl/wiki) is a work in progress with tutorials and examples.
|
44
44
|
* Test package and examples aren't complete!
|
45
45
|
|
46
|
-
## Version 2.5.
|
46
|
+
## Version 2.5.2
|
47
47
|
|
48
|
-
* Added `
|
49
|
-
|
50
|
-
### Version 2.5.1
|
51
|
-
|
52
|
-
Patch fixing the required Ruby version (>= 3.1).
|
48
|
+
* Added `source_offset_x` and `source_offset_y` initialization options and `move_to` method to `Particles`.
|
53
49
|
|
54
50
|
## Contributing
|
55
51
|
|
data/lib/minigl/particles.rb
CHANGED
@@ -3,13 +3,18 @@ module MiniGL
|
|
3
3
|
class Particles
|
4
4
|
# Create a new particle system.
|
5
5
|
# Options:
|
6
|
-
# - x: x-coordinate of the origin of the particle system. If
|
7
|
-
# set, it has precedence.
|
8
|
-
# - y: y-coordinate of the origin of the particle system. If
|
9
|
-
# set, it has precedence.
|
6
|
+
# - x (Numeric): x-coordinate of the origin of the particle system. If
|
7
|
+
# +source+ is set, it has precedence.
|
8
|
+
# - y (Numeric): y-coordinate of the origin of the particle system. If
|
9
|
+
# +source+ is set, it has precedence.
|
10
10
|
# - source: if set, must be an object that responds to +x+ and +y+. The
|
11
|
-
# position of the particle system will be updated to
|
12
|
-
#
|
11
|
+
# position of the particle system will be updated to <code>(source.x
|
12
|
+
# + source_offset_x, source.y + source_offset_y)</code> on initialization
|
13
|
+
# and every time +update+ is called.
|
14
|
+
# - source_offset_x (Numeric): horizontal offset relative to the +source+
|
15
|
+
# where the particle system will be positioned. Default: 0.
|
16
|
+
# - source_offset_y (Numeric): vertical offset relative to the +source+
|
17
|
+
# where the particle system will be positioned. Default: 0.
|
13
18
|
# - emission_interval (Integer|Range): interval in frames between each
|
14
19
|
# particle emission. It can be a fixed value or a range, in which case
|
15
20
|
# the interval will be a random value within that range (a new value
|
@@ -64,8 +69,8 @@ module MiniGL
|
|
64
69
|
raise "Particles must have either a shape or an image!" if options[:shape].nil? && options[:img].nil?
|
65
70
|
|
66
71
|
@options = DEFAULT_OPTIONS.merge(options)
|
67
|
-
@x = @options[:source]&.x || @options[:x]
|
68
|
-
@y = @options[:source]&.y || @options[:y]
|
72
|
+
@x = (@options[:source]&.x || @options[:x]) + @options[:source_offset_x]
|
73
|
+
@y = (@options[:source]&.y || @options[:y]) + @options[:source_offset_y]
|
69
74
|
|
70
75
|
@particles = []
|
71
76
|
@emitting = false
|
@@ -87,6 +92,12 @@ module MiniGL
|
|
87
92
|
@emitting = false
|
88
93
|
end
|
89
94
|
|
95
|
+
# Changes particle system origin to <code>(x, y)</code>.
|
96
|
+
def move_to(x, y)
|
97
|
+
@x = x
|
98
|
+
@y = y
|
99
|
+
end
|
100
|
+
|
90
101
|
# Returns a boolean indicating whether this particle system is currently
|
91
102
|
# emitting particles.
|
92
103
|
def emitting?
|
@@ -108,8 +119,8 @@ module MiniGL
|
|
108
119
|
return unless @emitting
|
109
120
|
|
110
121
|
if @options[:source]
|
111
|
-
@x = @options[:source].x
|
112
|
-
@y = @options[:source].y
|
122
|
+
@x = @options[:source].x + @options[:source_offset_x]
|
123
|
+
@y = @options[:source].y + @options[:source_offset_y]
|
113
124
|
end
|
114
125
|
|
115
126
|
@timer += 1
|
@@ -148,6 +159,8 @@ module MiniGL
|
|
148
159
|
x: 0,
|
149
160
|
y: 0,
|
150
161
|
source: nil,
|
162
|
+
source_offset_x: 0,
|
163
|
+
source_offset_y: 0,
|
151
164
|
emission_interval: 10,
|
152
165
|
emission_rate: 1,
|
153
166
|
duration: 30,
|
data/test/particles_game.rb
CHANGED
@@ -3,21 +3,14 @@ require_relative '../lib/minigl'
|
|
3
3
|
include MiniGL
|
4
4
|
|
5
5
|
class MyGame < GameWindow
|
6
|
-
class Source
|
7
|
-
attr_accessor :x, :y
|
8
|
-
|
9
|
-
def initialize(x, y)
|
10
|
-
@x = x
|
11
|
-
@y = y
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
6
|
def initialize
|
16
7
|
super(800, 600, false)
|
17
|
-
@source =
|
8
|
+
@source = Sprite.new(100, 100, :btn)
|
18
9
|
@particles_systems = [
|
19
10
|
Particles.new(
|
20
11
|
source: @source,
|
12
|
+
source_offset_x: 50,
|
13
|
+
source_offset_y: 120,
|
21
14
|
img: Res.img(:square),
|
22
15
|
duration: 30,
|
23
16
|
spread: 50,
|
@@ -59,10 +52,15 @@ class MyGame < GameWindow
|
|
59
52
|
end
|
60
53
|
end
|
61
54
|
|
55
|
+
if KB.key_pressed?(Gosu::KB_Q)
|
56
|
+
@particles_systems[1].move_to(50, 500)
|
57
|
+
end
|
58
|
+
|
62
59
|
@particles_systems.each(&:update)
|
63
60
|
end
|
64
61
|
|
65
62
|
def draw
|
63
|
+
@source.draw
|
66
64
|
@particles_systems.each(&:draw)
|
67
65
|
end
|
68
66
|
end
|