rubygame 2.2.0-i586-linux
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/CREDITS +60 -0
- data/LICENSE +504 -0
- data/NEWS +201 -0
- data/README +139 -0
- data/ROADMAP +43 -0
- data/Rakefile +409 -0
- data/doc/extended_readme.rdoc +49 -0
- data/doc/getting_started.rdoc +47 -0
- data/doc/macosx_install.rdoc +70 -0
- data/doc/windows_install.rdoc +123 -0
- data/ext/rubygame/MANIFEST +25 -0
- data/ext/rubygame/rubygame_core.so +0 -0
- data/ext/rubygame/rubygame_event.c +644 -0
- data/ext/rubygame/rubygame_event.h +48 -0
- data/ext/rubygame/rubygame_event.o +0 -0
- data/ext/rubygame/rubygame_gfx.c +942 -0
- data/ext/rubygame/rubygame_gfx.h +101 -0
- data/ext/rubygame/rubygame_gfx.o +0 -0
- data/ext/rubygame/rubygame_gfx.so +0 -0
- data/ext/rubygame/rubygame_gl.c +154 -0
- data/ext/rubygame/rubygame_gl.h +32 -0
- data/ext/rubygame/rubygame_gl.o +0 -0
- data/ext/rubygame/rubygame_image.c +108 -0
- data/ext/rubygame/rubygame_image.h +41 -0
- data/ext/rubygame/rubygame_image.o +0 -0
- data/ext/rubygame/rubygame_image.so +0 -0
- data/ext/rubygame/rubygame_joystick.c +247 -0
- data/ext/rubygame/rubygame_joystick.h +41 -0
- data/ext/rubygame/rubygame_joystick.o +0 -0
- data/ext/rubygame/rubygame_main.c +155 -0
- data/ext/rubygame/rubygame_main.h +33 -0
- data/ext/rubygame/rubygame_main.o +0 -0
- data/ext/rubygame/rubygame_mixer.c +764 -0
- data/ext/rubygame/rubygame_mixer.h +62 -0
- data/ext/rubygame/rubygame_mixer.o +0 -0
- data/ext/rubygame/rubygame_mixer.so +0 -0
- data/ext/rubygame/rubygame_screen.c +448 -0
- data/ext/rubygame/rubygame_screen.h +43 -0
- data/ext/rubygame/rubygame_screen.o +0 -0
- data/ext/rubygame/rubygame_shared.c +209 -0
- data/ext/rubygame/rubygame_shared.h +60 -0
- data/ext/rubygame/rubygame_shared.o +0 -0
- data/ext/rubygame/rubygame_surface.c +1147 -0
- data/ext/rubygame/rubygame_surface.h +62 -0
- data/ext/rubygame/rubygame_surface.o +0 -0
- data/ext/rubygame/rubygame_time.c +183 -0
- data/ext/rubygame/rubygame_time.h +32 -0
- data/ext/rubygame/rubygame_time.o +0 -0
- data/ext/rubygame/rubygame_ttf.c +599 -0
- data/ext/rubygame/rubygame_ttf.h +69 -0
- data/ext/rubygame/rubygame_ttf.o +0 -0
- data/ext/rubygame/rubygame_ttf.so +0 -0
- data/lib/rubygame/MANIFEST +12 -0
- data/lib/rubygame/clock.rb +128 -0
- data/lib/rubygame/color/models/base.rb +106 -0
- data/lib/rubygame/color/models/hsl.rb +153 -0
- data/lib/rubygame/color/models/hsv.rb +149 -0
- data/lib/rubygame/color/models/rgb.rb +78 -0
- data/lib/rubygame/color/palettes/css.rb +49 -0
- data/lib/rubygame/color/palettes/palette.rb +100 -0
- data/lib/rubygame/color/palettes/x11.rb +177 -0
- data/lib/rubygame/color.rb +79 -0
- data/lib/rubygame/constants.rb +238 -0
- data/lib/rubygame/event.rb +313 -0
- data/lib/rubygame/ftor.rb +370 -0
- data/lib/rubygame/hotspot.rb +265 -0
- data/lib/rubygame/keyconstants.rb +237 -0
- data/lib/rubygame/mediabag.rb +94 -0
- data/lib/rubygame/queue.rb +288 -0
- data/lib/rubygame/rect.rb +612 -0
- data/lib/rubygame/sfont.rb +223 -0
- data/lib/rubygame/sprite.rb +511 -0
- data/lib/rubygame.rb +41 -0
- data/samples/FreeSans.ttf +0 -0
- data/samples/GPL.txt +340 -0
- data/samples/README +40 -0
- data/samples/chimp.bmp +0 -0
- data/samples/chimp.rb +313 -0
- data/samples/demo_gl.rb +151 -0
- data/samples/demo_gl_tex.rb +197 -0
- data/samples/demo_music.rb +75 -0
- data/samples/demo_rubygame.rb +284 -0
- data/samples/demo_sfont.rb +52 -0
- data/samples/demo_ttf.rb +193 -0
- data/samples/demo_utf8.rb +53 -0
- data/samples/fist.bmp +0 -0
- data/samples/load_and_blit.rb +22 -0
- data/samples/panda.png +0 -0
- data/samples/punch.wav +0 -0
- data/samples/ruby.png +0 -0
- data/samples/song.ogg +0 -0
- data/samples/term16.png +0 -0
- data/samples/whiff.wav +0 -0
- metadata +152 -0
@@ -0,0 +1,209 @@
|
|
1
|
+
/*
|
2
|
+
* Code that is common to all Rubygame modules.
|
3
|
+
*--
|
4
|
+
* Rubygame -- Ruby code and bindings to SDL to facilitate game creation
|
5
|
+
* Copyright (C) 2004-2007 John Croisant
|
6
|
+
*
|
7
|
+
* This library is free software; you can redistribute it and/or
|
8
|
+
* modify it under the terms of the GNU Lesser General Public
|
9
|
+
* License as published by the Free Software Foundation; either
|
10
|
+
* version 2.1 of the License, or (at your option) any later version.
|
11
|
+
*
|
12
|
+
* This library is distributed in the hope that it will be useful,
|
13
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
15
|
+
* Lesser General Public License for more details.
|
16
|
+
*
|
17
|
+
* You should have received a copy of the GNU Lesser General Public
|
18
|
+
* License along with this library; if not, write to the Free Software
|
19
|
+
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
20
|
+
*++
|
21
|
+
*/
|
22
|
+
|
23
|
+
#include "rubygame_shared.h"
|
24
|
+
|
25
|
+
VALUE mRubygame;
|
26
|
+
VALUE cSurface;
|
27
|
+
VALUE cRect;
|
28
|
+
VALUE eSDLError;
|
29
|
+
SDL_Rect *make_rect(int, int, int, int);
|
30
|
+
SDL_Color make_sdl_color(VALUE);
|
31
|
+
int init_video_system();
|
32
|
+
void Init_rubygame_shared();
|
33
|
+
|
34
|
+
SDL_Rect *make_rect(int x, int y, int w, int h)
|
35
|
+
{
|
36
|
+
SDL_Rect *rect;
|
37
|
+
rect = (SDL_Rect *) malloc(sizeof(SDL_Rect));
|
38
|
+
rect->x = x;
|
39
|
+
rect->y = y;
|
40
|
+
rect->w = w;
|
41
|
+
rect->h = h;
|
42
|
+
return rect;
|
43
|
+
}
|
44
|
+
|
45
|
+
VALUE make_symbol(char *string)
|
46
|
+
{
|
47
|
+
return ID2SYM(rb_intern(string));
|
48
|
+
}
|
49
|
+
|
50
|
+
/* Take either nil, Numeric or an Array of Numerics, returns Uint32. */
|
51
|
+
Uint32 collapse_flags(VALUE vflags)
|
52
|
+
{
|
53
|
+
Uint32 flags = 0;
|
54
|
+
int i;
|
55
|
+
|
56
|
+
if( RTEST(vflags) )
|
57
|
+
{
|
58
|
+
switch( TYPE(vflags) ){
|
59
|
+
case T_ARRAY: {
|
60
|
+
int len = RARRAY(vflags)->len;
|
61
|
+
for(i=0; i < len; i++)
|
62
|
+
{
|
63
|
+
flags |= NUM2UINT( rb_ary_entry( vflags,i ) );
|
64
|
+
}
|
65
|
+
break;
|
66
|
+
}
|
67
|
+
case T_BIGNUM: {
|
68
|
+
flags = rb_big2uint( vflags );
|
69
|
+
break;
|
70
|
+
}
|
71
|
+
case T_FIXNUM: {
|
72
|
+
flags = NUM2UINT( vflags );
|
73
|
+
break;
|
74
|
+
}
|
75
|
+
default: {
|
76
|
+
rb_raise(rb_eArgError,"Wrong type for argument `flags' (wanted Number or Array).");
|
77
|
+
}
|
78
|
+
}
|
79
|
+
}
|
80
|
+
|
81
|
+
return flags;
|
82
|
+
}
|
83
|
+
|
84
|
+
VALUE convert_to_array(VALUE val)
|
85
|
+
{
|
86
|
+
VALUE v = rb_check_array_type(val);
|
87
|
+
if( TYPE(v) != T_ARRAY )
|
88
|
+
{
|
89
|
+
rb_raise(rb_eTypeError, "can't convert %s into Array",
|
90
|
+
rb_obj_classname(val));
|
91
|
+
}
|
92
|
+
return v;
|
93
|
+
}
|
94
|
+
|
95
|
+
/* Takes a Color, Array, or color name (Symbol or String).
|
96
|
+
* Returns an RGBA Array, or raises eTypeError if it can't.
|
97
|
+
*/
|
98
|
+
VALUE convert_color(VALUE color)
|
99
|
+
{
|
100
|
+
if( rb_respond_to(color, rb_intern("to_sdl_rgba_ary")) )
|
101
|
+
{
|
102
|
+
return rb_funcall( color, rb_intern("to_sdl_rgba_ary"), 0 );
|
103
|
+
}
|
104
|
+
else if( rb_respond_to(color, rb_intern("to_ary")) )
|
105
|
+
{
|
106
|
+
return convert_to_array( color );
|
107
|
+
}
|
108
|
+
else if( TYPE(color) == T_SYMBOL || TYPE(color) == T_STRING )
|
109
|
+
{
|
110
|
+
VALUE mColor = rb_const_get( mRubygame, rb_intern("Color") );
|
111
|
+
return convert_color( rb_funcall( mColor, rb_intern("[]"), 1, color) );
|
112
|
+
}
|
113
|
+
else
|
114
|
+
{
|
115
|
+
rb_raise(rb_eTypeError, "unsupported type %s for color",
|
116
|
+
rb_obj_classname(color));
|
117
|
+
}
|
118
|
+
}
|
119
|
+
|
120
|
+
SDL_Color make_sdl_color(VALUE vcolor)
|
121
|
+
{
|
122
|
+
SDL_Color color;
|
123
|
+
vcolor = convert_color(vcolor);
|
124
|
+
extract_rgb_u8_as_u8(vcolor, &(color.r), &(color.g), &(color.b));
|
125
|
+
return color;
|
126
|
+
}
|
127
|
+
|
128
|
+
void extract_rgb_u8_as_u8(VALUE color, Uint8 *r, Uint8 *g, Uint8 *b)
|
129
|
+
{
|
130
|
+
*r = NUM2UINT(rb_ary_entry(color, 0));
|
131
|
+
*g = NUM2UINT(rb_ary_entry(color, 1));
|
132
|
+
*b = NUM2UINT(rb_ary_entry(color, 2));
|
133
|
+
}
|
134
|
+
|
135
|
+
void extract_rgba_u8_as_u8(VALUE color, Uint8 *r, Uint8 *g, Uint8 *b, Uint8 *a)
|
136
|
+
{
|
137
|
+
*r = NUM2UINT(rb_ary_entry(color, 0));
|
138
|
+
*g = NUM2UINT(rb_ary_entry(color, 1));
|
139
|
+
*b = NUM2UINT(rb_ary_entry(color, 2));
|
140
|
+
|
141
|
+
if( RARRAY(color)->len > 3 )
|
142
|
+
{
|
143
|
+
*a = NUM2UINT(rb_ary_entry(color, 3));
|
144
|
+
}
|
145
|
+
else
|
146
|
+
{
|
147
|
+
*a = 255;
|
148
|
+
}
|
149
|
+
}
|
150
|
+
|
151
|
+
/* --
|
152
|
+
*
|
153
|
+
* call-seq:
|
154
|
+
* init_video_system() -> int
|
155
|
+
*
|
156
|
+
* Initialize SDL's video subsystem.
|
157
|
+
* Return 0 (zero) on success, non-zero on failure.
|
158
|
+
*
|
159
|
+
* If it has already been initialized, return 0 immediately.
|
160
|
+
*
|
161
|
+
* ++
|
162
|
+
*/
|
163
|
+
int init_video_system()
|
164
|
+
{
|
165
|
+
if( SDL_WasInit(SDL_INIT_VIDEO) == 0 )
|
166
|
+
{
|
167
|
+
return SDL_Init(SDL_INIT_VIDEO);
|
168
|
+
}
|
169
|
+
else
|
170
|
+
{
|
171
|
+
return 0;
|
172
|
+
}
|
173
|
+
}
|
174
|
+
|
175
|
+
|
176
|
+
void Init_rubygame_shared()
|
177
|
+
{
|
178
|
+
|
179
|
+
mRubygame = rb_define_module("Rubygame");
|
180
|
+
|
181
|
+
/* Rubygame::Surface class */
|
182
|
+
if( !rb_const_defined(mRubygame,rb_intern("Surface")) )
|
183
|
+
{
|
184
|
+
cSurface = rb_define_class_under(mRubygame,"Surface",rb_cObject);
|
185
|
+
}
|
186
|
+
else
|
187
|
+
{
|
188
|
+
cSurface = rb_const_get(mRubygame,rb_intern("Surface"));
|
189
|
+
}
|
190
|
+
|
191
|
+
/* Rubygame::SDLError class */
|
192
|
+
if( !rb_const_defined(mRubygame,rb_intern("SDLError")))
|
193
|
+
{
|
194
|
+
/* Indicates that an SDL function did not execute properly. */
|
195
|
+
eSDLError = rb_define_class_under(mRubygame,"SDLError",rb_eStandardError);
|
196
|
+
}
|
197
|
+
else
|
198
|
+
{
|
199
|
+
eSDLError = rb_const_get(mRubygame,rb_intern("SDLError"));
|
200
|
+
}
|
201
|
+
|
202
|
+
/* Rubygame::VERSIONS hash table */
|
203
|
+
if( !rb_const_defined(mRubygame, rb_intern("VERSIONS")))
|
204
|
+
{
|
205
|
+
/* A Hash containing the version s of rubygame and it's
|
206
|
+
* compile-time dependencies. */
|
207
|
+
rb_define_const(mRubygame,"VERSIONS",rb_hash_new());
|
208
|
+
}
|
209
|
+
}
|
@@ -0,0 +1,60 @@
|
|
1
|
+
/*
|
2
|
+
* Rubygame -- Ruby code and bindings to SDL to facilitate game creation
|
3
|
+
* Copyright (C) 2004-2007 John Croisant
|
4
|
+
*
|
5
|
+
* This library is free software; you can redistribute it and/or
|
6
|
+
* modify it under the terms of the GNU Lesser General Public
|
7
|
+
* License as published by the Free Software Foundation; either
|
8
|
+
* version 2.1 of the License, or (at your option) any later version.
|
9
|
+
*
|
10
|
+
* This library is distributed in the hope that it will be useful,
|
11
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13
|
+
* Lesser General Public License for more details.
|
14
|
+
*
|
15
|
+
* You should have received a copy of the GNU Lesser General Public
|
16
|
+
* License along with this library; if not, write to the Free Software
|
17
|
+
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
18
|
+
*
|
19
|
+
*/
|
20
|
+
|
21
|
+
#ifndef _RUBYGAME_SHARED_H
|
22
|
+
#define _RUBYGAME_SHARED_H
|
23
|
+
|
24
|
+
#include <SDL.h>
|
25
|
+
#include <ruby.h>
|
26
|
+
#include <stdio.h>
|
27
|
+
|
28
|
+
/* General */
|
29
|
+
extern VALUE mRubygame;
|
30
|
+
extern VALUE eSDLError;
|
31
|
+
extern VALUE cSurface;
|
32
|
+
extern VALUE cRect;
|
33
|
+
|
34
|
+
extern SDL_Rect *make_rect(int, int, int, int);
|
35
|
+
extern VALUE make_symbol(char *);
|
36
|
+
extern Uint32 collapse_flags(VALUE);
|
37
|
+
extern VALUE convert_to_array(VALUE);
|
38
|
+
|
39
|
+
extern SDL_Color make_sdl_color(VALUE);
|
40
|
+
extern void extract_rgb_u8_as_u8(VALUE, Uint8*, Uint8*, Uint8*);
|
41
|
+
extern void extract_rgba_u8_as_u8(VALUE, Uint8*, Uint8*, Uint8*, Uint8*);
|
42
|
+
|
43
|
+
extern int init_video_system();
|
44
|
+
extern void Init_rubygame_shared();
|
45
|
+
|
46
|
+
/* Apparently it is not desirable to define these functions when
|
47
|
+
* using Micrsoft Visual C.
|
48
|
+
*/
|
49
|
+
#ifndef _MSC_VER
|
50
|
+
|
51
|
+
static inline int max(int a, int b) {
|
52
|
+
return a > b ? a : b;
|
53
|
+
}
|
54
|
+
static inline int min(int a, int b) {
|
55
|
+
return a > b ? b : a;
|
56
|
+
}
|
57
|
+
|
58
|
+
#endif
|
59
|
+
|
60
|
+
#endif
|
Binary file
|