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.303 by root, Thu Apr 22 11:18:04 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);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines