diff -r fc52f7c22c9b -r 6155187bf599 hedgewars/uSound.pas --- a/hedgewars/uSound.pas Mon Jan 16 10:22:21 2012 +0100 +++ b/hedgewars/uSound.pas Tue Jan 17 09:01:31 2012 -0500 @@ -111,20 +111,25 @@ begin locName:= name+'_'+cLocale; path:= UserPathz[ptVoices] + '/' + locName; - if DirectoryExists(path) then name:= locName + if DirectoryExists(path) then + name:= locName else begin path:= Pathz[ptVoices] + '/' + locName; - if DirectoryExists(path) then name:= locName - else if Length(cLocale) > 2 then + if DirectoryExists(path) then + name:= locName + else if Length(cLocale) > 2 + then begin locName:= name+'_'+Copy(cLocale,1,2); path:= UserPathz[ptVoices] + '/' + locName; - if DirectoryExists(path) then name:= locName + if DirectoryExists(path) then + name:= locName else begin path:= Pathz[ptVoices] + '/' + locName; - if DirectoryExists(path) then name:= locName + if DirectoryExists(path) then + name:= locName end end end @@ -145,7 +150,8 @@ var i: TSound; channels: LongInt; begin - if not isSoundEnabled then exit; + if not isSoundEnabled then + exit; WriteToConsole('Init sound...'); isSoundEnabled:= SDL_InitSubSystem(SDL_INIT_AUDIO) >= 0; @@ -218,7 +224,8 @@ var i: TSound; t: Longword; begin - if not isSoundEnabled then exit; + if not isSoundEnabled then + exit; defVoicepack:= AskForVoicepack('Default'); @@ -277,7 +284,8 @@ if (voicepack^.chunks[snd] = nil) and (Soundz[snd].Path = ptVoices) and (Soundz[snd].FileName <> '') then begin s:= UserPathz[Soundz[snd].Path] + '/' + voicepack^.name + '/' + Soundz[snd].FileName; - if not FileExists(s) then s:= Pathz[Soundz[snd].Path] + '/' + voicepack^.name + '/' + Soundz[snd].FileName; + if not FileExists(s) then + s:= Pathz[Soundz[snd].Path] + '/' + voicepack^.name + '/' + Soundz[snd].FileName; WriteToConsole(msgLoading + s + ' '); voicepack^.chunks[snd]:= Mix_LoadWAV_RW(SDL_RWFromFile(Str2PChar(s), 'rb'), 1); if voicepack^.chunks[snd] = nil then @@ -292,7 +300,8 @@ if (defVoicepack^.chunks[snd] = nil) and (Soundz[snd].Path <> ptVoices) and (Soundz[snd].FileName <> '') then begin s:= UserPathz[Soundz[snd].Path] + '/' + Soundz[snd].FileName; - if not FileExists(s) then s:= Pathz[Soundz[snd].Path] + '/' + Soundz[snd].FileName; + if not FileExists(s) then + s:= Pathz[Soundz[snd].Path] + '/' + Soundz[snd].FileName; WriteToConsole(msgLoading + s + ' '); defVoicepack^.chunks[snd]:= Mix_LoadWAV_RW(SDL_RWFromFile(Str2PChar(s), 'rb'), 1); SDLTry(defVoicepack^.chunks[snd] <> nil, true); @@ -305,19 +314,23 @@ procedure AddVoice(snd: TSound; voicepack: PVoicepack); var i : LongInt; begin - if (not isSoundEnabled) or fastUntilLag or ((LastVoice.snd = snd) and (LastVoice.voicepack = voicepack)) then exit; + if (not isSoundEnabled) or fastUntilLag or ((LastVoice.snd = snd) and (LastVoice.voicepack = voicepack)) then + exit; if (snd = sndVictory) or (snd = sndFlawless) then begin Mix_FadeOutChannel(-1, 800); - for i:= 0 to 7 do VoiceList[i].snd:= sndNone; + for i:= 0 to 7 do + VoiceList[i].snd:= sndNone; LastVoice.snd:= sndNone; end; i:= 0; - while (i<8) and (VoiceList[i].snd <> sndNone) do inc(i); + while (i<8) and (VoiceList[i].snd <> sndNone) do + inc(i); // skip playing same sound for same hog twice - if (i>0) and (VoiceList[i-1].snd = snd) and (VoiceList[i-1].voicepack = voicepack) then exit; + if (i>0) and (VoiceList[i-1].snd = snd) and (VoiceList[i-1].voicepack = voicepack) then + exit; VoiceList[i].snd:= snd; VoiceList[i].voicepack:= voicepack; end; @@ -325,9 +338,11 @@ procedure PlayNextVoice; var i : LongInt; begin - if (not isSoundEnabled) or fastUntilLag or ((LastVoice.snd <> sndNone) and (lastChan[LastVoice.snd] <> -1) and (Mix_Playing(lastChan[LastVoice.snd]) <> 0)) then exit; + if (not isSoundEnabled) or fastUntilLag or ((LastVoice.snd <> sndNone) and (lastChan[LastVoice.snd] <> -1) and (Mix_Playing(lastChan[LastVoice.snd]) <> 0)) then + exit; i:= 0; - while (i<8) and (VoiceList[i].snd = sndNone) do inc(i); + while (i<8) and (VoiceList[i].snd = sndNone) do + inc(i); if (VoiceList[i].snd <> sndNone) then begin @@ -359,58 +374,62 @@ var s: shortstring; begin if (not isSoundEnabled) or fastUntilLag then - begin + begin LoopSound:= -1; exit - end; + end; if (voicepack <> nil) then - begin + begin if (voicepack^.chunks[snd] = nil) and (Soundz[snd].Path = ptVoices) and (Soundz[snd].FileName <> '') then - begin + begin s:= UserPathz[Soundz[snd].Path] + '/' + voicepack^.name + '/' + Soundz[snd].FileName; - if not FileExists(s) then s:= Pathz[Soundz[snd].Path] + '/' + voicepack^.name + '/' + Soundz[snd].FileName; + if not FileExists(s) then + s:= Pathz[Soundz[snd].Path] + '/' + voicepack^.name + '/' + Soundz[snd].FileName; WriteToConsole(msgLoading + s + ' '); voicepack^.chunks[snd]:= Mix_LoadWAV_RW(SDL_RWFromFile(Str2PChar(s), 'rb'), 1); if voicepack^.chunks[snd] = nil then WriteLnToConsole(msgFailed) else WriteLnToConsole(msgOK) - end; + end; LoopSound:= Mix_PlayChannelTimed(-1, voicepack^.chunks[snd], -1, -1) - end + end else - begin + begin if (defVoicepack^.chunks[snd] = nil) and (Soundz[snd].Path <> ptVoices) and (Soundz[snd].FileName <> '') then - begin + begin s:= UserPathz[Soundz[snd].Path] + '/' + Soundz[snd].FileName; - if not FileExists(s) then s:= Pathz[Soundz[snd].Path] + '/' + Soundz[snd].FileName; + if not FileExists(s) then + s:= Pathz[Soundz[snd].Path] + '/' + Soundz[snd].FileName; WriteToConsole(msgLoading + s + ' '); defVoicepack^.chunks[snd]:= Mix_LoadWAV_RW(SDL_RWFromFile(Str2PChar(s), 'rb'), 1); SDLTry(defVoicepack^.chunks[snd] <> nil, true); WriteLnToConsole(msgOK); - end; + end; if fadems > 0 then LoopSound:= Mix_FadeInChannelTimed(-1, defVoicepack^.chunks[snd], -1, fadems, -1) else LoopSound:= Mix_PlayChannelTimed(-1, defVoicepack^.chunks[snd], -1, -1); - end; + end; end; procedure StopSound(snd: TSound); begin - if not isSoundEnabled then exit; + if not isSoundEnabled then + exit; if (lastChan[snd] <> -1) and (Mix_Playing(lastChan[snd]) <> 0) then - begin + begin Mix_HaltChannel(lastChan[snd]); lastChan[snd]:= -1; - end; + end; end; procedure StopSound(chn: LongInt); begin - if not isSoundEnabled then exit; + if not isSoundEnabled then + exit; if (chn <> -1) and (Mix_Playing(chn) <> 0) then Mix_HaltChannel(chn); @@ -418,7 +437,8 @@ procedure StopSound(chn, fadems: LongInt); begin - if not isSoundEnabled then exit; + if not isSoundEnabled then + exit; if (chn <> -1) and (Mix_Playing(chn) <> 0) then Mix_FadeOutChannel(chn, fadems); @@ -431,7 +451,8 @@ exit; s:= UserPathPrefix + '/Data/Music/' + MusicFN; - if not FileExists(s) then s:= PathPrefix + '/Music/' + MusicFN; + if not FileExists(s) then + s:= PathPrefix + '/Music/' + MusicFN; WriteToConsole(msgLoading + s + ' '); Mus:= Mix_LoadMUS(Str2PChar(s)); @@ -447,10 +468,12 @@ exit(0); inc(Volume, voldelta); - if Volume < 0 then Volume:= 0; + if Volume < 0 then + Volume:= 0; Mix_Volume(-1, Volume); Volume:= Mix_Volume(-1, -1); - if isMusicEnabled then Mix_VolumeMusic(Volume * 4 div 8); + if isMusicEnabled then + Mix_VolumeMusic(Volume * 4 div 8); ChangeVolume:= Volume * 100 div MIX_MAX_VOLUME end; @@ -460,7 +483,7 @@ exit; if Mus <> nil then - Mix_PauseMusic(Mus); + Mix_PauseMusic(Mus); end; procedure ResumeMusic; @@ -469,7 +492,7 @@ exit; if Mus <> nil then - Mix_ResumeMusic(Mus); + Mix_ResumeMusic(Mus); end; procedure ChangeMusic; @@ -495,9 +518,11 @@ procedure chVoicepack(var s: shortstring); begin - if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/voicepack"', true); + if CurrentTeam = nil then + OutError(errmsgIncorrectUse + ' "/voicepack"', true); if s[1]='"' then Delete(s, 1, 1); - if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1); + if s[byte(s[0])]='"' then + Delete(s, byte(s[0]), 1); CurrentTeam^.voicepack:= AskForVoicepack(s) end;