index 15ea34df25db38089339dacd558aafa618435ba1..eaba574aa61e2d71e0f8621e5f3b0842d3442301 100644 (file)
private
FSpectrum: TMiniSpectrum;
FSetResource: String;
+ FSoundEnabled: Boolean;
procedure ShowSpectrum();
+ function CreateSoundWAD(Resource: String): Boolean;
public
property SetResource: String read FSetResource write FSetResource;
implementation
uses
- BinEditor, WADEDITOR, e_log, f_main, g_language, g_resources
+ BinEditor, WADEDITOR, e_log, f_main, g_language
{$IFNDEF NOSOUND}, fmod, fmodtypes, fmoderrors;{$ELSE};{$ENDIF}
{$R *.lfm}
Inherited;
res := FMOD_OK;
+ FSoundEnabled := False;
{$IFNDEF NOSOUND}
try
if res <> FMOD_OK then
raise Exception.Create('FMOD_System_Init failed!');
+ FSoundEnabled := True;
except
- Application.MessageBox(FMOD_ErrorString(res), 'Initialization', MB_OK or MB_ICONHAND);
- raise;
+ Application.MessageBox(PChar('Sound was disabled. Reason: ' + FMOD_ErrorString(res)), 'FMOD Error', MB_OK or MB_ICONWARNING);
end;
{$ENDIF}
FSpectrum.Style := ssBlock;
end;
-function CreateSoundWAD(Resource: String): Boolean;
+function TAddSoundForm.CreateSoundWAD(Resource: String): Boolean;
var
+ WAD: TWADEditor_1;
FileName, SectionName, ResourceName: String;
ResLength: Integer;
sz: LongWord;
SoundData := nil;
Sound := nil;
Channel := nil;
+
+ if FSoundEnabled = False then
+ Exit;
+
{$IFNDEF NOSOUND}
g_ProcessResourceStr(Resource, FileName, SectionName, ResourceName);
- g_ReadResource(FileName, SectionName, ResourceName, SoundData, ResLength);
- if SoundData <> nil then
+ WAD := TWADEditor_1.Create;
+ WAD.ReadFile(FileName);
+
+ if WAD.GetResource(utf2win(SectionName), utf2win(ResourceName), SoundData, ResLength) then
begin
sz := SizeOf(FMOD_CREATESOUNDEXINFO);
FillMemory(@soundExInfo, sz, 0);
begin
e_WriteLog(Format('Error creating sound %s', [Resource]), MSG_WARNING);
e_WriteLog(FMOD_ErrorString(res), MSG_WARNING);
+ WAD.Free();
Exit;
end;
end
else
begin
e_WriteLog(Format('Error loading sound %s', [Resource]), MSG_WARNING);
- //e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING);
+ e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING);
+ WAD.Free();
Exit;
end;
+ WAD.Free();
Result := True;
{$ENDIF}
end;
if Playing then
bbStop.Click();
+ if FSoundEnabled = False then
+ Exit;
+
if not CreateSoundWAD(FFullResourceName) then
Exit;
+
{$IFNDEF NOSOUND}
res := FMOD_System_PlaySound(F_System, FMOD_CHANNEL_FREE,
Sound, False, Channel);
if res <> FMOD_OK then
begin
Application.MessageBox(FMOD_ErrorString(res),
- PChar(_lc[I_MSG_SOUND_ERROR]),
+ PChar(MsgMsgSoundError),
MB_OK or MB_ICONHAND);
Exit;
end;
begin
Inherited;
+
+ if FSoundEnabled = False then
+ Exit;
+
{$IFNDEF NOSOUND}
FMOD_System_Update(F_System);
Inherited;
FSpectrum.Free;
+
+ if FSoundEnabled = False then
+ Exit;
+
{$IFNDEF NOSOUND}
res := FMOD_System_Close(F_System);
if res <> FMOD_OK then
g_ProcessResourceStr(FSetResource, FileName, SectionName, ResourceName);
if FileName = '' then
- FileName := _lc[I_WAD_SPECIAL_MAP];
+ FileName := MsgWadSpecialMap;
if SectionName = '' then
SectionName := '..';