X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Feditor%2Ff_packmap.pas;h=911700b7df8a5f18cf6aaee493d5cd6371b4546b;hb=4cd27745126226e5e57a02f4c2a44ccbab16bbac;hp=0999e54c3758e074d1d3901ad5d0ea6153b205b7;hpb=3dc2fe6b3d29cd54425db8f590e922f2dce50e99;p=d2df-editor.git diff --git a/src/editor/f_packmap.pas b/src/editor/f_packmap.pas index 0999e54..911700b 100644 --- a/src/editor/f_packmap.pas +++ b/src/editor/f_packmap.pas @@ -6,7 +6,7 @@ interface uses LCLIntf, LCLType, LMessages, SysUtils, Variants, Classes, - Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; + Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, utils; type TPackMapForm = class (TForm) @@ -53,7 +53,7 @@ implementation uses BinEditor, WADEDITOR, g_map, MAPREADER, MAPWRITER, MAPSTRUCT, - f_main, math, g_language; + f_main, math, g_language, g_options, e_log; {$R *.lfm} @@ -64,14 +64,13 @@ const procedure TPackMapForm.bSelectWADClick(Sender: TObject); begin - SaveDialog.Filter := _lc[I_FILE_FILTER_WAD]; + SaveDialog.Filter := MsgFileFilterWad; if SaveDialog.Execute() then eWAD.Text := SaveDialog.FileName; end; -function ProcessResource(wad_to: TWADEditor_1; - section_to, filename, section, resource: String): Boolean; +function ProcessResource(wad_to: TWADEditor_1; section_to, filename, section, resource: String): Boolean; var wad2: TWADEditor_1; data: Pointer; @@ -80,51 +79,47 @@ var begin Result := False; - + if filename = '' then g_ProcessResourceStr(OpenedMap, @filename, nil, nil) else - filename := EditorDir+'wads/'+filename; + filename := WadsDir + DirectorySeparator + filename; // Читаем ресурс из WAD-файла карты или какого-то другого: wad2 := TWADEditor_1.Create(); if not wad2.ReadFile(filename) then begin - MessageBox(0, PChar(Format(_lc[I_MSG_WAD_ERROR], - [ExtractFileName(filename)])), - PChar(_lc[I_MSG_ERROR]), MB_OK + MB_ICONERROR); + Application.MessageBox(PChar(Format(MsgMsgWadError, [ExtractFileName(filename)])), PChar(MsgMsgError), MB_OK + MB_ICONERROR); wad2.Free(); Exit; end; - if not wad2.GetResource(section, resource, data, reslen) then + if not wad2.GetResource(utf2win(section), utf2win(resource), data, reslen) then begin - MessageBox(0, PChar(Format(_lc[I_MSG_RES_ERROR], - [filename, section, resource])), - PChar(_lc[I_MSG_ERROR]), MB_OK + MB_ICONERROR); + Application.MessageBox(PChar(Format(MsgMsgResError, [filename, section, resource])), PChar(MsgMsgError), MB_OK + MB_ICONERROR); wad2.Free(); Exit; end; wad2.Free(); - {if wad_to.HaveResource(section_to, resource) then + {if wad_to.HaveResource(utf2win(section_to), utf2win(resource)) then begin for a := 2 to 256 do begin s := IntToStr(a); - if not wad_to.HaveResource(section_to, resource+s) then Break; + if not wad_to.HaveResource(utf2win(section_to), utf2win(resource+s)) then Break; end; resource := resource+s; end;} // Если такого ресурса нет в WAD-файле-назначении, то копируем: - if not wad_to.HaveResource(section_to, resource) then + if not wad_to.HaveResource(utf2win(section_to), utf2win(resource)) then begin - if not wad_to.HaveSection(section_to) then - wad_to.AddSection(section_to); - wad_to.AddResource(data, reslen, resource, section_to); + if not wad_to.HaveSection(utf2win(section_to)) then + wad_to.AddSection(utf2win(section_to)); + wad_to.AddResource(data, reslen, utf2win(resource), utf2win(section_to)); end; FreeMem(data); @@ -178,7 +173,7 @@ begin if cbTextrures.Checked and (textures <> nil) then for a := 0 to High(textures) do begin - res := textures[a].Resource; + res := win2utf(textures[a].Resource); if IsSpecialTexture(res) then Continue; @@ -190,7 +185,7 @@ begin (AnsiLowerCase(filename) <> SHRSHADE_WAD) ) then begin // Копируем ресурс текстуры: - if not ProcessResource(WAD, tsection, filename, section, resource) then + if not f_packmap.ProcessResource(WAD, tsection, filename, section, resource) then begin mr.Free(); WAD.Free(); @@ -198,7 +193,7 @@ begin end; // Переименовываем ресурс текстуры: - res := Format(':%s\%s', [tsection, resource]); + res := utf2win(Format(':%s\%s', [tsection, resource])); ZeroMemory(@textures[a].Resource[0], 64); CopyMemory(@textures[a].Resource[0], @res[1], Min(Length(res), 64)); end; @@ -210,7 +205,7 @@ begin // Нужно копировать небо: if cbSky.Checked then begin - res := header.SkyName; + res := win2utf(header.SkyName); g_ProcessResourceStr(res, @filename, @section, @resource); // Не записывать стандартное небо: @@ -219,7 +214,7 @@ begin (AnsiLowerCase(filename) <> SHRSHADE_WAD) ) then begin // Копируем ресурс неба: - if not ProcessResource(WAD, ssection, filename, section, resource) then + if not f_packmap.ProcessResource(WAD, ssection, filename, section, resource) then begin mr.Free(); WAD.Free(); @@ -227,7 +222,7 @@ begin end; // Переименовываем ресурс неба: - res := Format(':%s\%s', [ssection, resource]); + res := utf2win(Format(':%s\%s', [ssection, resource])); ZeroMemory(@header.SkyName[0], 64); CopyMemory(@header.SkyName[0], @res[1], Min(Length(res), 64)); end; @@ -236,7 +231,7 @@ begin // Нужно копировать музыку: if cbMusic.Checked then begin - res := header.MusicName; + res := win2utf(header.MusicName); g_ProcessResourceStr(res, @filename, @section, @resource); // Не записывать стандартную музыку: @@ -245,7 +240,7 @@ begin (AnsiLowerCase(filename) <> SHRSHADE_WAD) ) then begin // Копируем ресурс музыки: - if not ProcessResource(WAD, msection, filename, section, resource) then + if not f_packmap.ProcessResource(WAD, msection, filename, section, resource) then begin mr.Free(); WAD.Free(); @@ -253,7 +248,7 @@ begin end; // Переименовываем ресурс музыки: - res := Format(':%s\%s', [msection, resource]); + res := utf2win(Format(':%s\%s', [msection, resource])); ZeroMemory(@header.MusicName[0], 64); CopyMemory(@header.MusicName[0], @res[1], Min(Length(res), 64)); end; @@ -306,12 +301,12 @@ begin (AnsiLowerCase(filename) <> SHRSHADE_WAD) ) then begin // Копируем ресурс дополнительной текстуры: - if ProcessResource(WAD, tsection, filename, section, resource) then + if f_packmap.ProcessResource(WAD, tsection, filename, section, resource) then begin Нужно проверять есть такая текстура textures и есть ли она вообще? // Переименовываем ресурс текстуры: - res := Format(':%s\%s', [tsection, resource]); + res := utf2win(Format(':%s\%s', [tsection, resource])); ZeroMemory(@textures[a].Resource[0], 64); CopyMemory(@textures[a].Resource[0], @res[1], Min(Length(res), 64)); @@ -345,16 +340,13 @@ begin mr.Free(); WAD.Free(); - MessageDlg(Format(_lc[I_MSG_PACKED], - [eResource.Text, ExtractFileName(eWAD.Text)]), - mtInformation, [mbOK], 0); - + MessageDlg(Format(MsgMsgPacked, [eResource.Text, ExtractFileName(eWAD.Text)]), mtInformation, [mbOK], 0); Close(); end; procedure TPackMapForm.FormCreate(Sender: TObject); begin - SaveDialog.InitialDir := EditorDir; + SaveDialog.InitialDir := MapsDir; end; end.