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.305 by root, Sun May 2 21:22:20 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
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}
1028 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
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);
1033 Mix_ChannelFinished (channel_finished); 1049 Mix_ChannelFinished (channel_finished);
1095add_font (char *file) 1111add_font (char *file)
1096 CODE: 1112 CODE:
1097 RETVAL = FcConfigAppFontAddFile (0, (const FcChar8 *)file); 1113 RETVAL = FcConfigAppFontAddFile (0, (const FcChar8 *)file);
1098 OUTPUT: 1114 OUTPUT:
1099 RETVAL 1115 RETVAL
1116
1117void
1118IMG_Init (int flags = IMG_INIT_JPG | IMG_INIT_PNG)
1100 1119
1101void 1120void
1102load_image_inline (SV *image_) 1121load_image_inline (SV *image_)
1103 ALIAS: 1122 ALIAS:
1104 load_image_file = 1 1123 load_image_file = 1
1672void 1691void
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) 1692draw_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: @ 1693 PROTOTYPE: @
1675 CODE: 1694 CODE:
1676{ 1695{
1696 glEnable (GL_BLEND);
1697 glBlendFunc (intensity ? GL_SRC_ALPHA : GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
1677 glEnable (GL_TEXTURE_2D); 1698 glEnable (GL_TEXTURE_2D);
1678 glEnable (GL_BLEND);
1679 glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
1680 glBindTexture (GL_TEXTURE_2D, name1); 1699 glBindTexture (GL_TEXTURE_2D, name1);
1681 1700
1682 glColor3f (intensity, intensity, intensity); 1701 glColor3f (intensity, intensity, intensity);
1683 glPushMatrix (); 1702 glPushMatrix ();
1684 glScalef (1./3, 1./3, 1.); 1703 glScalef (1./3, 1./3, 1.);
1699 glBindTexture (GL_TEXTURE_2D, name2); 1718 glBindTexture (GL_TEXTURE_2D, name2);
1700 glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); 1719 glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
1701 1720
1702 /* rgb == rgb(glcolor) */ 1721 /* rgb == rgb(glcolor) */
1703 glTexEnvi (GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE); 1722 glTexEnvi (GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE);
1704 glTexEnvi (GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_CONSTANT); 1723 glTexEnvi (GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PRIMARY_COLOR);
1705 glTexEnvi (GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR); 1724 glTexEnvi (GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
1706 1725
1707 /* alpha = interpolate t0, t1 by env_alpha */ 1726 /* alpha = interpolate t0, t1 by env_alpha */
1708 glTexEnvfv (GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, env_color); 1727 glTexEnvfv (GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, env_color);
1709 1728
2795 if (RETVAL < 0) 2814 if (RETVAL < 0)
2796 { 2815 {
2797 RETVAL = Mix_GroupOldest (-1); 2816 RETVAL = Mix_GroupOldest (-1);
2798 2817
2799 if (RETVAL < 0) 2818 if (RETVAL < 0)
2819 {
2820 // happens sometimes, maybe it just stopped playing(?)
2821 RETVAL = Mix_GroupAvailable (-1);
2822
2823 if (RETVAL < 0)
2800 XSRETURN_UNDEF; 2824 XSRETURN_UNDEF;
2801 2825 }
2826 else
2802 Mix_HaltChannel (RETVAL); 2827 Mix_HaltChannel (RETVAL);
2803 } 2828 }
2804 2829
2805 Mix_UnregisterAllEffects (RETVAL); 2830 Mix_UnregisterAllEffects (RETVAL);
2806 Mix_Volume (RETVAL, 128); 2831 Mix_Volume (RETVAL, 128);
2807} 2832}
2866 Mix_SetReverseStereo (self, flip); 2891 Mix_SetReverseStereo (self, flip);
2867 2892
2868MODULE = Deliantra::Client PACKAGE = DC::MixChunk 2893MODULE = Deliantra::Client PACKAGE = DC::MixChunk
2869 2894
2870PROTOTYPES: DISABLE 2895PROTOTYPES: DISABLE
2896
2897void
2898decoders ()
2899 PPCODE:
2900#if SDL_MIXER_MAJOR_VERSION > 1 || SDL_MIXER_MINOR_VERSION > 2 || SDL_MIXER_PATCHLEVEL >= 10
2901 int i, num = Mix_GetNumChunkDecoders ();
2902 EXTEND (SP, num);
2903 for (i = 0; i < num; ++i)
2904 PUSHs (sv_2mortal (newSVpv (Mix_GetChunkDecoder (i), 0)));
2905#else
2906 XPUSHs (sv_2mortal (newSVpv ("(sdl mixer too old)", 0)));
2907#endif
2871 2908
2872DC::MixChunk 2909DC::MixChunk
2873new (SV *class, DC::RW rwops) 2910new (SV *class, DC::RW rwops)
2874 CODE: 2911 CODE:
2875 RETVAL = Mix_LoadWAV_RW (rwops, 1); 2912 RETVAL = Mix_LoadWAV_RW (rwops, 1);
2908 OUTPUT: 2945 OUTPUT:
2909 RETVAL 2946 RETVAL
2910 2947
2911MODULE = Deliantra::Client PACKAGE = DC::MixMusic 2948MODULE = Deliantra::Client PACKAGE = DC::MixMusic
2912 2949
2950void
2951decoders ()
2952 PPCODE:
2953#if SDL_MIXER_MAJOR_VERSION > 1 || SDL_MIXER_MINOR_VERSION > 2 || SDL_MIXER_PATCHLEVEL >= 10
2954 int i, num = Mix_GetNumMusicDecoders ();
2955 EXTEND (SP, num);
2956 for (i = 0; i < num; ++i)
2957 PUSHs (sv_2mortal (newSVpv (Mix_GetMusicDecoder (i), 0)));
2958#else
2959 XPUSHs (sv_2mortal (newSVpv ("(sdl mixer too old)", 0)));
2960#endif
2961
2913int 2962int
2914volume (int volume = -1) 2963volume (int volume = -1)
2915 PROTOTYPE: ;$ 2964 PROTOTYPE: ;$
2916 CODE: 2965 CODE:
2917 if (items > 0) 2966 if (items > 0)
2927 2976
2928void 2977void
2929halt () 2978halt ()
2930 CODE: 2979 CODE:
2931 Mix_HaltMusic (); 2980 Mix_HaltMusic ();
2981
2982int
2983playing ()
2984 CODE:
2985 RETVAL = Mix_PlayingMusic ();
2986 OUTPUT:
2987 RETVAL
2932 2988
2933DC::MixMusic 2989DC::MixMusic
2934new (SV *class, DC::RW rwops) 2990new (SV *class, DC::RW rwops)
2935 CODE: 2991 CODE:
2936 RETVAL = Mix_LoadMUS_RW (rwops); 2992 RETVAL = Mix_LoadMUS_RW (rwops);
3131 3187
3132int glGetError () 3188int glGetError ()
3133 3189
3134void glFinish () 3190void glFinish ()
3135 3191
3192void glFlush ()
3193
3136void glClear (int mask) 3194void glClear (int mask)
3137 3195
3138void glClearColor (float r, float g, float b, float a = 1.0) 3196void glClearColor (float r, float g, float b, float a = 1.0)
3139 PROTOTYPE: @ 3197 PROTOTYPE: @
3140 3198

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines