X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fgame%2Fg_sound.pas;h=a3ef547a60254c6e46fba00506768e11e5e0f4cd;hb=7292fe409145dfcbb2776e34bb64d56e32985b9d;hp=ebce17eb3da8bd509dc7c31ef2e4c850ccbee0e2;hpb=89d242f641ed8a2ccd6b1935f64db62dc9bcf154;p=d2df-sdl.git diff --git a/src/game/g_sound.pas b/src/game/g_sound.pas index ebce17e..a3ef547 100644 --- a/src/game/g_sound.pas +++ b/src/game/g_sound.pas @@ -1,3 +1,19 @@ +(* Copyright (C) DooM 2D:Forever Developers + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + *) +{$INCLUDE g_amodes.inc} unit g_sound; interface @@ -24,7 +40,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,7 +84,7 @@ procedure g_Sound_SetupAllVolumes(SoundVol, MusicVol: Byte); implementation uses - e_log, SysUtils, g_console, g_options, WADEDITOR, + e_log, SysUtils, g_console, g_options, wadreader, g_game, g_basic, g_items, g_map, Math, g_language; @@ -279,10 +295,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; @@ -291,12 +305,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 @@ -304,26 +318,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; @@ -333,14 +349,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 @@ -352,19 +368,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;