3 {$INCLUDE ../shared/a_modes.inc}
5 interface
7 uses
11 type
16 // Сохранить в:
20 // Имя карты:
23 // Текстуры:
27 // Небо:
31 // Музыка:
35 // Дополнительно:
43 private
44 { Private declarations }
45 public
46 { Public declarations }
49 var
52 implementation
54 uses
58 {$R *.lfm}
60 const
66 begin
74 var
78 begin
82 else
84 e_WriteLog('ProcessResource: "' + wad_to + '" "' + section_to + '" "' + filename + '" "' + section + '" "' + resource + '"', MSG_NOTIFY);
90 begin
91 (* Write resource only if it does not exists *)
94 begin
99 end
100 else
101 begin
102 //MessageBox(0, PChar(Format(_lc[I_MSG_WAD_ERROR], [ExtractFileName(filename)])), PChar(_lc[I_MSG_ERROR]), MB_OK + MB_ICONERROR);
103 MessageBox(0, PChar(Format(_lc[I_MSG_RES_ERROR], [filename, section, resource])), PChar(_lc[I_MSG_ERROR]), MB_OK + MB_ICONERROR);
105 end
109 var
120 begin
122 Exit;
124 Exit;
130 // Сохраняем карту в память:
133 Exit;
136 begin
137 (* Overwrite wad *)
139 begin
143 end
146 // Читаем карту из памяти:
151 // Получаем текстуры:
154 // Нужно копировать текстуры:
157 begin
160 Continue;
164 // Не записывать стандартные текстуры:
168 begin
169 // Копируем ресурс текстуры:
171 begin
173 Exit;
176 // Переименовываем ресурс текстуры:
183 // Получаем заголовок карты:
186 // Нужно копировать небо:
188 begin
192 // Не записывать стандартное небо:
196 begin
197 // Копируем ресурс неба:
199 begin
201 Exit;
204 // Переименовываем ресурс неба:
211 // Нужно копировать музыку:
213 begin
217 // Не записывать стандартную музыку:
221 begin
222 // Копируем ресурс музыки:
224 begin
226 Exit;
229 // Переименовываем ресурс музыки:
236 {
237 // Нужно копировать дополнительные текстуры:
238 if cbTextrures.Checked and (textures <> nil) and
239 (gPanels <> nil) and (gTriggers <> nil) then
240 begin
241 for a := 0 to High(gPanels) do
242 begin
243 ok := False;
245 // Ссылаются ли на эту панель триггеры:
246 for b := 0 to High(gTriggers) do
247 if ( (gTriggers[b].TriggerType in [TRIGGER_OPENDOOR,
248 TRIGGER_CLOSEDOOR, TRIGGER_DOOR, TRIGGER_DOOR5,
249 TRIGGER_CLOSETRAP, TRIGGER_TRAP, TRIGGER_LIFTUP,
250 TRIGGER_LIFTDOWN, TRIGGER_LIFT]) and
251 (gTriggers[b].Data.PanelID = a) ) or
252 (gTriggers[b].TexturePanel = a) then
253 begin
254 ok := True;
255 Break;
256 end;
258 // Есть триггеры на эту панель:
259 if ok and (gPanels[a].TextureName <> '') and
260 (not IsSpecialTexture(gPanels[a].TextureName) and
261 g_Texture_NumNameFindStart(gPanels[a].TextureName) then
262 begin
263 while True do
264 begin
265 r := g_Texture_NumNameFindNext(res);
266 case r of
267 NNF_NAME_FOUND: ;
268 NNF_NAME_EQUALS: Continue;
269 else Break;
270 end;
272 if res = '' then
273 Break;
275 g_GetResourceSection(res, @filename, @section, @resource);
277 // Не записывать стандартные дополнительные текстуры:
278 if (not cbNonStandart.Checked) or
279 ( (AnsiLowerCase(filename) <> STANDART_WAD) and
280 (AnsiLowerCase(filename) <> SHRSHADE_WAD) ) then
281 begin
282 // Копируем ресурс дополнительной текстуры:
283 if f_packmap.ProcessResource(eWAD.Text, tsection, filename, section, resource) then
284 begin
286 Нужно проверять есть такая текстура textures и есть ли она вообще?
287 // Переименовываем ресурс текстуры:
288 res := utf2win(Format(':%s\%s', [tsection, resource]));
289 ZeroMemory(@textures[a].Resource[0], 64);
290 CopyMemory(@textures[a].Resource[0], @res[1], Min(Length(res), 64));
294 end;
295 end;
296 end; // while True
297 end;
298 end;
299 end;
300 }
302 // Записываем изменения карты:
313 // Сохраняем карту из памяти под новым именем в WAD-файл:
321 MessageDlg(Format(_lc[I_MSG_PACKED], [eResource.Text, ExtractFileName(eWAD.Text)]), mtInformation, [mbOK], 0);
325 begin