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 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