minigl 1.2.3 → 1.2.4
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/README.md +4 -4
- data/lib/minigl/forms.rb +69 -43
- data/lib/minigl/map.rb +24 -22
- data/lib/minigl/movement.rb +53 -46
- data/lib/minigl/text.rb +6 -2
- data/test/game.rb +5 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 33a7e31b76d2c0a419ac03bc766d6007650129df
|
4
|
+
data.tar.gz: 2fb3a8a9df9915b64e241b09363d3191494d2297
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 676c67bd7a8475cd4f46dab03cad823d40b20b7b1e504b3b443d074d441f72473af077cf37dffb2c4830a17c2d86289ad5fa9c6d948d32fc80977cb1cbbb988f
|
7
|
+
data.tar.gz: a680e44471368044703cd69557329ffc70340a9281c796d992c54a959ce4214b1c05e84f2ec74dfe126cddf9b2fdc3045b1a344d878e7e79d660ca265b836124
|
data/README.md
CHANGED
@@ -21,8 +21,8 @@ this [working game example](https://github.com/victords/aventura-do-saber).
|
|
21
21
|
* The [documentation](https://github.com/victords/minigl/wiki) is under
|
22
22
|
construction.
|
23
23
|
|
24
|
-
**Version 1.2.
|
24
|
+
**Version 1.2.4**
|
25
25
|
|
26
|
-
*
|
27
|
-
*
|
28
|
-
|
26
|
+
* Moved color options from `draw` to `initialize` in `Button` and `TextField`.
|
27
|
+
* Added focus control to `TextField`.
|
28
|
+
* Marked some methods of various classes as private.
|
data/lib/minigl/forms.rb
CHANGED
@@ -2,12 +2,13 @@ require_relative 'global'
|
|
2
2
|
|
3
3
|
module AGL
|
4
4
|
class Button
|
5
|
-
def initialize x, y, font, text, img, center = true, margin_x = 0, margin_y = 0, &action
|
5
|
+
def initialize x, y, font, text, img, text_color = 0, center = true, margin_x = 0, margin_y = 0, &action
|
6
6
|
@x = x
|
7
7
|
@y = y
|
8
8
|
@font = font
|
9
9
|
@text = text
|
10
10
|
@img = Res.imgs img, 1, 3, true
|
11
|
+
@text_color = text_color
|
11
12
|
@w = @img[0].width
|
12
13
|
@h = @img[0].height
|
13
14
|
if center
|
@@ -62,9 +63,9 @@ module AGL
|
|
62
63
|
end
|
63
64
|
end
|
64
65
|
|
65
|
-
def draw
|
66
|
+
def draw alpha = 0xff
|
66
67
|
color = (alpha << 24) | 0xffffff
|
67
|
-
text_color = (alpha << 24) | text_color
|
68
|
+
text_color = (alpha << 24) | @text_color
|
68
69
|
@img[@img_index].draw @x, @y, 0, 1, 1, color
|
69
70
|
if @center
|
70
71
|
@font.draw_rel @text, @text_x, @text_y, 0, 0.5, 0.5, 1, 1, text_color
|
@@ -77,7 +78,8 @@ module AGL
|
|
77
78
|
class TextField
|
78
79
|
attr_reader :text
|
79
80
|
|
80
|
-
def initialize x, y, font, img, cursor_img = nil,
|
81
|
+
def initialize x, y, font, img, cursor_img = nil, margin_x = 0, margin_y = 0, max_length = 100, active = false,
|
82
|
+
text = "", text_color = 0, selection_color = 0
|
81
83
|
@x = x
|
82
84
|
@y = y
|
83
85
|
@font = font
|
@@ -85,14 +87,17 @@ module AGL
|
|
85
87
|
@w = @img.width
|
86
88
|
@h = @img.height
|
87
89
|
@cursor_img = Res.img(cursor_img) if cursor_img
|
90
|
+
@max_length = max_length
|
91
|
+
@active = active
|
88
92
|
@text = text
|
89
93
|
@text_x = x + margin_x
|
90
94
|
@text_y = y + margin_y
|
91
|
-
@
|
95
|
+
@text_color = text_color
|
96
|
+
@selection_color = selection_color
|
92
97
|
|
93
98
|
@nodes = [x + margin_x]
|
94
99
|
@cur_node = 0
|
95
|
-
@cursor_visible =
|
100
|
+
@cursor_visible = false
|
96
101
|
@cursor_timer = 0
|
97
102
|
|
98
103
|
@k = [
|
@@ -135,30 +140,48 @@ module AGL
|
|
135
140
|
@text[min..max]
|
136
141
|
end
|
137
142
|
|
143
|
+
def focus
|
144
|
+
@active = true
|
145
|
+
end
|
146
|
+
|
138
147
|
def update
|
139
148
|
################################ Mouse ################################
|
140
149
|
if Mouse.over? @x, @y, @w, @h
|
141
|
-
if Mouse.
|
150
|
+
if not @active and Mouse.button_pressed? :left
|
151
|
+
@active = true
|
152
|
+
end
|
153
|
+
elsif Mouse.button_pressed? :left
|
154
|
+
@anchor1 = @anchor2 = nil
|
155
|
+
@cursor_visible = false
|
156
|
+
@cursor_timer = 0
|
157
|
+
@active = false
|
158
|
+
end
|
159
|
+
|
160
|
+
return unless @active
|
161
|
+
|
162
|
+
if Mouse.double_click? :left
|
163
|
+
if @nodes.size > 1
|
142
164
|
@anchor1 = 0
|
143
165
|
@anchor2 = @nodes.size - 1
|
144
166
|
@cur_node = @anchor2
|
145
|
-
|
146
|
-
elsif Mouse.button_pressed? :left
|
147
|
-
set_node_by_mouse
|
148
|
-
@anchor1 = @cur_node
|
149
|
-
@anchor2 = nil
|
150
|
-
set_cursor_visible
|
167
|
+
@double_clicked = true
|
151
168
|
end
|
152
|
-
|
153
|
-
|
154
|
-
|
169
|
+
set_cursor_visible
|
170
|
+
elsif Mouse.button_pressed? :left
|
171
|
+
set_node_by_mouse
|
172
|
+
@anchor1 = @cur_node
|
173
|
+
@anchor2 = nil
|
174
|
+
@double_clicked = false
|
175
|
+
set_cursor_visible
|
176
|
+
elsif Mouse.button_down? :left
|
177
|
+
if @anchor1 and not @double_clicked
|
155
178
|
set_node_by_mouse
|
156
179
|
if @cur_node != @anchor1; @anchor2 = @cur_node
|
157
180
|
else; @anchor2 = nil; end
|
158
181
|
set_cursor_visible
|
159
182
|
end
|
160
183
|
elsif Mouse.button_released? :left
|
161
|
-
if @anchor1
|
184
|
+
if @anchor1 and not @double_clicked
|
162
185
|
if @cur_node != @anchor1; @anchor2 = @cur_node
|
163
186
|
else; @anchor1 = nil; end
|
164
187
|
end
|
@@ -282,6 +305,35 @@ module AGL
|
|
282
305
|
end
|
283
306
|
end
|
284
307
|
|
308
|
+
def draw alpha = 0xff
|
309
|
+
color = (alpha << 24) | 0xffffff
|
310
|
+
text_color = (alpha << 24) | @text_color
|
311
|
+
@img.draw @x, @y, 0, 1, 1, color
|
312
|
+
@font.draw @text, @text_x, @text_y, 0, 1, 1, text_color
|
313
|
+
|
314
|
+
if @anchor1 and @anchor2
|
315
|
+
selection_color = ((alpha / 2) << 24) | @selection_color
|
316
|
+
Game.window.draw_quad @nodes[@anchor1], @text_y, selection_color,
|
317
|
+
@nodes[@anchor2] + 1, @text_y, selection_color,
|
318
|
+
@nodes[@anchor2] + 1, @text_y + @font.height, selection_color,
|
319
|
+
@nodes[@anchor1], @text_y + @font.height, selection_color, 0
|
320
|
+
end
|
321
|
+
|
322
|
+
if @cursor_visible
|
323
|
+
if @cursor_img
|
324
|
+
@cursor_img.draw @nodes[@cur_node] - @cursor_img.width / 2, @text_y, 0
|
325
|
+
else
|
326
|
+
cursor_color = alpha << 24
|
327
|
+
Game.window.draw_quad @nodes[@cur_node], @text_y, cursor_color,
|
328
|
+
@nodes[@cur_node] + 1, @text_y, cursor_color,
|
329
|
+
@nodes[@cur_node] + 1, @text_y + @font.height, cursor_color,
|
330
|
+
@nodes[@cur_node], @text_y + @font.height, cursor_color, 0
|
331
|
+
end
|
332
|
+
end
|
333
|
+
end
|
334
|
+
|
335
|
+
private
|
336
|
+
|
285
337
|
def set_cursor_visible
|
286
338
|
@cursor_visible = true
|
287
339
|
@cursor_timer = 0
|
@@ -342,31 +394,5 @@ module AGL
|
|
342
394
|
end
|
343
395
|
set_cursor_visible
|
344
396
|
end
|
345
|
-
|
346
|
-
def draw text_color = 0, selection_color = 0, alpha = 0xff
|
347
|
-
color = (alpha << 24) | 0xffffff
|
348
|
-
text_color = (alpha << 24) | text_color
|
349
|
-
@img.draw @x, @y, 0, 1, 1, color
|
350
|
-
@font.draw @text, @text_x, @text_y, 0, 1, 1, text_color
|
351
|
-
|
352
|
-
if @anchor1 and @anchor2
|
353
|
-
selection_color = ((alpha / 2) << 24) | selection_color
|
354
|
-
Game.window.draw_quad @nodes[@anchor1], @text_y, selection_color,
|
355
|
-
@nodes[@anchor2] + 1, @text_y, selection_color,
|
356
|
-
@nodes[@anchor2] + 1, @text_y + @font.height, selection_color,
|
357
|
-
@nodes[@anchor1], @text_y + @font.height, selection_color, 0
|
358
|
-
end
|
359
|
-
|
360
|
-
if @cursor_visible
|
361
|
-
if @cursor_img; @cursor_img.draw @nodes[@cur_node] - @cursor_img.width / 2, @text_y, 0
|
362
|
-
else
|
363
|
-
cursor_color = (alpha << 24) | 0
|
364
|
-
Game.window.draw_quad @nodes[@cur_node], @text_y, cursor_color,
|
365
|
-
@nodes[@cur_node] + 1, @text_y, cursor_color,
|
366
|
-
@nodes[@cur_node] + 1, @text_y + @font.height, cursor_color,
|
367
|
-
@nodes[@cur_node], @text_y + @font.height, cursor_color, 0
|
368
|
-
end
|
369
|
-
end
|
370
|
-
end
|
371
397
|
end
|
372
398
|
end
|
data/lib/minigl/map.rb
CHANGED
@@ -3,7 +3,7 @@ require_relative 'global'
|
|
3
3
|
module AGL
|
4
4
|
class Map
|
5
5
|
attr_reader :tile_size, :size, :cam
|
6
|
-
|
6
|
+
|
7
7
|
def initialize t_w, t_h, t_x_count, t_y_count, scr_w = 800, scr_h = 600
|
8
8
|
@tile_size = Vector.new t_w, t_h
|
9
9
|
@size = Vector.new t_x_count, t_y_count
|
@@ -11,39 +11,49 @@ module AGL
|
|
11
11
|
@max_x = t_x_count * t_w - scr_w
|
12
12
|
@max_y = t_y_count * t_h - scr_h
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
def get_absolute_size
|
16
16
|
Vector.new(@tile_size.x * @size.x, @tile_size.y * @size.y)
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
def get_center
|
20
20
|
Vector.new(@tile_size.x * @size.x / 2, @tile_size.y * @size.y / 2)
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
def get_screen_pos map_x, map_y
|
24
24
|
Vector.new(map_x * @tile_size.x - @cam.x, map_y * @tile_size.y - @cam.y)
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
def get_map_pos scr_x, scr_y
|
28
28
|
Vector.new((scr_x + @cam.x) / @tile_size.x, (scr_y + @cam.y) / @tile_size.y)
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
def is_in_map v
|
32
32
|
v.x >= 0 && v.y >= 0 && v.x < @size.x && v.y < @size.y
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
def set_camera cam_x, cam_y
|
36
36
|
@cam.x = cam_x
|
37
37
|
@cam.y = cam_y
|
38
38
|
set_bounds
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
def move_camera x, y
|
42
42
|
@cam.x += x
|
43
43
|
@cam.y += y
|
44
44
|
set_bounds
|
45
45
|
end
|
46
|
-
|
46
|
+
|
47
|
+
def foreach
|
48
|
+
for j in @min_vis_y..@max_vis_y
|
49
|
+
for i in @min_vis_x..@max_vis_x
|
50
|
+
yield i, j, i * @tile_size.x - @cam.x, j * @tile_size.y - @cam.y
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
47
57
|
def set_bounds
|
48
58
|
@cam.x = @cam.x.round
|
49
59
|
@cam.y = @cam.y.round
|
@@ -51,31 +61,23 @@ module AGL
|
|
51
61
|
@cam.x = @max_x if @cam.x > @max_x
|
52
62
|
@cam.y = 0 if @cam.y < 0
|
53
63
|
@cam.y = @max_y if @cam.y > @max_y
|
54
|
-
|
64
|
+
|
55
65
|
@min_vis_x = @cam.x / @tile_size.x
|
56
66
|
@min_vis_y = @cam.y / @tile_size.y
|
57
67
|
@max_vis_x = (@cam.x + @cam.w - 1) / @tile_size.x
|
58
68
|
@max_vis_y = (@cam.y + @cam.h - 1) / @tile_size.y
|
59
|
-
|
69
|
+
|
60
70
|
if @min_vis_y < 0; @min_vis_y = 0
|
61
71
|
elsif @min_vis_y > @size.y - 1; @min_vis_y = @size.y - 1; end
|
62
|
-
|
72
|
+
|
63
73
|
if @max_vis_y < 0; @max_vis_y = 0
|
64
74
|
elsif @max_vis_y > @size.y - 1; @max_vis_y = @size.y - 1; end
|
65
|
-
|
75
|
+
|
66
76
|
if @min_vis_x < 0; @min_vis_x = 0
|
67
77
|
elsif @min_vis_x > @size.x - 1; @min_vis_x = @size.x - 1; end
|
68
|
-
|
78
|
+
|
69
79
|
if @max_vis_x < 0; @max_vis_x = 0
|
70
80
|
elsif @max_vis_x > @size.x - 1; @max_vis_x = @size.x - 1; end
|
71
81
|
end
|
72
|
-
|
73
|
-
def foreach
|
74
|
-
for j in @min_vis_y..@max_vis_y
|
75
|
-
for i in @min_vis_x..@max_vis_x
|
76
|
-
yield i, j, i * @tile_size.x - @cam.x, j * @tile_size.y - @cam.y
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
82
|
end
|
81
83
|
end
|
data/lib/minigl/movement.rb
CHANGED
@@ -173,52 +173,6 @@ module AGL
|
|
173
173
|
end
|
174
174
|
check_contact obst, ramps
|
175
175
|
end
|
176
|
-
def check_contact obst, ramps
|
177
|
-
@top = @bottom = @left = @right = nil
|
178
|
-
obst.each do |o|
|
179
|
-
x2 = @x + @w; y2 = @y + @h; x2o = o.x + o.w; y2o = o.y + o.h
|
180
|
-
@right = o if !o.passable && x2.round(6) == o.x.round(6) && y2 > o.y && @y < y2o
|
181
|
-
@left = o if !o.passable && @x.round(6) == x2o.round(6) && y2 > o.y && @y < y2o
|
182
|
-
@bottom = o if y2.round(6) == o.y.round(6) && x2 > o.x && @x < x2o
|
183
|
-
@top = o if !o.passable && @y.round(6) == y2o.round(6) && x2 > o.x && @x < x2o
|
184
|
-
end
|
185
|
-
if @bottom.nil?
|
186
|
-
ramps.each do |r|
|
187
|
-
if r.contact? self
|
188
|
-
@bottom = r
|
189
|
-
break
|
190
|
-
end
|
191
|
-
end
|
192
|
-
end
|
193
|
-
end
|
194
|
-
def find_right_limit coll_list
|
195
|
-
limit = @x + @w + @speed.x
|
196
|
-
coll_list.each do |c|
|
197
|
-
limit = c.x if !c.passable && c.x < limit
|
198
|
-
end
|
199
|
-
limit
|
200
|
-
end
|
201
|
-
def find_left_limit coll_list
|
202
|
-
limit = @x + @speed.x
|
203
|
-
coll_list.each do |c|
|
204
|
-
limit = c.x + c.w if !c.passable && c.x + c.w > limit
|
205
|
-
end
|
206
|
-
limit
|
207
|
-
end
|
208
|
-
def find_down_limit coll_list
|
209
|
-
limit = @y + @h + @speed.y
|
210
|
-
coll_list.each do |c|
|
211
|
-
limit = c.y if c.y < limit && c.y >= @y + @h
|
212
|
-
end
|
213
|
-
limit
|
214
|
-
end
|
215
|
-
def find_up_limit coll_list
|
216
|
-
limit = @y + @speed.y
|
217
|
-
coll_list.each do |c|
|
218
|
-
limit = c.y + c.h if !c.passable && c.y + c.h > limit
|
219
|
-
end
|
220
|
-
limit
|
221
|
-
end
|
222
176
|
|
223
177
|
def move_carrying aim, speed, obstacles
|
224
178
|
x_d = aim.x - @x; y_d = aim.y - @y
|
@@ -286,5 +240,58 @@ module AGL
|
|
286
240
|
end
|
287
241
|
cur_point
|
288
242
|
end
|
243
|
+
|
244
|
+
private
|
245
|
+
|
246
|
+
def check_contact obst, ramps
|
247
|
+
@top = @bottom = @left = @right = nil
|
248
|
+
obst.each do |o|
|
249
|
+
x2 = @x + @w; y2 = @y + @h; x2o = o.x + o.w; y2o = o.y + o.h
|
250
|
+
@right = o if !o.passable && x2.round(6) == o.x.round(6) && y2 > o.y && @y < y2o
|
251
|
+
@left = o if !o.passable && @x.round(6) == x2o.round(6) && y2 > o.y && @y < y2o
|
252
|
+
@bottom = o if y2.round(6) == o.y.round(6) && x2 > o.x && @x < x2o
|
253
|
+
@top = o if !o.passable && @y.round(6) == y2o.round(6) && x2 > o.x && @x < x2o
|
254
|
+
end
|
255
|
+
if @bottom.nil?
|
256
|
+
ramps.each do |r|
|
257
|
+
if r.contact? self
|
258
|
+
@bottom = r
|
259
|
+
break
|
260
|
+
end
|
261
|
+
end
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
265
|
+
def find_right_limit coll_list
|
266
|
+
limit = @x + @w + @speed.x
|
267
|
+
coll_list.each do |c|
|
268
|
+
limit = c.x if !c.passable && c.x < limit
|
269
|
+
end
|
270
|
+
limit
|
271
|
+
end
|
272
|
+
|
273
|
+
def find_left_limit coll_list
|
274
|
+
limit = @x + @speed.x
|
275
|
+
coll_list.each do |c|
|
276
|
+
limit = c.x + c.w if !c.passable && c.x + c.w > limit
|
277
|
+
end
|
278
|
+
limit
|
279
|
+
end
|
280
|
+
|
281
|
+
def find_down_limit coll_list
|
282
|
+
limit = @y + @h + @speed.y
|
283
|
+
coll_list.each do |c|
|
284
|
+
limit = c.y if c.y < limit && c.y >= @y + @h
|
285
|
+
end
|
286
|
+
limit
|
287
|
+
end
|
288
|
+
|
289
|
+
def find_up_limit coll_list
|
290
|
+
limit = @y + @speed.y
|
291
|
+
coll_list.each do |c|
|
292
|
+
limit = c.y + c.h if !c.passable && c.y + c.h > limit
|
293
|
+
end
|
294
|
+
limit
|
295
|
+
end
|
289
296
|
end
|
290
297
|
end
|
data/lib/minigl/text.rb
CHANGED
@@ -5,7 +5,8 @@ module AGL
|
|
5
5
|
@line_spacing = line_spacing
|
6
6
|
end
|
7
7
|
|
8
|
-
def write_line text, x, y, mode = :left, color =
|
8
|
+
def write_line text, x, y, mode = :left, color = 0, alpha = 0xff
|
9
|
+
color = (alpha << 24) | color
|
9
10
|
rel =
|
10
11
|
case mode
|
11
12
|
when :left then 0
|
@@ -16,7 +17,8 @@ module AGL
|
|
16
17
|
@font.draw_rel text, x, y, 0, rel, 0, 1, 1, color
|
17
18
|
end
|
18
19
|
|
19
|
-
def write_breaking text, x, y, width, mode = :left, color =
|
20
|
+
def write_breaking text, x, y, width, mode = :left, color = 0, alpha = 0xff
|
21
|
+
color = (alpha << 24) | color
|
20
22
|
text.split("\n").each do |p|
|
21
23
|
if mode == :justified
|
22
24
|
y = write_paragraph_justified p, x, y, width, color
|
@@ -33,6 +35,8 @@ module AGL
|
|
33
35
|
end
|
34
36
|
end
|
35
37
|
|
38
|
+
private
|
39
|
+
|
36
40
|
def write_paragraph text, x, y, width, rel, color
|
37
41
|
line = ""
|
38
42
|
line_width = 0
|
data/test/game.rb
CHANGED
@@ -4,15 +4,15 @@ include AGL
|
|
4
4
|
class MyGame < Gosu::Window
|
5
5
|
def initialize
|
6
6
|
super 800, 600, false # creating a 800 x 600 window, not full screen
|
7
|
-
Game.initialize self, Vector.new(0, 1), 10, 2
|
7
|
+
Game.initialize self, Vector.new(0, 1), 10, 2
|
8
8
|
|
9
9
|
@obj1 = GameObject.new 10, 10, 80, 80, :img1, Vector.new(-10, -10)
|
10
10
|
@obj2 = Sprite.new 400, 0, :img1
|
11
11
|
|
12
12
|
@font = Res.font :font1, 20
|
13
13
|
@writer = TextHelper.new @font, 5
|
14
|
-
@btn = Button.new(10, 560, @font, "Test", :btn, false, 15, 5) {}
|
15
|
-
@txt = TextField.new 10, 520, @font, :text, nil,
|
14
|
+
@btn = Button.new(10, 560, @font, "Test", :btn, 0x008000, false, 15, 5) {}
|
15
|
+
@txt = TextField.new 10, 520, @font, :text, nil, 15, 5, 16, false, "", 0, 0x0000ff
|
16
16
|
end
|
17
17
|
|
18
18
|
def needs_cursor?
|
@@ -44,8 +44,8 @@ class MyGame < Gosu::Window
|
|
44
44
|
"Furthermore, the text must be right-aligned.",
|
45
45
|
780, 300, 300, :right
|
46
46
|
|
47
|
-
@btn.draw
|
48
|
-
@txt.draw
|
47
|
+
@btn.draw 0xcc
|
48
|
+
@txt.draw
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
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.
|
4
|
+
version: 1.2.4
|
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-
|
11
|
+
date: 2014-07-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gosu
|