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.262 by root, Wed Jul 16 20:12:27 2008 UTC vs.
Revision 1.270 by root, Sun Jul 20 15:05:13 2008 UTC

85 85
86#define MIN_FONT_HEIGHT 10 86#define MIN_FONT_HEIGHT 10
87 87
88/* mask out modifiers we are not interested in */ 88/* mask out modifiers we are not interested in */
89#define MOD_MASK (KMOD_CTRL | KMOD_SHIFT | KMOD_ALT | KMOD_META) 89#define MOD_MASK (KMOD_CTRL | KMOD_SHIFT | KMOD_ALT | KMOD_META)
90
91#if 1
92# define PARACHUTE SDL_INIT_NOPARACHUTE
93#else
94# define PARACHUTE 0
95#endif
96 90
97static AV *texture_av; 91static AV *texture_av;
98 92
99static struct 93static struct
100{ 94{
373 self->oy = 0; 367 self->oy = 0;
374 self->row = 0; 368 self->row = 0;
375 self->rows = 0; 369 self->rows = 0;
376} 370}
377 371
372#define CELL_CLEAR(cell) \
373 do { \
374 if ((cell)->player) \
375 (cell)->tile [2] = 0; \
376 (cell)->darkness = 0; \
377 (cell)->stat_hp = 0; \
378 (cell)->flags = 0; \
379 (cell)->player = 0; \
380 } while (0)
381
378static void 382static void
379map_blank (DC__Map self, int x0, int y0, int w, int h) 383map_blank (DC__Map self, int x0, int y0, int w, int h)
380{ 384{
381 int x, y; 385 int x, y;
382 maprow *row; 386 maprow *row;
396 if (x >= row->c1) 400 if (x >= row->c1)
397 break; 401 break;
398 402
399 cell = row->col + x - row->c0; 403 cell = row->col + x - row->c0;
400 404
401 cell->darkness = 0; 405 CELL_CLEAR (cell);
402 cell->stat_hp = 0;
403 cell->flags = 0;
404 cell->player = 0;
405 } 406 }
406 } 407 }
407} 408}
408 409
409typedef struct { 410typedef struct {
644 const_iv (KMOD_NUM), 645 const_iv (KMOD_NUM),
645 const_iv (KMOD_CAPS), 646 const_iv (KMOD_CAPS),
646 const_iv (KMOD_MODE), 647 const_iv (KMOD_MODE),
647 648
648 const_iv (MIX_DEFAULT_FORMAT), 649 const_iv (MIX_DEFAULT_FORMAT),
650
651 const_iv (SDL_INIT_TIMER),
652 const_iv (SDL_INIT_AUDIO),
653 const_iv (SDL_INIT_VIDEO),
654 const_iv (SDL_INIT_CDROM),
655 const_iv (SDL_INIT_JOYSTICK),
656 const_iv (SDL_INIT_EVERYTHING),
657 const_iv (SDL_INIT_NOPARACHUTE),
658 const_iv (SDL_INIT_EVENTTHREAD),
659
660 const_iv (SDL_GL_RED_SIZE),
661 const_iv (SDL_GL_GREEN_SIZE),
662 const_iv (SDL_GL_BLUE_SIZE),
663 const_iv (SDL_GL_ALPHA_SIZE),
664 const_iv (SDL_GL_DOUBLEBUFFER),
665 const_iv (SDL_GL_BUFFER_SIZE),
666 const_iv (SDL_GL_DEPTH_SIZE),
667 const_iv (SDL_GL_STENCIL_SIZE),
668 const_iv (SDL_GL_ACCUM_RED_SIZE),
669 const_iv (SDL_GL_ACCUM_GREEN_SIZE),
670 const_iv (SDL_GL_ACCUM_BLUE_SIZE),
671 const_iv (SDL_GL_ACCUM_ALPHA_SIZE),
672 const_iv (SDL_GL_STEREO),
673 const_iv (SDL_GL_MULTISAMPLEBUFFERS),
674 const_iv (SDL_GL_MULTISAMPLESAMPLES),
675 const_iv (SDL_GL_ACCELERATED_VISUAL),
676 const_iv (SDL_GL_SWAP_CONTROL),
677
678 const_iv (FOW_DARKNESS)
649# undef const_iv 679# undef const_iv
650 }; 680 };
651 681
652 for (civ = const_iv + sizeof (const_iv) / sizeof (const_iv [0]); civ-- > const_iv; ) 682 for (civ = const_iv + sizeof (const_iv) / sizeof (const_iv [0]); civ-- > const_iv; )
653 newCONSTSUB (stash, (char *)civ->name, newSViv (civ->iv)); 683 newCONSTSUB (stash, (char *)civ->name, newSViv (civ->iv));
670 RETVAL 700 RETVAL
671 701
672NV floor (NV x) 702NV floor (NV x)
673 703
674NV ceil (NV x) 704NV ceil (NV x)
705
706NV ceilabs (NV x)
707 CODE:
708 RETVAL = x < 0. ? - ceil (-x) : ceil (x);
709 OUTPUT:
710 RETVAL
675 711
676IV minpot (UV n) 712IV minpot (UV n)
677 713
678IV popcount (UV n) 714IV popcount (UV n)
679 715
689 pango_context_set_language (opengl_context, pango_language_from_string ("en")); 725 pango_context_set_language (opengl_context, pango_language_from_string ("en"));
690 /*pango_context_set_base_dir (opengl_context, PANGO_DIRECTION_WEAK_LTR);*/ 726 /*pango_context_set_base_dir (opengl_context, PANGO_DIRECTION_WEAK_LTR);*/
691#endif 727#endif
692} 728}
693 729
694char *
695SDL_GetError () 730char *SDL_GetError ()
696 731
697int 732int SDL_Init (U32 flags)
698SDL_Init (U32 flags = SDL_INIT_VIDEO | SDL_INIT_AUDIO | PARACHUTE)
699 733
700void 734int SDL_InitSubSystem (U32 flags)
735
736void SDL_QuitSubSystem (U32 flags)
737
701SDL_Quit () 738void SDL_Quit ()
739
740int SDL_GL_SetAttribute (int attr, int value)
741
742int SDL_GL_GetAttribute (int attr)
743 CODE:
744 if (SDL_GL_GetAttribute (attr, &RETVAL))
745 XSRETURN_UNDEF;
746 OUTPUT:
747 RETVAL
702 748
703void 749void
704SDL_ListModes (int rgb, int alpha) 750SDL_ListModes (int rgb, int alpha)
705 PPCODE: 751 PPCODE:
706{ 752{
718 SDL_GL_SetAttribute (SDL_GL_ACCUM_GREEN_SIZE, 0); 764 SDL_GL_SetAttribute (SDL_GL_ACCUM_GREEN_SIZE, 0);
719 SDL_GL_SetAttribute (SDL_GL_ACCUM_BLUE_SIZE , 0); 765 SDL_GL_SetAttribute (SDL_GL_ACCUM_BLUE_SIZE , 0);
720 SDL_GL_SetAttribute (SDL_GL_ACCUM_ALPHA_SIZE, 0); 766 SDL_GL_SetAttribute (SDL_GL_ACCUM_ALPHA_SIZE, 0);
721 767
722 SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, 1); 768 SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, 1);
723#if SDL_VERSION_ATLEAST(1,2,10)
724 SDL_GL_SetAttribute (SDL_GL_ACCELERATED_VISUAL, 1);
725 SDL_GL_SetAttribute (SDL_GL_SWAP_CONTROL, 1); 769 SDL_GL_SetAttribute (SDL_GL_SWAP_CONTROL, 1);
726#endif
727 770
728 m = SDL_ListModes (0, SDL_FULLSCREEN | SDL_OPENGL); 771 m = SDL_ListModes (0, SDL_FULLSCREEN | SDL_OPENGL);
729 772
730 if (m && m != (SDL_Rect **)-1) 773 if (m && m != (SDL_Rect **)-1)
731 while (*m) 774 while (*m)
732 { 775 {
733 if ((*m)->w >= 800 && (*m)->h >= 480) 776 if ((*m)->w >= 400 && (*m)->h >= 300)
734 { 777 {
735 AV *av = newAV (); 778 AV *av = newAV ();
736 av_push (av, newSViv ((*m)->w)); 779 av_push (av, newSViv ((*m)->w));
737 av_push (av, newSViv ((*m)->h)); 780 av_push (av, newSViv ((*m)->h));
738 av_push (av, newSViv (rgb)); 781 av_push (av, newSViv (rgb));
1752 } 1795 }
1753 } 1796 }
1754 } 1797 }
1755 } 1798 }
1756 else 1799 else
1757 cell->darkness = 0; 1800 CELL_CLEAR (cell);
1758 } 1801 }
1759} 1802}
1760 OUTPUT: 1803 OUTPUT:
1761 RETVAL 1804 RETVAL
1762 1805
1814} 1857}
1815 OUTPUT: 1858 OUTPUT:
1816 RETVAL 1859 RETVAL
1817 1860
1818void 1861void
1819draw (DC::Map self, int mx, int my, int sw, int sh, int T, U32 player = 0xffffffff, int pdx = 0, int pdy = 0) 1862draw (DC::Map self, int mx, int my, int sw, int sh, int T, U32 player = 0xffffffff, int sdx = 0, int sdy = 0)
1820 CODE: 1863 CODE:
1821{ 1864{
1822 int x, y, z; 1865 int x, y, z;
1823 1866
1824 HV *smooth = (HV *)sv_2mortal ((SV *)newHV ()); 1867 HV *smooth = (HV *)sv_2mortal ((SV *)newHV ());
2071 } 2114 }
2072 2115
2073 if (pl_tex.name) 2116 if (pl_tex.name)
2074 { 2117 {
2075 maptex tex = pl_tex; 2118 maptex tex = pl_tex;
2076 int px = pl_x + pdx; 2119 int px = pl_x + sdx;
2077 int py = pl_y + pdy; 2120 int py = pl_y + sdy;
2078 2121
2079 key.texname = tex.name; 2122 key.texname = tex.name;
2080 arr = rc_array (rc, &key); 2123 arr = rc_array (rc, &key);
2081 2124
2082 rc_t2f_v3f (arr, 0 , 0 , px , py , 0); 2125 rc_t2f_v3f (arr, 0 , 0 , px , py , 0);
2199 SvCUR_set (darkness3_sv, sw34 * sh3); 2242 SvCUR_set (darkness3_sv, sw34 * sh3);
2200 2243
2201 mx += self->x - 1; 2244 mx += self->x - 1;
2202 my += self->y - 1; 2245 my += self->y - 1;
2203 2246
2204 memset (darkness1, 255, sw1 * sh1); 2247 memset (darkness1, 255 - FOW_DARKNESS, sw1 * sh1);
2205 2248
2206 for (y = 0; y < sh1; y++) 2249 for (y = 0; y < sh1; y++)
2207 if (0 <= y + my && y + my < self->rows) 2250 if (0 <= y + my && y + my < self->rows)
2208 { 2251 {
2209 maprow *row = self->row + (y + my); 2252 maprow *row = self->row + (y + my);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines