X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Feditor%2Ff_addresource_sound.pas;h=eaba574aa61e2d71e0f8621e5f3b0842d3442301;hb=952e5c9c629e44e260c55f2756d72a199d8d9052;hp=936adf598e511e5242076946f02dfb97eaa67715;hpb=e43dfeaa13761347c7cf92abaed4b874166f1607;p=d2df-editor.git diff --git a/src/editor/f_addresource_sound.pas b/src/editor/f_addresource_sound.pas index 936adf5..eaba574 100644 --- a/src/editor/f_addresource_sound.pas +++ b/src/editor/f_addresource_sound.pas @@ -45,7 +45,7 @@ var 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} @@ -109,7 +109,7 @@ begin FSoundEnabled := True; except - Application.MessageBox('Sound was disabled. Reason: ' + FMOD_ErrorString(res), 'FMOD Error', MB_OK or MB_ICONWARNING); + Application.MessageBox(PChar('Sound was disabled. Reason: ' + FMOD_ErrorString(res)), 'FMOD Error', MB_OK or MB_ICONWARNING); end; {$ENDIF} @@ -121,6 +121,7 @@ end; function TAddSoundForm.CreateSoundWAD(Resource: String): Boolean; var + WAD: TWADEditor_1; FileName, SectionName, ResourceName: String; ResLength: Integer; sz: LongWord; @@ -138,9 +139,11 @@ begin {$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); @@ -155,16 +158,19 @@ begin 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;