ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/Client.xs
(Generate patch)

Comparing deliantra/Deliantra-Client/Client.xs (file contents):
Revision 1.53 by root, Wed Apr 19 21:38:04 2006 UTC vs.
Revision 1.56 by root, Thu Apr 20 09:13:31 2006 UTC

237 break; 237 break;
238 238
239 row->col[x - row->c0].darkness = -1; 239 row->col[x - row->c0].darkness = -1;
240 } 240 }
241 } 241 }
242}
243
244static void
245music_finished ()
246{
247 SDL_UserEvent ev;
248
249 ev.type = SDL_USEREVENT;
250 ev.code = 0;
251 ev.data1 = 0;
252 ev.data2 = 0;
253
254 SDL_PushEvent (&ev);
242} 255}
243 256
244MODULE = CFClient PACKAGE = CFClient 257MODULE = CFClient PACKAGE = CFClient
245 258
246PROTOTYPES: ENABLE 259PROTOTYPES: ENABLE
414 SDL_WM_SetCaption ("Crossfire+ Client " VERSION, "Crossfire+"); 427 SDL_WM_SetCaption ("Crossfire+ Client " VERSION, "Crossfire+");
415 OUTPUT: 428 OUTPUT:
416 RETVAL 429 RETVAL
417 430
418void 431void
432SDL_GL_SwapBuffers ()
433
434void
419SDL_PollEvent () 435SDL_PollEvent ()
420 PPCODE: 436 PPCODE:
421{ 437{
422 SDL_Event ev; 438 SDL_Event ev;
423 439
460 } 476 }
461} 477}
462 478
463int 479int
464Mix_OpenAudio (int frequency = 22050, int format = MIX_DEFAULT_FORMAT, int channels = 1, int chunksize = 512) 480Mix_OpenAudio (int frequency = 22050, int format = MIX_DEFAULT_FORMAT, int channels = 1, int chunksize = 512)
481 POSTCALL:
482 Mix_HookMusicFinished (music_finished);
465 483
466void 484void
467Mix_CloseAudio () 485Mix_CloseAudio ()
468 486
469int 487int
930 cell->darkness = -1; 948 cell->darkness = -1;
931 } 949 }
932} 950}
933 951
934SV * 952SV *
935mapmap (CFClient::Map self, int w, int h) 953mapmap (CFClient::Map self, int x0, int y0, int w, int h)
936 CODE: 954 CODE:
937{ 955{
938 int x0, x1, x; 956 int x1, x;
939 int y0, y1, y; 957 int y1, y;
940 int z; 958 int z;
941 SV *map_sv = newSV (w * h * sizeof (uint32_t)); 959 SV *map_sv = newSV (w * h * sizeof (uint32_t));
942 uint32_t *map = (uint32_t *)SvPVX (map_sv); 960 uint32_t *map = (uint32_t *)SvPVX (map_sv);
943 961
944 SvPOK_only (map_sv); 962 SvPOK_only (map_sv);
945 SvCUR_set (map_sv, w * h * sizeof (uint32_t)); 963 SvCUR_set (map_sv, w * h * sizeof (uint32_t));
946 964
947 x0 = self->x - w / 2; x1 = x0 + w; 965 x0 += self->x; x1 = x0 + w;
948 y0 = self->y - h / 2; y1 = y0 + h; 966 y0 += self->y; y1 = y0 + h;
949 967
950 for (y = y0; y < y1; y++) 968 for (y = y0; y < y1; y++)
951 { 969 {
952 maprow *row = 0 <= y && y < self->rows 970 maprow *row = 0 <= y && y < self->rows
953 ? self->row + y 971 ? self->row + y
1093 *data++ = 0; /* version 0 format */ 1111 *data++ = 0; /* version 0 format */
1094 *data++ = w >> 8; *data++ = w; 1112 *data++ = w >> 8; *data++ = w;
1095 *data++ = h >> 8; *data++ = h; 1113 *data++ = h >> 8; *data++ = h;
1096 1114
1097 // we need to do this 'cause we don't keep an absolute coord system for rows 1115 // we need to do this 'cause we don't keep an absolute coord system for rows
1098 // TODO: treat rows as we treat 1116 // TODO: treat rows as we treat columns
1099 map_get_row (self, y0 + self->y - self->oy);//D 1117 map_get_row (self, y0 + self->y - self->oy);//D
1100 map_get_row (self, y0 + self->y - self->oy + h - 1);//D 1118 map_get_row (self, y0 + self->y - self->oy + h - 1);//D
1101 1119
1102 x0 += self->x - self->ox; 1120 x0 += self->x - self->ox;
1103 y0 += self->y - self->oy; 1121 y0 += self->y - self->oy;
1167 1185
1168 w = *data++ << 8; w |= *data++; 1186 w = *data++ << 8; w |= *data++;
1169 h = *data++ << 8; h |= *data++; 1187 h = *data++ << 8; h |= *data++;
1170 1188
1171 // we need to do this 'cause we don't keep an absolute coord system for rows 1189 // we need to do this 'cause we don't keep an absolute coord system for rows
1172 // TODO: treat rows as we treat 1190 // TODO: treat rows as we treat columns
1173 map_get_row (self, y0 + self->y - self->oy);//D 1191 map_get_row (self, y0 + self->y - self->oy);//D
1174 map_get_row (self, y0 + self->y - self->oy + h - 1);//D 1192 map_get_row (self, y0 + self->y - self->oy + h - 1);//D
1175 1193
1176 x0 += self->x - self->ox; 1194 x0 += self->x - self->ox;
1177 y0 += self->y - self->oy; 1195 y0 += self->y - self->oy;
1268 CODE: 1286 CODE:
1269 RETVAL = Mix_PlayMusic (self, loops); 1287 RETVAL = Mix_PlayMusic (self, loops);
1270 OUTPUT: 1288 OUTPUT:
1271 RETVAL 1289 RETVAL
1272 1290
1291MODULE = CFClient PACKAGE = CFClient::OpenGL
1292
1293BOOT:
1294{
1295 HV *stash = gv_stashpv ("CFClient::OpenGL", 1);
1296 static const struct {
1297 const char *name;
1298 IV iv;
1299 } *civ, const_iv[] = {
1300# define const_iv(name) { # name, (IV)name }
1301 const_iv (GL_COLOR_MATERIAL),
1302 const_iv (GL_SMOOTH),
1303 const_iv (GL_FLAT),
1304 const_iv (GL_BLEND),
1305 const_iv (GL_AND),
1306 const_iv (GL_SRC_ALPHA),
1307 const_iv (GL_ONE_MINUS_SRC_ALPHA),
1308 const_iv (GL_RGB),
1309 const_iv (GL_RGBA),
1310 const_iv (GL_UNSIGNED_BYTE),
1311 const_iv (GL_ALPHA4),
1312 const_iv (GL_ALPHA),
1313 const_iv (GL_FLOAT),
1314 const_iv (GL_UNSIGNED_INT_8_8_8_8_REV),
1315 const_iv (GL_COMPILE),
1316 const_iv (GL_TEXTURE_1D),
1317 const_iv (GL_TEXTURE_2D),
1318 const_iv (GL_TEXTURE_ENV),
1319 const_iv (GL_TEXTURE_MAG_FILTER),
1320 const_iv (GL_TEXTURE_MIN_FILTER),
1321 const_iv (GL_TEXTURE_ENV_MODE),
1322 const_iv (GL_TEXTURE_WRAP_S),
1323 const_iv (GL_TEXTURE_WRAP_T),
1324 const_iv (GL_CLAMP),
1325 const_iv (GL_REPEAT),
1326 const_iv (GL_NEAREST),
1327 const_iv (GL_LINEAR),
1328 const_iv (GL_MODULATE),
1329 const_iv (GL_REPLACE),
1330 const_iv (GL_COLOR_BUFFER_BIT),
1331 const_iv (GL_PROJECTION),
1332 const_iv (GL_MODELVIEW),
1333 const_iv (GL_COLOR_LOGIC_OP),
1334 const_iv (GL_CONVOLUTION_2D),
1335 const_iv (GL_CONVOLUTION_BORDER_MODE),
1336 const_iv (GL_CONSTANT_BORDER),
1337 const_iv (GL_LINES),
1338 const_iv (GL_QUADS),
1339 const_iv (GL_LINE_LOOP),
1340 const_iv (GL_PERSPECTIVE_CORRECTION_HINT),
1341 const_iv (GL_FASTEST),
1342# undef const_iv
1343 };
1344
1345 for (civ = const_iv + sizeof (const_iv) / sizeof (const_iv [0]); civ-- > const_iv; )
1346 newCONSTSUB (stash, (char *)civ->name, newSViv (civ->iv));
1347}
1348
1349int glGetError ()
1350
1351void glClear (int mask)
1352
1353void glClearColor (float r, float g, float b, float a = 1.0)
1354 PROTOTYPE: @
1355
1356void glEnable (int cap)
1357
1358void glDisable (int cap)
1359
1360void glShadeModel (int mode)
1361
1362void glHint (int target, int mode)
1363
1364void glBlendFunc (int sfactor, int dfactor)
1365
1366void glLogicOp (int opcode)
1367
1368void glMatrixMode (int mode)
1369
1370void glPushMatrix ()
1371
1372void glPopMatrix ()
1373
1374void glLoadIdentity ()
1375
1376void glOrtho (double left, double right, double bottom, double top, double near, double far)
1377
1378void glViewport (int x, int y, int width, int height)
1379
1380void glTranslate (float x, float y, float z = 0.)
1381 CODE:
1382 glTranslatef (x, y, z);
1383
1384void glScale (float x, float y, float z)
1385 CODE:
1386 glScalef (x, y, z);
1387
1388void glRotate (float angle, float x, float y, float z)
1389 CODE:
1390 glRotatef (angle, x, y, z);
1391
1392void glBegin (int mode)
1393
1394void glEnd ()
1395
1396void glColor (float r, float g, float b, float a = 1.0)
1397 PROTOTYPE: @
1398 CODE:
1399 glColor4f (r, g, b, a);
1400
1401void glVertex (float x, float y, float z = 0.)
1402 CODE:
1403 glVertex3f (x, y, z);
1404
1405void glTexCoord (float s, float t)
1406 CODE:
1407 glTexCoord2f (s, t);
1408
1409void glTexEnv (int target, int pname, float param)
1410 CODE:
1411 glTexEnvf (target, pname, param);
1412
1413void glTexParameter (int target, int pname, float param)
1414 CODE:
1415 glTexParameterf (target, pname, param);
1416
1417void glBindTexture (int target, int name)
1418
1419void glConvolutionParameter (int target, int pname, float params)
1420 CODE:
1421 glConvolutionParameterf (target, pname, params);
1422
1423void glConvolutionFilter2D (int target, int internalformat, int width, int height, int format, int type, char *data)
1424
1425void glTexImage2D (int target, int level, int internalformat, int width, int height, int border, int format, int type, char *data)
1426
1427void glCopyTexImage2D (int target, int level, int internalformat, int x, int y, int width, int height, int border)
1428
1429int glGenTexture ()
1430 CODE:
1431{
1432 GLuint name;
1433 glGenTextures (1, &name);
1434 RETVAL = name;
1435}
1436 OUTPUT:
1437 RETVAL
1438
1439void glDeleteTexture (int name)
1440 CODE:
1441{
1442 GLuint name_ = name;
1443 glDeleteTextures (1, &name_);
1444}
1445
1446int glGenList ()
1447 CODE:
1448 RETVAL = glGenLists (1);
1449 OUTPUT:
1450 RETVAL
1451
1452void glDeleteList (int list)
1453 CODE:
1454 glDeleteLists (list, 1);
1455
1456void glNewList (int list, int mode = GL_COMPILE)
1457
1458void glEndList ()
1459
1460void glCallList (int list)
1461

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines