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.304 by root, Fri Apr 23 16:30:38 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
1023 } 1026 }
1024 1027
1025 XPUSHs (sv_2mortal (sv_bless (newRV_noinc ((SV *)hv), gv_stashpv ("DC::UI::Event", 1)))); 1028 XPUSHs (sv_2mortal (sv_bless (newRV_noinc ((SV *)hv), gv_stashpv ("DC::UI::Event", 1))));
1026 } 1029 }
1027} 1030}
1031
1032char *
1033SDL_AudioDriverName ()
1034 CODE:
1035{
1036 char buf [256];
1037 if (!SDL_AudioDriverName (buf, sizeof (buf)))
1038 XSRETURN_UNDEF;
1039
1040 RETVAL = buf;
1041}
1042 OUTPUT:
1043 RETVAL
1028 1044
1029int 1045int
1030Mix_OpenAudio (int frequency = 44100, int format = MIX_DEFAULT_FORMAT, int channels = 2, int chunksize = 4096) 1046Mix_OpenAudio (int frequency = 44100, int format = MIX_DEFAULT_FORMAT, int channels = 2, int chunksize = 4096)
1031 POSTCALL: 1047 POSTCALL:
1032 Mix_HookMusicFinished (music_finished); 1048 Mix_HookMusicFinished (music_finished);
1672void 1688void
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) 1689draw_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: @ 1690 PROTOTYPE: @
1675 CODE: 1691 CODE:
1676{ 1692{
1693 glEnable (GL_BLEND);
1694 glBlendFunc (intensity ? GL_SRC_ALPHA : GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
1677 glEnable (GL_TEXTURE_2D); 1695 glEnable (GL_TEXTURE_2D);
1678 glEnable (GL_BLEND);
1679 glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
1680 glBindTexture (GL_TEXTURE_2D, name1); 1696 glBindTexture (GL_TEXTURE_2D, name1);
1681 1697
1682 glColor3f (intensity, intensity, intensity); 1698 glColor3f (intensity, intensity, intensity);
1683 glPushMatrix (); 1699 glPushMatrix ();
1684 glScalef (1./3, 1./3, 1.); 1700 glScalef (1./3, 1./3, 1.);
1699 glBindTexture (GL_TEXTURE_2D, name2); 1715 glBindTexture (GL_TEXTURE_2D, name2);
1700 glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); 1716 glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
1701 1717
1702 /* rgb == rgb(glcolor) */ 1718 /* rgb == rgb(glcolor) */
1703 glTexEnvi (GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE); 1719 glTexEnvi (GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE);
1704 glTexEnvi (GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_CONSTANT); 1720 glTexEnvi (GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PRIMARY_COLOR);
1705 glTexEnvi (GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR); 1721 glTexEnvi (GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
1706 1722
1707 /* alpha = interpolate t0, t1 by env_alpha */ 1723 /* alpha = interpolate t0, t1 by env_alpha */
1708 glTexEnvfv (GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, env_color); 1724 glTexEnvfv (GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, env_color);
1709 1725
2795 if (RETVAL < 0) 2811 if (RETVAL < 0)
2796 { 2812 {
2797 RETVAL = Mix_GroupOldest (-1); 2813 RETVAL = Mix_GroupOldest (-1);
2798 2814
2799 if (RETVAL < 0) 2815 if (RETVAL < 0)
2816 {
2817 // happens sometimes, maybe it just stopped playing(?)
2818 RETVAL = Mix_GroupAvailable (-1);
2819
2820 if (RETVAL < 0)
2800 XSRETURN_UNDEF; 2821 XSRETURN_UNDEF;
2801 2822 }
2823 else
2802 Mix_HaltChannel (RETVAL); 2824 Mix_HaltChannel (RETVAL);
2803 } 2825 }
2804 2826
2805 Mix_UnregisterAllEffects (RETVAL); 2827 Mix_UnregisterAllEffects (RETVAL);
2806 Mix_Volume (RETVAL, 128); 2828 Mix_Volume (RETVAL, 128);
2807} 2829}
2866 Mix_SetReverseStereo (self, flip); 2888 Mix_SetReverseStereo (self, flip);
2867 2889
2868MODULE = Deliantra::Client PACKAGE = DC::MixChunk 2890MODULE = Deliantra::Client PACKAGE = DC::MixChunk
2869 2891
2870PROTOTYPES: DISABLE 2892PROTOTYPES: DISABLE
2893
2894void
2895decoders ()
2896 PPCODE:
2897#if SDL_MIXER_MAJOR_VERSION > 1 || SDL_MIXER_MINOR_VERSION > 2 || SDL_MIXER_PATCHLEVEL >= 10
2898 int i, num = Mix_GetNumChunkDecoders ();
2899 EXTEND (SP, num);
2900 for (i = 0; i < num; ++i)
2901 PUSHs (sv_2mortal (newSVpv (Mix_GetChunkDecoder (i), 0)));
2902#else
2903 XPUSHs (sv_2mortal (newSVpv ("(sdl mixer too old)", 0)));
2904#endif
2871 2905
2872DC::MixChunk 2906DC::MixChunk
2873new (SV *class, DC::RW rwops) 2907new (SV *class, DC::RW rwops)
2874 CODE: 2908 CODE:
2875 RETVAL = Mix_LoadWAV_RW (rwops, 1); 2909 RETVAL = Mix_LoadWAV_RW (rwops, 1);
2908 OUTPUT: 2942 OUTPUT:
2909 RETVAL 2943 RETVAL
2910 2944
2911MODULE = Deliantra::Client PACKAGE = DC::MixMusic 2945MODULE = Deliantra::Client PACKAGE = DC::MixMusic
2912 2946
2947void
2948decoders ()
2949 PPCODE:
2950#if SDL_MIXER_MAJOR_VERSION > 1 || SDL_MIXER_MINOR_VERSION > 2 || SDL_MIXER_PATCHLEVEL >= 10
2951 int i, num = Mix_GetNumMusicDecoders ();
2952 EXTEND (SP, num);
2953 for (i = 0; i < num; ++i)
2954 PUSHs (sv_2mortal (newSVpv (Mix_GetMusicDecoder (i), 0)));
2955#else
2956 XPUSHs (sv_2mortal (newSVpv ("(sdl mixer too old)", 0)));
2957#endif
2958
2913int 2959int
2914volume (int volume = -1) 2960volume (int volume = -1)
2915 PROTOTYPE: ;$ 2961 PROTOTYPE: ;$
2916 CODE: 2962 CODE:
2917 if (items > 0) 2963 if (items > 0)
2927 2973
2928void 2974void
2929halt () 2975halt ()
2930 CODE: 2976 CODE:
2931 Mix_HaltMusic (); 2977 Mix_HaltMusic ();
2978
2979int
2980playing ()
2981 CODE:
2982 RETVAL = Mix_PlayingMusic ();
2983 OUTPUT:
2984 RETVAL
2932 2985
2933DC::MixMusic 2986DC::MixMusic
2934new (SV *class, DC::RW rwops) 2987new (SV *class, DC::RW rwops)
2935 CODE: 2988 CODE:
2936 RETVAL = Mix_LoadMUS_RW (rwops); 2989 RETVAL = Mix_LoadMUS_RW (rwops);
3131 3184
3132int glGetError () 3185int glGetError ()
3133 3186
3134void glFinish () 3187void glFinish ()
3135 3188
3189void glFlush ()
3190
3136void glClear (int mask) 3191void glClear (int mask)
3137 3192
3138void glClearColor (float r, float g, float b, float a = 1.0) 3193void glClearColor (float r, float g, float b, float a = 1.0)
3139 PROTOTYPE: @ 3194 PROTOTYPE: @
3140 3195

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines