hedgewars/uSound.pas
changeset 3201 400c98815100
parent 3182 f75d546414c4
child 3202 b470d7875f23
equal deleted inserted replaced
3200:cb0b37553eac 3201:400c98815100
    36 procedure InitSound;
    36 procedure InitSound;
    37 procedure ReleaseSound;
    37 procedure ReleaseSound;
    38 procedure SoundLoad;
    38 procedure SoundLoad;
    39 procedure PlaySound(snd: TSound);
    39 procedure PlaySound(snd: TSound);
    40 procedure PlaySound(snd: TSound; voicepack: PVoicepack);
    40 procedure PlaySound(snd: TSound; voicepack: PVoicepack);
       
    41 procedure PlaySound(snd: TSound; voicepack: PVoicepack; keepPlaying: boolean);
    41 function LoopSound(snd: TSound): LongInt;
    42 function LoopSound(snd: TSound): LongInt;
    42 function LoopSound(snd: TSound; voicepack: PVoicepack): LongInt;
    43 function LoopSound(snd: TSound; voicepack: PVoicepack): LongInt;
    43 procedure PlayMusic;
    44 procedure PlayMusic;
    44 procedure PauseMusic;
    45 procedure PauseMusic;
    45 procedure ResumeMusic;
    46 procedure ResumeMusic;
   160                 end;
   161                 end;
   161 end;
   162 end;
   162 
   163 
   163 procedure PlaySound(snd: TSound);
   164 procedure PlaySound(snd: TSound);
   164 begin
   165 begin
   165     PlaySound(snd, nil);
   166     PlaySound(snd, nil, false);
   166 end;
   167 end;
   167 
   168 
   168 procedure PlaySound(snd: TSound; voicepack: PVoicepack);
   169 procedure PlaySound(snd: TSound; voicepack: PVoicepack);
   169 begin
   170 begin
       
   171     PlaySound(snd, voicepack, false);
       
   172 end;
       
   173 
       
   174 procedure PlaySound(snd: TSound; voicepack: PVoicepack; keepPlaying: boolean);
       
   175 begin
   170 if (not isSoundEnabled) or fastUntilLag then exit;
   176 if (not isSoundEnabled) or fastUntilLag then exit;
       
   177 
       
   178 if keepPlaying and (lastChan[snd] <> -1) and (Mix_Playing(lastChan[snd]) <> 0) then
       
   179     exit;
   171 
   180 
   172 if (voicepack <> nil) and (voicepack^.chunks[snd] <> nil) then
   181 if (voicepack <> nil) and (voicepack^.chunks[snd] <> nil) then
   173     lastChan[snd]:= Mix_PlayChannelTimed(-1, voicepack^.chunks[snd], 0, -1)
   182     lastChan[snd]:= Mix_PlayChannelTimed(-1, voicepack^.chunks[snd], 0, -1)
   174 else
   183 else
   175     lastChan[snd]:= Mix_PlayChannelTimed(-1, defVoicepack^.chunks[snd], 0, -1)
   184     lastChan[snd]:= Mix_PlayChannelTimed(-1, defVoicepack^.chunks[snd], 0, -1)