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.298 by root, Tue Dec 22 00:46:05 2009 UTC vs.
Revision 1.302 by root, Tue Apr 20 10:53:11 2010 UTC

930 930
931 SDL_WM_SetCaption ("Deliantra MORPG Client " VERSION, "Deliantra"); 931 SDL_WM_SetCaption ("Deliantra MORPG Client " VERSION, "Deliantra");
932#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);
933#include "glfunc.h" 933#include "glfunc.h"
934#undef GL_FUNC 934#undef GL_FUNC
935
936 if (!gl.ActiveTexture ) gl.ActiveTexture = gl.ActiveTextureARB;
937 if (!gl.MultiTexCoord2f) gl.MultiTexCoord2f = gl.MultiTexCoord2fARB;
935 } 938 }
936} 939}
937 OUTPUT: 940 OUTPUT:
938 RETVAL 941 RETVAL
939 942
1672void 1675void
1673draw_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)
1674 PROTOTYPE: @ 1677 PROTOTYPE: @
1675 CODE: 1678 CODE:
1676{ 1679{
1680 glEnable (GL_BLEND);
1681 glBlendFunc (intensity ? GL_SRC_ALPHA : GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
1677 glEnable (GL_TEXTURE_2D); 1682 glEnable (GL_TEXTURE_2D);
1678 glEnable (GL_BLEND);
1679 glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
1680 glBindTexture (GL_TEXTURE_2D, name1); 1683 glBindTexture (GL_TEXTURE_2D, name1);
1681 1684
1682 glColor3f (intensity, intensity, intensity); 1685 glColor3f (intensity, intensity, intensity);
1683 glPushMatrix (); 1686 glPushMatrix ();
1684 glScalef (1./3, 1./3, 1.); 1687 glScalef (1./3, 1./3, 1.);
1699 glBindTexture (GL_TEXTURE_2D, name2); 1702 glBindTexture (GL_TEXTURE_2D, name2);
1700 glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); 1703 glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
1701 1704
1702 /* rgb == rgb(glcolor) */ 1705 /* rgb == rgb(glcolor) */
1703 glTexEnvi (GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE); 1706 glTexEnvi (GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE);
1704 glTexEnvi (GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_CONSTANT); 1707 glTexEnvi (GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PRIMARY_COLOR);
1705 glTexEnvi (GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR); 1708 glTexEnvi (GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
1706 1709
1707 /* alpha = interpolate t0, t1 by env_alpha */ 1710 /* alpha = interpolate t0, t1 by env_alpha */
1708 glTexEnvfv (GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, env_color); 1711 glTexEnvfv (GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, env_color);
1709 1712
2795 if (RETVAL < 0) 2798 if (RETVAL < 0)
2796 { 2799 {
2797 RETVAL = Mix_GroupOldest (-1); 2800 RETVAL = Mix_GroupOldest (-1);
2798 2801
2799 if (RETVAL < 0) 2802 if (RETVAL < 0)
2803 {
2804 // happens sometimes, maybe it just stopped playing(?)
2805 RETVAL = Mix_GroupAvailable (-1);
2806
2807 if (RETVAL < 0)
2800 XSRETURN_UNDEF; 2808 XSRETURN_UNDEF;
2801 2809 }
2810 else
2802 Mix_HaltChannel (RETVAL); 2811 Mix_HaltChannel (RETVAL);
2803 } 2812 }
2804 2813
2805 Mix_UnregisterAllEffects (RETVAL); 2814 Mix_UnregisterAllEffects (RETVAL);
2806 Mix_Volume (RETVAL, 128); 2815 Mix_Volume (RETVAL, 128);
2807} 2816}
2866 Mix_SetReverseStereo (self, flip); 2875 Mix_SetReverseStereo (self, flip);
2867 2876
2868MODULE = Deliantra::Client PACKAGE = DC::MixChunk 2877MODULE = Deliantra::Client PACKAGE = DC::MixChunk
2869 2878
2870PROTOTYPES: DISABLE 2879PROTOTYPES: DISABLE
2880
2881void
2882decoders ()
2883 PPCODE:
2884#if SDL_MIXER_MAJOR_VERSION > 1 || SDL_MIXER_MINOR_VERSION > 2 || SDL_MIXER_PATCHLEVEL >= 10
2885 int i, num = Mix_GetNumChunkDecoders ();
2886 EXTEND (SP, num);
2887 for (i = 0; i < num; ++i)
2888 PUSHs (sv_2mortal (newSVpv (Mix_GetChunkDecoder (i), 0)));
2889#else
2890 XPUSHs (sv_2mortal (newSVpv ("(sdl mixer too old)", 0)));
2891#endif
2871 2892
2872DC::MixChunk 2893DC::MixChunk
2873new (SV *class, DC::RW rwops) 2894new (SV *class, DC::RW rwops)
2874 CODE: 2895 CODE:
2875 RETVAL = Mix_LoadWAV_RW (rwops, 1); 2896 RETVAL = Mix_LoadWAV_RW (rwops, 1);
2908 OUTPUT: 2929 OUTPUT:
2909 RETVAL 2930 RETVAL
2910 2931
2911MODULE = Deliantra::Client PACKAGE = DC::MixMusic 2932MODULE = Deliantra::Client PACKAGE = DC::MixMusic
2912 2933
2934void
2935decoders ()
2936 PPCODE:
2937#if SDL_MIXER_MAJOR_VERSION > 1 || SDL_MIXER_MINOR_VERSION > 2 || SDL_MIXER_PATCHLEVEL >= 10
2938 int i, num = Mix_GetNumMusicDecoders ();
2939 EXTEND (SP, num);
2940 for (i = 0; i < num; ++i)
2941 PUSHs (sv_2mortal (newSVpv (Mix_GetMusicDecoder (i), 0)));
2942#else
2943 XPUSHs (sv_2mortal (newSVpv ("(sdl mixer too old)", 0)));
2944#endif
2945
2913int 2946int
2914volume (int volume = -1) 2947volume (int volume = -1)
2915 PROTOTYPE: ;$ 2948 PROTOTYPE: ;$
2916 CODE: 2949 CODE:
2917 if (items > 0) 2950 if (items > 0)
2927 2960
2928void 2961void
2929halt () 2962halt ()
2930 CODE: 2963 CODE:
2931 Mix_HaltMusic (); 2964 Mix_HaltMusic ();
2965
2966int
2967playing ()
2968 CODE:
2969 RETVAL = Mix_PlayingMusic ();
2970 OUTPUT:
2971 RETVAL
2932 2972
2933DC::MixMusic 2973DC::MixMusic
2934new (SV *class, DC::RW rwops) 2974new (SV *class, DC::RW rwops)
2935 CODE: 2975 CODE:
2936 RETVAL = Mix_LoadMUS_RW (rwops); 2976 RETVAL = Mix_LoadMUS_RW (rwops);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines