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.115 by root, Wed Jun 14 18:59:30 2006 UTC vs.
Revision 1.116 by root, Thu Jun 15 08:29:16 2006 UTC

436 436
437 for (civ = const_iv + sizeof (const_iv) / sizeof (const_iv [0]); civ-- > const_iv; ) 437 for (civ = const_iv + sizeof (const_iv) / sizeof (const_iv [0]); civ-- > const_iv; )
438 newCONSTSUB (stash, (char *)civ->name, newSViv (civ->iv)); 438 newCONSTSUB (stash, (char *)civ->name, newSViv (civ->iv));
439} 439}
440 440
441NV floor (NV x)
442
443NV ceil (NV x)
444
441void 445void
442pango_init () 446pango_init ()
443 CODE: 447 CODE:
444 // delayed, so it can pick up new fonts added by AddFontResourceEx 448 // delayed, so it can pick up new fonts added by AddFontResourceEx
445{ 449{
673 PUSHs (sv_2mortal (newSViv (surface2->w))); 677 PUSHs (sv_2mortal (newSViv (surface2->w)));
674 PUSHs (sv_2mortal (newSViv (surface2->h))); 678 PUSHs (sv_2mortal (newSViv (surface2->h)));
675 SDL_LockSurface (surface2); 679 SDL_LockSurface (surface2);
676 PUSHs (sv_2mortal (newSVpvn (surface2->pixels, surface2->h * surface2->pitch))); 680 PUSHs (sv_2mortal (newSVpvn (surface2->pixels, surface2->h * surface2->pitch)));
677 SDL_UnlockSurface (surface2); 681 SDL_UnlockSurface (surface2);
678 PUSHs (sv_2mortal (newSViv (surface->flags & (SDL_SRCCOLORKEY | SDL_SRCALPHA) ? GL_RGBA8 : GL_RGB8))); 682 PUSHs (sv_2mortal (newSViv (surface->flags & (SDL_SRCCOLORKEY | SDL_SRCALPHA) ? GL_RGBA : GL_RGB)));
679 PUSHs (sv_2mortal (newSViv (GL_RGBA))); 683 PUSHs (sv_2mortal (newSViv (GL_RGBA)));
680 PUSHs (sv_2mortal (newSViv (GL_UNSIGNED_BYTE))); 684 PUSHs (sv_2mortal (newSViv (GL_UNSIGNED_BYTE)));
681 685
682 SDL_FreeSurface (surface); 686 SDL_FreeSurface (surface);
683 SDL_FreeSurface (surface2); 687 SDL_FreeSurface (surface2);
967 971
968 EXTEND (SP, 5); 972 EXTEND (SP, 5);
969 PUSHs (sv_2mortal (newSViv (w))); 973 PUSHs (sv_2mortal (newSViv (w)));
970 PUSHs (sv_2mortal (newSViv (h))); 974 PUSHs (sv_2mortal (newSViv (h)));
971 PUSHs (sv_2mortal (retval)); 975 PUSHs (sv_2mortal (retval));
972 PUSHs (sv_2mortal (newSViv (GL_RGBA8))); 976 PUSHs (sv_2mortal (newSViv (GL_RGBA)));
973 PUSHs (sv_2mortal (newSViv (GL_RGBA))); 977 PUSHs (sv_2mortal (newSViv (GL_RGBA)));
974 } 978 }
975 else 979 else
976 { 980 {
977 FT_Bitmap bitmap; 981 FT_Bitmap bitmap;
1330 OUTPUT: 1334 OUTPUT:
1331 RETVAL 1335 RETVAL
1332 1336
1333void 1337void
1334draw (CFClient::Map self, int shift_x, int shift_y, int x0, int y0, int sw, int sh) 1338draw (CFClient::Map self, int shift_x, int shift_y, int x0, int y0, int sw, int sh)
1335 PPCODE: 1339 CODE:
1336{ 1340{
1337 int vx, vy; 1341 int vx, vy;
1338 int x, y, z; 1342 int x, y, z;
1339 int last_name; 1343 int last_name;
1340 mapface face; 1344 mapface face;
1341 int sw4 = (sw + 3) & ~3;
1342 SV *darkness_sv = sv_2mortal (newSV (sw4 * sh));
1343 uint8_t *darkness = (uint8_t *)SvPVX (darkness_sv);
1344 1345
1345 memset (darkness, 255, sw4 * sh);
1346 SvPOK_only (darkness_sv);
1347 SvCUR_set (darkness_sv, sw4 * sh);
1348
1349 vx = self->x + (self->w - sw) / 2 - shift_x; 1346 vx = self->x + (self->w - sw + 1) / 2 - shift_x;
1350 vy = self->y + (self->h - sh) / 2 - shift_y; 1347 vy = self->y + (self->h - sh + 1) / 2 - shift_y;
1351 1348
1352 /* 1349 /*
1353 int vx = self->vx = self->w >= sw 1350 int vx = self->vx = self->w >= sw
1354 ? self->x + (self->w - sw) / 2 1351 ? self->x + (self->w - sw) / 2
1355 : MIN (self->x, MAX (self->x + self->w - sw + 1, self->vx)); 1352 : MIN (self->x, MAX (self->x + self->w - sw + 1, self->vx));
1378 1375
1379 for (x = 0; x < sw; x++) 1376 for (x = 0; x < sw; x++)
1380 if (row->c0 <= x + vx && x + vx < row->c1) 1377 if (row->c0 <= x + vx && x + vx < row->c1)
1381 { 1378 {
1382 mapcell *cell = row->col + (x + vx - row->c0); 1379 mapcell *cell = row->col + (x + vx - row->c0);
1383
1384 darkness[y * sw4 + x] = cell->darkness < 0
1385 ? 255 - FOW_DARKNESS
1386 : 255 - cell->darkness;
1387 1380
1388 face = cell->face [z]; 1381 face = cell->face [z];
1389 1382
1390 if (face) 1383 if (face)
1391 { 1384 {
1412 1405
1413 glEnd (); 1406 glEnd ();
1414 1407
1415 glDisable (GL_TEXTURE_2D); 1408 glDisable (GL_TEXTURE_2D);
1416 glDisable (GL_BLEND); 1409 glDisable (GL_BLEND);
1410}
1411
1412void
1413fow_texture (CFClient::Map self, int shift_x, int shift_y, int x0, int y0, int sw, int sh)
1414 PPCODE:
1415{
1416 int vx, vy;
1417 int x, y;
1418 int sw4 = (sw + 3) & ~3;
1419 SV *darkness_sv = sv_2mortal (newSV (sw4 * sh));
1420 uint8_t *darkness = (uint8_t *)SvPVX (darkness_sv);
1421
1422 memset (darkness, 255, sw4 * sh);
1423 SvPOK_only (darkness_sv);
1424 SvCUR_set (darkness_sv, sw4 * sh);
1425
1426 vx = self->x + (self->w - sw + 1) / 2 - shift_x;
1427 vy = self->y + (self->h - sh + 1) / 2 - shift_y;
1428
1429 for (y = 0; y < sh; y++)
1430 if (0 <= y + vy && y + vy < self->rows)
1431 {
1432 maprow *row = self->row + (y + vy);
1433
1434 for (x = 0; x < sw; x++)
1435 if (row->c0 <= x + vx && x + vx < row->c1)
1436 {
1437 mapcell *cell = row->col + (x + vx - row->c0);
1438
1439 darkness[y * sw4 + x] = cell->darkness < 0
1440 ? 255 - FOW_DARKNESS
1441 : 255 - cell->darkness;
1442 }
1443 }
1417 1444
1418 EXTEND (SP, 3); 1445 EXTEND (SP, 3);
1419 PUSHs (sv_2mortal (newSViv (sw4))); 1446 PUSHs (sv_2mortal (newSViv (sw4)));
1420 PUSHs (sv_2mortal (newSViv (sh))); 1447 PUSHs (sv_2mortal (newSViv (sh)));
1421 PUSHs (darkness_sv); 1448 PUSHs (darkness_sv);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines