gosu 0.7.41 → 0.7.43
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.
- data/COPYING +1 -1
- data/Gosu/ButtonsX.hpp +2 -2
- data/Gosu/Version.hpp +2 -2
- data/GosuImpl/Graphics/Macro.hpp +156 -12
- data/GosuImpl/Graphics/TextUnix.cpp +3 -1
- data/GosuImpl/RubyGosu.swg +3 -4
- data/GosuImpl/RubyGosu_SWIG_RENAME_PATCH.patch +1 -1
- data/GosuImpl/RubyGosu_wrap.cxx +19 -19
- data/GosuImpl/WindowWin.cpp +6 -2
- data/examples/GosuZen.rb +68 -0
- data/lib/gosu/preview.rb +38 -20
- data/lib/gosu/swig_patches.rb +12 -1
- data/lib/gosu/zen.rb +70 -21
- data/linux/extconf.rb +23 -20
- metadata +6 -5
data/COPYING
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Copyright (C) 2004-
|
|
1
|
+
Copyright (C) 2004-2012 Julian Raschke, Jan Lücker and all contributors.
|
|
2
2
|
|
|
3
3
|
Permission is hereby granted, free of charge, to any person obtaining a
|
|
4
4
|
copy of this software and associated documentation files (the "Software"),
|
data/Gosu/ButtonsX.hpp
CHANGED
|
@@ -67,8 +67,8 @@ namespace Gosu
|
|
|
67
67
|
kbRightControl = XK_Control_R,
|
|
68
68
|
kbLeftAlt = XK_Alt_L,
|
|
69
69
|
kbRightAlt = XK_Alt_R,
|
|
70
|
-
kbLeftMeta =
|
|
71
|
-
kbRightMeta =
|
|
70
|
+
kbLeftMeta = XK_Meta_L,
|
|
71
|
+
kbRightMeta = XK_Meta_R,
|
|
72
72
|
kbBackspace = XK_BackSpace,
|
|
73
73
|
kbLeft = XK_Left,
|
|
74
74
|
kbRight = XK_Right,
|
data/Gosu/Version.hpp
CHANGED
data/GosuImpl/Graphics/Macro.hpp
CHANGED
|
@@ -13,11 +13,157 @@
|
|
|
13
13
|
|
|
14
14
|
class Gosu::Macro : public Gosu::ImageData
|
|
15
15
|
{
|
|
16
|
+
typedef double Float;
|
|
17
|
+
|
|
16
18
|
Graphics& graphics;
|
|
17
19
|
VertexArrays vertexArrays;
|
|
18
|
-
int
|
|
20
|
+
int w, h;
|
|
19
21
|
|
|
20
|
-
|
|
22
|
+
Transform findTransformForTarget(Float x1, Float y1, Float x2, Float y2, Float x3, Float y3, Float x4, Float y4) const
|
|
23
|
+
{
|
|
24
|
+
// Transformation logic follows a discussion on the ImageMagick mailing
|
|
25
|
+
// list (on which ImageMagick's perspective_transform.pl is based).
|
|
26
|
+
|
|
27
|
+
// To draw a macro at an arbitrary position, we solve the following system:
|
|
28
|
+
|
|
29
|
+
// 0, 0, 1, 0, 0, 0, 0, 0 | x1
|
|
30
|
+
// 0, 0, 0, 0, 0, 1, 0, 0 | y1
|
|
31
|
+
// w, 0, 1, 0, 0, 0, -x2w, 0 | x2
|
|
32
|
+
// 0, 0, 0, w, 0, 1, -y2w, 0 | y2
|
|
33
|
+
// 0, h, 1, 0, 0, 0, 0, -x3h | x3
|
|
34
|
+
// 0, 0, 0, 0, h, 1, 0, -y3h | y3
|
|
35
|
+
// w, h, 1, 0, 0, 0, -x4w, -x4h | x4
|
|
36
|
+
// 0, 0, 0, w, h, 1, -y4w, -y4h | y4
|
|
37
|
+
|
|
38
|
+
// Equivalent:
|
|
39
|
+
|
|
40
|
+
// 0, 0, 1, 0, 0, 0, 0, 0 | x1
|
|
41
|
+
// 0, 0, 0, 0, 0, 1, 0, 0 | y1
|
|
42
|
+
// w, 0, 0, 0, 0, 0, -x2w, 0 | x2-x1
|
|
43
|
+
// 0, 0, 0, w, 0, 0, -y2w, 0 | y2-y1
|
|
44
|
+
// 0, h, 0, 0, 0, 0, 0, -x3h | x3-x1
|
|
45
|
+
// 0, 0, 0, 0, h, 0, 0, -y3h | y3-y1
|
|
46
|
+
// 0, 0, 0, 0, 0, 0, (x2-x4)w, (x3-x4)h | x1-x2-x3+x4
|
|
47
|
+
// 0, 0, 0, 0, 0, 0, (y2-y4)w, (y3-y4)h | y1-y2-y3+y4
|
|
48
|
+
|
|
49
|
+
// Since this matrix is relatively sparse, we unroll all three solving paths.
|
|
50
|
+
|
|
51
|
+
static const Transform nullTransform = { 0 };
|
|
52
|
+
|
|
53
|
+
// Row 7 is completely useless
|
|
54
|
+
if (x2 == x4 && x3 == x4)
|
|
55
|
+
return nullTransform;
|
|
56
|
+
// Row 8 is completely useless
|
|
57
|
+
if (y2 == y3 && y3 == y4)
|
|
58
|
+
return nullTransform;
|
|
59
|
+
// Col 7 is completely useless
|
|
60
|
+
if (x2 == x4 && y2 == y4)
|
|
61
|
+
return nullTransform;
|
|
62
|
+
// Col 8 is completely useless
|
|
63
|
+
if (x3 == x4 && y3 == y4)
|
|
64
|
+
return nullTransform;
|
|
65
|
+
|
|
66
|
+
Float c[8];
|
|
67
|
+
|
|
68
|
+
// Rows 1, 2
|
|
69
|
+
c[2] = x1, c[5] = y1;
|
|
70
|
+
|
|
71
|
+
// The logic below assumes x2 != x4, i.e. row7 can be used to eliminate
|
|
72
|
+
// the leftmost value in row 8 and afterwards the values in rows 3 & 4.
|
|
73
|
+
// If x2 == x4, we need to exchange rows 7 and 8.
|
|
74
|
+
|
|
75
|
+
// TODO: x2==x4 is the normal case where an image is
|
|
76
|
+
// drawn upright; the code should rather swap in the rare case that x3==x4!
|
|
77
|
+
|
|
78
|
+
Float leftCell7 = (x2-x4)*w, rightCell7 = (x3-x4)*h, origRightSide7 = (x1-x2-x3+x4);
|
|
79
|
+
Float leftCell8 = (y2-y4)*w, rightCell8 = (y3-y4)*h, origRightSide8 = (y1-y2-y3+y4);
|
|
80
|
+
|
|
81
|
+
bool swapRows78 = x2 == x4;
|
|
82
|
+
if (swapRows78)
|
|
83
|
+
{
|
|
84
|
+
std::swap(leftCell7, leftCell8);
|
|
85
|
+
std::swap(rightCell7, rightCell8);
|
|
86
|
+
std::swap(origRightSide7, origRightSide8);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// 0, 0, 1, 0, 0, 0, 0, 0 | x1
|
|
90
|
+
// 0, 0, 0, 0, 0, 1, 0, 0 | y1
|
|
91
|
+
// w, 0, 0, 0, 0, 0, -x2w, 0 | x2-x1
|
|
92
|
+
// 0, 0, 0, w, 0, 0, -y2w, 0 | y2-y1
|
|
93
|
+
// 0, h, 0, 0, 0, 0, 0, -x3h | x3-x1
|
|
94
|
+
// 0, 0, 0, 0, h, 0, 0, -y3h | y3-y1
|
|
95
|
+
// 0, 0, 0, 0, 0, 0, leftCell7, rightCell7 | origRightSide7
|
|
96
|
+
// 0, 0, 0, 0, 0, 0, leftCell8, rightCell8 | origRightSide8
|
|
97
|
+
|
|
98
|
+
// Use row 7 to eliminate the left cell in row 8
|
|
99
|
+
// Row8 = Row8 - factor78 * Row7
|
|
100
|
+
Float factor78 = leftCell8 / leftCell7;
|
|
101
|
+
Float remCell8 = rightCell8 - rightCell7 * factor78;
|
|
102
|
+
Float rightSide8 = origRightSide8 - origRightSide7 * factor78;
|
|
103
|
+
c[7] = rightSide8 / remCell8;
|
|
104
|
+
|
|
105
|
+
// 0, 0, 1, 0, 0, 0, 0, 0 | x1
|
|
106
|
+
// 0, 0, 0, 0, 0, 1, 0, 0 | y1
|
|
107
|
+
// w, 0, 0, 0, 0, 0, -x2w, 0 | x2-x1
|
|
108
|
+
// 0, 0, 0, w, 0, 0, -y2w, 0 | y2-y1
|
|
109
|
+
// 0, h, 0, 0, 0, 0, 0, -x3h | x3-x1
|
|
110
|
+
// 0, 0, 0, 0, h, 0, 0, -y3h | y3-y1
|
|
111
|
+
// 0, 0, 0, 0, 0, 0, leftCell7, rightCell7 | origRightSide7
|
|
112
|
+
// 0, 0, 0, 0, 0, 0, 0, remCell8 | rightSide8
|
|
113
|
+
|
|
114
|
+
// Use the remainding value in row 8 to eliminate the right value in row 7.
|
|
115
|
+
// Row7 = Row7 - factor87 * Row8
|
|
116
|
+
Float factor87 = rightCell7 / remCell8;
|
|
117
|
+
Float remCell7 = leftCell7;
|
|
118
|
+
Float rightSide7 = origRightSide7 - rightSide8 * factor87;
|
|
119
|
+
c[6] = rightSide7 / remCell7;
|
|
120
|
+
|
|
121
|
+
// 0, 0, 1, 0, 0, 0, 0, 0 | x1
|
|
122
|
+
// 0, 0, 0, 0, 0, 1, 0, 0 | y1
|
|
123
|
+
// w, 0, 0, 0, 0, 0, -x2w, 0 | x2-x1
|
|
124
|
+
// 0, 0, 0, w, 0, 0, -y2w, 0 | y2-y1
|
|
125
|
+
// 0, h, 0, 0, 0, 0, 0, -x3h | x3-x1
|
|
126
|
+
// 0, 0, 0, 0, h, 0, 0, -y3h | y3-y1
|
|
127
|
+
// 0, 0, 0, 0, 0, 0, remCell7, 0 | rightSide7
|
|
128
|
+
// 0, 0, 0, 0, 0, 0, 0, remCell8 | rightSide8
|
|
129
|
+
|
|
130
|
+
// Use the new rows 7 and 8 to calculate c0, c1, c3 & c4.
|
|
131
|
+
// Row3 = Row3 - factor73 * Row7
|
|
132
|
+
Float factor73 = -x2*w / remCell7;
|
|
133
|
+
Float remCell3 = w;
|
|
134
|
+
Float rightSide3 = (x2-x1) - rightSide7 * factor73;
|
|
135
|
+
c[0] = rightSide3 / remCell3;
|
|
136
|
+
// Row4 = Row4 - factor74 * Row7
|
|
137
|
+
Float factor74 = -y2*w / remCell7;
|
|
138
|
+
Float remCell4 = w;
|
|
139
|
+
Float rightSide4 = (y2-y1) - rightSide7 * factor74;
|
|
140
|
+
c[3] = rightSide4 / remCell4;
|
|
141
|
+
// Row5 = Row5 - factor85 * Row7
|
|
142
|
+
Float factor85 = -x3*h / remCell8;
|
|
143
|
+
Float remCell5 = h;
|
|
144
|
+
Float rightSide5 = (x3-x1) - rightSide8 * factor85;
|
|
145
|
+
c[1] = rightSide5 / remCell5;
|
|
146
|
+
// Row6 = Row6 - factor86 * Row8
|
|
147
|
+
Float factor86 = -y3*h / remCell8;
|
|
148
|
+
Float remCell6 = h;
|
|
149
|
+
Float rightSide6 = (y3-y1) - rightSide8 * factor86;
|
|
150
|
+
c[4] = rightSide6 / remCell6;
|
|
151
|
+
|
|
152
|
+
if (swapRows78)
|
|
153
|
+
std::swap(c[6], c[7]);
|
|
154
|
+
|
|
155
|
+
// Let's hope I never have to debug/understand this again! :D
|
|
156
|
+
|
|
157
|
+
Transform result = {
|
|
158
|
+
c[0], c[3], 0, c[6],
|
|
159
|
+
c[1], c[4], 0, c[7],
|
|
160
|
+
0, 0, 1, 0,
|
|
161
|
+
c[2], c[5], 0, 1
|
|
162
|
+
};
|
|
163
|
+
return result;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
void drawVertexArrays(Float x1, Float y1, Float x2, Float y2, Float x3, Float y3, Float x4, Float y4) const
|
|
21
167
|
{
|
|
22
168
|
// TODO: Macros should not be split up because they have different transforms! This is insane.
|
|
23
169
|
// They should be premultiplied and have the same transform by definition. Then, the transformation
|
|
@@ -27,14 +173,14 @@ class Gosu::Macro : public Gosu::ImageData
|
|
|
27
173
|
glEnable(GL_BLEND);
|
|
28
174
|
glMatrixMode(GL_MODELVIEW);
|
|
29
175
|
|
|
176
|
+
Transform transform =
|
|
177
|
+
findTransformForTarget(x1, y1, x2, y2, x3, y3, x4, y4);
|
|
178
|
+
|
|
30
179
|
for (VertexArrays::const_iterator it = vertexArrays.begin(), end = vertexArrays.end(); it != end; ++it)
|
|
31
180
|
{
|
|
32
181
|
glPushMatrix();
|
|
33
182
|
it->renderState.apply();
|
|
34
|
-
|
|
35
|
-
glTranslated(x1, y1, 0);
|
|
36
|
-
glScaled((x2 - x1) / width(), (y3 - y1) / height(), 1);
|
|
37
|
-
|
|
183
|
+
glMultMatrixd(&transform[0]);
|
|
38
184
|
glInterleavedArrays(GL_T2F_C4UB_V3F, 0, &it->vertices[0]);
|
|
39
185
|
glDrawArrays(GL_QUADS, 0, it->vertices.size());
|
|
40
186
|
glPopMatrix();
|
|
@@ -44,19 +190,19 @@ class Gosu::Macro : public Gosu::ImageData
|
|
|
44
190
|
|
|
45
191
|
public:
|
|
46
192
|
Macro(Graphics& graphics, DrawOpQueue& queue, int width, int height)
|
|
47
|
-
: graphics(graphics),
|
|
193
|
+
: graphics(graphics), w(width), h(height)
|
|
48
194
|
{
|
|
49
195
|
queue.compileTo(vertexArrays);
|
|
50
196
|
}
|
|
51
197
|
|
|
52
198
|
int width() const
|
|
53
199
|
{
|
|
54
|
-
return
|
|
200
|
+
return w;
|
|
55
201
|
}
|
|
56
202
|
|
|
57
203
|
int height() const
|
|
58
204
|
{
|
|
59
|
-
return
|
|
205
|
+
return h;
|
|
60
206
|
}
|
|
61
207
|
|
|
62
208
|
void draw(double x1, double y1, Color c1,
|
|
@@ -65,11 +211,9 @@ public:
|
|
|
65
211
|
double x4, double y4, Color c4,
|
|
66
212
|
ZPos z, AlphaMode mode) const
|
|
67
213
|
{
|
|
68
|
-
if (x1 != x3 || x2 != x4 || y1 != y2 || y3 != y4)
|
|
69
|
-
throw std::invalid_argument("Macros cannot be rotated yet");
|
|
70
214
|
if (c1 != 0xffffffff || c2 != 0xffffffff || c3 != 0xffffffff || c4 != 0xffffffff)
|
|
71
215
|
throw std::invalid_argument("Macros cannot be tinted with colors yet");
|
|
72
|
-
std::tr1::function<void()> f = std::tr1::bind(&Macro::
|
|
216
|
+
std::tr1::function<void()> f = std::tr1::bind(&Macro::drawVertexArrays, this, x1, y1, x2, y2, x3, y3, x4, y4);
|
|
73
217
|
graphics.scheduleGL(f, z);
|
|
74
218
|
}
|
|
75
219
|
|
|
@@ -180,7 +180,9 @@ namespace Gosu
|
|
|
180
180
|
public:
|
|
181
181
|
SDLSurface(TTF_Font* font, const std::wstring& text, Gosu::Color c)
|
|
182
182
|
{
|
|
183
|
-
|
|
183
|
+
// This is intentionally re-ordered to BGR. This way, the surface pixels do not
|
|
184
|
+
// have to be converted from RGB to BGR later in the process.
|
|
185
|
+
SDL_Color color = { c.blue(), c.green(), c.red() };
|
|
184
186
|
surface = TTF_RenderUTF8_Blended(font, Gosu::wstringToUTF8(text).c_str(), color);
|
|
185
187
|
if (!surface)
|
|
186
188
|
throw std::runtime_error("Could not render text " + Gosu::wstringToUTF8(text));
|
data/GosuImpl/RubyGosu.swg
CHANGED
|
@@ -657,8 +657,7 @@ namespace Gosu {
|
|
|
657
657
|
%markfunc Gosu::Window "markWindow";
|
|
658
658
|
%include "../Gosu/Window.hpp"
|
|
659
659
|
|
|
660
|
-
// TODO:
|
|
661
|
-
// If necessary, can I fake this using an @ivar?
|
|
660
|
+
// TODO: Can I fake this using an @ivar?
|
|
662
661
|
%header %{
|
|
663
662
|
static void markWindow(void* window) {
|
|
664
663
|
#ifndef __MACRUBY__
|
|
@@ -739,12 +738,12 @@ namespace Gosu {
|
|
|
739
738
|
return $self->graphics().fullscreen();
|
|
740
739
|
}
|
|
741
740
|
|
|
742
|
-
void
|
|
741
|
+
void unsafe_gl() {
|
|
743
742
|
$self->graphics().beginGL();
|
|
744
743
|
rb_yield(Qnil);
|
|
745
744
|
$self->graphics().endGL();
|
|
746
745
|
}
|
|
747
|
-
void
|
|
746
|
+
void unsafe_gl(Gosu::ZPos z) {
|
|
748
747
|
$self->graphics().scheduleGL(std::tr1::bind(callRubyBlock, rb_block_proc()), z);
|
|
749
748
|
}
|
|
750
749
|
void clipTo(double x, double y, double width, double height) {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
VALUE result;
|
|
14
14
|
|
|
15
15
|
- result = rb_funcall(swig_get_self(), rb_intern("draw"), 0, NULL);
|
|
16
|
-
+ result = rb_funcall(swig_get_self(), rb_intern("
|
|
16
|
+
+ result = rb_funcall(swig_get_self(), rb_intern("protected_draw_2"), 0, NULL);
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
|
data/GosuImpl/RubyGosu_wrap.cxx
CHANGED
|
@@ -2795,12 +2795,12 @@ SWIGINTERN int Gosu_Window_height(Gosu::Window const *self){
|
|
|
2795
2795
|
SWIGINTERN bool Gosu_Window_fullscreen(Gosu::Window const *self){
|
|
2796
2796
|
return self->graphics().fullscreen();
|
|
2797
2797
|
}
|
|
2798
|
-
SWIGINTERN void
|
|
2798
|
+
SWIGINTERN void Gosu_Window_unsafe_gl__SWIG_0(Gosu::Window *self){
|
|
2799
2799
|
self->graphics().beginGL();
|
|
2800
2800
|
rb_yield(Qnil);
|
|
2801
2801
|
self->graphics().endGL();
|
|
2802
2802
|
}
|
|
2803
|
-
SWIGINTERN void
|
|
2803
|
+
SWIGINTERN void Gosu_Window_unsafe_gl__SWIG_1(Gosu::Window *self,Gosu::ZPos z){
|
|
2804
2804
|
self->graphics().scheduleGL(std::tr1::bind(callRubyBlock, rb_block_proc()), z);
|
|
2805
2805
|
}
|
|
2806
2806
|
SWIGINTERN void Gosu_Window_clipTo(Gosu::Window *self,double x,double y,double width,double height){
|
|
@@ -2913,7 +2913,7 @@ void SwigDirector_Window::update() {
|
|
|
2913
2913
|
void SwigDirector_Window::draw() {
|
|
2914
2914
|
VALUE result;
|
|
2915
2915
|
|
|
2916
|
-
result = rb_funcall(swig_get_self(), rb_intern("
|
|
2916
|
+
result = rb_funcall(swig_get_self(), rb_intern("protected_draw_2"), 0, NULL);
|
|
2917
2917
|
}
|
|
2918
2918
|
|
|
2919
2919
|
|
|
@@ -10176,7 +10176,7 @@ fail:
|
|
|
10176
10176
|
|
|
10177
10177
|
|
|
10178
10178
|
SWIGINTERN VALUE
|
|
10179
|
-
|
|
10179
|
+
_wrap_Window_unsafe_gl__SWIG_0(int argc, VALUE *argv, VALUE self) {
|
|
10180
10180
|
Gosu::Window *arg1 = (Gosu::Window *) 0 ;
|
|
10181
10181
|
void *argp1 = 0 ;
|
|
10182
10182
|
int res1 = 0 ;
|
|
@@ -10186,12 +10186,12 @@ _wrap_Window_gl__SWIG_0(int argc, VALUE *argv, VALUE self) {
|
|
|
10186
10186
|
}
|
|
10187
10187
|
res1 = SWIG_ConvertPtr(self, &argp1,SWIGTYPE_p_Gosu__Window, 0 | 0 );
|
|
10188
10188
|
if (!SWIG_IsOK(res1)) {
|
|
10189
|
-
SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "Gosu::Window *","
|
|
10189
|
+
SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "Gosu::Window *","unsafe_gl", 1, self ));
|
|
10190
10190
|
}
|
|
10191
10191
|
arg1 = reinterpret_cast< Gosu::Window * >(argp1);
|
|
10192
10192
|
{
|
|
10193
10193
|
try {
|
|
10194
|
-
|
|
10194
|
+
Gosu_Window_unsafe_gl__SWIG_0(arg1);
|
|
10195
10195
|
} catch (const std::exception& e) {
|
|
10196
10196
|
SWIG_exception(SWIG_RuntimeError, e.what());
|
|
10197
10197
|
}
|
|
@@ -10203,7 +10203,7 @@ fail:
|
|
|
10203
10203
|
|
|
10204
10204
|
|
|
10205
10205
|
SWIGINTERN VALUE
|
|
10206
|
-
|
|
10206
|
+
_wrap_Window_unsafe_gl__SWIG_1(int argc, VALUE *argv, VALUE self) {
|
|
10207
10207
|
Gosu::Window *arg1 = (Gosu::Window *) 0 ;
|
|
10208
10208
|
Gosu::ZPos arg2 ;
|
|
10209
10209
|
void *argp1 = 0 ;
|
|
@@ -10216,17 +10216,17 @@ _wrap_Window_gl__SWIG_1(int argc, VALUE *argv, VALUE self) {
|
|
|
10216
10216
|
}
|
|
10217
10217
|
res1 = SWIG_ConvertPtr(self, &argp1,SWIGTYPE_p_Gosu__Window, 0 | 0 );
|
|
10218
10218
|
if (!SWIG_IsOK(res1)) {
|
|
10219
|
-
SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "Gosu::Window *","
|
|
10219
|
+
SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "Gosu::Window *","unsafe_gl", 1, self ));
|
|
10220
10220
|
}
|
|
10221
10221
|
arg1 = reinterpret_cast< Gosu::Window * >(argp1);
|
|
10222
10222
|
ecode2 = SWIG_AsVal_double(argv[0], &val2);
|
|
10223
10223
|
if (!SWIG_IsOK(ecode2)) {
|
|
10224
|
-
SWIG_exception_fail(SWIG_ArgError(ecode2), Ruby_Format_TypeError( "", "Gosu::ZPos","
|
|
10224
|
+
SWIG_exception_fail(SWIG_ArgError(ecode2), Ruby_Format_TypeError( "", "Gosu::ZPos","unsafe_gl", 2, argv[0] ));
|
|
10225
10225
|
}
|
|
10226
10226
|
arg2 = static_cast< Gosu::ZPos >(val2);
|
|
10227
10227
|
{
|
|
10228
10228
|
try {
|
|
10229
|
-
|
|
10229
|
+
Gosu_Window_unsafe_gl__SWIG_1(arg1,arg2);
|
|
10230
10230
|
} catch (const std::exception& e) {
|
|
10231
10231
|
SWIG_exception(SWIG_RuntimeError, e.what());
|
|
10232
10232
|
}
|
|
@@ -10237,7 +10237,7 @@ fail:
|
|
|
10237
10237
|
}
|
|
10238
10238
|
|
|
10239
10239
|
|
|
10240
|
-
SWIGINTERN VALUE
|
|
10240
|
+
SWIGINTERN VALUE _wrap_Window_unsafe_gl(int nargs, VALUE *args, VALUE self) {
|
|
10241
10241
|
int argc;
|
|
10242
10242
|
VALUE argv[3];
|
|
10243
10243
|
int ii;
|
|
@@ -10254,7 +10254,7 @@ SWIGINTERN VALUE _wrap_Window_gl(int nargs, VALUE *args, VALUE self) {
|
|
|
10254
10254
|
int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Gosu__Window, 0);
|
|
10255
10255
|
_v = SWIG_CheckState(res);
|
|
10256
10256
|
if (_v) {
|
|
10257
|
-
return
|
|
10257
|
+
return _wrap_Window_unsafe_gl__SWIG_0(nargs, args, self);
|
|
10258
10258
|
}
|
|
10259
10259
|
}
|
|
10260
10260
|
if (argc == 2) {
|
|
@@ -10268,15 +10268,15 @@ SWIGINTERN VALUE _wrap_Window_gl(int nargs, VALUE *args, VALUE self) {
|
|
|
10268
10268
|
_v = SWIG_CheckState(res);
|
|
10269
10269
|
}
|
|
10270
10270
|
if (_v) {
|
|
10271
|
-
return
|
|
10271
|
+
return _wrap_Window_unsafe_gl__SWIG_1(nargs, args, self);
|
|
10272
10272
|
}
|
|
10273
10273
|
}
|
|
10274
10274
|
}
|
|
10275
10275
|
|
|
10276
10276
|
fail:
|
|
10277
|
-
Ruby_Format_OverloadedError( argc, 3, "
|
|
10278
|
-
" void
|
|
10279
|
-
" void
|
|
10277
|
+
Ruby_Format_OverloadedError( argc, 3, "unsafe_gl",
|
|
10278
|
+
" void unsafe_gl()\n"
|
|
10279
|
+
" void unsafe_gl(Gosu::ZPos z)\n");
|
|
10280
10280
|
|
|
10281
10281
|
return Qnil;
|
|
10282
10282
|
}
|
|
@@ -11228,8 +11228,8 @@ SWIGEXPORT void Init_gosu(void) {
|
|
|
11228
11228
|
SWIG_RubyInitializeTrackings();
|
|
11229
11229
|
rb_define_const(mGosu, "MAJOR_VERSION", SWIG_From_int(static_cast< int >(0)));
|
|
11230
11230
|
rb_define_const(mGosu, "MINOR_VERSION", SWIG_From_int(static_cast< int >(7)));
|
|
11231
|
-
rb_define_const(mGosu, "POINT_VERSION", SWIG_From_int(static_cast< int >(
|
|
11232
|
-
rb_define_const(mGosu, "VERSION", SWIG_FromCharPtr("0.7.
|
|
11231
|
+
rb_define_const(mGosu, "POINT_VERSION", SWIG_From_int(static_cast< int >(43)));
|
|
11232
|
+
rb_define_const(mGosu, "VERSION", SWIG_FromCharPtr("0.7.43"));
|
|
11233
11233
|
rb_define_module_function(mGosu, "milliseconds", VALUEFUNC(_wrap_milliseconds), -1);
|
|
11234
11234
|
rb_define_module_function(mGosu, "random", VALUEFUNC(_wrap_random), -1);
|
|
11235
11235
|
rb_define_module_function(mGosu, "degrees_to_radians", VALUEFUNC(_wrap_degrees_to_radians), -1);
|
|
@@ -11579,7 +11579,7 @@ SWIGEXPORT void Init_gosu(void) {
|
|
|
11579
11579
|
rb_define_method(SwigClassWindow.klass, "width", VALUEFUNC(_wrap_Window_width), -1);
|
|
11580
11580
|
rb_define_method(SwigClassWindow.klass, "height", VALUEFUNC(_wrap_Window_height), -1);
|
|
11581
11581
|
rb_define_method(SwigClassWindow.klass, "fullscreen?", VALUEFUNC(_wrap_Window_fullscreenq___), -1);
|
|
11582
|
-
rb_define_method(SwigClassWindow.klass, "
|
|
11582
|
+
rb_define_method(SwigClassWindow.klass, "unsafe_gl", VALUEFUNC(_wrap_Window_unsafe_gl), -1);
|
|
11583
11583
|
rb_define_method(SwigClassWindow.klass, "clip_to", VALUEFUNC(_wrap_Window_clip_to), -1);
|
|
11584
11584
|
rb_define_method(SwigClassWindow.klass, "record", VALUEFUNC(_wrap_Window_record), -1);
|
|
11585
11585
|
rb_define_method(SwigClassWindow.klass, "transform", VALUEFUNC(_wrap_Window_transform), -1);
|
data/GosuImpl/WindowWin.cpp
CHANGED
|
@@ -468,6 +468,9 @@ LRESULT Gosu::Window::handleMessage(UINT message, WPARAM wparam, LPARAM lparam)
|
|
|
468
468
|
|
|
469
469
|
if (message == WM_PAINT)
|
|
470
470
|
{
|
|
471
|
+
PAINTSTRUCT ps;
|
|
472
|
+
pimpl->hdc = BeginPaint(handle(), &ps);
|
|
473
|
+
|
|
471
474
|
if (pimpl->graphics.get() && graphics().begin())
|
|
472
475
|
{
|
|
473
476
|
try
|
|
@@ -481,11 +484,12 @@ LRESULT Gosu::Window::handleMessage(UINT message, WPARAM wparam, LPARAM lparam)
|
|
|
481
484
|
}
|
|
482
485
|
graphics().end();
|
|
483
486
|
}
|
|
487
|
+
|
|
484
488
|
SwapBuffers(pimpl->hdc);
|
|
485
|
-
|
|
489
|
+
EndPaint(handle(), &ps);
|
|
486
490
|
return 0;
|
|
487
491
|
}
|
|
488
|
-
|
|
492
|
+
|
|
489
493
|
if (message == WM_SYSCOMMAND)
|
|
490
494
|
{
|
|
491
495
|
switch(wparam)
|
data/examples/GosuZen.rb
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Gosu Zen example based on erisdiscord's comment here:
|
|
2
|
+
# https://github.com/jlnr/gosu/pull/120
|
|
3
|
+
|
|
4
|
+
# Gosu Zen is the (inline) Sinatra of Ruby multimedia programming.
|
|
5
|
+
# The interface is still in flux. If you want to tune the interface
|
|
6
|
+
# a little further or provide more examples, please fork Gosu and
|
|
7
|
+
# send a pull request. Thanks!
|
|
8
|
+
|
|
9
|
+
require 'rubygems'
|
|
10
|
+
require 'gosu/zen'
|
|
11
|
+
include Gosu::Zen
|
|
12
|
+
|
|
13
|
+
window 480, 240, :fullscreen => false
|
|
14
|
+
|
|
15
|
+
button_down Gosu::KbEscape do
|
|
16
|
+
close
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
update do
|
|
20
|
+
t = Gosu.milliseconds / 1000.0
|
|
21
|
+
|
|
22
|
+
@radius = [width, height].min * 0.37
|
|
23
|
+
@angle = t * Math::PI
|
|
24
|
+
|
|
25
|
+
a, b =\
|
|
26
|
+
(Math.cos(t) + 0.5) * 0xff,
|
|
27
|
+
(Math.sin(t) + 0.5) * 0xff
|
|
28
|
+
|
|
29
|
+
c = (a + b) / 2
|
|
30
|
+
|
|
31
|
+
@colors = [
|
|
32
|
+
Gosu::Color.rgb(a, b, 0xff),
|
|
33
|
+
Gosu::Color.rgb(a, 0x00, b),
|
|
34
|
+
Gosu::Color.rgb(0xff, b, a),
|
|
35
|
+
Gosu::Color.rgb(b, a, 0x00),
|
|
36
|
+
Gosu::Color.rgb(b, 0xff, a),
|
|
37
|
+
Gosu::Color.rgb(0x00, a, b) ]
|
|
38
|
+
|
|
39
|
+
@background = Gosu::Color.rgb(c, c, c)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
draw do
|
|
43
|
+
draw_quad\
|
|
44
|
+
0, 0, @background,
|
|
45
|
+
0, height, @background,
|
|
46
|
+
width, height, @background,
|
|
47
|
+
width, 0, @background, 0
|
|
48
|
+
|
|
49
|
+
translate width / 2, height / 2 do
|
|
50
|
+
@colors.each.with_index do |color, i|
|
|
51
|
+
|
|
52
|
+
angle = @angle + i.to_f / @colors.length * 2.0 * Math::PI
|
|
53
|
+
x = @radius * Math.sin(angle)
|
|
54
|
+
y = @radius * Math.cos(angle)
|
|
55
|
+
w, h = x, y
|
|
56
|
+
|
|
57
|
+
translate x, y do
|
|
58
|
+
rotate Gosu.radians_to_degrees(angle) do
|
|
59
|
+
draw_quad\
|
|
60
|
+
-w, +h, color,
|
|
61
|
+
-w, -h, color,
|
|
62
|
+
+w, -h, color,
|
|
63
|
+
+w, +h, color, 0
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
data/lib/gosu/preview.rb
CHANGED
|
@@ -85,37 +85,55 @@ module Gosu
|
|
|
85
85
|
end
|
|
86
86
|
end
|
|
87
87
|
|
|
88
|
+
def self.button_down? id
|
|
89
|
+
$window.button_down? id
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def self.mouse_x
|
|
93
|
+
$window.mouse_x
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def self.mouse_y
|
|
97
|
+
$window.mouse_y
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def self.draw_line *args
|
|
101
|
+
$window.draw_line *args
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def self.draw_triangle *args
|
|
105
|
+
$window.draw_triangle *args
|
|
106
|
+
end
|
|
107
|
+
|
|
88
108
|
def self.draw_quad *args
|
|
89
109
|
$window.draw_quad *args
|
|
90
110
|
end
|
|
91
111
|
|
|
92
|
-
def self.clip_to *args
|
|
93
|
-
$window.clip_to *args
|
|
94
|
-
yield
|
|
95
|
-
end
|
|
112
|
+
def self.clip_to *args, &draw
|
|
113
|
+
$window.clip_to *args, &draw
|
|
96
114
|
end
|
|
97
115
|
|
|
98
|
-
def self.translate *args
|
|
99
|
-
$window.translate *args
|
|
100
|
-
yield
|
|
101
|
-
end
|
|
116
|
+
def self.translate *args, &draw
|
|
117
|
+
$window.translate *args, &draw
|
|
102
118
|
end
|
|
103
119
|
|
|
104
|
-
def self.scale *args
|
|
105
|
-
$window.scale *args
|
|
106
|
-
yield
|
|
107
|
-
end
|
|
120
|
+
def self.scale *args, &draw
|
|
121
|
+
$window.scale *args, &draw
|
|
108
122
|
end
|
|
109
123
|
|
|
110
|
-
def self.rotate *args
|
|
111
|
-
$window.rotate *args
|
|
112
|
-
yield
|
|
113
|
-
end
|
|
124
|
+
def self.rotate *args, &draw
|
|
125
|
+
$window.rotate *args, &draw
|
|
114
126
|
end
|
|
115
127
|
|
|
116
|
-
def self.transform *args
|
|
117
|
-
$window.transform *args
|
|
118
|
-
|
|
119
|
-
|
|
128
|
+
def self.transform *args, &draw
|
|
129
|
+
$window.transform *args, &draw
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def self.record width, height, &draw
|
|
133
|
+
$window.record width, height, &draw
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def self.gl *args, &draw
|
|
137
|
+
$window.gl *args, &draw
|
|
120
138
|
end
|
|
121
139
|
end
|
data/lib/gosu/swig_patches.rb
CHANGED
|
@@ -10,8 +10,8 @@ class Gosu::Window
|
|
|
10
10
|
lose_focus button_down button_up).each do |callback|
|
|
11
11
|
define_method "protected_#{callback}" do |*args|
|
|
12
12
|
begin
|
|
13
|
-
# Turn into a boolean result for needs_cursor? etc while we are at it.
|
|
14
13
|
# If there has been an exception, don't do anything as to not make matters worse.
|
|
14
|
+
# Conveniently turn the return value into a boolean result (for needs_cursor? etc).
|
|
15
15
|
defined?(@_exception) ? false : !!send(callback, *args)
|
|
16
16
|
rescue Exception => e
|
|
17
17
|
# Exit the message loop naturally, then re-throw
|
|
@@ -21,6 +21,17 @@ class Gosu::Window
|
|
|
21
21
|
end
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
+
def protected_draw_2
|
|
25
|
+
protected_draw
|
|
26
|
+
$gosu_gl_blocks = nil
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def gl(*args, &block)
|
|
30
|
+
$gosu_blocks ||= []
|
|
31
|
+
$gosu_blocks << block
|
|
32
|
+
unsafe_gl(*args, &block)
|
|
33
|
+
end
|
|
34
|
+
|
|
24
35
|
alias show_internal show
|
|
25
36
|
def show
|
|
26
37
|
show_internal
|
data/lib/gosu/zen.rb
CHANGED
|
@@ -1,28 +1,77 @@
|
|
|
1
|
-
require 'gosu'
|
|
2
|
-
require 'singleton'
|
|
1
|
+
require 'gosu/preview'
|
|
3
2
|
|
|
4
3
|
module Gosu
|
|
4
|
+
module Zen
|
|
5
|
+
|
|
6
|
+
@@window_args = [800, 600, {}]
|
|
7
|
+
@@options = {}
|
|
8
|
+
|
|
9
|
+
def window width, height, options = nil
|
|
10
|
+
if $window.nil?
|
|
11
|
+
@@window_args[0] = width
|
|
12
|
+
@@window_args[1] = height
|
|
13
|
+
@@window_args[2].merge! options if options
|
|
14
|
+
else
|
|
15
|
+
raise "window size can only be set before the window is created"
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def set what, value
|
|
20
|
+
if $window.nil?
|
|
21
|
+
@@options[what.to_sym] = value
|
|
22
|
+
else
|
|
23
|
+
$window.send "#{what}=", value
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def button_down id = nil, &body
|
|
28
|
+
m = id ? "button_down_#{id}" : :button_down_other
|
|
29
|
+
ZenWindow.send :define_method, m, &body
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def button_up id = nil, &body
|
|
33
|
+
m = id ? "button_up_#{id}" : :button_up_other
|
|
34
|
+
ZenWindow.send :define_method, m, &body
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def update &body
|
|
38
|
+
ZenWindow.send :define_method, :update, &body
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def draw &body
|
|
42
|
+
ZenWindow.send :define_method, :draw, &body
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def run!
|
|
46
|
+
window = ZenWindow.new *@@window_args
|
|
47
|
+
@@options.each do |opt, value|
|
|
48
|
+
window.send "#{opt}=", value
|
|
49
|
+
end
|
|
50
|
+
window.show
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def Zen.included mod
|
|
54
|
+
at_exit { run! unless $! }
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
end
|
|
58
|
+
|
|
5
59
|
class ZenWindow < Window
|
|
6
|
-
|
|
60
|
+
def button_down id
|
|
61
|
+
m = :"button_down_#{id}"
|
|
62
|
+
respond_to?(m) ? send(m) : button_down_other(id)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def button_up id
|
|
66
|
+
m = :"button_up_#{id}"
|
|
67
|
+
respond_to?(m) ? send(m) : button_up_other(id)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def button_down_other id
|
|
71
|
+
end
|
|
7
72
|
|
|
8
|
-
def
|
|
9
|
-
super 800, 600, false
|
|
73
|
+
def button_up_other id
|
|
10
74
|
end
|
|
75
|
+
|
|
11
76
|
end
|
|
12
77
|
end
|
|
13
|
-
|
|
14
|
-
def set what, value
|
|
15
|
-
Gosu::ZenWindow.instance.send "#{what}=", value
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def update(&proc)
|
|
19
|
-
Gosu::ZenWindow.send :define_method, :update, proc
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
# WIP - needs all other callbacks, even with arguments
|
|
23
|
-
|
|
24
|
-
# WIP - needs to be compatible with gosu/preview.rb later
|
|
25
|
-
|
|
26
|
-
at_exit do
|
|
27
|
-
Gosu::ZenWindow.instance.show
|
|
28
|
-
end
|
data/linux/extconf.rb
CHANGED
|
@@ -59,6 +59,7 @@ LINUX_FILES = %w(
|
|
|
59
59
|
)
|
|
60
60
|
|
|
61
61
|
require 'mkmf'
|
|
62
|
+
require 'fileutils'
|
|
62
63
|
|
|
63
64
|
$INCFLAGS << " -I../ -I../GosuImpl"
|
|
64
65
|
|
|
@@ -66,41 +67,43 @@ if `uname`.chomp == 'Darwin' then
|
|
|
66
67
|
SOURCE_FILES = BASE_FILES + MAC_FILES
|
|
67
68
|
|
|
68
69
|
# Apple curiously distributes libpng only inside X11
|
|
69
|
-
$INCFLAGS
|
|
70
|
+
$INCFLAGS << " -I/usr/X11/include"
|
|
70
71
|
# To make everything work with the Objective C runtime
|
|
71
|
-
$CFLAGS
|
|
72
|
-
$LDFLAGS
|
|
72
|
+
$CFLAGS << " -x objective-c++ -fobjc-gc -DNDEBUG"
|
|
73
|
+
$LDFLAGS << " -L/usr/X11/lib -logg -lvorbis -lvorbisfile -liconv"
|
|
73
74
|
%w(AudioToolbox IOKit OpenAL OpenGL AppKit ApplicationServices Foundation Carbon).each do |f|
|
|
74
|
-
|
|
75
|
-
$LDFLAGS << " -framework #{f}"
|
|
75
|
+
$LDFLAGS << " -framework #{f}"
|
|
76
76
|
end
|
|
77
|
-
|
|
77
|
+
|
|
78
78
|
# Symlink our pretty gosu.so into ../lib
|
|
79
79
|
# FIXME gosu.rb should just look in the right place.
|
|
80
|
-
|
|
80
|
+
FileUtils.ln_s("../linux/gosu.bundle", "../lib/gosu.bundle")
|
|
81
81
|
else
|
|
82
82
|
SOURCE_FILES = BASE_FILES + LINUX_FILES
|
|
83
83
|
|
|
84
84
|
# Symlink our pretty gosu.so into ../lib
|
|
85
85
|
# FIXME gosu.rb should just look in the right place.
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
sdl_config = with_config("sdl-config", "sdl-config")
|
|
89
|
-
pango_config = "pkg-config pangoft2"
|
|
86
|
+
FileUtils.ln_s("../linux/gosu.so", "../lib/gosu.so")
|
|
90
87
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
88
|
+
pkg_config("sdl")
|
|
89
|
+
pkg_config("pangoft2")
|
|
90
|
+
pkg_config("x11")
|
|
91
|
+
|
|
92
|
+
pkg_config("gl")
|
|
93
|
+
pkg_config("vorbisfile")
|
|
94
|
+
pkg_config("openal")
|
|
95
|
+
pkg_config("sndfile")
|
|
96
|
+
pkg_config("xinerama")
|
|
97
|
+
|
|
98
|
+
have_header('SDL_ttf.h') if have_library('SDL_ttf', 'TTF_RenderUTF8_Blended')
|
|
95
99
|
have_header('FreeImage.h') if have_library('freeimage', 'FreeImage_ConvertFromRawBits')
|
|
96
|
-
have_header('
|
|
97
|
-
have_header('AL/al.h') if have_library('openal')
|
|
98
|
-
have_header('sndfile.h') if have_library('sndfile')
|
|
99
|
-
have_header('X11/extensions/Xinerama.h') if have_library('Xinerama', 'XineramaQueryScreens')
|
|
100
|
+
have_header('AL/al.h') if have_library('openal')
|
|
100
101
|
end
|
|
101
102
|
|
|
102
103
|
# Copy all relevant C++ files into the current directory
|
|
103
104
|
# FIXME Could be done by gem task instead.
|
|
104
|
-
SOURCE_FILES.each
|
|
105
|
+
SOURCE_FILES.each do |file|
|
|
106
|
+
FileUtils.cp("../GosuImpl/#{file}", File.basename(file).sub(/\.mm$/, '.cpp'))
|
|
107
|
+
end
|
|
105
108
|
|
|
106
109
|
create_makefile("gosu")
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gosu
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 85
|
|
5
5
|
prerelease:
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
8
|
- 7
|
|
9
|
-
-
|
|
10
|
-
version: 0.7.
|
|
9
|
+
- 43
|
|
10
|
+
version: 0.7.43
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Julian Raschke
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date:
|
|
18
|
+
date: 2012-03-18 00:00:00 Z
|
|
19
19
|
dependencies: []
|
|
20
20
|
|
|
21
21
|
description: " 2D game development library.\n\n Gosu features easy to use and game-friendly interfaces to 2D graphics\n and text (accelerated by 3D hardware), sound samples and music as well as\n keyboard, mouse and gamepad/joystick input.\n\n Also includes demos for integration with RMagick, Chipmunk and OpenGL.\n"
|
|
@@ -68,6 +68,7 @@ files:
|
|
|
68
68
|
- lib/gosu.rb
|
|
69
69
|
- examples/ChipmunkIntegration.rb
|
|
70
70
|
- examples/CptnRuby.rb
|
|
71
|
+
- examples/GosuZen.rb
|
|
71
72
|
- examples/MoreChipmunkAndRMagick.rb
|
|
72
73
|
- examples/OpenGLIntegration.rb
|
|
73
74
|
- examples/RMagickIntegration.rb
|
|
@@ -219,7 +220,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
219
220
|
requirements:
|
|
220
221
|
- See https://github.com/jlnr/gosu/wiki/Getting-Started-on-Linux
|
|
221
222
|
rubyforge_project:
|
|
222
|
-
rubygems_version: 1.8.
|
|
223
|
+
rubygems_version: 1.8.16
|
|
223
224
|
signing_key:
|
|
224
225
|
specification_version: 3
|
|
225
226
|
summary: 2D game development library.
|