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.299 by root, Tue Dec 22 01:37:41 2009 UTC vs.
Revision 1.304 by root, Fri Apr 23 16:30:38 2010 UTC

1027 1027
1028 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))));
1029 } 1029 }
1030} 1030}
1031 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
1032int 1045int
1033Mix_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)
1034 POSTCALL: 1047 POSTCALL:
1035 Mix_HookMusicFinished (music_finished); 1048 Mix_HookMusicFinished (music_finished);
1036 Mix_ChannelFinished (channel_finished); 1049 Mix_ChannelFinished (channel_finished);
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) 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)
1677 PROTOTYPE: @ 1690 PROTOTYPE: @
1678 CODE: 1691 CODE:
1679{ 1692{
1680 glEnable (GL_BLEND); 1693 glEnable (GL_BLEND);
1681 glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA); 1694 glBlendFunc (intensity ? GL_SRC_ALPHA : GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
1682 glEnable (GL_TEXTURE_2D); 1695 glEnable (GL_TEXTURE_2D);
1683 glBindTexture (GL_TEXTURE_2D, name1); 1696 glBindTexture (GL_TEXTURE_2D, name1);
1684 1697
1685 glColor3f (intensity, intensity, intensity); 1698 glColor3f (intensity, intensity, intensity);
1686 glPushMatrix (); 1699 glPushMatrix ();
1702 glBindTexture (GL_TEXTURE_2D, name2); 1715 glBindTexture (GL_TEXTURE_2D, name2);
1703 glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); 1716 glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
1704 1717
1705 /* rgb == rgb(glcolor) */ 1718 /* rgb == rgb(glcolor) */
1706 glTexEnvi (GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE); 1719 glTexEnvi (GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE);
1707 glTexEnvi (GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_CONSTANT); 1720 glTexEnvi (GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PRIMARY_COLOR);
1708 glTexEnvi (GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR); 1721 glTexEnvi (GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
1709 1722
1710 /* alpha = interpolate t0, t1 by env_alpha */ 1723 /* alpha = interpolate t0, t1 by env_alpha */
1711 glTexEnvfv (GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, env_color); 1724 glTexEnvfv (GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, env_color);
1712 1725
2798 if (RETVAL < 0) 2811 if (RETVAL < 0)
2799 { 2812 {
2800 RETVAL = Mix_GroupOldest (-1); 2813 RETVAL = Mix_GroupOldest (-1);
2801 2814
2802 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)
2803 XSRETURN_UNDEF; 2821 XSRETURN_UNDEF;
2804 2822 }
2823 else
2805 Mix_HaltChannel (RETVAL); 2824 Mix_HaltChannel (RETVAL);
2806 } 2825 }
2807 2826
2808 Mix_UnregisterAllEffects (RETVAL); 2827 Mix_UnregisterAllEffects (RETVAL);
2809 Mix_Volume (RETVAL, 128); 2828 Mix_Volume (RETVAL, 128);
2810} 2829}
2869 Mix_SetReverseStereo (self, flip); 2888 Mix_SetReverseStereo (self, flip);
2870 2889
2871MODULE = Deliantra::Client PACKAGE = DC::MixChunk 2890MODULE = Deliantra::Client PACKAGE = DC::MixChunk
2872 2891
2873PROTOTYPES: 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
2874 2905
2875DC::MixChunk 2906DC::MixChunk
2876new (SV *class, DC::RW rwops) 2907new (SV *class, DC::RW rwops)
2877 CODE: 2908 CODE:
2878 RETVAL = Mix_LoadWAV_RW (rwops, 1); 2909 RETVAL = Mix_LoadWAV_RW (rwops, 1);
2911 OUTPUT: 2942 OUTPUT:
2912 RETVAL 2943 RETVAL
2913 2944
2914MODULE = Deliantra::Client PACKAGE = DC::MixMusic 2945MODULE = Deliantra::Client PACKAGE = DC::MixMusic
2915 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
2916int 2959int
2917volume (int volume = -1) 2960volume (int volume = -1)
2918 PROTOTYPE: ;$ 2961 PROTOTYPE: ;$
2919 CODE: 2962 CODE:
2920 if (items > 0) 2963 if (items > 0)
2930 2973
2931void 2974void
2932halt () 2975halt ()
2933 CODE: 2976 CODE:
2934 Mix_HaltMusic (); 2977 Mix_HaltMusic ();
2978
2979int
2980playing ()
2981 CODE:
2982 RETVAL = Mix_PlayingMusic ();
2983 OUTPUT:
2984 RETVAL
2935 2985
2936DC::MixMusic 2986DC::MixMusic
2937new (SV *class, DC::RW rwops) 2987new (SV *class, DC::RW rwops)
2938 CODE: 2988 CODE:
2939 RETVAL = Mix_LoadMUS_RW (rwops); 2989 RETVAL = Mix_LoadMUS_RW (rwops);
3134 3184
3135int glGetError () 3185int glGetError ()
3136 3186
3137void glFinish () 3187void glFinish ()
3138 3188
3189void glFlush ()
3190
3139void glClear (int mask) 3191void glClear (int mask)
3140 3192
3141void glClearColor (float r, float g, float b, float a = 1.0) 3193void glClearColor (float r, float g, float b, float a = 1.0)
3142 PROTOTYPE: @ 3194 PROTOTYPE: @
3143 3195

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines