minigl 2.5.1 → 2.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6078cf1c0aafd790460ec6b7723dff865c0a2e78a8359fd8734cd8a6a07aec60
4
- data.tar.gz: 61be9170370e9b912a7c3a7087ca145de121f36b005abf62bfe193ca1dc29ec3
3
+ metadata.gz: 6d76d1851d74339e98ce7cf452a95f001ff0dc5d757641dc22920769905aa0f7
4
+ data.tar.gz: a3ac0315dc9fb04cdafaac737e90678f58d7aea3b694d8662e2cd447f2eb4622
5
5
  SHA512:
6
- metadata.gz: 68d1060caaf63cfe944a924b692c38680833a15fa49412060295904e630d8b73e5b6342abf4febf1ff6d9324e88f61e0a34fa5c9014e70b376cafa10402e0df5
7
- data.tar.gz: ff9db71adca879e4ec8b7044c1864477befb45eff207cdd0dc2b1ff3d97d4f6f3f0255e1d61e6705293d7ab3d490c484543f40cd861545cf1936b5b09d2da590
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.0
46
+ ## Version 2.5.2
47
47
 
48
- * Added `Particles` (particle system) class. Run `test/particles_game.rb` to check its capabilities!
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
 
@@ -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 +source+ is
7
- # set, it has precedence.
8
- # - y: y-coordinate of the origin of the particle system. If +source+ is
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 this object's
12
- # position on initialization and every time +update+ is called.
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] || 0
68
- @y = @options[:source]&.y || @options[:y] || 0
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,
@@ -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 = Source.new(100, 100)
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minigl
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.1
4
+ version: 2.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor David Santos