diff -r ceee3f20c784 -r b709e061577e hedgewars/uSound.pas --- a/hedgewars/uSound.pas Tue Jan 13 22:38:08 2009 +0000 +++ b/hedgewars/uSound.pas Wed Jan 14 16:36:16 2009 +0000 @@ -30,13 +30,12 @@ procedure InitSound; procedure ReleaseSound; procedure SoundLoad; -procedure PlaySound(snd: TSound; infinite: boolean); +procedure PlaySound(snd: TSound; infinite: boolean; voicepack: PVoicepack); procedure PlayMusic; procedure StopSound(snd: TSound); function ChangeVolume(voldelta: LongInt): LongInt; function AskForVoicepack(name: shortstring): Pointer; -procedure SetVoicePack(vp: PVoicePack); var MusicFN: shortstring = ''; @@ -49,7 +48,6 @@ lastChan: array [TSound] of LongInt; voicepacks: array[0..cMaxTeams] of TVoicepack; defVoicepack: PVoicepack; - currentVP: PVoicepack; function AskForVoicepack(name: shortstring): Pointer; var i: Longword; @@ -65,11 +63,6 @@ AskForVoicepack:= @voicepacks[i] end; -procedure SetVoicePack(vp: PVoicePack); -begin -currentVP:= vp -end; - procedure InitSound; begin if not isSoundEnabled then exit; @@ -109,7 +102,6 @@ if not isSoundEnabled then exit; defVoicepack:= AskForVoicepack('Default'); -SetVoicePack(defVoicepack); for i:= Low(TSound) to High(TSound) do if Soundz[i].Path <> ptVoices then @@ -136,14 +128,14 @@ end; end; -procedure PlaySound(snd: TSound; infinite: boolean); +procedure PlaySound(snd: TSound; infinite: boolean; voicepack: PVoicepack); var loops: LongInt; begin if (not isSoundEnabled) or fastUntilLag then exit; if infinite then loops:= -1 else loops:= 0; -if currentVP^.chunks[snd] <> nil then - lastChan[snd]:= Mix_PlayChannelTimed(-1, currentVP^.chunks[snd], loops, -1) +if (voicepack <> nil) and (voicepack^.chunks[snd] <> nil) then + lastChan[snd]:= Mix_PlayChannelTimed(-1, voicepack^.chunks[snd], loops, -1) else lastChan[snd]:= Mix_PlayChannelTimed(-1, defVoicepack^.chunks[snd], loops, -1) end;