minigl 1.2.6 → 1.2.7

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
  SHA1:
3
- metadata.gz: d75703110c27893ced02abaa49767ac4137d1b34
4
- data.tar.gz: c376306e0d0a7838ebae01863302a418408ce840
3
+ metadata.gz: 450b8d40d9d7a949621ae94fac7cdf702742e80a
4
+ data.tar.gz: e70c4b21bcf68daed5a06704dfbbb2cc16234cfe
5
5
  SHA512:
6
- metadata.gz: 221538181848507fc1b079eb9ac34d3c80f4740070641e2a1bfaef34ebe34effce282f36680082c4c6d2051eb9261f48af4b4d25a1428ad913c89cbba1694cad
7
- data.tar.gz: e0f31296045813f211981db2c5c46a8b0fa0a044642072749d9396c14810739f5f6667d5a029d437497217bb605f8fb9cdb2e9302297e4e3bdb6293a98ecb2c0
6
+ metadata.gz: 159a32f1c0ea9688e10d8599984b6d0e65ed4579e49c94b80a02bf77c065d7bceca0127be3a011acf174c6d5cd1067f51996c60e17d9a36ed56dece1e340aa7b
7
+ data.tar.gz: c9bc082ef4e2ce42b531d665ad0be11e65897830fdf4367e6262c2aba790f23bfba857ff4cf01a7d776313a264293b43c9c07851ce6407b73005b1d129d3d3bc
data/README.md CHANGED
@@ -18,11 +18,12 @@ Please note:
18
18
  * The test package is not complete! Most of the functionality
19
19
  provided by the gem is difficult to test automatically, but you can check out
20
20
  this [working game example](https://github.com/victords/aventura-do-saber).
21
- * The [documentation](https://github.com/victords/minigl/wiki) is under
22
- construction.
21
+ * The RDoc documentation is now available.
22
+ * An auxiliary, tutorial-like documentation is under construction
23
+ [here](https://github.com/victords/minigl/wiki).
23
24
 
24
- **Version 1.2.6**
25
+ **Version 1.2.7**
25
26
 
26
- * Added support for character restriction in `TextField`.
27
- * Added `set_position` method to `Button` and `TextField`.
28
- * Added RDoc documentation.
27
+ * Completed and added documentation for the `Effect` class.
28
+ * Slight adjusts in the documentation.
29
+ * Slight adjust in the implementation of `Button`.
@@ -4,6 +4,7 @@ module AGL
4
4
  # This class represents a button.
5
5
  class Button
6
6
  # Creates a button.
7
+ #
7
8
  # Parameters:
8
9
  # [x] The x-coordinate where the button will be drawn in the screen.
9
10
  # [y] The y-coordinate where the button will be drawn in the screen.
@@ -52,7 +53,7 @@ module AGL
52
53
  end
53
54
  @text_color = text_color
54
55
  @center = center
55
- @action = Proc.new &action
56
+ @action = action
56
57
 
57
58
  @state = :up
58
59
  @img_index = 0
@@ -104,6 +105,7 @@ module AGL
104
105
  end
105
106
 
106
107
  # Sets the position of the button in the screen.
108
+ #
107
109
  # Parameters:
108
110
  # [x] The new x-coordinate for the button.
109
111
  # [y] The new y-coordinate for the button.
@@ -121,6 +123,7 @@ module AGL
121
123
  end
122
124
 
123
125
  # Draws the button in the screen.
126
+ #
124
127
  # Parameters:
125
128
  # [alpha] The opacity with which the button will be drawn. Allowed values
126
129
  # vary between 0 (fully transparent) and 255 (fully opaque).
@@ -144,6 +147,7 @@ module AGL
144
147
  attr_reader :text
145
148
 
146
149
  # Creates a new text field.
150
+ #
147
151
  # Parameters:
148
152
  # [x] The x-coordinate where the text field will be drawn in the screen.
149
153
  # [y] The y-coordinate where the text field will be drawn in the screen.
@@ -379,6 +383,7 @@ module AGL
379
383
  end
380
384
 
381
385
  # Sets the text of the text field to the specified value.
386
+ #
382
387
  # Parameters:
383
388
  # [value] The new text to be set. If it's longer than the +max_length+
384
389
  # parameter used in the constructor, it will be truncated to
@@ -420,6 +425,7 @@ module AGL
420
425
  end
421
426
 
422
427
  # Sets the position of the text field in the screen.
428
+ #
423
429
  # Parameters:
424
430
  # [x] The new x-coordinate for the text field.
425
431
  # [y] The new y-coordinate for the text field.
@@ -435,6 +441,7 @@ module AGL
435
441
  end
436
442
 
437
443
  # Draws the text field in the screen.
444
+ #
438
445
  # Parameters:
439
446
  # [alpha] The opacity with which the text field will be drawn. Allowed
440
447
  # values vary between 0 (fully transparent) and 255 (fully opaque).
@@ -13,9 +13,12 @@ module AGL
13
13
  attr_accessor :y
14
14
 
15
15
  # Creates a new sprite.
16
+ #
16
17
  # Parameters:
17
- # [x] The x-coordinate where the sprite will be drawn in the screen.
18
- # [y] The y-coordinate where the sprite will be drawn in the screen.
18
+ # [x] The x-coordinate in the screen (or map) where the sprite will be
19
+ # drawn. This can be modified later via the +x+ attribute.
20
+ # [y] The y-coordinate in the screen (or map) where the sprite will be
21
+ # drawn. This can be modified later via the +y+ attribute.
19
22
  # [img] The path to a PNG image or spritesheet, following the MiniGL
20
23
  # convention: images must be inside a 'data/img' directory, relative
21
24
  # to the code file, and you must only provide the file name, without
@@ -44,6 +47,7 @@ module AGL
44
47
 
45
48
  # Performs time checking to update the image index according to the
46
49
  # sequence of indices and the interval.
50
+ #
47
51
  # Parameters:
48
52
  # [indices] The sequence of image indices used in the animation. The
49
53
  # indices are determined from left to right, and from top to
@@ -63,6 +67,7 @@ module AGL
63
67
  end
64
68
 
65
69
  # Draws the sprite in the screen
70
+ #
66
71
  # Parameters:
67
72
  # [map] A Map object, relative to which the sprite will be drawn (the x
68
73
  # and y coordinates of the sprite will be changed according to the
@@ -101,9 +106,12 @@ module AGL
101
106
  include Movement
102
107
 
103
108
  # Creates a new game object.
109
+ #
104
110
  # Parameters:
105
- # [x] The x-coordinate of the object's bounding box.
106
- # [y] The y-coordinate of the object's bounding box.
111
+ # [x] The x-coordinate of the object's bounding box. This can be modified
112
+ # later via the +x+ attribute.
113
+ # [y] The y-coordinate of the object's bounding box. This can be modified
114
+ # later via the +y+ attribute.
107
115
  # [w] The width of the object's bounding box.
108
116
  # [h] The height of the object's bounding box.
109
117
  # [img] The image or spritesheet for the object.
@@ -133,6 +141,7 @@ module AGL
133
141
 
134
142
  # Resets the animation timer and immediately changes the image index to
135
143
  # the specified value.
144
+ #
136
145
  # Parameters:
137
146
  # [index] The image index to be set.
138
147
  def set_animation index
@@ -147,6 +156,7 @@ module AGL
147
156
  end
148
157
 
149
158
  # Draws the game object in the screen.
159
+ #
150
160
  # Parameters:
151
161
  # [map] A Map object, relative to which the object will be drawn (the x
152
162
  # and y coordinates of the image will be changed according to the
@@ -180,11 +190,38 @@ module AGL
180
190
  end
181
191
  end
182
192
 
183
- # :nodoc: all
193
+ # Represents a visual effect, i.e., a graphic - usually animated - that shows
194
+ # up in the screen, lasts for a given time and "disappears". You should
195
+ # explicitly dispose of references to effects whose attribute +dead+ is set
196
+ # to +true+.
184
197
  class Effect < Sprite
185
- def initialize x, y, life_time, img, sprite_cols = nil, sprite_rows = nil, indices = nil, interval = 1
198
+ # This is +true+ when the effect's lifetime has already passed.
199
+ attr_reader :dead
200
+
201
+ # Creates a new Effect.
202
+ #
203
+ # Parameters:
204
+ # [x] The x-coordinate in the screen (or map) where the effect will be
205
+ # drawn. This can be modified later via the +x+ attribute.
206
+ # [y] The y-coordinate in the screen (or map) where the effect will be
207
+ # drawn. This can be modified later via the +y+ attribute.
208
+ # [img] The image or spritesheet to use for this effect (see Sprite for
209
+ # details on spritesheets).
210
+ # [sprite_cols] (see Sprite)
211
+ # [sprite_rows] (see Sprite)
212
+ # [interval] The interval between steps of the animation, in updates.
213
+ # [indices] The indices to use in the animation. See Sprite#animate for
214
+ # details. If +nil+, it will be the sequence from 0 to
215
+ # <code>sprite_cols * sprite_rows - 1</code>.
216
+ # [lifetime] The lifetime of the effect, in updates. After +update+ is
217
+ # called this number of times, the effect will no longer
218
+ # be visible, even when +draw+ is called, and the +dead+ flag
219
+ # will be set to +true+, so you get to know when to dispose
220
+ # of the Effect object. If +nil+, it will be set to
221
+ # <code>@indices.length * interval</code>, i.e., the exact time
222
+ # needed for one animation cycle to complete.
223
+ def initialize x, y, img, sprite_cols = nil, sprite_rows = nil, interval = 10, indices = nil, lifetime = nil
186
224
  super x, y, img, sprite_cols, sprite_rows
187
- @life_time = life_time
188
225
  @timer = 0
189
226
  if indices
190
227
  @indices = indices
@@ -192,14 +229,24 @@ module AGL
192
229
  @indices = *(0..(@img.length - 1))
193
230
  end
194
231
  @interval = interval
232
+ if lifetime
233
+ @lifetime = lifetime
234
+ else
235
+ @lifetime = @indices.length * interval
236
+ end
195
237
  end
196
238
 
239
+ # Updates the effect, animating and counting its remaining lifetime.
197
240
  def update
198
- animate @indices, @interval
199
- @timer += 1
200
- if @timer == @life_time
201
- @dead = true
241
+ unless @dead
242
+ animate @indices, @interval
243
+ @timer += 1
244
+ @dead = true if @timer == @lifetime
202
245
  end
203
246
  end
247
+
248
+ def draw map = nil, scale_x = 1, scale_y = 1, alpha = 0xff, color = 0xffffff, angle = nil
249
+ super unless @dead
250
+ end
204
251
  end
205
252
  end
@@ -22,6 +22,7 @@ module AGL
22
22
  attr_accessor :h
23
23
 
24
24
  # Creates a new rectangle.
25
+ #
25
26
  # Parameters:
26
27
  # [x] The x-coordinate of the rectangle.
27
28
  # [y] The y-coordinate of the rectangle.
@@ -32,6 +33,7 @@ module AGL
32
33
  end
33
34
 
34
35
  # Returns whether this rectangle intersects another.
36
+ #
35
37
  # Parameters:
36
38
  # [r] The rectangle to check intersection with.
37
39
  def intersects r
@@ -44,6 +46,7 @@ module AGL
44
46
  class Game
45
47
  # Initializes a MiniGL game. This method must be called before any feature
46
48
  # provided by the library can be used.
49
+ #
47
50
  # Parameters:
48
51
  # [window] An instance of a class which inherits from
49
52
  # <code>Gosu::Window</code>. This will be the game window, used
@@ -154,6 +157,7 @@ module AGL
154
157
 
155
158
  # Returns whether the given key is down in the current frame and was not
156
159
  # down in the frame before.
160
+ #
157
161
  # Parameters:
158
162
  # [key] Code of the key to be checked. The available codes are <code>
159
163
  # Gosu::KbUp, Gosu::KbDown, Gosu::KbReturn, Gosu::KbEscape,
@@ -177,6 +181,7 @@ module AGL
177
181
  end
178
182
 
179
183
  # Returns whether the given key is down in the current frame.
184
+ #
180
185
  # Parameters:
181
186
  # [key] Code of the key to be checked. See +key_pressed?+ for details.
182
187
  def self.key_down? key
@@ -185,6 +190,7 @@ module AGL
185
190
 
186
191
  # Returns whether the given key is not down in the current frame but was
187
192
  # down in the frame before.
193
+ #
188
194
  # Parameters:
189
195
  # [key] Code of the key to be checked. See +key_pressed?+ for details.
190
196
  def self.key_released? key
@@ -193,6 +199,7 @@ module AGL
193
199
 
194
200
  # Returns whether the given key is being held down. See
195
201
  # <code>Game.initialize</code> for details.
202
+ #
196
203
  # Parameters:
197
204
  # [key] Code of the key to be checked. See +key_pressed?+ for details.
198
205
  def self.key_held? key
@@ -246,6 +253,7 @@ module AGL
246
253
 
247
254
  # Returns whether the given button is down in the current frame and was
248
255
  # not down in the frame before.
256
+ #
249
257
  # Parameters:
250
258
  # [btn] Button to be checked. Valid values are +:left+, +:middle+ and
251
259
  # +:right+
@@ -254,6 +262,7 @@ module AGL
254
262
  end
255
263
 
256
264
  # Returns whether the given button is down in the current frame.
265
+ #
257
266
  # Parameters:
258
267
  # [btn] Button to be checked. Valid values are +:left+, +:middle+ and
259
268
  # +:right+
@@ -263,6 +272,7 @@ module AGL
263
272
 
264
273
  # Returns whether the given button is not down in the current frame, but
265
274
  # was down in the frame before.
275
+ #
266
276
  # Parameters:
267
277
  # [btn] Button to be checked. Valid values are +:left+, +:middle+ and
268
278
  # +:right+
@@ -271,6 +281,7 @@ module AGL
271
281
  end
272
282
 
273
283
  # Returns whether the given button has just been double clicked.
284
+ #
274
285
  # Parameters:
275
286
  # [btn] Button to be checked. Valid values are +:left+, +:middle+ and
276
287
  # +:right+
@@ -279,6 +290,7 @@ module AGL
279
290
  end
280
291
 
281
292
  # Returns whether the mouse cursor is currently inside the given area.
293
+ #
282
294
  # Parameters:
283
295
  # [x] The x-coordinate of the top left corner of the area.
284
296
  # [y] The y-coordinate of the top left corner of the area.
@@ -317,6 +329,7 @@ module AGL
317
329
  end
318
330
 
319
331
  # Returns a <code>Gosu::Image</code> object.
332
+ #
320
333
  # Parameters:
321
334
  # [id] A string or symbol representing the path to the image. If the file
322
335
  # is inside 'data/img', only the file name is needed. If it's inside
@@ -344,6 +357,7 @@ module AGL
344
357
  # a spritesheet. The image with index 0 will be the top left sprite, and
345
358
  # the following indices raise first from left to right and then from top
346
359
  # to bottom.
360
+ #
347
361
  # Parameters:
348
362
  # [id] A string or symbol representing the path to the image. See +img+
349
363
  # for details.
@@ -366,6 +380,7 @@ module AGL
366
380
  # a tileset. Works the same as +imgs+, except you must provide the tile
367
381
  # size instead of the number of columns and rows, and that the images will
368
382
  # be loaded as tileable.
383
+ #
369
384
  # Parameters:
370
385
  # [id] A string or symbol representing the path to the image. It must be
371
386
  # specified the same way as in +img+, but the base directory is
@@ -387,6 +402,7 @@ module AGL
387
402
 
388
403
  # Returns a <code>Gosu::Sample</code> object. This should be used for
389
404
  # simple and short sound effects.
405
+ #
390
406
  # Parameters:
391
407
  # [id] A string or symbol representing the path to the sound. It must be
392
408
  # specified the same way as in +img+, but the base directory is
@@ -406,6 +422,7 @@ module AGL
406
422
 
407
423
  # Returns a <code>Gosu::Song</code> object. This should be used for the
408
424
  # background musics of your game.
425
+ #
409
426
  # Parameters:
410
427
  # [id] A string or symbol representing the path to the song. It must be
411
428
  # specified the same way as in +img+, but the base directory is
@@ -426,6 +443,7 @@ module AGL
426
443
  # Returns a <code>Gosu::Font</code> object. Fonts are needed to draw text
427
444
  # and used by MiniGL elements like buttons, text fields and TextHelper
428
445
  # objects.
446
+ #
429
447
  # Parameters:
430
448
  # [id] A string or symbol representing the path to the song. It must be
431
449
  # specified the same way as in +img+, but the base directory is
@@ -16,6 +16,7 @@ module AGL
16
16
  attr_reader :cam
17
17
 
18
18
  # Creates a new map.
19
+ #
19
20
  # Parameters:
20
21
  # [t_w] The width of the tiles.
21
22
  # [t_h] The height of the tiles.
@@ -44,6 +45,7 @@ module AGL
44
45
 
45
46
  # Returns the position in the screen corresponding to the given tile
46
47
  # indices.
48
+ #
47
49
  # Parameters:
48
50
  # [map_x] The index of the tile in the horizontal direction. It must be in
49
51
  # the interval <code>0..t_x_count</code>.
@@ -56,6 +58,7 @@ module AGL
56
58
  # Returns the tile in the map that corresponds to the given position in
57
59
  # the screen, as a Vector, where x is the horizontal index and y the
58
60
  # vertical index.
61
+ #
59
62
  # Parameters:
60
63
  # [scr_x] The x-coordinate in the screen.
61
64
  # [scr_y] The y-coordinate in the screen.
@@ -64,6 +67,7 @@ module AGL
64
67
  end
65
68
 
66
69
  # Verifies whether a tile is inside the map.
70
+ #
67
71
  # Parameters:
68
72
  # [v] A Vector representing the tile, with x as the horizontal index and
69
73
  # y as the vertical index.
@@ -73,6 +77,7 @@ module AGL
73
77
 
74
78
  # Sets the top left corner of the viewport to the given position of the
75
79
  # map. Note that this is not the position in the screen.
80
+ #
76
81
  # Parameters:
77
82
  # [cam_x] The x-coordinate inside the map, in pixels (not a tile index).
78
83
  # [cam_y] The y-coordinate inside the map, in pixels (not a tile index).
@@ -83,6 +88,7 @@ module AGL
83
88
  end
84
89
 
85
90
  # Moves the viewport by the given amount of pixels.
91
+ #
86
92
  # Parameters:
87
93
  # [x] The amount of pixels to move horizontally. Negative values will
88
94
  # cause the camera to move to the left.
@@ -22,6 +22,7 @@ module AGL
22
22
  attr_reader :passable
23
23
 
24
24
  # Creates a new block.
25
+ #
25
26
  # Parameters:
26
27
  # [x] The x-coordinate of the top left corner of the bounding box.
27
28
  # [y] The y-coordinate of the top left corner of the bounding box.
@@ -48,6 +49,7 @@ module AGL
48
49
  # to the +ramps+ array parameter of the +move+ method.
49
50
  class Ramp
50
51
  # Creates a new ramp.
52
+ #
51
53
  # Parameters:
52
54
  # [x] The x-coordinate of the top left corner of a rectangle that
53
55
  # completely (and precisely) encloses the ramp (thought of as a right
@@ -71,6 +73,7 @@ module AGL
71
73
  end
72
74
 
73
75
  # Checks if an object is in contact with this ramp (standing over it).
76
+ #
74
77
  # Parameters:
75
78
  # [obj] The object to check contact with. It must have the +x+, +y+, +w+
76
79
  # and +h+ accessible attributes determining its bounding box.
@@ -80,6 +83,7 @@ module AGL
80
83
 
81
84
  # Checks if an object is intersecting this ramp (inside the corresponding
82
85
  # right triangle and at the floor level or above).
86
+ #
83
87
  # Parameters:
84
88
  # [obj] The object to check intersection with. It must have the +x+, +y+,
85
89
  # +w+ and +h+ accessible attributes determining its bounding box.
@@ -176,6 +180,7 @@ module AGL
176
180
 
177
181
  # Moves this object, based on the forces being applied to it, and
178
182
  # performing collision checking.
183
+ #
179
184
  # Parameters:
180
185
  # [forces] A Vector where x is the horizontal component of the resulting
181
186
  # force and y is the vertical component.
@@ -285,6 +290,7 @@ module AGL
285
290
 
286
291
  # Moves this object as an elevator (i.e., potentially carrying other
287
292
  # objects) towards a given point.
293
+ #
288
294
  # Parameters:
289
295
  # [aim] A Vector specifying where the object will move to.
290
296
  # [speed] The constant speed at which the object will move. This must be
@@ -328,6 +334,7 @@ module AGL
328
334
 
329
335
  # Moves this object, without performing any collision checking, towards
330
336
  # the specified point.
337
+ #
331
338
  # Parameters:
332
339
  # [aim] A Vector specifying where the object will move to.
333
340
  # [speed] The constant speed at which the object will move. This must be
@@ -357,6 +364,7 @@ module AGL
357
364
  # method must be called repeatedly, and it returns the value that must be
358
365
  # provided to +cur_point+ after the first call). If obstacles are
359
366
  # provided, it will behave as an elevator (as in +move_carrying+).
367
+ #
360
368
  # Parameters:
361
369
  # [points] An array of Vectors representing the path that the object will
362
370
  # perform.
@@ -3,6 +3,7 @@ module AGL
3
3
  # text, with control over the text alignment and coloring.
4
4
  class TextHelper
5
5
  # Creates a TextHelper.
6
+ #
6
7
  # Parameters:
7
8
  # [font] A <code>Gosu::Font</code> that will be used to draw the text.
8
9
  # [line_spacing] When drawing multiple lines, the distance, in pixels,
@@ -13,6 +14,7 @@ module AGL
13
14
  end
14
15
 
15
16
  # Draws a single line of text.
17
+ #
16
18
  # Parameters:
17
19
  # [text] The text to be drawn. No line breaks are allowed.
18
20
  # [x] The horizontal reference for drawing the text. If +mode+ is +:left+,
@@ -41,6 +43,7 @@ module AGL
41
43
 
42
44
  # Draws text, breaking lines when needed and when explicitly caused by the
43
45
  # "\n" character.
46
+ #
44
47
  # Parameters:
45
48
  # [text] The text to be drawn. Line breaks are allowed.
46
49
  # [x] The horizontal reference for drawing the text. Works like in
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minigl
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.6
4
+ version: 1.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor David Santos
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-17 00:00:00.000000000 Z
11
+ date: 2014-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gosu