minigl 1.2.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/lib/minigl/global.rb +41 -33
- data/test/game.rb +9 -5
- metadata +16 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ee71302e4c1c310af7e3c6357b99d7678c26c7a2
|
4
|
+
data.tar.gz: 828af95552ce471ca273253326553c483421ea23
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 679b54d84b1c9df920e8fa425532554c1ee4d9abc651c38bf222e74dcb9469548aad710656be78e5d7807bfad6d576cb60fba73c03887f426ffaf6ba6d8c310b
|
7
|
+
data.tar.gz: d36f9fee78e3fcd54a47d422f5bfa82fee2479e6ec47f7d2ffe560703ba09e063645017f0c490a2f4363472d70f59f3029dc5a6e79f935e3957c8e50c1095702
|
data/README.md
CHANGED
@@ -10,7 +10,8 @@ It provides the following features:
|
|
10
10
|
* Basic physics and collision checking
|
11
11
|
* Animated objects
|
12
12
|
|
13
|
-
More functionalities are coming. Feel free to contribute!
|
13
|
+
More functionalities are coming. Feel free to contribute! You can send feedback
|
14
|
+
to victordavidsantos@gmail.com.
|
14
15
|
|
15
16
|
Please note:
|
16
17
|
|
data/lib/minigl/global.rb
CHANGED
@@ -2,23 +2,28 @@ require 'gosu'
|
|
2
2
|
|
3
3
|
module AGL
|
4
4
|
Vector = Struct.new :x, :y
|
5
|
-
|
5
|
+
|
6
6
|
class Rectangle
|
7
7
|
attr_accessor :x, :y, :w, :h
|
8
|
-
|
8
|
+
|
9
9
|
def initialize x, y, w, h
|
10
10
|
@x = x; @y = y; @w = w; @h = h
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
def intersects r
|
14
14
|
@x < r.x + r.w && @x + @w > r.x && @y < r.y + r.h && @y + @h > r.y
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
18
|
class Game
|
19
|
-
def self.initialize window, gravity = Vector.new(0, 1)
|
19
|
+
def self.initialize window, gravity = Vector.new(0, 1),
|
20
|
+
kb_held_delay = 40, kb_held_interval = 5,
|
21
|
+
double_click_delay = 8
|
20
22
|
@@window = window
|
21
23
|
@@gravity = gravity
|
24
|
+
@@kb_held_delay = kb_held_delay
|
25
|
+
@@kb_held_interval = kb_held_interval
|
26
|
+
@@double_click_delay = double_click_delay
|
22
27
|
|
23
28
|
KB.initialize
|
24
29
|
Mouse.initialize
|
@@ -27,10 +32,13 @@ module AGL
|
|
27
32
|
|
28
33
|
def self.window; @@window; end
|
29
34
|
def self.gravity; @@gravity; end
|
35
|
+
def self.kb_held_delay; @@kb_held_delay; end
|
36
|
+
def self.kb_held_interval; @@kb_held_interval; end
|
37
|
+
def self.double_click_delay; @@double_click_delay; end
|
30
38
|
end
|
31
39
|
|
32
40
|
#class JSHelper
|
33
|
-
|
41
|
+
|
34
42
|
class KB
|
35
43
|
def self.initialize
|
36
44
|
@@keys = [
|
@@ -57,18 +65,18 @@ module AGL
|
|
57
65
|
@@held_timer = {}
|
58
66
|
@@held_interval = {}
|
59
67
|
end
|
60
|
-
|
68
|
+
|
61
69
|
def self.update
|
62
70
|
@@held_timer.each do |k, v|
|
63
|
-
if v <
|
71
|
+
if v < Game.kb_held_delay; @@held_timer[k] += 1
|
64
72
|
else
|
65
73
|
@@held_interval[k] = 0
|
66
74
|
@@held_timer.delete k
|
67
75
|
end
|
68
76
|
end
|
69
|
-
|
77
|
+
|
70
78
|
@@held_interval.each do |k, v|
|
71
|
-
if v <
|
79
|
+
if v < Game.kb_held_interval; @@held_interval[k] += 1
|
72
80
|
else; @@held_interval[k] = 0; end
|
73
81
|
end
|
74
82
|
|
@@ -84,24 +92,24 @@ module AGL
|
|
84
92
|
end
|
85
93
|
end
|
86
94
|
end
|
87
|
-
|
95
|
+
|
88
96
|
def self.key_pressed? key
|
89
97
|
@@prev_down.index(key).nil? and @@down.index(key)
|
90
98
|
end
|
91
|
-
|
99
|
+
|
92
100
|
def self.key_down? key
|
93
101
|
@@down.index(key)
|
94
102
|
end
|
95
|
-
|
103
|
+
|
96
104
|
def self.key_released? key
|
97
105
|
@@prev_down.index(key) and @@down.index(key).nil?
|
98
106
|
end
|
99
|
-
|
107
|
+
|
100
108
|
def self.key_held? key
|
101
|
-
@@held_interval[key] ==
|
109
|
+
@@held_interval[key] == Game.kb_held_interval
|
102
110
|
end
|
103
111
|
end
|
104
|
-
|
112
|
+
|
105
113
|
class Mouse
|
106
114
|
def self.initialize
|
107
115
|
@@down = {}
|
@@ -109,17 +117,17 @@ module AGL
|
|
109
117
|
@@dbl_click = {}
|
110
118
|
@@dbl_click_timer = {}
|
111
119
|
end
|
112
|
-
|
120
|
+
|
113
121
|
def self.update
|
114
122
|
@@prev_down = @@down.clone
|
115
123
|
@@down.clear
|
116
124
|
@@dbl_click.clear
|
117
|
-
|
125
|
+
|
118
126
|
@@dbl_click_timer.each do |k, v|
|
119
|
-
if v <
|
127
|
+
if v < Game.double_click_delay; @@dbl_click_timer[k] += 1
|
120
128
|
else; @@dbl_click_timer.delete k; end
|
121
129
|
end
|
122
|
-
|
130
|
+
|
123
131
|
k1 = [Gosu::MsLeft, Gosu::MsMiddle, Gosu::MsRight]
|
124
132
|
k2 = [:left, :middle, :right]
|
125
133
|
for i in 0..2
|
@@ -131,30 +139,30 @@ module AGL
|
|
131
139
|
@@dbl_click_timer[k2[i]] = 0
|
132
140
|
end
|
133
141
|
end
|
134
|
-
|
142
|
+
|
135
143
|
@@x = Game.window.mouse_x.round
|
136
144
|
@@y = Game.window.mouse_y.round
|
137
145
|
end
|
138
|
-
|
146
|
+
|
139
147
|
def self.x; @@x; end
|
140
148
|
def self.y; @@y; end
|
141
|
-
|
149
|
+
|
142
150
|
def self.button_pressed? btn
|
143
151
|
@@down[btn] and not @@prev_down[btn]
|
144
152
|
end
|
145
|
-
|
153
|
+
|
146
154
|
def self.button_down? btn
|
147
155
|
@@down[btn]
|
148
156
|
end
|
149
|
-
|
157
|
+
|
150
158
|
def self.button_released? btn
|
151
159
|
@@prev_down[btn] and not @@down[btn]
|
152
160
|
end
|
153
|
-
|
161
|
+
|
154
162
|
def self.double_click? btn
|
155
163
|
@@dbl_click[btn]
|
156
164
|
end
|
157
|
-
|
165
|
+
|
158
166
|
def self.over? x, y, w, h
|
159
167
|
@@x >= x and @@x < x + w and @@y >= y and @@y < y + h
|
160
168
|
end
|
@@ -171,7 +179,7 @@ module AGL
|
|
171
179
|
@@fonts = Hash.new
|
172
180
|
@@global_fonts = Hash.new
|
173
181
|
end
|
174
|
-
|
182
|
+
|
175
183
|
def self.img id, global = false, tileable = false, ext = ".png"
|
176
184
|
if global; a = @@global_imgs; else; a = @@imgs; end
|
177
185
|
return a[id] if a[id]
|
@@ -179,7 +187,7 @@ module AGL
|
|
179
187
|
img = Gosu::Image.new Game.window, s, tileable
|
180
188
|
a[id] = img
|
181
189
|
end
|
182
|
-
|
190
|
+
|
183
191
|
def self.imgs id, sprite_cols, sprite_rows, global = false, ext = ".png"
|
184
192
|
if global; a = @@global_imgs; else; a = @@imgs; end
|
185
193
|
return a[id] if a[id]
|
@@ -187,7 +195,7 @@ module AGL
|
|
187
195
|
imgs = Gosu::Image.load_tiles Game.window, s, -sprite_cols, -sprite_rows, false
|
188
196
|
a[id] = imgs
|
189
197
|
end
|
190
|
-
|
198
|
+
|
191
199
|
def self.tileset id, tile_width = 32, tile_height = 32, global = false, ext = ".png"
|
192
200
|
if global; a = @@global_tilesets; else; a = @@tilesets; end
|
193
201
|
return a[id] if a[id]
|
@@ -195,7 +203,7 @@ module AGL
|
|
195
203
|
tileset = Gosu::Image.load_tiles Game.window, s, tile_width, tile_height, true
|
196
204
|
a[id] = tileset
|
197
205
|
end
|
198
|
-
|
206
|
+
|
199
207
|
def self.sound id, global = false, ext = ".wav"
|
200
208
|
if global; a = @@global_sounds; else; a = @@sounds; end
|
201
209
|
return a[id] if a[id]
|
@@ -203,7 +211,7 @@ module AGL
|
|
203
211
|
sound = Gosu::Sample.new Game.window, s
|
204
212
|
a[id] = sound
|
205
213
|
end
|
206
|
-
|
214
|
+
|
207
215
|
def self.song id, global = false, ext = ".ogg"
|
208
216
|
if global; a = @@global_sounds; else; a = @@sounds; end
|
209
217
|
return a[id] if a[id]
|
@@ -219,11 +227,11 @@ module AGL
|
|
219
227
|
font = Gosu::Font.new Game.window, s, size
|
220
228
|
a[id] = font
|
221
229
|
end
|
222
|
-
|
230
|
+
|
223
231
|
# def self.text id
|
224
232
|
# G.texts[G.lang][id.to_sym]
|
225
233
|
# end
|
226
|
-
|
234
|
+
|
227
235
|
def self.clear
|
228
236
|
@@imgs.clear
|
229
237
|
@@tilesets.clear
|
data/test/game.rb
CHANGED
@@ -4,10 +4,11 @@ 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
|
7
|
+
Game.initialize self, Vector.new(0, 1), 10, 2, 20
|
8
8
|
|
9
9
|
@img = Res.img :img1
|
10
10
|
@font = Res.font :font1, 20
|
11
|
+
@writer = TextHelper.new @font, 5
|
11
12
|
@x = 0
|
12
13
|
@y = 0
|
13
14
|
end
|
@@ -18,13 +19,13 @@ class MyGame < Gosu::Window
|
|
18
19
|
|
19
20
|
def update
|
20
21
|
KB.update
|
21
|
-
@y -= 1 if KB.
|
22
|
+
@y -= 1 if KB.key_held? Gosu::KbUp
|
22
23
|
@x += 1 if KB.key_down? Gosu::KbRight
|
23
|
-
@y += 1 if KB.
|
24
|
+
@y += 1 if KB.key_held? Gosu::KbDown
|
24
25
|
@x -= 1 if KB.key_down? Gosu::KbLeft
|
25
26
|
|
26
27
|
Mouse.update
|
27
|
-
if Mouse.
|
28
|
+
if Mouse.double_click? :left
|
28
29
|
@x = Mouse.x - @img.width / 2
|
29
30
|
@y = Mouse.y - @img.height / 2
|
30
31
|
end
|
@@ -32,7 +33,10 @@ class MyGame < Gosu::Window
|
|
32
33
|
|
33
34
|
def draw
|
34
35
|
@img.draw @x, @y, 0
|
35
|
-
@
|
36
|
+
@writer.write_breaking "Testing multiple line text.\nThis should draw text "\
|
37
|
+
"across multiple lines, respecting a limit width. "\
|
38
|
+
"Furthermore, the text must be right-aligned.",
|
39
|
+
780, 300, 300, :right
|
36
40
|
end
|
37
41
|
end
|
38
42
|
|
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.1
|
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-06-
|
11
|
+
date: 2014-06-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gosu
|
@@ -36,25 +36,25 @@ executables: []
|
|
36
36
|
extensions: []
|
37
37
|
extra_rdoc_files: []
|
38
38
|
files:
|
39
|
+
- LICENSE
|
40
|
+
- README.md
|
41
|
+
- Rakefile
|
42
|
+
- data/font/font1.ttf
|
43
|
+
- data/img/image.png
|
44
|
+
- data/img/img1.png
|
45
|
+
- data/tileset/tileset1.png
|
39
46
|
- lib/minigl.rb
|
40
47
|
- lib/minigl/forms.rb
|
48
|
+
- lib/minigl/game_object.rb
|
41
49
|
- lib/minigl/global.rb
|
42
|
-
- lib/minigl/text.rb
|
43
50
|
- lib/minigl/map.rb
|
44
51
|
- lib/minigl/movement.rb
|
45
|
-
- lib/minigl/
|
46
|
-
- data/tileset/tileset1.png
|
47
|
-
- data/img/image.png
|
48
|
-
- data/img/img1.png
|
49
|
-
- data/font/font1.ttf
|
50
|
-
- Rakefile
|
51
|
-
- LICENSE
|
52
|
-
- README.md
|
52
|
+
- lib/minigl/text.rb
|
53
53
|
- test/game.rb
|
54
54
|
- test/game_object_tests.rb
|
55
|
-
- test/res_tests.rb
|
56
55
|
- test/map_tests.rb
|
57
56
|
- test/movement_tests.rb
|
57
|
+
- test/res_tests.rb
|
58
58
|
homepage: https://github.com/victords/minigl
|
59
59
|
licenses:
|
60
60
|
- GPL-2
|
@@ -75,13 +75,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
75
75
|
version: '0'
|
76
76
|
requirements: []
|
77
77
|
rubyforge_project:
|
78
|
-
rubygems_version: 2.
|
78
|
+
rubygems_version: 2.2.2
|
79
79
|
signing_key:
|
80
80
|
specification_version: 4
|
81
81
|
summary: MiniGL
|
82
82
|
test_files:
|
83
|
+
- test/movement_tests.rb
|
84
|
+
- test/map_tests.rb
|
83
85
|
- test/game.rb
|
84
|
-
- test/game_object_tests.rb
|
85
86
|
- test/res_tests.rb
|
86
|
-
- test/
|
87
|
-
- test/movement_tests.rb
|
87
|
+
- test/game_object_tests.rb
|