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
75 var
79 //s: string;
81 begin
86 else
89 // Читаем ресурс из WAD-файла карты или какого-то другого:
93 begin
98 Exit;
102 begin
107 Exit;
112 {if wad_to.HaveResource(utf2win(section_to), utf2win(resource)) then
113 begin
114 for a := 2 to 256 do
115 begin
116 s := IntToStr(a);
117 if not wad_to.HaveResource(utf2win(section_to), utf2win(resource+s)) then Break;
118 end;
119 resource := resource+s;
120 end;}
122 // Если такого ресурса нет в WAD-файле-назначении, то копируем:
124 begin
136 var
147 begin
149 Exit;
151 Exit;
157 // Сохраняем карту в память:
160 Exit;
164 // Не перезаписывать WAD, а дополнить:
169 // Читаем карту из памяти:
174 // Получаем текстуры:
177 // Нужно копировать текстуры:
180 begin
183 Continue;
187 // Не записывать стандартные текстуры:
191 begin
192 // Копируем ресурс текстуры:
194 begin
197 Exit;
200 // Переименовываем ресурс текстуры:
207 // Получаем заголовок карты:
210 // Нужно копировать небо:
212 begin
216 // Не записывать стандартное небо:
220 begin
221 // Копируем ресурс неба:
223 begin
226 Exit;
229 // Переименовываем ресурс неба:
236 // Нужно копировать музыку:
238 begin
242 // Не записывать стандартную музыку:
246 begin
247 // Копируем ресурс музыки:
249 begin
252 Exit;
255 // Переименовываем ресурс музыки:
262 {
263 // Нужно копировать дополнительные текстуры:
264 if cbTextrures.Checked and (textures <> nil) and
265 (gPanels <> nil) and (gTriggers <> nil) then
266 begin
267 for a := 0 to High(gPanels) do
268 begin
269 ok := False;
271 // Ссылаются ли на эту панель триггеры:
272 for b := 0 to High(gTriggers) do
273 if ( (gTriggers[b].TriggerType in [TRIGGER_OPENDOOR,
274 TRIGGER_CLOSEDOOR, TRIGGER_DOOR, TRIGGER_DOOR5,
275 TRIGGER_CLOSETRAP, TRIGGER_TRAP, TRIGGER_LIFTUP,
276 TRIGGER_LIFTDOWN, TRIGGER_LIFT]) and
277 (gTriggers[b].Data.PanelID = a) ) or
278 (gTriggers[b].TexturePanel = a) then
279 begin
280 ok := True;
281 Break;
282 end;
284 // Есть триггеры на эту панель:
285 if ok and (gPanels[a].TextureName <> '') and
286 (not IsSpecialTexture(gPanels[a].TextureName) and
287 g_Texture_NumNameFindStart(gPanels[a].TextureName) then
288 begin
289 while True do
290 begin
291 r := g_Texture_NumNameFindNext(res);
292 case r of
293 NNF_NAME_FOUND: ;
294 NNF_NAME_EQUALS: Continue;
295 else Break;
296 end;
298 if res = '' then
299 Break;
301 g_ProcessResourceStr(res, @filename, @section, @resource);
303 // Не записывать стандартные дополнительные текстуры:
304 if (not cbNonStandart.Checked) or
305 ( (AnsiLowerCase(filename) <> STANDART_WAD) and
306 (AnsiLowerCase(filename) <> SHRSHADE_WAD) ) then
307 begin
308 // Копируем ресурс дополнительной текстуры:
309 if ProcessResource(WAD, tsection, filename, section, resource) then
310 begin
312 Нужно проверять есть такая текстура textures и есть ли она вообще?
313 // Переименовываем ресурс текстуры:
314 res := utf2win(Format(':%s\%s', [tsection, resource]));
315 ZeroMemory(@textures[a].Resource[0], 64);
316 CopyMemory(@textures[a].Resource[0], @res[1], Min(Length(res), 64));
320 end;
321 end;
322 end; // while True
323 end;
324 end;
325 end;
326 }
328 // Записываем изменения карты:
339 // Сохраняем карту из памяти под новым именем в WAD-файл:
356 begin