minigl 2.0.8 → 2.0.9

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: f2d491becfcc152fa203005e847196c2e8478b16
4
- data.tar.gz: a24b621bb5ba72fcfed720ef25b80bdce7df9e24
3
+ metadata.gz: 545d2e46bcc97bb95ef2ef8a9b150cf5492a4ca6
4
+ data.tar.gz: f35a2fc0ad36a5b640d11b5001521db050b04c50
5
5
  SHA512:
6
- metadata.gz: 7d176e2cdc27315f39b357ba35eaaaaef109891d8187b961b30b73f13dc8b5c14e40619b3f5af470ae07ff49e4eb3f59df9ab16b396f7804611fe9141e2cc273
7
- data.tar.gz: c9e3862fd8dc80b0541f2cddf9db7d83c10d9e17bbd329dd3c56cb14c0dd9d7c80fad90a30fb73f2505709276db950f4cd4429664bf3aa737e241cde35cc7173
6
+ metadata.gz: 0c7cf269750dd3dea9f6bd4f09b17216974dc3cfa4a28cd212d72f6e9210dfecd3a02256a8d0e2b3bf5b21d94011eeb4f703821f694d44d9c0e700ea593f16d4
7
+ data.tar.gz: 3a786d3aa449653647f112ca35e839817f8a74ba5d9712121d78c4d2673bfd9735678be24943a00d481244670cdd64fc7f539b3adb0e1ed8fa16827bfefebf85
data/README.md CHANGED
@@ -25,10 +25,11 @@ After installing the Gosu dependencies, you can just `gem install minigl`.
25
25
 
26
26
  ## Documentation
27
27
 
28
- * The library is 100% RDoc-documented [here](http://www.rubydoc.info/gems/minigl/2.0.5).
28
+ * The library is 100% RDoc-documented [here](http://www.rubydoc.info/gems/minigl).
29
29
  * The [wiki](https://github.com/victords/minigl/wiki) is a work in progress with tutorials and examples.
30
30
  * Test package and examples aren't complete!
31
31
 
32
- ## Version 2.0.8
32
+ ## Version 2.0.9
33
33
 
34
- * Added the `set_speed` option to `Movement#move`.
34
+ * Added the `round` option to `Sprite#draw` and `GameObject#draw`.
35
+ * Fixed `GameObject#draw` when drawing rotated with non-null `img_gap`.
@@ -137,9 +137,12 @@ module MiniGL
137
137
  # to draw it vertically flipped.
138
138
  # [z_index] The z-order to draw the object. Objects with larger z-orders
139
139
  # will be drawn on top of the ones with smaller z-orders.
140
+ # [round] Specify whether the drawing coordinates should be rounded to an
141
+ # integer before drawing, to avoid little distortions of the image.
142
+ # Only applies when the image is not rotated.
140
143
  #
141
144
  # *Obs.:* This method accepts named parameters.
142
- def draw(map = nil, scale_x = 1, scale_y = 1, alpha = 0xff, color = 0xffffff, angle = nil, flip = nil, z_index = 0)
145
+ def draw(map = nil, scale_x = 1, scale_y = 1, alpha = 0xff, color = 0xffffff, angle = nil, flip = nil, z_index = 0, round = false)
143
146
  if map.is_a? Hash
144
147
  scale_x = map.fetch(:scale_x, 1)
145
148
  scale_y = map.fetch(:scale_y, 1)
@@ -148,6 +151,7 @@ module MiniGL
148
151
  angle = map.fetch(:angle, nil)
149
152
  flip = map.fetch(:flip, nil)
150
153
  z_index = map.fetch(:z_index, 0)
154
+ round = map.fetch(:round, false)
151
155
  map = map.fetch(:map, nil)
152
156
  end
153
157
 
@@ -158,8 +162,9 @@ module MiniGL
158
162
  z_index, angle, 0.5, 0.5, (flip == :horiz ? -scale_x : scale_x),
159
163
  (flip == :vert ? -scale_y : scale_y), color
160
164
  else
161
- @img[@img_index].draw @x - (map ? map.cam.x : 0) + (flip == :horiz ? scale_x * @img[0].width : 0),
162
- @y - (map ? map.cam.y : 0) + (flip == :vert ? scale_y * @img[0].height : 0),
165
+ x = @x - (map ? map.cam.x : 0) + (flip == :horiz ? scale_x * @img[0].width : 0)
166
+ y = @y - (map ? map.cam.y : 0) + (flip == :vert ? scale_y * @img[0].height : 0)
167
+ @img[@img_index].draw (round ? x.round : x), (round ? y.round : y),
163
168
  z_index, (flip == :horiz ? -scale_x : scale_x),
164
169
  (flip == :vert ? -scale_y : scale_y), color
165
170
  end
@@ -238,9 +243,12 @@ module MiniGL
238
243
  # to draw it vertically flipped.
239
244
  # [z_index] The z-order to draw the object. Objects with larger z-orders
240
245
  # will be drawn on top of the ones with smaller z-orders.
246
+ # [round] Specify whether the drawing coordinates should be rounded to an
247
+ # integer before drawing, to avoid little distortions of the image.
248
+ # Only applies when the image is not rotated.
241
249
  #
242
250
  # *Obs.:* This method accepts named parameters.
243
- def draw(map = nil, scale_x = 1, scale_y = 1, alpha = 0xff, color = 0xffffff, angle = nil, flip = nil, z_index = 0)
251
+ def draw(map = nil, scale_x = 1, scale_y = 1, alpha = 0xff, color = 0xffffff, angle = nil, flip = nil, z_index = 0, round = false)
244
252
  if map.is_a? Hash
245
253
  scale_x = map.fetch(:scale_x, 1)
246
254
  scale_y = map.fetch(:scale_y, 1)
@@ -249,18 +257,24 @@ module MiniGL
249
257
  angle = map.fetch(:angle, nil)
250
258
  flip = map.fetch(:flip, nil)
251
259
  z_index = map.fetch(:z_index, 0)
260
+ round = map.fetch(:round, false)
252
261
  map = map.fetch(:map, nil)
253
262
  end
254
263
 
255
264
  color = (alpha << 24) | color
256
265
  if angle
257
- @img[@img_index].draw_rot @x + (flip == :horiz ? -1 : 1) * @img_gap.x - (map ? map.cam.x : 0) + @w * 0.5,
258
- @y + (flip == :vert ? -1 : 1) * @img_gap.y - (map ? map.cam.y : 0) + @h * 0.5,
259
- z_index, angle, 0.5, 0.5, (flip == :horiz ? -scale_x : scale_x),
260
- (flip == :vert ? -scale_y : scale_y), color
266
+ center_x = @x + @w * 0.5
267
+ center_y = @y + @h * 0.5
268
+ o_x = center_x - @x - @img_gap.x
269
+ o_y = center_y - @y - @img_gap.y
270
+ @img[@img_index].draw_rot @x + (flip == :horiz ? -1 : 1) * (@img_gap.x + o_x) - (map ? map.cam.x : 0),
271
+ @y + (flip == :vert ? -1 : 1) * (@img_gap.y + o_y) - (map ? map.cam.y : 0),
272
+ z_index, angle, o_x.to_f / @img[0].width, o_y.to_f / @img[0].height,
273
+ (flip == :horiz ? -scale_x : scale_x), (flip == :vert ? -scale_y : scale_y), color
261
274
  else
262
- @img[@img_index].draw @x + (flip == :horiz ? -1 : 1) * @img_gap.x - (map ? map.cam.x : 0) + (flip == :horiz ? @w : 0),
263
- @y + (flip == :vert ? -1 : 1) * @img_gap.y - (map ? map.cam.y : 0) + (flip == :vert ? @h : 0),
275
+ x = @x + (flip == :horiz ? -1 : 1) * @img_gap.x - (map ? map.cam.x : 0) + (flip == :horiz ? @w : 0)
276
+ y = @y + (flip == :vert ? -1 : 1) * @img_gap.y - (map ? map.cam.y : 0) + (flip == :vert ? @h : 0)
277
+ @img[@img_index].draw (round ? x.round : x), (round ? y.round : y),
264
278
  z_index, (flip == :horiz ? -scale_x : scale_x),
265
279
  (flip == :vert ? -scale_y : scale_y), color
266
280
  end
Binary file
@@ -0,0 +1,76 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
6
+ xmlns:cc="http://creativecommons.org/ns#"
7
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8
+ xmlns:svg="http://www.w3.org/2000/svg"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12
+ width="100"
13
+ height="100"
14
+ viewBox="0 0 100 100"
15
+ id="svg2"
16
+ version="1.1"
17
+ inkscape:version="0.91 r13725"
18
+ sodipodi:docname="square3.svg"
19
+ inkscape:export-filename="/home/victor/aleva/minigl/test/data/img/square3.png"
20
+ inkscape:export-xdpi="90"
21
+ inkscape:export-ydpi="90">
22
+ <defs
23
+ id="defs4" />
24
+ <sodipodi:namedview
25
+ id="base"
26
+ pagecolor="#ffffff"
27
+ bordercolor="#666666"
28
+ borderopacity="1.0"
29
+ inkscape:pageopacity="0.0"
30
+ inkscape:pageshadow="2"
31
+ inkscape:zoom="8.62"
32
+ inkscape:cx="50"
33
+ inkscape:cy="50"
34
+ inkscape:document-units="px"
35
+ inkscape:current-layer="layer1"
36
+ showgrid="false"
37
+ inkscape:snap-global="false"
38
+ units="px"
39
+ inkscape:window-width="1920"
40
+ inkscape:window-height="1025"
41
+ inkscape:window-x="0"
42
+ inkscape:window-y="0"
43
+ inkscape:window-maximized="1" />
44
+ <metadata
45
+ id="metadata7">
46
+ <rdf:RDF>
47
+ <cc:Work
48
+ rdf:about="">
49
+ <dc:format>image/svg+xml</dc:format>
50
+ <dc:type
51
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
52
+ <dc:title></dc:title>
53
+ </cc:Work>
54
+ </rdf:RDF>
55
+ </metadata>
56
+ <g
57
+ inkscape:label="Layer 1"
58
+ inkscape:groupmode="layer"
59
+ id="layer1"
60
+ transform="translate(0,-952.36216)">
61
+ <rect
62
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.2"
63
+ id="rect4133"
64
+ width="100"
65
+ height="100"
66
+ x="0"
67
+ y="952.36218" />
68
+ <rect
69
+ y="1002.3622"
70
+ x="50"
71
+ height="40"
72
+ width="40"
73
+ id="rect4135"
74
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.2" />
75
+ </g>
76
+ </svg>
data/test/game.rb CHANGED
@@ -6,10 +6,11 @@ class MyGame < GameWindow
6
6
  super 800, 600, false
7
7
 
8
8
  # @img = Res.img :img1
9
- @obj1 = GameObject.new 10, 10, 80, 80, :img1, Vector.new(-10, -10)
9
+ @obj1 = GameObject.new 50, 50, 40, 40, :square3, Vector.new(-50, -50)
10
10
  @obj2 = Sprite.new 400, 0, :img1
11
11
  @obj3 = GameObject.new 4, 50, 24, 24, :check, Vector.new(-4, -4), 2, 4
12
12
  @obj3.set_animation 1
13
+ @obj4 = Sprite.new 500, 0, :img1
13
14
  @objs = []
14
15
  8.times { @objs << GameObject.new(384, 284, 32, 32, :check, Vector.new(0, 0), 2, 4) }
15
16
  @flip = nil
@@ -43,10 +44,10 @@ class MyGame < GameWindow
43
44
 
44
45
  def update
45
46
  KB.update
46
- @obj1.y -= 1 if KB.key_held? Gosu::KbUp
47
- @obj1.x += 1 if KB.key_down? Gosu::KbRight
48
- @obj1.y += 1 if KB.key_held? Gosu::KbDown
49
- @obj1.x -= 1 if KB.key_down? Gosu::KbLeft
47
+ begin @obj1.y -= 0.714; @obj4.y -= 0.714 end if KB.key_held? Gosu::KbUp
48
+ begin @obj1.x += 0.714; @obj4.x += 0.714 end if KB.key_down? Gosu::KbRight
49
+ begin @obj1.y += 0.714; @obj4.y += 0.714 end if KB.key_held? Gosu::KbDown
50
+ begin @obj1.x -= 0.714; @obj4.x -= 0.714 end if KB.key_down? Gosu::KbLeft
50
51
  @btn.set_position rand(700), rand(550) if KB.key_pressed? Gosu::KbSpace
51
52
  @btn.enabled = !@btn.enabled if KB.key_pressed? Gosu::KbLeftControl
52
53
  @chk.checked = false if KB.key_pressed? Gosu::KbEscape
@@ -70,8 +71,8 @@ class MyGame < GameWindow
70
71
 
71
72
  Mouse.update
72
73
  if Mouse.double_click? :left
73
- @obj1.x = Mouse.x + 10
74
- @obj1.y = Mouse.y + 10
74
+ @obj1.x = Mouse.x
75
+ @obj1.y = Mouse.y
75
76
  end
76
77
  if Mouse.button_released? :right
77
78
  if @flip.nil?; @flip = :horiz
@@ -100,6 +101,7 @@ class MyGame < GameWindow
100
101
  @obj1.draw color: 0x33ff33, angle: (@angle == 0 ? nil : @angle)
101
102
  @obj2.draw angle: (@angle == 0 ? nil : @angle), scale_x: 0.5, scale_y: 1.4
102
103
  @obj3.draw flip: @flip
104
+ @obj4.draw round: true
103
105
  @objs.each { |o| o.draw }
104
106
  @writer1.write_line text: 'Testing effect 1', x: 400, y: 260, color: 0xffffff, effect: :border
105
107
  @writer2.write_line 'Second effect test', 400, 280, :center, 0xffffff, 255, :border, 0xff0000, 2
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: 2.0.8
4
+ version: 2.0.9
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: 2017-11-29 00:00:00.000000000 Z
11
+ date: 2018-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gosu
@@ -53,6 +53,8 @@ files:
53
53
  - test/data/img/square.svg
54
54
  - test/data/img/square2.png
55
55
  - test/data/img/square2.svg
56
+ - test/data/img/square3.png
57
+ - test/data/img/square3.svg
56
58
  - test/data/img/sub/image.png
57
59
  - test/data/img/text.png
58
60
  - test/data/img/tile1.png
@@ -111,8 +113,10 @@ test_files:
111
113
  - test/data/tileset/tileset1.png
112
114
  - test/data/img/check.png
113
115
  - test/data/img/image.png
116
+ - test/data/img/square3.png
114
117
  - test/data/img/square.svg
115
118
  - test/data/img/tile2b.png
119
+ - test/data/img/square3.svg
116
120
  - test/data/img/text.png
117
121
  - test/data/img/img1.png
118
122
  - test/data/img/barfg.svg