--- deliantra/Deliantra-Client/Client.xs 2007/07/29 18:56:02 1.214 +++ deliantra/Deliantra-Client/Client.xs 2007/07/31 00:56:02 1.216 @@ -2271,6 +2271,28 @@ PROTOTYPES: DISABLE +CFPlus::Channel +find () + CODE: +{ + RETVAL = Mix_GroupAvailable (-1); + + if (RETVAL < 0) + { + RETVAL = Mix_GroupOldest (-1); + + if (RETVAL < 0) + XSRETURN_UNDEF; + + Mix_HaltChannel (RETVAL); + } + + Mix_UnregisterAllEffects (RETVAL); + Mix_Volume (RETVAL, 128); +} + OUTPUT: + RETVAL + void halt (CFPlus::Channel self) CODE: @@ -2289,7 +2311,7 @@ int volume (CFPlus::Channel self, int volume) CODE: - RETVAL = Mix_Volume (self, volume); + RETVAL = Mix_Volume (self, CLAMP (volume, 0, 128)); OUTPUT: RETVAL @@ -2301,17 +2323,19 @@ void set_panning (CFPlus::Channel self, int left, int right) CODE: + left = CLAMP (left , 0, 255); + right = CLAMP (right, 0, 255); Mix_SetPanning (self, left, right); void set_distance (CFPlus::Channel self, int distance) CODE: - Mix_SetDistance (self, distance); + Mix_SetDistance (self, CLAMP (distance, 0, 255)); void set_position (CFPlus::Channel self, int angle, int distance) CODE: - Mix_SetPosition (self, angle, distance); + Mix_SetPosition (self, angle, CLAMP (distance, 0, 255)); void set_reverse_stereo (CFPlus::Channel self, int flip) @@ -2337,15 +2361,27 @@ int volume (CFPlus::MixChunk self, int volume = -1) CODE: + if (items > 1) + volume = CLAMP (volume, 0, 128); RETVAL = Mix_VolumeChunk (self, volume); OUTPUT: RETVAL CFPlus::Channel -play (CFPlus::MixChunk self, int channel = -1, int loops = 0, int ticks = -1) +play (CFPlus::MixChunk self, CFPlus::Channel channel = -1, int loops = 0, int ticks = -1) CODE: +{ RETVAL = Mix_PlayChannelTimed (channel, self, loops, ticks); - Mix_UnregisterAllEffects (RETVAL); + + if (RETVAL < 0) + XSRETURN_UNDEF; + + if (channel < 0) + { + Mix_UnregisterAllEffects (RETVAL); + Mix_Volume (RETVAL, 128); + } +} OUTPUT: RETVAL @@ -2355,6 +2391,8 @@ volume (int volume = -1) PROTOTYPE: ;$ CODE: + if (items > 0) + volume = CLAMP (volume, 0, 128); RETVAL = Mix_VolumeMusic (volume); OUTPUT: RETVAL