X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_sound.pas;h=5c2882daae9ca8ef2a22e4454bbb6be6ee5870d4;hb=7908eab8a8bb5a2de31a03e588b2f12900c898c5;hp=074d037c29da38b5f77c4652b71665fa08d382ed;hpb=88ce644db1b40111bdb380f4357fa59bdb5173be;p=d2df-sdl.git diff --git a/src/game/g_sound.pas b/src/game/g_sound.pas index 074d037..5c2882d 100644 --- a/src/game/g_sound.pas +++ b/src/game/g_sound.pas @@ -1,3 +1,4 @@ +{$MODE DELPHI} unit g_sound; interface @@ -24,7 +25,7 @@ type function SetByName(SN: String): Boolean; function SetCoords(X, Y: Integer; Volume: Single): Boolean; - property Loop: Boolean read FLoop write FLoop; + property Loop: Boolean read FMusic write FMusic; property Name: String read FName; end; @@ -68,8 +69,8 @@ procedure g_Sound_SetupAllVolumes(SoundVol, MusicVol: Byte); implementation uses - e_log, SysUtils, g_console, g_options, WADEDITOR, - g_game, g_basic, g_items, g_map, fmod, fmodtypes, Math, + e_log, SysUtils, g_console, g_options, wadreader, + g_game, g_basic, g_items, g_map, Math, g_language; type @@ -119,7 +120,7 @@ begin for a := 0 to High(SoundArray) do if SoundArray[a].Name = SoundName then begin - Result := e_PlaySoundVolume(SoundArray[a].ID, gSoundLevel/255.0); + Result := (e_PlaySoundVolume(SoundArray[a].ID, gSoundLevel/255.0) >= 0); Exit; end; @@ -137,7 +138,7 @@ begin for a := 0 to High(SoundArray) do if SoundArray[a].Name = SoundName then begin - Result := e_PlaySoundPanVolume(SoundArray[a].ID, Pan, Volume * (gSoundLevel/255.0)); + Result := (e_PlaySoundPanVolume(SoundArray[a].ID, Pan, Volume * (gSoundLevel/255.0)) >= 0); Exit; end; @@ -229,7 +230,7 @@ var Pan, Vol: Single; begin if PlaySoundAt(X, Y, Pan, Vol) then - Result := e_PlaySoundPanVolume(ID, Pan, Vol * (gSoundLevel/255.0)) + Result := (e_PlaySoundPanVolume(ID, Pan, Vol * (gSoundLevel/255.0)) >= 0) else Result := False; end; @@ -248,8 +249,7 @@ begin if SoundArray[a].Name = SoundName then begin if PlaySoundAt(X, Y, Pan, Vol) then - Result := e_PlaySoundPanVolume(SoundArray[a].ID, - Pan, Vol * (gSoundLevel/255.0)); + Result := (e_PlaySoundPanVolume(SoundArray[a].ID, Pan, Vol * (gSoundLevel/255.0)) >= 0); Exit; end; @@ -280,10 +280,8 @@ end; function g_Sound_CreateWAD(var ID: DWORD; Resource: string; isMusic: Boolean = False): Boolean; var - WAD: TWADEditor_1; - FileName, - SectionName, - ResourceName: string; + WAD: TWADFile; + FileName: string; SoundData: Pointer; ResLength: Integer; ok: Boolean; @@ -292,12 +290,12 @@ begin ok := False; // e_WriteLog('Loading sound: ' + Resource, MSG_NOTIFY); - g_ProcessResourceStr(Resource, FileName, SectionName, ResourceName); + FileName := g_ExtractWadName(Resource); - WAD := TWADEditor_1.Create(); + WAD := TWADFile.Create(); WAD.ReadFile(FileName); - if WAD.GetResource(SectionName, ResourceName, SoundData, ResLength) then + if WAD.GetResource(g_ExtractFilePathName(Resource), SoundData, ResLength) then begin if e_LoadSoundMem(SoundData, ResLength, ID, isMusic) then ok := True @@ -305,26 +303,28 @@ begin FreeMem(SoundData); end else - e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING); + begin + //e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING); + end; WAD.Free(); - - if not ok then + if (not ok) then begin +{$IFNDEF HEADLESS} if isMusic then e_WriteLog(Format('Error loading music %s', [Resource]), MSG_WARNING) else e_WriteLog(Format('Error loading sound %s', [Resource]), MSG_WARNING); Exit; +{$ENDIF} end; - Result := True; end; function g_Sound_CreateWADEx(SoundName: ShortString; Resource: string; isMusic: Boolean = False): Boolean; var - WAD: TWADEditor_1; - FileName, SectionName, ResourceName: string; + WAD: TWADFile; + FileName: string; SoundData: Pointer; ResLength: Integer; find_id: DWORD; @@ -334,14 +334,14 @@ begin ok := False; // e_WriteLog('Loading sound: ' + Resource, MSG_NOTIFY); - g_ProcessResourceStr(Resource, FileName, SectionName, ResourceName); + FileName := g_ExtractWadName(Resource); find_id := FindSound(); - WAD := TWADEditor_1.Create(); + WAD := TWADFile.Create(); WAD.ReadFile(FileName); - if WAD.GetResource(SectionName, ResourceName, SoundData, ResLength) then + if WAD.GetResource(g_ExtractFilePathName(Resource), SoundData, ResLength) then begin if e_LoadSoundMem(SoundData, ResLength, SoundArray[find_id].ID, isMusic) then begin @@ -353,19 +353,21 @@ begin FreeMem(SoundData); end else - e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING); + begin + //e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING); + end; WAD.Free(); - - if not ok then + if (not ok) then begin +{$IFNDEF HEADLESS} if isMusic then e_WriteLog(Format('Error loading music %s', [Resource]), MSG_WARNING) else e_WriteLog(Format('Error loading sound %s', [Resource]), MSG_WARNING); Exit; +{$ENDIF} end; - Result := True; end;