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.297 by root, Tue Dec 22 00:08:11 2009 UTC vs.
Revision 1.301 by root, Thu Feb 4 20:01:08 2010 UTC

41#include <SDL_opengl.h> 41#include <SDL_opengl.h>
42 42
43/* work around os x broken headers */ 43/* work around os x broken headers */
44#ifdef __MACOSX__ 44#ifdef __MACOSX__
45typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); 45typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
46typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
47typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t);
46#endif 48#endif
47 49
48#define PANGO_ENABLE_BACKEND 50#define PANGO_ENABLE_BACKEND
49#define G_DISABLE_CAST_CHECKS 51#define G_DISABLE_CAST_CHECKS
50 52
928 930
929 SDL_WM_SetCaption ("Deliantra MORPG Client " VERSION, "Deliantra"); 931 SDL_WM_SetCaption ("Deliantra MORPG Client " VERSION, "Deliantra");
930#define GL_FUNC(ptr,name) gl.name = (ptr)SDL_GL_GetProcAddress ("gl" # name); 932#define GL_FUNC(ptr,name) gl.name = (ptr)SDL_GL_GetProcAddress ("gl" # name);
931#include "glfunc.h" 933#include "glfunc.h"
932#undef GL_FUNC 934#undef GL_FUNC
935
936 if (!gl.ActiveTexture ) gl.ActiveTexture = gl.ActiveTextureARB;
937 if (!gl.MultiTexCoord2f) gl.MultiTexCoord2f = gl.MultiTexCoord2fARB;
933 } 938 }
934} 939}
935 OUTPUT: 940 OUTPUT:
936 RETVAL 941 RETVAL
937 942
1670void 1675void
1671draw_fow_texture (float intensity, int hidden_tex, int name1, uint8_t *data1, float s, float t, int w, int h, float blend = 0.f, int dx = 0, int dy = 0, int name2 = 0, uint8_t *data2 = data1) 1676draw_fow_texture (float intensity, int hidden_tex, int name1, uint8_t *data1, float s, float t, int w, int h, float blend = 0.f, int dx = 0, int dy = 0, int name2 = 0, uint8_t *data2 = data1)
1672 PROTOTYPE: @ 1677 PROTOTYPE: @
1673 CODE: 1678 CODE:
1674{ 1679{
1680 glEnable (GL_BLEND);
1681 glBlendFunc (intensity ? GL_SRC_ALPHA : GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
1675 glEnable (GL_TEXTURE_2D); 1682 glEnable (GL_TEXTURE_2D);
1676 glEnable (GL_BLEND);
1677 glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
1678 glBindTexture (GL_TEXTURE_2D, name1); 1683 glBindTexture (GL_TEXTURE_2D, name1);
1679 1684
1680 glColor3f (intensity, intensity, intensity); 1685 glColor3f (intensity, intensity, intensity);
1681 glPushMatrix (); 1686 glPushMatrix ();
1682 glScalef (1./3, 1./3, 1.); 1687 glScalef (1./3, 1./3, 1.);
1697 glBindTexture (GL_TEXTURE_2D, name2); 1702 glBindTexture (GL_TEXTURE_2D, name2);
1698 glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); 1703 glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
1699 1704
1700 /* rgb == rgb(glcolor) */ 1705 /* rgb == rgb(glcolor) */
1701 glTexEnvi (GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE); 1706 glTexEnvi (GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE);
1702 glTexEnvi (GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_CONSTANT); 1707 glTexEnvi (GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PRIMARY_COLOR);
1703 glTexEnvi (GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR); 1708 glTexEnvi (GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
1704 1709
1705 /* alpha = interpolate t0, t1 by env_alpha */ 1710 /* alpha = interpolate t0, t1 by env_alpha */
1706 glTexEnvfv (GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, env_color); 1711 glTexEnvfv (GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, env_color);
1707 1712
2865 2870
2866MODULE = Deliantra::Client PACKAGE = DC::MixChunk 2871MODULE = Deliantra::Client PACKAGE = DC::MixChunk
2867 2872
2868PROTOTYPES: DISABLE 2873PROTOTYPES: DISABLE
2869 2874
2875void
2876decoders ()
2877 PPCODE:
2878#if SDL_MIXER_MAJOR_VERSION > 1 || SDL_MIXER_MINOR_VERSION > 2 || SDL_MIXER_PATCHLEVEL >= 10
2879 int i, num = Mix_GetNumChunkDecoders ();
2880 EXTEND (SP, num);
2881 for (i = 0; i < num; ++i)
2882 PUSHs (sv_2mortal (newSVpv (Mix_GetChunkDecoder (i), 0)));
2883#else
2884 XPUSHs (sv_2mortal (newSVpv ("(sdl mixer too old)", 0)));
2885#endif
2886
2870DC::MixChunk 2887DC::MixChunk
2871new (SV *class, DC::RW rwops) 2888new (SV *class, DC::RW rwops)
2872 CODE: 2889 CODE:
2873 RETVAL = Mix_LoadWAV_RW (rwops, 1); 2890 RETVAL = Mix_LoadWAV_RW (rwops, 1);
2874 OUTPUT: 2891 OUTPUT:
2906 OUTPUT: 2923 OUTPUT:
2907 RETVAL 2924 RETVAL
2908 2925
2909MODULE = Deliantra::Client PACKAGE = DC::MixMusic 2926MODULE = Deliantra::Client PACKAGE = DC::MixMusic
2910 2927
2928void
2929decoders ()
2930 PPCODE:
2931#if SDL_MIXER_MAJOR_VERSION > 1 || SDL_MIXER_MINOR_VERSION > 2 || SDL_MIXER_PATCHLEVEL >= 10
2932 int i, num = Mix_GetNumMusicDecoders ();
2933 EXTEND (SP, num);
2934 for (i = 0; i < num; ++i)
2935 PUSHs (sv_2mortal (newSVpv (Mix_GetMusicDecoder (i), 0)));
2936#else
2937 XPUSHs (sv_2mortal (newSVpv ("(sdl mixer too old)", 0)));
2938#endif
2939
2911int 2940int
2912volume (int volume = -1) 2941volume (int volume = -1)
2913 PROTOTYPE: ;$ 2942 PROTOTYPE: ;$
2914 CODE: 2943 CODE:
2915 if (items > 0) 2944 if (items > 0)
2925 2954
2926void 2955void
2927halt () 2956halt ()
2928 CODE: 2957 CODE:
2929 Mix_HaltMusic (); 2958 Mix_HaltMusic ();
2959
2960int
2961playing ()
2962 CODE:
2963 RETVAL = Mix_PlayingMusic ();
2964 OUTPUT:
2965 RETVAL
2930 2966
2931DC::MixMusic 2967DC::MixMusic
2932new (SV *class, DC::RW rwops) 2968new (SV *class, DC::RW rwops)
2933 CODE: 2969 CODE:
2934 RETVAL = Mix_LoadMUS_RW (rwops); 2970 RETVAL = Mix_LoadMUS_RW (rwops);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines