00e3dc0372b3984515df0b1068ee1fb9d6de1763
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;
138 // Читаем карту из памяти:
143 // Получаем текстуры:
146 // Нужно копировать текстуры:
149 begin
152 Continue;
156 // Не записывать стандартные текстуры:
160 begin
161 // Копируем ресурс текстуры:
163 begin
165 Exit;
168 // Переименовываем ресурс текстуры:
175 // Получаем заголовок карты:
178 // Нужно копировать небо:
180 begin
184 // Не записывать стандартное небо:
188 begin
189 // Копируем ресурс неба:
191 begin
193 Exit;
196 // Переименовываем ресурс неба:
203 // Нужно копировать музыку:
205 begin
209 // Не записывать стандартную музыку:
213 begin
214 // Копируем ресурс музыки:
216 begin
218 Exit;
221 // Переименовываем ресурс музыки:
228 {
229 // Нужно копировать дополнительные текстуры:
230 if cbTextrures.Checked and (textures <> nil) and
231 (gPanels <> nil) and (gTriggers <> nil) then
232 begin
233 for a := 0 to High(gPanels) do
234 begin
235 ok := False;
237 // Ссылаются ли на эту панель триггеры:
238 for b := 0 to High(gTriggers) do
239 if ( (gTriggers[b].TriggerType in [TRIGGER_OPENDOOR,
240 TRIGGER_CLOSEDOOR, TRIGGER_DOOR, TRIGGER_DOOR5,
241 TRIGGER_CLOSETRAP, TRIGGER_TRAP, TRIGGER_LIFTUP,
242 TRIGGER_LIFTDOWN, TRIGGER_LIFT]) and
243 (gTriggers[b].Data.PanelID = a) ) or
244 (gTriggers[b].TexturePanel = a) then
245 begin
246 ok := True;
247 Break;
248 end;
250 // Есть триггеры на эту панель:
251 if ok and (gPanels[a].TextureName <> '') and
252 (not IsSpecialTexture(gPanels[a].TextureName) and
253 g_Texture_NumNameFindStart(gPanels[a].TextureName) then
254 begin
255 while True do
256 begin
257 r := g_Texture_NumNameFindNext(res);
258 case r of
259 NNF_NAME_FOUND: ;
260 NNF_NAME_EQUALS: Continue;
261 else Break;
262 end;
264 if res = '' then
265 Break;
267 g_GetResourceSection(res, @filename, @section, @resource);
269 // Не записывать стандартные дополнительные текстуры:
270 if (not cbNonStandart.Checked) or
271 ( (AnsiLowerCase(filename) <> STANDART_WAD) and
272 (AnsiLowerCase(filename) <> SHRSHADE_WAD) ) then
273 begin
274 // Копируем ресурс дополнительной текстуры:
275 if f_packmap.ProcessResource(eWAD.Text, tsection, filename, section, resource) then
276 begin
278 Нужно проверять есть такая текстура textures и есть ли она вообще?
279 // Переименовываем ресурс текстуры:
280 res := utf2win(Format(':%s\%s', [tsection, resource]));
281 ZeroMemory(@textures[a].Resource[0], 64);
282 CopyMemory(@textures[a].Resource[0], @res[1], Min(Length(res), 64));
286 end;
287 end;
288 end; // while True
289 end;
290 end;
291 end;
292 }
294 // Записываем изменения карты:
305 // Сохраняем карту из памяти под новым именем в WAD-файл:
313 MessageDlg(Format(_lc[I_MSG_PACKED], [eResource.Text, ExtractFileName(eWAD.Text)]), mtInformation, [mbOK], 0);
317 begin